mirror of
https://github.com/Drezil/imgui.git
synced 2025-04-15 15:44:00 +00:00
ColorEdit4: Picker spawned from ColorEdit4 has a preview for original/previous color with revert button - WIP not really happy with it being in ColorEdit4 code (#346)
This commit is contained in:
parent
6bc1572d31
commit
7537dff806
17
imgui.cpp
17
imgui.cpp
@ -9244,6 +9244,7 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
|||||||
{
|
{
|
||||||
if (!(flags & ImGuiColorEditFlags_NoPicker))
|
if (!(flags & ImGuiColorEditFlags_NoPicker))
|
||||||
{
|
{
|
||||||
|
g.ColorPickerRef = ImVec4(col[0], col[1], col[2], alpha ? col[3] : 1.0f);
|
||||||
OpenPopup("picker");
|
OpenPopup("picker");
|
||||||
SetNextWindowPos(window->DC.LastItemRect.GetBL() + ImVec2(-1,style.ItemSpacing.y));
|
SetNextWindowPos(window->DC.LastItemRect.GetBL() + ImVec2(-1,style.ItemSpacing.y));
|
||||||
}
|
}
|
||||||
@ -9264,9 +9265,25 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
|||||||
float square_sz = ColorSquareSize();
|
float square_sz = ColorSquareSize();
|
||||||
ImGuiColorEditFlags picker_flags_to_forward = ImGuiColorEditFlags_Float | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf;
|
ImGuiColorEditFlags picker_flags_to_forward = ImGuiColorEditFlags_Float | ImGuiColorEditFlags_NoAlpha | ImGuiColorEditFlags_AlphaBar | ImGuiColorEditFlags_AlphaPreview | ImGuiColorEditFlags_AlphaPreviewHalf;
|
||||||
ImGuiColorEditFlags picker_flags = (flags & picker_flags_to_forward) | (ImGuiColorEditFlags_RGB | ImGuiColorEditFlags_HSV | ImGuiColorEditFlags_HEX) | ImGuiColorEditFlags_NoLabel;
|
ImGuiColorEditFlags picker_flags = (flags & picker_flags_to_forward) | (ImGuiColorEditFlags_RGB | ImGuiColorEditFlags_HSV | ImGuiColorEditFlags_HEX) | ImGuiColorEditFlags_NoLabel;
|
||||||
|
if ((flags & ImGuiColorEditFlags_NoRefColor) == 0)
|
||||||
|
picker_flags |= ImGuiColorEditFlags_NoColorSquare;
|
||||||
PushItemWidth(square_sz * 12.0f);
|
PushItemWidth(square_sz * 12.0f);
|
||||||
value_changed |= ColorPicker4("##picker", col, picker_flags);
|
value_changed |= ColorPicker4("##picker", col, picker_flags);
|
||||||
PopItemWidth();
|
PopItemWidth();
|
||||||
|
if ((flags & ImGuiColorEditFlags_NoRefColor) == 0)
|
||||||
|
{
|
||||||
|
SameLine();
|
||||||
|
BeginGroup();
|
||||||
|
Text("Current");
|
||||||
|
ColorButton("##current", col_display, ImGuiColorEditFlags_NoTooltip|ImGuiColorEditFlags_AlphaPreviewHalf, ImVec2(square_sz * 3, square_sz * 2));
|
||||||
|
Text("Original");
|
||||||
|
if (ColorButton("##original", g.ColorPickerRef, ImGuiColorEditFlags_NoTooltip|ImGuiColorEditFlags_AlphaPreviewHalf, ImVec2(square_sz * 3, square_sz * 2)))
|
||||||
|
{
|
||||||
|
memcpy(col, &g.ColorPickerRef, (alpha ? 4 : 3) * sizeof(float));
|
||||||
|
value_changed = 0;
|
||||||
|
}
|
||||||
|
EndGroup();
|
||||||
|
}
|
||||||
EndPopup();
|
EndPopup();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -433,6 +433,7 @@ struct ImGuiContext
|
|||||||
ImFont InputTextPasswordFont;
|
ImFont InputTextPasswordFont;
|
||||||
ImGuiID ScalarAsInputTextId; // Temporary text input when CTRL+clicking on a slider, etc.
|
ImGuiID ScalarAsInputTextId; // Temporary text input when CTRL+clicking on a slider, etc.
|
||||||
ImGuiStorage ColorEditModeStorage; // Store user selection of color edit mode
|
ImGuiStorage ColorEditModeStorage; // Store user selection of color edit mode
|
||||||
|
ImVec4 ColorPickerRef;
|
||||||
float DragCurrentValue; // Currently dragged value, always float, not rounded by end-user precision settings
|
float DragCurrentValue; // Currently dragged value, always float, not rounded by end-user precision settings
|
||||||
ImVec2 DragLastMouseDelta;
|
ImVec2 DragLastMouseDelta;
|
||||||
float DragSpeedDefaultRatio; // If speed == 0.0f, uses (max-min) * DragSpeedDefaultRatio
|
float DragSpeedDefaultRatio; // If speed == 0.0f, uses (max-min) * DragSpeedDefaultRatio
|
||||||
|
Loading…
x
Reference in New Issue
Block a user