More poking at and refactoring of LGG's beams stuff

Ansariel 2014-08-07 22:56:13 +02:00
parent df8c503828
commit a443eb7bcb
6 changed files with 69 additions and 102 deletions

View File

@ -25,48 +25,12 @@
F32 convertXToHue(S32 place)
{
return ((place-6)/396.0f)*720.0f;
return ((place - 6) / 396.0f) * 720.0f;
}
S32 convertHueToX(F32 place)
{
return llround((place/720.0f)*396.0f)+6;
}
F32 hueToRgb1 ( F32 val1In, F32 val2In, F32 valHUeIn )
{
if ( valHUeIn < 0.0f ) valHUeIn += 1.0f;
if ( valHUeIn > 1.0f ) valHUeIn -= 1.0f;
if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn );
if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In );
if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f );
return ( val1In );
}
void hslToRgb1 ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut )
{
if ( sValIn < 0.00001f )
{
rValOut = lValIn;
gValOut = lValIn;
bValOut = lValIn;
}
else
{
F32 interVal1;
F32 interVal2;
if ( lValIn < 0.5f )
interVal2 = lValIn * ( 1.0f + sValIn );
else
interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn );
interVal1 = 2.0f * lValIn - interVal2;
rValOut = hueToRgb1 ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) );
gValOut = hueToRgb1 ( interVal1, interVal2, hValIn );
bValOut = hueToRgb1 ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) );
}
return llround((place / 720.0f) * 396.0f) + 6;
}
@ -89,9 +53,8 @@ void lggBeamColorMapFloater::draw()
static const std::string end_hue_label = getString("end_hue");
//set the color of the preview thing
LLColorSwatchCtrl* colorctrl = getChild<LLColorSwatchCtrl>("BeamColor_Preview");
LLColor4 bColor = LLColor4(lggBeamMaps::beamColorFromData(myData));
colorctrl->set(bColor, TRUE);
mBeamColorPreview->set(bColor, TRUE);
//Try draw rectangle attach beam
LLRect swatch_rect;
@ -140,8 +103,8 @@ void lggBeamColorMapFloater::draw()
gGL.end();
}
F32 opacity = gSavedSettings.getF32("PickerContextOpacity");
mContextConeOpacity = lerp(mContextConeOpacity, opacity, LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
static LLCachedControl<F32> opacity(gSavedSettings, "PickerContextOpacity");
mContextConeOpacity = lerp(mContextConeOpacity, opacity(), LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
//Draw Base Stuff
LLFloater::draw();
@ -153,16 +116,14 @@ void lggBeamColorMapFloater::draw()
for (S32 i = 0; i <= 720; ++i)
{
S32 hi = i % 360;
hslToRgb1((hi / 360.0f), 1.0f, 0.5f, r, g, b);
hslToRgb((hi / 360.0f), 1.0f, 0.5f, r, g, b);
output.set(r, g, b);
gl_line_2d(
convertHueToX(i) + CORRECTION_X, 201 + CORRECTION_Y,
convertHueToX(i) + CORRECTION_X, 277 + CORRECTION_Y, output);
//convertHueToX(i),161,
//convertHueToX(i),237,output);
}
S32 X1 = convertHueToX(myData.mStartHue) + CORRECTION_X;
S32 X2 = convertHueToX(myData.mEndHue) + CORRECTION_X;
LLFontGL* font = LLFontGL::getFontSansSerifSmall();
@ -186,12 +147,11 @@ void lggBeamColorMapFloater::draw()
font->renderUTF8(
start_hue_label, 0,
X1 + CORRECTION_X,
X1 + CORRECTION_X,
212 + CORRECTION_Y,
LLColor4::white, LLFontGL::HCENTER,
LLFontGL::BASELINE, LLFontGL::DROP_SHADOW);
gGL.color4fv(LLColor4::white.mV);
gl_circle_2d(X2 + CORRECTION_X, 238 + CORRECTION_Y, 9.0f, 30, false);
@ -211,7 +171,7 @@ void lggBeamColorMapFloater::draw()
font->renderUTF8(
end_hue_label, 0,
X2 + CORRECTION_X,
X2 + CORRECTION_X,
212 + CORRECTION_Y,
LLColor4::white, LLFontGL::HCENTER,
LLFontGL::BASELINE, LLFontGL::DROP_SHADOW);
@ -223,14 +183,14 @@ lggBeamColorMapFloater::~lggBeamColorMapFloater()
{
}
lggBeamColorMapFloater::lggBeamColorMapFloater(const LLSD& seed): LLFloater(seed),
lggBeamColorMapFloater::lggBeamColorMapFloater(const LLSD& seed) : LLFloater(seed),
mContextConeOpacity(0.0f)
{
}
BOOL lggBeamColorMapFloater::postBuild(void)
BOOL lggBeamColorMapFloater::postBuild()
{
setCanMinimize(false);
setCanMinimize(FALSE);
getChild<LLUICtrl>("BeamColor_Save")->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickSave, this));
getChild<LLUICtrl>("BeamColor_Load")->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickLoad, this));
@ -238,19 +198,16 @@ BOOL lggBeamColorMapFloater::postBuild(void)
mColorSlider = getChild<LLSliderCtrl>("BeamColor_Speed");
mColorSlider->setCommitCallback(boost::bind(&lggBeamColorMapFloater::onClickSlider, this));
// Is this still needed???
//mColorSlider->setCallbackUserData(this);
mBeamColorPreview = getChild<LLColorSwatchCtrl>("BeamColor_Preview");
fixOrder();
return true;
return TRUE;
}
BOOL lggBeamColorMapFloater::handleMouseDown(S32 x,S32 y,MASK mask)
{
//6, 277
//402 201
if (y > (201 + CORRECTION_Y) && y < (277 + CORRECTION_Y))
{
if (x < (6 + CORRECTION_X))
@ -269,7 +226,7 @@ BOOL lggBeamColorMapFloater::handleMouseDown(S32 x,S32 y,MASK mask)
fixOrder();
}
LL_INFOS() << "we got clicked at (" << x << ", " << y << " yay! " << LL_ENDL;
LL_DEBUGS() << "we got clicked at (" << x << ", " << y << " yay! " << LL_ENDL;
return LLFloater::handleMouseDown(x, y, mask);
}
@ -293,7 +250,7 @@ BOOL lggBeamColorMapFloater::handleRightMouseDown(S32 x, S32 y, MASK mask)
fixOrder();
}
LL_INFOS() << "we got right clicked at (" << x << ", " << y << " yay! " << LL_ENDL;
LL_DEBUGS() << "we got right clicked at (" << x << ", " << y << " yay! " << LL_ENDL;
return LLFloater::handleRightMouseDown(x, y, mask);
}
@ -332,7 +289,7 @@ void lggBeamColorMapFloater::onClickSave()
std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS, "beamsColors", ""));
std::string filename=path_name2 + "myNewBeamColor.xml";
if(!picker.getSaveFile( LLFilePicker::FFSAVE_BEAM, filename ) )
if (!picker.getSaveFile(LLFilePicker::FFSAVE_BEAM, filename))
{
return;
}

