llstatgraph.cpp

Go to the documentation of this file.
00001 
00032 #include "llviewerprecompiledheaders.h"
00033 
00034 #include "llstatgraph.h"
00035 
00036 #include "llmath.h"
00037 #include "llui.h"
00038 #include "llstat.h"
00039 #include "llgl.h"
00040 #include "llglheaders.h"
00041 #include "llviewercontrol.h"
00042 
00044 
00045 LLStatGraph::LLStatGraph(const std::string& name, const LLRect& rect)
00046                 :       LLView(name, rect, TRUE)
00047 {
00048         mStatp = NULL;
00049         setToolTip(name);
00050         mNumThresholds = 3;
00051         mThresholdColors[0] = LLColor4(0.f, 1.f, 0.f, 1.f);
00052         mThresholdColors[1] = LLColor4(1.f, 1.f, 0.f, 1.f);
00053         mThresholdColors[2] = LLColor4(1.f, 0.f, 0.f, 1.f);
00054         mThresholdColors[3] = LLColor4(1.f, 0.f, 0.f, 1.f);
00055         mThresholds[0] = 50.f;
00056         mThresholds[1] = 75.f;
00057         mThresholds[2] = 100.f;
00058         mMin = 0.f;
00059         mMax = 125.f;
00060         mPerSec = TRUE;
00061         mValue = 0.f;
00062         mPrecision = 0;
00063 }
00064 
00065 EWidgetType LLStatGraph::getWidgetType() const
00066 {
00067         return WIDGET_TYPE_STAT_GRAPH;
00068 }
00069 
00070 LLString LLStatGraph::getWidgetTag() const
00071 {
00072         return LL_STAT_GRAPH_TAG;
00073 }
00074 
00075 void LLStatGraph::draw()
00076 {
00077         if (getVisible())
00078         {
00079                 F32 range, frac;
00080                 range = mMax - mMin;
00081                 if (mStatp)
00082                 {
00083                         if (mPerSec)
00084                         {
00085                                 mValue = mStatp->getMeanPerSec();
00086                         }
00087                         else
00088                         {
00089                                 mValue = mStatp->getMean();
00090                         }
00091                 }
00092                 frac = (mValue - mMin) / range;
00093                 frac = llmax(0.f, frac);
00094                 frac = llmin(1.f, frac);
00095 
00096                 if (mUpdateTimer.getElapsedTimeF32() > 0.5f)
00097                 {
00098                         char format_str[256];           /* Flawfinder: ignore */
00099                         char tmp_str[256];              /* Flawfinder: ignore */
00100                         snprintf(format_str, sizeof(format_str), "%%s%%.%df%%s", mPrecision);           /* Flawfinder: ignore */
00101                         snprintf(tmp_str, sizeof(tmp_str), format_str, mLabel.c_str(), mValue, mUnits.c_str());         /* Flawfinder: ignore */
00102                         setToolTip(tmp_str);
00103 
00104                         mUpdateTimer.reset();
00105                 }
00106 
00107                 LLColor4 color;
00108 
00109                 S32 i;
00110                 for (i = 0; i < mNumThresholds - 1; i++)
00111                 {
00112                         if (mThresholds[i] > mValue)
00113                         {
00114                                 break;
00115                         }
00116                 }
00117 
00118                 //gl_drop_shadow(0,  mRect.getHeight(), mRect.getWidth(), 0,
00119                 //                              gColors.getColor("ColorDropShadow"), 
00120                 //                              (S32) gSavedSettings.getF32("DropShadowFloater") );
00121 
00122                 
00123                 color = gColors.getColor( "MenuDefaultBgColor" );
00124                 glColor4fv(color.mV);
00125                 gl_rect_2d(0, mRect.getHeight(), mRect.getWidth(), 0, TRUE);
00126 
00127                 glColor4fv(LLColor4::black.mV);
00128                 gl_rect_2d(0, mRect.getHeight(), mRect.getWidth(), 0, FALSE);
00129                 
00130                 color = mThresholdColors[i];
00131                 glColor4fv(color.mV);
00132                 gl_rect_2d(1, llround(frac*mRect.getHeight()), mRect.getWidth() - 1, 0, TRUE);
00133         }
00134 }
00135 
00136 void LLStatGraph::setValue(const F32 value)
00137 {
00138         mValue = value;
00139 }
00140 
00141 void LLStatGraph::setMin(const F32 min)
00142 {
00143         mMin = min;
00144 }
00145 
00146 void LLStatGraph::setMax(const F32 max)
00147 {
00148         mMax = max;
00149 }
00150 
00151 void LLStatGraph::setStat(LLStat *statp)
00152 {
00153         mStatp = statp;
00154 }
00155 
00156 void LLStatGraph::setLabel(const char *label)
00157 {
00158         mLabel = label;
00159 }
00160 
00161 void LLStatGraph::setUnits(const char *units)
00162 {
00163         mUnits = units;
00164 }
00165 
00166 void LLStatGraph::setPrecision(const S32 precision)
00167 {
00168         mPrecision = precision;
00169 }
00170 
00171 void LLStatGraph::setThreshold(const S32 i, F32 value)
00172 {
00173         mThresholds[i] = value;
00174 }

Generated on Thu Jul 1 06:09:13 2010 for Second Life Viewer by  doxygen 1.4.7