llstatgraph.cpp
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:4k
源码类别:

游戏引擎

开发平台:

C++ Builder

  1. /** 
  2.  * @file llstatgraph.cpp
  3.  * @brief Simpler compact stat graph with tooltip
  4.  *
  5.  * $LicenseInfo:firstyear=2002&license=viewergpl$
  6.  * 
  7.  * Copyright (c) 2002-2010, Linden Research, Inc.
  8.  * 
  9.  * Second Life Viewer Source Code
  10.  * The source code in this file ("Source Code") is provided by Linden Lab
  11.  * to you under the terms of the GNU General Public License, version 2.0
  12.  * ("GPL"), unless you have obtained a separate licensing agreement
  13.  * ("Other License"), formally executed by you and Linden Lab.  Terms of
  14.  * the GPL can be found in doc/GPL-license.txt in this distribution, or
  15.  * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
  16.  * 
  17.  * There are special exceptions to the terms and conditions of the GPL as
  18.  * it is applied to this Source Code. View the full text of the exception
  19.  * in the file doc/FLOSS-exception.txt in this software distribution, or
  20.  * online at
  21.  * http://secondlifegrid.net/programs/open_source/licensing/flossexception
  22.  * 
  23.  * By copying, modifying or distributing this software, you acknowledge
  24.  * that you have read and understood your obligations described above,
  25.  * and agree to abide by those obligations.
  26.  * 
  27.  * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
  28.  * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
  29.  * COMPLETENESS OR PERFORMANCE.
  30.  * $/LicenseInfo$
  31.  */
  32. //#include "llviewerprecompiledheaders.h"
  33. #include "linden_common.h"
  34. #include "llstatgraph.h"
  35. #include "llrender.h"
  36. #include "llmath.h"
  37. #include "llui.h"
  38. #include "llstat.h"
  39. #include "llgl.h"
  40. #include "llglheaders.h"
  41. //#include "llviewercontrol.h"
  42. ///////////////////////////////////////////////////////////////////////////////////
  43. LLStatGraph::LLStatGraph(const LLView::Params& p)
  44. : LLView(p)
  45. {
  46. mStatp = NULL;
  47. setToolTip(p.name());
  48. mNumThresholds = 3;
  49. mThresholdColors[0] = LLColor4(0.f, 1.f, 0.f, 1.f);
  50. mThresholdColors[1] = LLColor4(1.f, 1.f, 0.f, 1.f);
  51. mThresholdColors[2] = LLColor4(1.f, 0.f, 0.f, 1.f);
  52. mThresholdColors[3] = LLColor4(1.f, 0.f, 0.f, 1.f);
  53. mThresholds[0] = 50.f;
  54. mThresholds[1] = 75.f;
  55. mThresholds[2] = 100.f;
  56. mMin = 0.f;
  57. mMax = 125.f;
  58. mPerSec = TRUE;
  59. mValue = 0.f;
  60. mPrecision = 0;
  61. }
  62. void LLStatGraph::draw()
  63. {
  64. F32 range, frac;
  65. range = mMax - mMin;
  66. if (mStatp)
  67. {
  68. if (mPerSec)
  69. {
  70. mValue = mStatp->getMeanPerSec();
  71. }
  72. else
  73. {
  74. mValue = mStatp->getMean();
  75. }
  76. }
  77. frac = (mValue - mMin) / range;
  78. frac = llmax(0.f, frac);
  79. frac = llmin(1.f, frac);
  80. if (mUpdateTimer.getElapsedTimeF32() > 0.5f)
  81. {
  82. std::string format_str;
  83. std::string tmp_str;
  84. format_str = llformat("%%s%%.%df%%s", mPrecision);
  85. tmp_str = llformat(format_str.c_str(), mLabel.c_str(), mValue, mUnits.c_str());
  86. setToolTip(tmp_str);
  87. mUpdateTimer.reset();
  88. }
  89. LLColor4 color;
  90. S32 i;
  91. for (i = 0; i < mNumThresholds - 1; i++)
  92. {
  93. if (mThresholds[i] > mValue)
  94. {
  95. break;
  96. }
  97. }
  98. //gl_drop_shadow(0,  getRect().getHeight(), getRect().getWidth(), 0,
  99. // LLUIColorTable::instance().getColor("ColorDropShadow"), 
  100. // (S32) gSavedSettings.getF32("DropShadowFloater") );
  101. color = LLUIColorTable::instance().getColor( "MenuDefaultBgColor" );
  102. gGL.color4fv(color.mV);
  103. gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, TRUE);
  104. gGL.color4fv(LLColor4::black.mV);
  105. gl_rect_2d(0, getRect().getHeight(), getRect().getWidth(), 0, FALSE);
  106. color = mThresholdColors[i];
  107. gGL.color4fv(color.mV);
  108. gl_rect_2d(1, llround(frac*getRect().getHeight()), getRect().getWidth() - 1, 0, TRUE);
  109. }
  110. void LLStatGraph::setValue(const LLSD& value)
  111. {
  112. mValue = (F32)value.asReal();
  113. }
  114. void LLStatGraph::setMin(const F32 min)
  115. {
  116. mMin = min;
  117. }
  118. void LLStatGraph::setMax(const F32 max)
  119. {
  120. mMax = max;
  121. }
  122. void LLStatGraph::setStat(LLStat *statp)
  123. {
  124. mStatp = statp;
  125. }
  126. void LLStatGraph::setLabel(const std::string& label)
  127. {
  128. mLabel = label;
  129. }
  130. void LLStatGraph::setUnits(const std::string& units)
  131. {
  132. mUnits = units;
  133. }
  134. void LLStatGraph::setPrecision(const S32 precision)
  135. {
  136. mPrecision = precision;
  137. }
  138. void LLStatGraph::setThreshold(const S32 i, F32 value)
  139. {
  140. mThresholds[i] = value;
  141. }