View File

@ -19,6 +19,7 @@
#include "lggbeamscolors.h"
class FSPanelPrefs;
class LLColorSwatchCtrl;
class LLSliderCtrl;
////////////////////////////////////////////////////////////////////////////
@ -29,7 +30,7 @@ public:
lggBeamColorMapFloater(const LLSD& seed);
virtual ~lggBeamColorMapFloater();
BOOL postBuild(void);
BOOL postBuild();
BOOL handleMouseDown(S32 x,S32 y,MASK mask);
BOOL handleRightMouseDown(S32 x,S32 y,MASK mask);
@ -47,10 +48,11 @@ protected:
void fixOrder();
LLSD getMyDataSerialized();
F32 mContextConeOpacity;
FSPanelPrefs* mFSPanel;
lggBeamsColors myData;
LLSliderCtrl* mColorSlider;
F32 mContextConeOpacity;
FSPanelPrefs* mFSPanel;
lggBeamsColors myData;
LLSliderCtrl* mColorSlider;
LLColorSwatchCtrl* mBeamColorPreview;
};
#endif // LGG_BEAMCOLORMAPFLOATER_H

View File

@ -76,12 +76,11 @@ void lggBeamMapFloater::draw()
gGL.end();
}
F32 opacity = gSavedSettings.getF32("PickerContextOpacity");
mContextConeOpacity = lerp(mContextConeOpacity, opacity, LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
static LLCachedControl<F32> opacity(gSavedSettings, "PickerContextOpacity");
mContextConeOpacity = lerp(mContextConeOpacity, opacity(), LLCriticalDamp::getInterpolant(CONTEXT_FADE_TIME));
//getChild<LLPanel>("beamshape_draw")->setBackgroundColor(getChild<LLColorSwatchCtrl>("back_color_swatch")->get());
LLFloater::draw();
LLRect rec = getChild<LLPanel>("beamshape_draw")->getRect();
LLRect rec = mBeamshapePanel->getRect();
gGL.pushMatrix();
gGL.color4fv(LLColor4::white.mV);
@ -115,14 +114,14 @@ lggBeamMapFloater::~lggBeamMapFloater()
{
}
lggBeamMapFloater::lggBeamMapFloater(const LLSD& seed): LLFloater(seed),
lggBeamMapFloater::lggBeamMapFloater(const LLSD& seed) : LLFloater(seed),
mContextConeOpacity(0.0f)
{
}
BOOL lggBeamMapFloater::postBuild(void)
BOOL lggBeamMapFloater::postBuild()
{
setCanMinimize(false);
setCanMinimize(FALSE);
getChild<LLUICtrl>("beamshape_save")->setCommitCallback(boost::bind(&lggBeamMapFloater::onClickSave, this));
getChild<LLUICtrl>("beamshape_clear")->setCommitCallback(boost::bind(&lggBeamMapFloater::onClickClear, this));
@ -131,23 +130,25 @@ BOOL lggBeamMapFloater::postBuild(void)
getChild<LLColorSwatchCtrl>("back_color_swatch")->setCommitCallback(boost::bind(&lggBeamMapFloater::onBackgroundChange, this));
getChild<LLColorSwatchCtrl>("beam_color_swatch")->setColor(LLColor4::red);
return true;
mBeamshapePanel = getChild<LLPanel>("beamshape_draw");
return TRUE;
}
BOOL lggBeamMapFloater::handleMouseDown(S32 x,S32 y,MASK mask)
BOOL lggBeamMapFloater::handleMouseDown(S32 x, S32 y, MASK mask)
{
if (y > 39 && x > 16 && x < 394 && y < 317)
{
lggPoint a;
a.x = x;
a.y = y;
a.c= getChild<LLColorSwatchCtrl>("beam_color_swatch")->get();
a.c = getChild<LLColorSwatchCtrl>("beam_color_swatch")->get();
mDots.push_back(a);
LL_INFOS() << "we got clicked at (" << x << ", " << y << " and color was " << a.c << LL_ENDL;
LL_DEBUGS() << "we got clicked at (" << x << ", " << y << " and color was " << a.c << LL_ENDL;
}
return LLFloater::handleMouseDown(x,y,mask);
return LLFloater::handleMouseDown(x, y, mask);
}
void lggBeamMapFloater::setData(void* data)
@ -178,13 +179,13 @@ BOOL lggBeamMapFloater::handleRightMouseDown(S32 x, S32 y, MASK mask)
void lggBeamMapFloater::onBackgroundChange()
{
getChild<LLPanel>("beamshape_draw")->setBackgroundColor(getChild<LLColorSwatchCtrl>("back_color_swatch")->get());
mBeamshapePanel->setBackgroundColor(getChild<LLColorSwatchCtrl>("back_color_swatch")->get());
}
LLSD lggBeamMapFloater::getMyDataSerialized()
{
LLSD out;
LLRect r = getChild<LLPanel>("beamshape_draw")->getRect();
LLRect r = mBeamshapePanel->getRect();
for (S32 i = 0; i < mDots.size(); ++i)
{
LLSD point;
@ -202,7 +203,7 @@ LLSD lggBeamMapFloater::getMyDataSerialized()
void lggBeamMapFloater::onClickSave()
{
LLRect r = getChild<LLPanel>("beamshape_draw")->getRect();
LLRect r = mBeamshapePanel->getRect();
LLFilePicker& picker = LLFilePicker::instance();
std::string path_name2(gDirUtilp->getExpandedFilename(LL_PATH_USER_SETTINGS , "beams", ""));
@ -252,7 +253,7 @@ void lggBeamMapFloater::onClickLoad()
for (LLSD::array_iterator it = myPicture.beginArray(); it != myPicture.endArray(); ++it)
{
LLRect rec = getChild<LLPanel>("beamshape_draw")->getRect();
LLRect rec = mBeamshapePanel->getRect();
LLSD beamData = *it;
lggPoint p;

View File

@ -17,6 +17,7 @@
#include "llfloater.h"
class FSPanelPrefs;
class LLPanel;
class lggPoint
{
@ -56,6 +57,7 @@ private:
std::vector<lggPoint> mDots;
F32 mContextConeOpacity;
FSPanelPrefs* mFSPanel;
LLPanel* mBeamshapePanel;
};
#endif // LGG_BEAMMAPFLOATER_H

View File

@ -26,15 +26,6 @@
#include "message.h"
lggBeamMaps gLggBeamMaps;
F32 hueToRgb ( F32 val1In, F32 val2In, F32 valHUeIn )
{
while ( valHUeIn < 0.0f ) valHUeIn += 1.0f;
while ( valHUeIn > 1.0f ) valHUeIn -= 1.0f;
if ( ( 6.0f * valHUeIn ) < 1.0f ) return ( val1In + ( val2In - val1In ) * 6.0f * valHUeIn );
if ( ( 2.0f * valHUeIn ) < 1.0f ) return ( val2In );
if ( ( 3.0f * valHUeIn ) < 2.0f ) return ( val1In + ( val2In - val1In ) * ( ( 2.0f / 3.0f ) - valHUeIn ) * 6.0f );
return ( val1In );
}
std::string unescape_name(const std::string& name)
{
@ -47,9 +38,19 @@ std::string unescape_name(const std::string& name)
return unescaped_name;
}
void hslToRgb ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut )
F32 hueToRgb(F32 val1In, F32 val2In, F32 valHUeIn)
{
if ( sValIn < 0.00001f )
while (valHUeIn < 0.0f) valHUeIn += 1.0f;
while (valHUeIn > 1.0f) valHUeIn -= 1.0f;
if ((6.0f * valHUeIn) < 1.0f) return (val1In + (val2In - val1In) * 6.0f * valHUeIn);
if ((2.0f * valHUeIn) < 1.0f) return (val2In);
if ((3.0f * valHUeIn) < 2.0f) return (val1In + (val2In - val1In) * ((2.0f / 3.0f) - valHUeIn) * 6.0f);
return val1In;
}
void hslToRgb(F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut)
{
if (sValIn < 0.00001f)
{
rValOut = lValIn;
gValOut = lValIn;
@ -60,20 +61,20 @@ void hslToRgb ( F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut,
F32 interVal1;
F32 interVal2;
if ( lValIn < 0.5f )
if (lValIn < 0.5f)
{
interVal2 = lValIn * ( 1.0f + sValIn );
interVal2 = lValIn * (1.0f + sValIn);
}
else
{
interVal2 = ( lValIn + sValIn ) - ( sValIn * lValIn );
interVal2 = (lValIn + sValIn) - (sValIn * lValIn);
}
interVal1 = 2.0f * lValIn - interVal2;
rValOut = hueToRgb ( interVal1, interVal2, hValIn + ( 1.f / 3.f ) );
gValOut = hueToRgb ( interVal1, interVal2, hValIn );
bValOut = hueToRgb ( interVal1, interVal2, hValIn - ( 1.f / 3.f ) );
rValOut = hueToRgb(interVal1, interVal2, hValIn + (1.f / 3.f));
gValOut = hueToRgb(interVal1, interVal2, hValIn);
bValOut = hueToRgb(interVal1, interVal2, hValIn - (1.f / 3.f));
}
}

View File

@ -14,9 +14,13 @@
#ifndef LGG_BEAMMAPS_H
#define LGG_BEAMMAPS_H
#include "llfontregistry.h"
#include "llhudeffecttrail.h"
#include "lggbeamscolors.h"
F32 hueToRgb(F32 val1In, F32 val2In, F32 valHUeIn);
void hslToRgb(F32 hValIn, F32 sValIn, F32 lValIn, F32& rValOut, F32& gValOut, F32& bValOut);
class lggBeamData
{
public:
@ -43,8 +47,8 @@ public:
void updateBeamChat(const LLVector3d& currentPos);
static LLColor4U beamColorFromData(const lggBeamsColors& data);
LLColor4U getCurrentColor(const LLColor4U& agentColor);
std::vector<std::string> getFileNames();
std::vector<std::string> getColorsFileNames();
string_vec_t getFileNames();
string_vec_t getColorsFileNames();
private:
LLSD getPic(const std::string& filename);