Skip to content

Commit bf13442

Browse files
committed
Moved ImGuiColorEditFlags_AlphaPreview/ImGuiColorEditFlags_AlphaPreviewHalf flags. Demo: reorganized some of color edit/picker demo section.
1 parent 2af26b7 commit bf13442

File tree

2 files changed

+34
-35
lines changed

2 files changed

+34
-35
lines changed

imgui.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -1752,11 +1752,11 @@ enum ImGuiColorEditFlags_
17521752
ImGuiColorEditFlags_NoSidePreview = 1 << 8, // // ColorPicker: disable bigger color preview on right side of the picker, use small color square preview instead.
17531753
ImGuiColorEditFlags_NoDragDrop = 1 << 9, // // ColorEdit: disable drag and drop target. ColorButton: disable drag and drop source.
17541754
ImGuiColorEditFlags_NoBorder = 1 << 10, // // ColorButton: disable border (which is enforced by default)
1755+
ImGuiColorEditFlags_AlphaPreview = 1 << 11, // // ColorEdit, ColorPicker, ColorButton: display preview as a transparent color over a checkerboard, instead of opaque.
1756+
ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 12, // // ColorEdit, ColorPicker, ColorButton: display half opaque / half checkerboard, instead of opaque.
17551757

17561758
// User Options (right-click on widget to change some of them).
17571759
ImGuiColorEditFlags_AlphaBar = 1 << 16, // // ColorEdit, ColorPicker: show vertical alpha bar/gradient in picker.
1758-
ImGuiColorEditFlags_AlphaPreview = 1 << 17, // // ColorEdit, ColorPicker, ColorButton: display preview as a transparent color over a checkerboard, instead of opaque.
1759-
ImGuiColorEditFlags_AlphaPreviewHalf= 1 << 18, // // ColorEdit, ColorPicker, ColorButton: display half opaque / half checkerboard, instead of opaque.
17601760
ImGuiColorEditFlags_HDR = 1 << 19, // // (WIP) ColorEdit: Currently only disable 0.0f..1.0f limits in RGBA edition (note: you probably want to use ImGuiColorEditFlags_Float flag as well).
17611761
ImGuiColorEditFlags_DisplayRGB = 1 << 20, // [Display] // ColorEdit: override _display_ type among RGB/HSV/Hex. ColorPicker: select any combination using one or more of RGB/HSV/Hex.
17621762
ImGuiColorEditFlags_DisplayHSV = 1 << 21, // [Display] // "

imgui_demo.cpp

