// this is called from ColorRangeSelect.updateColor public static void updatePickerBaseColor(bool location) { GuiColorPickerCtrl ColorRangeSelect = "ColorRangeSelect"; GuiColorPickerCtrl ColorBlendSelect = "ColorBlendSelect"; string pickColor; if (omni.bGlobal["$ColorPickerSignal"] && location) { pickColor = ColorRangeSelect.baseColor.AsString(); } else { pickColor = ColorRangeSelect.pickColor.AsString(); } omni.bGlobal["$ColorPickerSignal"] = true; string red = omni.Util.getWord(pickColor, 0); string green = omni.Util.getWord(pickColor, 1); string blue = omni.Util.getWord(pickColor, 2); string alpha = omni.Util.getWord(pickColor, 3); ColorBlendSelect.baseColor = (red + " " + green + " " + blue + " " + "1.0").AsColorF(); ColorBlendSelect.updateColor(); }
// this is called from ColorBlendSelect.updateColor public static void updateRGBValues(bool location) { GuiColorPickerCtrl ColorBlendSelect = "ColorBlendSelect"; GuiTextEditCtrl Channel_R_Val = "Channel_R_Val"; GuiTextEditCtrl Channel_G_Val = "Channel_G_Val"; GuiTextEditCtrl Channel_B_Val = "Channel_B_Val"; GuiSwatchButtonCtrl myColor = "myColor"; string pickColor; //update the color based on where it came from if (omni.bGlobal["$ColorPickerSignal"] && location) { pickColor = ColorBlendSelect.baseColor.AsString(); } else { pickColor = ColorBlendSelect.pickColor.AsString(); } //lets prepare the color string red = omni.Util.getWord(pickColor, 0); string green = omni.Util.getWord(pickColor, 1); string blue = omni.Util.getWord(pickColor, 2); //the alpha should be grabbed from mycolor string alpha = omni.Util.getWord(myColor.color.AsString(), 3); // set the color! myColor.color = (red + " " + green + " " + blue + " " + alpha).AsColorF(); DoColorPickerUpdateCallback(); //update differently depending on type if (omni.iGlobal["$ColorCallbackType"] == 1) { red = omni.Util.mCeil(red.AsFloat() * 255).AsString(); blue = omni.Util.mCeil(blue.AsFloat() * 255).AsString(); green = omni.Util.mCeil(green.AsFloat() * 255).AsString(); } else { red = omni.Util.mFloatLength(red.AsFloat(), 3); blue = omni.Util.mFloatLength(blue.AsFloat(), 3); green = omni.Util.mFloatLength(green.AsFloat(), 3); } // changes current color values Channel_R_Val.setValue(red); Channel_G_Val.setValue(green); Channel_B_Val.setValue(blue); omni.bGlobal["$ColorPickerSignal"] = false; }
// This function pushes the color picker dialog and returns to a callback the selected value public static void GetColorI(string currentColor, string callback, string root, string updateCallback, string cancelCallback) { GuiSwatchButtonCtrl oldColor = "oldColor"; GuiSwatchButtonCtrl myColor = "myColor"; GuiColorPickerCtrl ColorRangeSelect = "ColorRangeSelect"; GuiColorPickerCtrl ColorBlendSelect = "ColorBlendSelect"; GuiSliderCtrl ColorAlphaSelect = "ColorAlphaSelect"; GuiCanvas Canvas = "Canvas"; GuiTextEditCtrl Channel_A_Val = "Channel_A_Val"; ColorPickerDlg ColorPickerDlg = "ColorPickerDlg"; omni.bGlobal["$ColorPickerSignal"] = true; omni.sGlobal["$ColorPickerCallback"] = callback; omni.sGlobal["$ColorPickerCancelCallback"] = cancelCallback; omni.sGlobal["$ColorPickerUpdateCallback"] = updateCallback; omni.iGlobal["$ColorCallbackType"] = 1; // ColorI oldColor.color = ColorIntToFloat(currentColor).AsColorF(); myColor.color = ColorIntToFloat(currentColor).AsColorF(); ColorRangeSelect.showReticle = true; ColorBlendSelect.showReticle = true; // Set the range according to int ColorAlphaSelect.range = "0 255".AsPoint2F(); // Set the RGBA displays accordingly float red = omni.Util.getWord(currentColor, 0).AsFloat() / 255; float green = omni.Util.getWord(currentColor, 1).AsFloat() / 255; float blue = omni.Util.getWord(currentColor, 2).AsFloat() / 255; float alpha = omni.Util.getWord(currentColor, 3).AsFloat(); // set the initial range blend to correct color, no alpha needed // this should also set the color blend select right now ColorRangeSelect.baseColor = (red.AsString() + " " + green.AsString() + " " + blue.AsString() + " " + "1.0").AsColorF(); ColorRangeSelect.updateColor(); if (!root.isObject()) { root = Canvas; } ((GuiCanvas)root).pushDialog(ColorPickerDlg); // update the alpha value first ColorAlphaSelect.setValue(alpha.AsString()); Channel_A_Val.setText(alpha.AsString()); }
// This function is used to update the text controls at the top public static void setColorInfo() { GuiTextEditCtrl Channel_R_Val = "Channel_R_Val"; GuiTextEditCtrl Channel_G_Val = "Channel_G_Val"; GuiTextEditCtrl Channel_B_Val = "Channel_B_Val"; GuiColorPickerCtrl ColorBlendSelect = "ColorBlendSelect"; string red = Channel_R_Val.getValue(); string green = Channel_G_Val.getValue(); string blue = Channel_B_Val.getValue(); if (omni.iGlobal["$ColorCallbackType"] == 1) { red = (red.AsFloat() / 255).AsString(); green = (green.AsFloat() / 255).AsString(); blue = (blue.AsFloat() / 255).AsString(); } omni.iGlobal["$ColorPickerSignal"] = 1; ColorBlendSelect.baseColor = (red + " " + green + " " + blue + " " + "1.0").AsColorF(); ColorBlendSelect.updateColor(); }