mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-15 01:17:00 +00:00
ColorPicker: Removed extraneous ImGui:: prefixes + minor comments (#346)
This commit is contained in:
parent
e79d7553b0
commit
1edeea2f5a
37
imgui.cpp
37
imgui.cpp
@ -9109,8 +9109,8 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
|||||||
ImFormatString(buf, IM_ARRAYSIZE(buf), "#%02X%02X%02X%02X", i[0], i[1], i[2], i[3]);
|
ImFormatString(buf, IM_ARRAYSIZE(buf), "#%02X%02X%02X%02X", i[0], i[1], i[2], i[3]);
|
||||||
else
|
else
|
||||||
ImFormatString(buf, IM_ARRAYSIZE(buf), "#%02X%02X%02X", i[0], i[1], i[2]);
|
ImFormatString(buf, IM_ARRAYSIZE(buf), "#%02X%02X%02X", i[0], i[1], i[2]);
|
||||||
ImGui::PushItemWidth(w_slider_all);
|
PushItemWidth(w_slider_all);
|
||||||
if (ImGui::InputText("##Text", buf, IM_ARRAYSIZE(buf), ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase))
|
if (InputText("##Text", buf, IM_ARRAYSIZE(buf), ImGuiInputTextFlags_CharsHexadecimal | ImGuiInputTextFlags_CharsUppercase))
|
||||||
{
|
{
|
||||||
value_changed |= true;
|
value_changed |= true;
|
||||||
char* p = buf;
|
char* p = buf;
|
||||||
@ -9213,20 +9213,21 @@ bool ImGui::ColorPicker3(const char* label, float col[3], ImGuiColorEditFlags fl
|
|||||||
// see https://github.com/ocornut/imgui/issues/346
|
// see https://github.com/ocornut/imgui/issues/346
|
||||||
// TODO: Missing color square
|
// TODO: Missing color square
|
||||||
// TODO: English strings in context menu (see FIXME-LOCALIZATION)
|
// TODO: English strings in context menu (see FIXME-LOCALIZATION)
|
||||||
|
// Note: we adjust item height based on item widget, which may cause a flickering feedback loop (if automatic height makes a vertical scrollbar appears, affecting automatic width..)
|
||||||
bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags flags)
|
bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags flags)
|
||||||
{
|
{
|
||||||
ImGuiIO& io = ImGui::GetIO();
|
ImGuiIO& io = ImGui::GetIO();
|
||||||
ImGuiStyle& style = ImGui::GetStyle();
|
ImGuiStyle& style = ImGui::GetStyle();
|
||||||
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
||||||
|
|
||||||
ImGui::PushID(label);
|
PushID(label);
|
||||||
ImGui::BeginGroup();
|
BeginGroup();
|
||||||
|
|
||||||
// Setup
|
// Setup
|
||||||
bool alpha = (flags & ImGuiColorEditFlags_Alpha) != 0;
|
bool alpha = (flags & ImGuiColorEditFlags_Alpha) != 0;
|
||||||
ImVec2 picker_pos = ImGui::GetCursorScreenPos();
|
ImVec2 picker_pos = ImGui::GetCursorScreenPos();
|
||||||
float bars_width = ImGui::GetWindowFontSize() * 1.0f; // Arbitrary smallish width of Hue/Alpha picking bars
|
float bars_width = ImGui::GetWindowFontSize() * 1.0f; // Arbitrary smallish width of Hue/Alpha picking bars
|
||||||
float sv_picker_size = ImMax(bars_width * 2, ImGui::CalcItemWidth() - (alpha ? 2 : 1) * (bars_width + style.ItemInnerSpacing.x)); // Saturation/Value picking box
|
float sv_picker_size = ImMax(bars_width * 2, CalcItemWidth() - (alpha ? 2 : 1) * (bars_width + style.ItemInnerSpacing.x)); // Saturation/Value picking box
|
||||||
float bar0_pos_x = picker_pos.x + sv_picker_size + style.ItemInnerSpacing.x;
|
float bar0_pos_x = picker_pos.x + sv_picker_size + style.ItemInnerSpacing.x;
|
||||||
float bar1_pos_x = bar0_pos_x + bars_width + style.ItemInnerSpacing.x;
|
float bar1_pos_x = bar0_pos_x + bars_width + style.ItemInnerSpacing.x;
|
||||||
|
|
||||||
@ -9235,12 +9236,12 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
|
|||||||
// ColorTooltip(col, flags);
|
// ColorTooltip(col, flags);
|
||||||
|
|
||||||
float H,S,V;
|
float H,S,V;
|
||||||
ImGui::ColorConvertRGBtoHSV(col[0], col[1], col[2], H, S, V);
|
ColorConvertRGBtoHSV(col[0], col[1], col[2], H, S, V);
|
||||||
|
|
||||||
// Color matrix logic
|
// Color matrix logic
|
||||||
bool value_changed = false, hsv_changed = false;
|
bool value_changed = false, hsv_changed = false;
|
||||||
ImGui::InvisibleButton("sv", ImVec2(sv_picker_size, sv_picker_size));
|
InvisibleButton("sv", ImVec2(sv_picker_size, sv_picker_size));
|
||||||
if (ImGui::IsItemActive())
|
if (IsItemActive())
|
||||||
{
|
{
|
||||||
S = ImSaturate((io.MousePos.x - picker_pos.x) / (sv_picker_size-1));
|
S = ImSaturate((io.MousePos.x - picker_pos.x) / (sv_picker_size-1));
|
||||||
V = 1.0f - ImSaturate((io.MousePos.y - picker_pos.y) / (sv_picker_size-1));
|
V = 1.0f - ImSaturate((io.MousePos.y - picker_pos.y) / (sv_picker_size-1));
|
||||||
@ -9283,29 +9284,29 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
|
|||||||
if (!(flags & ImGuiColorEditFlags_NoSliders))
|
if (!(flags & ImGuiColorEditFlags_NoSliders))
|
||||||
{
|
{
|
||||||
if ((flags & ImGuiColorEditFlags_ModeMask_) == 0)
|
if ((flags & ImGuiColorEditFlags_ModeMask_) == 0)
|
||||||
ImGui::PushItemWidth((alpha ? bar1_pos_x : bar0_pos_x) + bars_width - picker_pos.x);
|
|
||||||
ImGuiColorEditFlags sub_flags = (alpha ? ImGuiColorEditFlags_Alpha : 0) | ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoOptions | ImGuiColorEditFlags_NoColorSquare;
|
ImGuiColorEditFlags sub_flags = (alpha ? ImGuiColorEditFlags_Alpha : 0) | ImGuiColorEditFlags_NoPicker | ImGuiColorEditFlags_NoOptions | ImGuiColorEditFlags_NoColorSquare;
|
||||||
flags |= ImGuiColorEditFlags_RGB | ImGuiColorEditFlags_HSV | ImGuiColorEditFlags_HEX;
|
flags |= ImGuiColorEditFlags_RGB | ImGuiColorEditFlags_HSV | ImGuiColorEditFlags_HEX;
|
||||||
|
PushItemWidth((alpha ? bar1_pos_x : bar0_pos_x) + bars_width - picker_pos.x);
|
||||||
if (flags & ImGuiColorEditFlags_RGB)
|
if (flags & ImGuiColorEditFlags_RGB)
|
||||||
value_changed |= ImGui::ColorEdit4("##rgb", col, sub_flags | ImGuiColorEditFlags_RGB);
|
value_changed |= ColorEdit4("##rgb", col, sub_flags | ImGuiColorEditFlags_RGB);
|
||||||
if (flags & ImGuiColorEditFlags_HSV)
|
if (flags & ImGuiColorEditFlags_HSV)
|
||||||
value_changed |= ImGui::ColorEdit4("##hsv", col, sub_flags | ImGuiColorEditFlags_HSV);
|
value_changed |= ColorEdit4("##hsv", col, sub_flags | ImGuiColorEditFlags_HSV);
|
||||||
if (flags & ImGuiColorEditFlags_HEX)
|
if (flags & ImGuiColorEditFlags_HEX)
|
||||||
value_changed |= ImGui::ColorEdit4("##hex", col, sub_flags | ImGuiColorEditFlags_HEX);
|
value_changed |= ColorEdit4("##hex", col, sub_flags | ImGuiColorEditFlags_HEX);
|
||||||
ImGui::PopItemWidth();
|
PopItemWidth();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to cancel hue wrap (after ColorEdit), if any
|
// Try to cancel hue wrap (after ColorEdit), if any
|
||||||
if (value_changed)
|
if (value_changed)
|
||||||
{
|
{
|
||||||
float new_H, new_S, new_V;
|
float new_H, new_S, new_V;
|
||||||
ImGui::ColorConvertRGBtoHSV(col[0], col[1], col[2], new_H, new_S, new_V);
|
ColorConvertRGBtoHSV(col[0], col[1], col[2], new_H, new_S, new_V);
|
||||||
if (new_H <= 0 && H > 0)
|
if (new_H <= 0 && H > 0)
|
||||||
{
|
{
|
||||||
if (new_V <= 0 && V != new_V)
|
if (new_V <= 0 && V != new_V)
|
||||||
ImGui::ColorConvertHSVtoRGB(H, S, new_V <= 0 ? V * 0.5f : new_V, col[0], col[1], col[2]);
|
ColorConvertHSVtoRGB(H, S, new_V <= 0 ? V * 0.5f : new_V, col[0], col[1], col[2]);
|
||||||
else if (new_S <= 0)
|
else if (new_S <= 0)
|
||||||
ImGui::ColorConvertHSVtoRGB(H, new_S <= 0 ? S * 0.5f : new_S, new_V, col[0], col[1], col[2]);
|
ColorConvertHSVtoRGB(H, new_S <= 0 ? S * 0.5f : new_S, new_V, col[0], col[1], col[2]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -9481,7 +9482,7 @@ void ImGui::EndGroup()
|
|||||||
|
|
||||||
window->DC.GroupStack.pop_back();
|
window->DC.GroupStack.pop_back();
|
||||||
|
|
||||||
//window->DrawList->AddRect(group_bb.Min, group_bb.Max, IM_COL32(255,0,255,255)); // Debug
|
//window->DrawList->AddRect(group_bb.Min, group_bb.Max, IM_COL32(255,0,255,255)); // [Debug]
|
||||||
}
|
}
|
||||||
|
|
||||||
// Gets back to previous line and continue with horizontal layout
|
// Gets back to previous line and continue with horizontal layout
|
||||||
@ -9941,7 +9942,7 @@ void ImGui::ShowMetricsWindow(bool* p_open)
|
|||||||
ImGui::Text("%d vertices, %d indices (%d triangles)", ImGui::GetIO().MetricsRenderVertices, ImGui::GetIO().MetricsRenderIndices, ImGui::GetIO().MetricsRenderIndices / 3);
|
ImGui::Text("%d vertices, %d indices (%d triangles)", ImGui::GetIO().MetricsRenderVertices, ImGui::GetIO().MetricsRenderIndices, ImGui::GetIO().MetricsRenderIndices / 3);
|
||||||
ImGui::Text("%d allocations", ImGui::GetIO().MetricsAllocs);
|
ImGui::Text("%d allocations", ImGui::GetIO().MetricsAllocs);
|
||||||
static bool show_clip_rects = true;
|
static bool show_clip_rects = true;
|
||||||
ImGui::Checkbox("Show clipping rectangles when hovering a ImDrawCmd", &show_clip_rects);
|
ImGui::Checkbox("Show clipping rectangles when hovering an ImDrawCmd", &show_clip_rects);
|
||||||
ImGui::Separator();
|
ImGui::Separator();
|
||||||
|
|
||||||
struct Funcs
|
struct Funcs
|
||||||
|
Loading…
Reference in New Issue
Block a user