BOOL LLFloaterColorPicker::updateRgbHslFromPoint ( S32 xPosIn, S32 yPosIn ) { if ( xPosIn >= mRGBViewerImageLeft && xPosIn <= mRGBViewerImageLeft + mRGBViewerImageWidth && yPosIn <= mRGBViewerImageTop && yPosIn >= mRGBViewerImageTop - mRGBViewerImageHeight ) { // update HSL (and therefore RGB) based on new H & S and current L setCurHsl ( ( ( F32 )xPosIn - ( F32 )mRGBViewerImageLeft ) / ( F32 )mRGBViewerImageWidth, ( ( F32 )yPosIn - ( ( F32 )mRGBViewerImageTop - ( F32 )mRGBViewerImageHeight ) ) / ( F32 )mRGBViewerImageHeight, getCurL () ); // indicate a value changed return TRUE; } else if ( xPosIn >= mLumRegionLeft && xPosIn <= mLumRegionLeft + mLumRegionWidth && yPosIn <= mLumRegionTop && yPosIn >= mLumRegionTop - mLumRegionHeight ) { // update HSL (and therefore RGB) based on current HS and new L setCurHsl ( getCurH (), getCurS (), ( ( F32 )yPosIn - ( ( F32 )mRGBViewerImageTop - ( F32 )mRGBViewerImageHeight ) ) / ( F32 )mRGBViewerImageHeight ); // indicate a value changed return TRUE; } return FALSE; }
void LLFloaterColorPicker::onTextEntryChanged ( LLUICtrl* ctrl ) { // value in RGB boxes changed std::string name = ctrl->getName(); if ( ( name == "rspin" ) || ( name == "gspin" ) || ( name == "bspin" ) ) { // get current RGB F32 rVal, gVal, bVal; getCurRgb ( rVal, gVal, bVal ); // update component value with new value from text if ( name == "rspin" ) { rVal = (F32)ctrl->getValue().asReal() / 255.0f; } else if ( name == "gspin" ) { gVal = (F32)ctrl->getValue().asReal() / 255.0f; } else if ( name == "bspin" ) { bVal = (F32)ctrl->getValue().asReal() / 255.0f; } // update current RGB (and implicitly HSL) setCurRgb ( rVal, gVal, bVal ); updateTextEntry (); } else // value in HSL boxes changed if ( ( name == "hspin" ) || ( name == "sspin" ) || ( name == "lspin" ) ) { // get current HSL F32 hVal, sVal, lVal; getCurHsl ( hVal, sVal, lVal ); // update component value with new value from text if ( name == "hspin" ) hVal = (F32)ctrl->getValue().asReal() / 360.0f; else if ( name == "sspin" ) sVal = (F32)ctrl->getValue().asReal() / 100.0f; else if ( name == "lspin" ) lVal = (F32)ctrl->getValue().asReal() / 100.0f; // update current HSL (and implicitly RGB) setCurHsl ( hVal, sVal, lVal ); updateTextEntry (); } if (mApplyImmediateCheck->get()) { LLColorSwatchCtrl::onColorChanged ( getSwatch (), LLColorSwatchCtrl::COLOR_CHANGE ); } }
////////////////////////////////////////////////////////////////////////////// // set current HSL and rise change event if needed. void LLFloaterColorPicker::selectCurHsl ( F32 curHIn, F32 curSIn, F32 curLIn ) { setCurHsl(curHIn, curSIn, curLIn); if (mApplyImmediateCheck->get()) { LLColorSwatchCtrl::onColorChanged ( getSwatch (), LLColorSwatchCtrl::COLOR_CHANGE ); } }
void LLFloaterColorPicker::onTextEntryChanged ( LLUICtrl* ctrl ) { // value in RGB boxes changed std::string name = ctrl->getName(); if ( ( name == "rspin" ) || ( name == "gspin" ) || ( name == "bspin" ) ) { // get current RGB F32 rVal, gVal, bVal; getCurRgb ( rVal, gVal, bVal ); // update component value with new value from text if ( name == "rspin" ) { rVal = (F32)ctrl->getValue().asReal() / 255.0f; } else if ( name == "gspin" ) { gVal = (F32)ctrl->getValue().asReal() / 255.0f; } else if ( name == "bspin" ) { bVal = (F32)ctrl->getValue().asReal() / 255.0f; } // update current RGB (and implicitly HSL) setCurRgb ( rVal, gVal, bVal ); updateTextEntry (); } // <FS:Zi> Add float LSL color entry widgets else if ( ( name == "rspin_lsl" ) || ( name == "gspin_lsl" ) || ( name == "bspin_lsl" ) ) { // get current RGB F32 rVal, gVal, bVal; getCurRgb ( rVal, gVal, bVal ); // update component value with new value from text if ( name == "rspin_lsl" ) { rVal = (F32)ctrl->getValue().asReal(); } else if ( name == "gspin_lsl" ) { gVal = (F32)ctrl->getValue().asReal(); } else if ( name == "bspin_lsl" ) { bVal = (F32)ctrl->getValue().asReal(); } // update current RGB (and implicitly HSL) setCurRgb ( rVal, gVal, bVal ); updateTextEntry (); } else if ( name == "hex_value" ) { // get current RGB S32 r, g, b; F32 rVal, gVal, bVal; getCurRgb ( rVal, gVal, bVal ); std::string hex_string=ctrl->getValue().asString(); if(hex_string.length()!=6) return; LLStringUtil::toLower(hex_string); if(hex_string.find_first_not_of("0123456789abcdef")!=std::string::npos) return; sscanf(hex_string.c_str(),"%02x%02x%02x", &r,&g,&b); rVal=(F32) r/255.0; gVal=(F32) g/255.0; bVal=(F32) b/255.0; // update current RGB (and implicitly HSL) setCurRgb ( rVal, gVal, bVal ); updateTextEntry (); } // </FS:Zi> else // value in HSL boxes changed if ( ( name == "hspin" ) || ( name == "sspin" ) || ( name == "lspin" ) ) { // get current HSL F32 hVal, sVal, lVal; getCurHsl ( hVal, sVal, lVal ); // update component value with new value from text if ( name == "hspin" ) hVal = (F32)ctrl->getValue().asReal() / 360.0f; else if ( name == "sspin" ) sVal = (F32)ctrl->getValue().asReal() / 100.0f; else if ( name == "lspin" ) lVal = (F32)ctrl->getValue().asReal() / 100.0f; // update current HSL (and implicitly RGB) setCurHsl ( hVal, sVal, lVal ); updateTextEntry (); } if (mApplyImmediateCheck->get()) { LLColorSwatchCtrl::onColorChanged ( getSwatch (), LLColorSwatchCtrl::COLOR_CHANGE ); } }