color palette saving

for now saves palette colours as their hex value. This will miss out on the alpha value.
This commit is contained in:
marauder2k7 2025-01-23 14:46:05 +00:00
parent 46192c3709
commit 48ca98ca84
2 changed files with 99 additions and 11 deletions

View file

@ -550,6 +550,7 @@ inline void ColorI::set(const String& hex)
red = (U8)(convertFromHex(redString));
green = (U8)(convertFromHex(greenString));
blue = (U8)(convertFromHex(blueString));
alpha = 255;
}
inline S32 ColorI::convertFromHex(const String& hex) const

View file

@ -26,7 +26,7 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
changeChildSizeToFit = "0";
changeChildPosition = "0";
position = "0 24";
extent = "271 481";
extent = "271 491";
profile = "GuiDefaultProfile";
tooltipProfile = "GuiToolTipProfile";
@ -283,20 +283,26 @@ $guiContent = new GuiColorPickerCtrl(ColorPickerDlg,EditorGuiGroup) {
};
new GuiRolloutCtrl() {
caption = ":: Color Palette";
margin = "5 5 5 5";
position = "0 445";
extent = "271 36";
extent = "271 46";
profile = "GuiRolloutProfile";
tooltipProfile = "GuiToolTipProfile";
new GuiStackControl() {
stackingType = "Dynamic";
padding = "5";
changeChildSizeToFit = "0";
position = "0 17";
extent = "271 16";
profile = "GuiDefaultProfile";
tooltipProfile = "GuiToolTipProfile";
};
new GuiDynamicCtrlArrayControl(ColorPaletteStack) {
colCount = "12";
colSize = "12";
rowSize = "12";
rowCount = "3";
rowSpacing = "1";
colSpacing = "1";
dynamicSize = "1";
padding = "3 3 3 3";
position = "0 17";
extent = "271 47";
profile = "GuiDefaultProfile";
tooltipProfile = "GuiToolTipProfile";
};
};
};
};
@ -342,6 +348,87 @@ function GetColorF( %currentColor, %callback, %root, %updateCallback, %cancelCal
%root.pushDialog(ColorPickerDlg);
}
function ColorPaletteStack::onWake(%this)
{
if($Pref::ColorPicker::ColorPalette $= "")
{
$Pref::ColorPicker::ColorPalette = "#FFFFFF #FF0000 #00FF00 #0000FF";
}
%colorCount = getWordCount($Pref::ColorPicker::ColorPalette);
if(%colorCount > 63)
%colorCount = 63;
for(%i=0; %i < %colorCount; %i++)
{
%hex = getWord($Pref::ColorPicker::ColorPalette, %i);
%rgb = ColorHEXToRGB(%hex);
%rgb = ColorIntToFloat(%rgb);
%colorBox = new GuiSwatchButtonCtrl() {
extent = "16 16";
color = %rgb;
profile = "GuiDefaultProfile";
colorHex = %hex;
useMouseEvents = "1";
class = "ColorPaletteSwatch";
};
ColorPaletteStack.Add(%colorBox);
}
%button = new GuiButtonCtrl() {
text = "+";
extent = "16 16";
profile = "ToolsGuiButtonProfile";
tooltipProfile = "GuiToolTipProfile";
command = "ColorPaletteStack.addCurrentColorToStack();";
};
ColorPaletteStack.Add(%button);
}
function ColorPaletteStack::addCurrentColorToStack(%this)
{
%hex = HexTextEditor.getValue();
//Make sure we have 6 characters
while(strlen(%hex) < 6)
{
%hex = "0" @ %hex;
}
%hex = strupr(%hex);
$Pref::ColorPicker::ColorPalette = "#" @ %hex SPC $Pref::ColorPicker::ColorPalette;
ColorPaletteStack.clear();
ColorPaletteStack.onWake();
}
function ColorPaletteStack::onSleep(%this)
{
ColorPaletteStack.clear();
}
function ColorPaletteSwatch::onMouseDown(%this)
{
//Update all the other color fields
%rgb = ColorHEXToRGB(%this.colorHex);
%hsb = ColorRGBToHSB(%rgb);
// these automatically update our ColorNewSelected which
// updates all text fields including these.
ColorHueRange.setSelectedHue(getWord(%hsb, 0));
ColorHueRange.executeUpdate();
ColorBlendRange.setSelectedSaturation(getWord(%hsb, 1));
ColorBlendRange.setSelectedBrightness(getWord(%hsb, 2));
ColorBlendRange.executeUpdate();
// for now just set full alpha until we save out alpha as well
ColorAlphaRange.setSelectedAlpha(255);
ColorAlphaRange.executeUpdate();
}
function ColorPickerRGBClass::onValidate(%this)
{
%red = RedTextEdit.getValue();