// 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 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(); }