+32-33
Original file line numberDiff line numberDiff line change
@@ -2117,43 +2117,39 @@ static void ShowDemoWindowWidgets(ImGuiDemoWindowData* demo_data)
21172117
if (ImGui::TreeNode("Color/Picker Widgets"))
21182118
{
21192119
static ImVec4 color = ImVec4(114.0f / 255.0f, 144.0f / 255.0f, 154.0f / 255.0f, 200.0f / 255.0f);
2120+
static ImGuiColorEditFlags base_flags = ImGuiColorEditFlags_AlphaPreview;
21202121

2121-
static bool alpha_preview = true;
2122-
static bool alpha_half_preview = false;
2123-
static bool drag_and_drop = true;
2124-
static bool options_menu = true;
2125-
static bool hdr = false;
21262122
ImGui::SeparatorText("Options");
2127-
ImGui::Checkbox("With Alpha Preview", &alpha_preview);
2128-
ImGui::Checkbox("With Half Alpha Preview", &alpha_half_preview);
2129-
ImGui::Checkbox("With Drag and Drop", &drag_and_drop);
2130-
ImGui::Checkbox("With Options Menu", &options_menu); ImGui::SameLine(); HelpMarker("Right-click on the individual color widget to show options.");
2131-
ImGui::Checkbox("With HDR", &hdr); ImGui::SameLine(); HelpMarker("Currently all this does is to lift the 0..1 limits on dragging widgets.");
2132-
ImGuiColorEditFlags misc_flags = (hdr ? ImGuiColorEditFlags_HDR : 0) | (drag_and_drop ? 0 : ImGuiColorEditFlags_NoDragDrop) | (alpha_half_preview ? ImGuiColorEditFlags_AlphaPreviewHalf : (alpha_preview ? ImGuiColorEditFlags_AlphaPreview : 0)) | (options_menu ? 0 : ImGuiColorEditFlags_NoOptions);
2123+
ImGui::CheckboxFlags("ImGuiColorEditFlags_NoAlpha", &base_flags, ImGuiColorEditFlags_NoAlpha);
2124+
ImGui::CheckboxFlags("ImGuiColorEditFlags_AlphaPreview", &base_flags, ImGuiColorEditFlags_AlphaPreview);
2125+
ImGui::CheckboxFlags("ImGuiColorEditFlags_AlphaPreviewHalf", &base_flags, ImGuiColorEditFlags_AlphaPreviewHalf);
2126+
ImGui::CheckboxFlags("ImGuiColorEditFlags_NoDragDrop", &base_flags, ImGuiColorEditFlags_NoDragDrop);
2127+
ImGui::CheckboxFlags("ImGuiColorEditFlags_NoOptions", &base_flags, ImGuiColorEditFlags_NoOptions); ImGui::SameLine(); HelpMarker("Right-click on the individual color widget to show options.");
2128+
ImGui::CheckboxFlags("ImGuiColorEditFlags_HDR", &base_flags, ImGuiColorEditFlags_HDR); ImGui::SameLine(); HelpMarker("Currently all this does is to lift the 0..1 limits on dragging widgets.");
21332129

21342130
IMGUI_DEMO_MARKER("Widgets/Color/ColorEdit");
21352131
ImGui::SeparatorText("Inline color editor");
21362132
ImGui::Text("Color widget:");
21372133
ImGui::SameLine(); HelpMarker(
21382134
"Click on the color square to open a color picker.\n"
21392135
"CTRL+click on individual component to input value.\n");
2140-
ImGui::ColorEdit3("MyColor##1", (float*)&color, misc_flags);
2136+
ImGui::ColorEdit3("MyColor##1", (float*)&color, base_flags);
21412137

21422138
IMGUI_DEMO_MARKER("Widgets/Color/ColorEdit (HSV, with Alpha)");
21432139
ImGui::Text("Color widget HSV with Alpha:");
2144-
ImGui::ColorEdit4("MyColor##2", (float*)&color, ImGuiColorEditFlags_DisplayHSV | misc_flags);
2140+
ImGui::ColorEdit4("MyColor##2", (float*)&color, ImGuiColorEditFlags_DisplayHSV | base_flags);
21452141

21462142
IMGUI_DEMO_MARKER("Widgets/Color/ColorEdit (float display)");
21472143
ImGui::Text("Color widget with Float Display:");
2148-
ImGui::ColorEdit4("MyColor##2f", (float*)&color, ImGuiColorEditFlags_Float | misc_flags);
2144+
ImGui::ColorEdit4("MyColor##2f", (float*)&color, ImGuiColorEditFlags_Float | base_flags);
21492145

21502146
IMGUI_DEMO_MARKER("Widgets/Color/ColorButton (with Picker)");
21512147
ImGui::Text("Color button with Picker:");
21522148
ImGui::SameLine(); HelpMarker(
21532149
"With the ImGuiColorEditFlags_NoInputs flag you can hide all the slider/text inputs.\n"
21542150
"With the ImGuiColorEditFlags_NoLabel flag you can pass a non-empty label which will only "
21552151
"be used for the tooltip and picker popup.");
2156-
ImGui::ColorEdit4("MyColor##3", (float*)&color, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | misc_flags);
2152+
ImGui::ColorEdit4("MyColor##3", (float*)&color, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | base_flags);
21572153

21582154
IMGUI_DEMO_MARKER("Widgets/Color/ColorButton (with custom Picker popup)");
21592155
ImGui::Text("Color button with Custom Picker Popup:");
@@ -2173,7 +2169,7 @@ static void ShowDemoWindowWidgets(ImGuiDemoWindowData* demo_data)
21732169
}
21742170

