mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-29 23:06:35 +00:00
ColorTooltip: Honor ImGuiColorEditFlags_HalfAlphaPreview flag by calling ColorButton(). Added HalfAlphaPreview to demo. (#346)
This commit is contained in:
parent
c1c2b2400a
commit
b7a563276d
@ -9007,7 +9007,6 @@ void ImGui::ColorTooltip(const char* text, const float col[4], ImGuiColorEditFla
|
|||||||
|
|
||||||
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_NoAlpha | ImGuiColorEditFlags_NoAlphaPreview)) ? 255 : IM_F32_TO_INT8_SAT(col[3]);
|
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_NoAlpha | ImGuiColorEditFlags_NoAlphaPreview)) ? 255 : IM_F32_TO_INT8_SAT(col[3]);
|
||||||
BeginTooltipEx(true);
|
BeginTooltipEx(true);
|
||||||
ImGuiWindow* window = GetCurrentWindow();
|
|
||||||
|
|
||||||
const char* text_end = text ? FindRenderedTextEnd(text, NULL) : text;
|
const char* text_end = text ? FindRenderedTextEnd(text, NULL) : text;
|
||||||
if (text_end > text)
|
if (text_end > text)
|
||||||
@ -9017,8 +9016,7 @@ void ImGui::ColorTooltip(const char* text, const float col[4], ImGuiColorEditFla
|
|||||||
}
|
}
|
||||||
|
|
||||||
ImVec2 sz(g.FontSize * 3, g.FontSize * 3);
|
ImVec2 sz(g.FontSize * 3, g.FontSize * 3);
|
||||||
RenderColorRectWithAlphaCheckerboard(window->DC.CursorPos, window->DC.CursorPos + sz, IM_COL32(cr,cg,cb,ca), g.FontSize, g.Style.FrameRounding);
|
ColorButton("##preview", ImVec4(col[0], col[1], col[2], col[3]), (flags & (ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_HalfAlphaPreview)) | ImGuiColorEditFlags_NoTooltip, sz);
|
||||||
Dummy(sz);
|
|
||||||
SameLine();
|
SameLine();
|
||||||
if (flags & ImGuiColorEditFlags_NoAlpha)
|
if (flags & ImGuiColorEditFlags_NoAlpha)
|
||||||
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]);
|
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]);
|
||||||
@ -9110,7 +9108,7 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl
|
|||||||
RenderFrameBorder(bb.Min, bb.Max, style.FrameRounding);
|
RenderFrameBorder(bb.Min, bb.Max, style.FrameRounding);
|
||||||
|
|
||||||
if (hovered && !(flags & ImGuiColorEditFlags_NoTooltip))
|
if (hovered && !(flags & ImGuiColorEditFlags_NoTooltip))
|
||||||
ColorTooltip(desc_id, &col.x, flags & (ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoAlphaPreview));
|
ColorTooltip(desc_id, &col.x, flags & (ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_NoAlphaPreview | ImGuiColorEditFlags_HalfAlphaPreview));
|
||||||
|
|
||||||
return pressed;
|
return pressed;
|
||||||
}
|
}
|
||||||
|
@ -663,24 +663,27 @@ void ImGui::ShowTestWindow(bool* p_open)
|
|||||||
static ImVec4 color = ImColor(114, 144, 154, 200);
|
static ImVec4 color = ImColor(114, 144, 154, 200);
|
||||||
|
|
||||||
static bool alpha_preview = true;
|
static bool alpha_preview = true;
|
||||||
|
static bool alpha_half_preview = false;
|
||||||
ImGui::Checkbox("With Alpha Preview", &alpha_preview);
|
ImGui::Checkbox("With Alpha Preview", &alpha_preview);
|
||||||
|
ImGui::Checkbox("With Half Alpha Preview", &alpha_half_preview);
|
||||||
|
int alpha_flags = alpha_half_preview ? ImGuiColorEditFlags_HalfAlphaPreview : (alpha_preview ? 0 : ImGuiColorEditFlags_NoAlphaPreview);
|
||||||
|
|
||||||
ImGui::Text("Color widget:");
|
ImGui::Text("Color widget:");
|
||||||
ImGui::SameLine(); ShowHelpMarker("Click on the colored square to open a color picker.\nRight-click on the colored square to show options.\nCTRL+click on individual component to input value.\n");
|
ImGui::SameLine(); ShowHelpMarker("Click on the colored square to open a color picker.\nRight-click on the colored square to show options.\nCTRL+click on individual component to input value.\n");
|
||||||
ImGui::ColorEdit3("MyColor##1", (float*)&color, ImGuiColorEditFlags_HSV);
|
ImGui::ColorEdit3("MyColor##1", (float*)&color, ImGuiColorEditFlags_HSV);
|
||||||
|
|
||||||
ImGui::Text("Color widget with Alpha:");
|
ImGui::Text("Color widget with Alpha:");
|
||||||
ImGui::ColorEdit4("MyColor##2", (float*)&color, (alpha_preview ? 0 : ImGuiColorEditFlags_NoAlphaPreview));
|
ImGui::ColorEdit4("MyColor##2", (float*)&color, alpha_flags);
|
||||||
|
|
||||||
ImGui::Text("Color widget with Float Display:");
|
ImGui::Text("Color widget with Float Display:");
|
||||||
ImGui::ColorEdit4("MyColor##2f", (float*)&color, ImGuiColorEditFlags_Float | (alpha_preview ? 0 : ImGuiColorEditFlags_NoAlphaPreview));
|
ImGui::ColorEdit4("MyColor##2f", (float*)&color, ImGuiColorEditFlags_Float | alpha_flags);
|
||||||
|
|
||||||
ImGui::Text("Color button with Picker:");
|
ImGui::Text("Color button with Picker:");
|
||||||
ImGui::SameLine(); ShowHelpMarker("With the ImGuiColorEditFlags_NoInputs flag you can hide all the slider/text inputs.\nWith the ImGuiColorEditFlags_NoLabel flag you can pass a non-empty label which will only be used for the tooltip and picker popup.");
|
ImGui::SameLine(); ShowHelpMarker("With the ImGuiColorEditFlags_NoInputs flag you can hide all the slider/text inputs.\nWith the ImGuiColorEditFlags_NoLabel flag you can pass a non-empty label which will only be used for the tooltip and picker popup.");
|
||||||
ImGui::ColorEdit4("MyColor##3", (float*)&color, ImGuiColorEditFlags_NoInputs|ImGuiColorEditFlags_NoLabel|(alpha_preview ? 0 : ImGuiColorEditFlags_NoAlphaPreview));
|
ImGui::ColorEdit4("MyColor##3", (float*)&color, ImGuiColorEditFlags_NoInputs | ImGuiColorEditFlags_NoLabel | alpha_flags);
|
||||||
|
|
||||||
ImGui::Text("Color button only:");
|
ImGui::Text("Color button only:");
|
||||||
ImGui::ColorButton("MyColor##3b", *(ImVec4*)&color, (alpha_preview ? 0 : ImGuiColorEditFlags_NoAlphaPreview), ImVec2(80,80));
|
ImGui::ColorButton("MyColor##3b", *(ImVec4*)&color, alpha_flags, ImVec2(80,80));
|
||||||
|
|
||||||
ImGui::Text("Color picker:");
|
ImGui::Text("Color picker:");
|
||||||
static bool alpha = false;
|
static bool alpha = false;
|
||||||
|
Loading…
Reference in New Issue
Block a user