Better, unified color tooltip (#346)
This commit is contained in:
parent
c8553817d9
commit
97bedd704c
25
imgui.cpp
25
imgui.cpp
@ -8976,6 +8976,23 @@ void ImGui::EndMenu()
|
||||
EndPopup();
|
||||
}
|
||||
|
||||
static void ColorTooltip(const float* col, ImGuiColorEditFlags flags)
|
||||
{
|
||||
ImGuiContext& g = *GImGui;
|
||||
int cr = IM_F32_TO_INT8_SAT(col[0]), cg = IM_F32_TO_INT8_SAT(col[1]), cb = IM_F32_TO_INT8_SAT(col[2]), ca = (flags & ImGuiColorEditFlags_Alpha) ? IM_F32_TO_INT8_SAT(col[3]) : 255;
|
||||
BeginTooltipEx(true);
|
||||
ImGuiWindow* window = ImGui::GetCurrentWindow();
|
||||
ImVec2 sz(g.FontSize * 3, g.FontSize * 3);
|
||||
window->DrawList->AddRectFilled(window->DC.CursorPos, window->DC.CursorPos + sz, IM_COL32(cr,cg,cb,255));
|
||||
ImGui::Dummy(sz);
|
||||
ImGui::SameLine();
|
||||
if (flags & ImGuiColorEditFlags_Alpha)
|
||||
ImGui::Text("#%02X%02X%02X%02X\nR:%d, G:%d, B:%d, A:%d\n(%.3f, %.3f, %.3f, %.3f)", cr, cg, cb, ca, cr, cg, cb, ca, col[0], col[1], col[2], col[3]);
|
||||
else
|
||||
ImGui::Text("#%02X%02X%02X\nR: %d, G: %d, B: %d\n(%.3f, %.3f, %.3f)", cr, cg, cb, cr, cg, cb, col[0], col[1], col[2]);
|
||||
ImGui::EndTooltip();
|
||||
}
|
||||
|
||||
// A little colored square. Return true when clicked.
|
||||
// FIXME: May want to display/ignore the alpha component in the color display? Yet show it in the tooltip.
|
||||
bool ImGui::ColorButton(const ImVec4& col, bool small_height, bool outline_border)
|
||||
@ -8998,7 +9015,7 @@ bool ImGui::ColorButton(const ImVec4& col, bool small_height, bool outline_borde
|
||||
RenderFrame(bb.Min, bb.Max, GetColorU32(col), outline_border, style.FrameRounding);
|
||||
|
||||
if (hovered)
|
||||
SetTooltip("Color:\n(%.2f,%.2f,%.2f,%.2f)\n#%02X%02X%02X%02X", col.x, col.y, col.z, col.w, IM_F32_TO_INT8_SAT(col.x), IM_F32_TO_INT8_SAT(col.y), IM_F32_TO_INT8_SAT(col.z), IM_F32_TO_INT8_SAT(col.w));
|
||||
ColorTooltip(&col.x, ImGuiColorEditFlags_Alpha);
|
||||
|
||||
return pressed;
|
||||
}
|
||||
@ -9151,7 +9168,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
||||
|
||||
// Recreate our own tooltip over's ColorButton() one because we want to display correct alpha here
|
||||
if (IsItemHovered())
|
||||
SetTooltip("Color:\n(%.2f,%.2f,%.2f,%.2f)\n#%02X%02X%02X%02X", col[0], col[1], col[2], col[3], IM_F32_TO_INT8_SAT(col[0]), IM_F32_TO_INT8_SAT(col[1]), IM_F32_TO_INT8_SAT(col[2]), IM_F32_TO_INT8_SAT(col[3]));
|
||||
ColorTooltip(col, flags);
|
||||
}
|
||||
|
||||
if (label != label_display_end)
|
||||
@ -9214,8 +9231,8 @@ bool ImGui::ColorPicker4(const char* label, float col[4], ImGuiColorEditFlags fl
|
||||
float bar1_pos_x = bar0_pos_x + bars_width + style.ItemInnerSpacing.x;
|
||||
|
||||
// Recreate our own tooltip over's ColorButton() one because we want to display correct alpha here
|
||||
if (IsItemHovered())
|
||||
SetTooltip("Color:\n(%.2f,%.2f,%.2f,%.2f)\n#%02X%02X%02X%02X", col[0], col[1], col[2], col[3], IM_F32_TO_INT8_SAT(col[0]), IM_F32_TO_INT8_SAT(col[1]), IM_F32_TO_INT8_SAT(col[2]), IM_F32_TO_INT8_SAT(col[3]));
|
||||
//if (IsItemHovered())
|
||||
// ColorTooltip(col, flags);
|
||||
|
||||
float H,S,V;
|
||||
ImGui::ColorConvertRGBtoHSV(col[0], col[1], col[2], H, S, V);
|
||||
|
Loading…
Reference in New Issue
Block a user