21752171
static ImVec4 backup_color;
2176-
bool open_popup = ImGui::ColorButton("MyColor##3b", color, misc_flags);
2172+
bool open_popup = ImGui::ColorButton("MyColor##3b", color, base_flags);
21772173
ImGui::SameLine(0, ImGui::GetStyle().ItemInnerSpacing.x);
21782174
open_popup |= ImGui::Button("Palette");
21792175
if (open_popup)
@@ -2185,7 +2181,7 @@ static void ShowDemoWindowWidgets(ImGuiDemoWindowData* demo_data)
21852181
{
21862182
ImGui::Text("MY CUSTOM COLOR PICKER WITH AN AMAZING PALETTE!");
21872183
ImGui::Separator();
2188-
ImGui::ColorPicker4("##picker", (float*)&color, misc_flags | ImGuiColorEditFlags_NoSidePreview | ImGuiColorEditFlags_NoSmallPreview);
2184+
ImGui::ColorPicker4("##picker", (float*)&color, base_flags | ImGuiColorEditFlags_NoSidePreview | ImGuiColorEditFlags_NoSmallPreview);
21892185
ImGui::SameLine();
21902186

21912187
ImGui::BeginGroup(); // Lock X position
@@ -2227,40 +2223,42 @@ static void ShowDemoWindowWidgets(ImGuiDemoWindowData* demo_data)
22272223
ImGui::Text("Color button only:");
22282224
static bool no_border = false;
22292225
ImGui::Checkbox("ImGuiColorEditFlags_NoBorder", &no_border);
2230-
ImGui::ColorButton("MyColor##3c", *(ImVec4*)&color, misc_flags | (no_border ? ImGuiColorEditFlags_NoBorder : 0), ImVec2(80, 80));
2226+
ImGui::ColorButton("MyColor##3c", *(ImVec4*)&color, base_flags | (no_border ? ImGuiColorEditFlags_NoBorder : 0), ImVec2(80, 80));
22312227

22322228
IMGUI_DEMO_MARKER("Widgets/Color/ColorPicker");
22332229
ImGui::SeparatorText("Color picker");
2234-
static bool alpha = true;
2235-
static bool alpha_bar = true;
2236-
static bool side_preview = true;
2230+
22372231
static bool ref_color = false;
22382232
static ImVec4 ref_color_v(1.0f, 0.0f, 1.0f, 0.5f);
2239-
static int display_mode = 0;
22402233
static int picker_mode = 0;
2241-
ImGui::Checkbox("With Alpha", &alpha);
2242-
ImGui::Checkbox("With Alpha Bar", &alpha_bar);
2243-
ImGui::Checkbox("With Side Preview", &side_preview);
2244-
if (side_preview)
2234+
static int display_mode = 0;
2235+
static ImGuiColorEditFlags color_picker_flags = ImGuiColorEditFlags_AlphaBar;
2236+
2237+
ImGui::PushID("Color picker");
2238+
ImGui::CheckboxFlags("ImGuiColorEditFlags_NoAlpha", &color_picker_flags, ImGuiColorEditFlags_NoAlpha);
2239+
ImGui::CheckboxFlags("ImGuiColorEditFlags_AlphaBar", &color_picker_flags, ImGuiColorEditFlags_AlphaBar);
2240+
ImGui::CheckboxFlags("ImGuiColorEditFlags_NoSidePreview", &color_picker_flags, ImGuiColorEditFlags_NoSidePreview);
2241+
if (color_picker_flags & ImGuiColorEditFlags_NoSidePreview)
22452242
{
22462243
ImGui::SameLine();
22472244
ImGui::Checkbox("With Ref Color", &ref_color);
22482245
if (ref_color)
22492246
{
22502247
ImGui::SameLine();
2251-
ImGui::ColorEdit4("##RefColor", &ref_color_v.x, ImGuiColorEditFlags_NoInputs | misc_flags);
2248+
ImGui::ColorEdit4("##RefColor", &ref_color_v.x, ImGuiColorEditFlags_NoInputs | base_flags);
22522249
}
22532250
}
2254-
ImGui::Combo("Display Mode", &display_mode, "Auto/Current\0None\0RGB Only\0HSV Only\0Hex Only\0");
2251+
2252+
ImGui::Combo("Picker Mode", &picker_mode, "Auto/Current\0ImGuiColorEditFlags_PickerHueBar\0ImGuiColorEditFlags_PickerHueWheel\0");
2253+
ImGui::SameLine(); HelpMarker("When not specified explicitly, user can right-click the picker to change mode.");
2254+
2255+
ImGui::Combo("Display Mode", &display_mode, "Auto/Current\0ImGuiColorEditFlags_NoInputs\0ImGuiColorEditFlags_DisplayRGB\0ImGuiColorEditFlags_DisplayHSV\0ImGuiColorEditFlags_DisplayHex\0");
22552256
ImGui::SameLine(); HelpMarker(
22562257
"ColorEdit defaults to displaying RGB inputs if you don't specify a display mode, "
22572258
"but the user can change it with a right-click on those inputs.\n\nColorPicker defaults to displaying RGB+HSV+Hex "
22582259
"if you don't specify a display mode.\n\nYou can change the defaults using SetColorEditOptions().");
2259-
ImGui::SameLine(); HelpMarker("When not specified explicitly (Auto/Current mode), user can right-click the picker to change mode.");
2260-
ImGuiColorEditFlags flags = misc_flags;
2261-
if (!alpha) flags |= ImGuiColorEditFlags_NoAlpha; // This is by default if you call ColorPicker3() instead of ColorPicker4()
2262-
if (alpha_bar) flags |= ImGuiColorEditFlags_AlphaBar;
2263-
if (!side_preview) flags |= ImGuiColorEditFlags_NoSidePreview;
2260+
2261+
ImGuiColorEditFlags flags = base_flags | color_picker_flags;
22642262
if (picker_mode == 1) flags |= ImGuiColorEditFlags_PickerHueBar;
22652263
if (picker_mode == 2) flags |= ImGuiColorEditFlags_PickerHueWheel;
22662264
if (display_mode == 1) flags |= ImGuiColorEditFlags_NoInputs; // Disable all RGB/HSV/Hex displays
@@ -2289,6 +2287,7 @@ static void ShowDemoWindowWidgets(ImGuiDemoWindowData* demo_data)
22892287
ImGui::SameLine();
22902288
ImGui::SetNextItemWidth(w);
22912289
ImGui::ColorPicker3("##MyColor##6", (float*)&color, ImGuiColorEditFlags_PickerHueWheel | ImGuiColorEditFlags_NoSidePreview | ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoAlpha);
2290+
ImGui::PopID();
22922291

22932292
// HSV encoded support (to avoid RGB<>HSV round trips and singularities when S==0 or V==0)
22942293
static ImVec4 color_hsv(0.23f, 1.0f, 1.0f, 1.0f); // Stored as HSV!

0 commit comments

Comments
 (0)