Added global Alpha in ImGuiStyle + commented ImGuiStyle fields in .h

This commit is contained in:
ocornut 2014-08-18 13:03:02 +01:00
parent 926f7bfcc5
commit 76a39ad224
2 changed files with 24 additions and 23 deletions

View File

@ -210,18 +210,19 @@ static void SetClipboardTextFn_DefaultImpl(const char* text, const char* text_
ImGuiStyle::ImGuiStyle() ImGuiStyle::ImGuiStyle()
{ {
Alpha = 1.0f; // Global alpha applies to everything in ImGui
WindowPadding = ImVec2(8,8); // Padding within a window WindowPadding = ImVec2(8,8); // Padding within a window
WindowMinSize = ImVec2(48,48); // Minimum window size WindowMinSize = ImVec2(48,48); // Minimum window size
FramePadding = ImVec2(5,4); // Padding within a framed rectangle (used by most widgets) FramePadding = ImVec2(5,4); // Padding within a framed rectangle (used by most widgets)
ItemSpacing = ImVec2(10,5); // Horizontal and vertical spacing between widgets ItemSpacing = ImVec2(10,5); // Horizontal and vertical spacing between widgets/lines
ItemInnerSpacing = ImVec2(5,5); // Horizontal and vertical spacing between within elements of a composed widget (e.g. a slider and its label) ItemInnerSpacing = ImVec2(5,5); // Horizontal and vertical spacing between within elements of a composed widget (e.g. a slider and its label)
TouchExtraPadding = ImVec2(0,0); // Expand bounding box for touch-based system where touch position is not accurate enough (unnecessary for mouse inputs). Unfortunately we don't sort widgets so priority on overlap will always be given to the first widget running. So dont grow this too much! TouchExtraPadding = ImVec2(0,0); // Expand bounding box for touch-based system where touch position is not accurate enough (unnecessary for mouse inputs). Unfortunately we don't sort widgets so priority on overlap will always be given to the first widget running. So dont grow this too much!
AutoFitPadding = ImVec2(8,8); // Extra space after auto-fit (double-clicking on resize grip) AutoFitPadding = ImVec2(8,8); // Extra space after auto-fit (double-clicking on resize grip)
WindowFillAlphaDefault = 0.70f; WindowFillAlphaDefault = 0.70f; // Default alpha of window background, if not specified in ImGui::Begin()
WindowRounding = 10.0f; WindowRounding = 10.0f; // Radius of window corners rounding. Set to 0.0f to have rectangular windows
TreeNodeSpacing = 22.0f; TreeNodeSpacing = 22.0f; // Horizontal spacing when entering a tree node
ColumnsMinSpacing = 6.0f; // Minimum space between two columns ColumnsMinSpacing = 6.0f; // Minimum horizontal spacing between two columns
ScrollBarWidth = 16.0f; ScrollBarWidth = 16.0f; // Width of the vertical scroll bar
Colors[ImGuiCol_Text] = ImVec4(0.90f, 0.90f, 0.90f, 1.00f); Colors[ImGuiCol_Text] = ImVec4(0.90f, 0.90f, 0.90f, 1.00f);
Colors[ImGuiCol_WindowBg] = ImVec4(0.00f, 0.00f, 0.00f, 1.00f); Colors[ImGuiCol_WindowBg] = ImVec4(0.00f, 0.00f, 0.00f, 1.00f);
@ -705,7 +706,8 @@ public:
float TitleBarHeight() const { return (Flags & ImGuiWindowFlags_NoTitleBar) ? 0 : FontSize() + GImGui.Style.FramePadding.y * 2.0f; } float TitleBarHeight() const { return (Flags & ImGuiWindowFlags_NoTitleBar) ? 0 : FontSize() + GImGui.Style.FramePadding.y * 2.0f; }
ImGuiAabb TitleBarAabb() const { return ImGuiAabb(Pos, Pos + ImVec2(SizeFull.x, TitleBarHeight())); } ImGuiAabb TitleBarAabb() const { return ImGuiAabb(Pos, Pos + ImVec2(SizeFull.x, TitleBarHeight())); }
ImVec2 WindowPadding() const { return ((Flags & ImGuiWindowFlags_ChildWindow) && !(Flags & ImGuiWindowFlags_ShowBorders)) ? ImVec2(1,1) : GImGui.Style.WindowPadding; } ImVec2 WindowPadding() const { return ((Flags & ImGuiWindowFlags_ChildWindow) && !(Flags & ImGuiWindowFlags_ShowBorders)) ? ImVec2(1,1) : GImGui.Style.WindowPadding; }
ImU32 Color(ImGuiCol idx, float a=1.f) const { ImVec4 c = GImGui.Style.Colors[idx]; c.w *= a; return ImConvertColorFloat4ToU32(c); } ImU32 Color(ImGuiCol idx, float a=1.f) const { ImVec4 c = GImGui.Style.Colors[idx]; c.w *= GImGui.Style.Alpha * a; return ImConvertColorFloat4ToU32(c); }
ImU32 Color(const ImVec4& col) const { ImVec4 c = col; c.w *= GImGui.Style.Alpha; return ImConvertColorFloat4ToU32(c); }
}; };
static ImGuiWindow* GetCurrentWindow() static ImGuiWindow* GetCurrentWindow()
@ -4215,9 +4217,7 @@ bool ColorButton(const ImVec4& col, bool small_height, bool outline_border)
const bool hovered = (g.HoveredWindow == window) && (g.HoveredId == 0) && IsMouseHoveringBox(bb); const bool hovered = (g.HoveredWindow == window) && (g.HoveredId == 0) && IsMouseHoveringBox(bb);
const bool pressed = hovered && g.IO.MouseClicked[0]; const bool pressed = hovered && g.IO.MouseClicked[0];
RenderFrame(bb.Min, bb.Max, window->Color(col), outline_border);
const ImU32 col32 = ImConvertColorFloat4ToU32(col);
RenderFrame(bb.Min, bb.Max, col32, outline_border);
if (hovered) if (hovered)
{ {
@ -5391,6 +5391,7 @@ void ShowStyleEditor(ImGuiStyle* ref)
*ref = g.Style; *ref = g.Style;
} }
ImGui::SliderFloat("Alpha", &style.Alpha, 0.20f, 1.0f, "%.2f"); // Not exposing zero here so user doesn't "lose" the UI. But application code could have a toggle to switch between zero and non-zero.
ImGui::SliderFloat("Rounding", &style.WindowRounding, 0.0f, 16.0f, "%.0f"); ImGui::SliderFloat("Rounding", &style.WindowRounding, 0.0f, 16.0f, "%.0f");
static ImGuiColorEditMode edit_mode = ImGuiColorEditMode_RGB; static ImGuiColorEditMode edit_mode = ImGuiColorEditMode_RGB;

26
imgui.h
View File

@ -353,21 +353,21 @@ enum ImGuiColorEditMode_
ImGuiColorEditMode_HEX = 2, ImGuiColorEditMode_HEX = 2,
}; };
// See constructor for comments of individual fields.
struct ImGuiStyle struct ImGuiStyle
{ {
ImVec2 WindowPadding; float Alpha; // Global alpha applies to everything in ImGui
ImVec2 WindowMinSize; ImVec2 WindowPadding; // Padding within a window
ImVec2 FramePadding; ImVec2 WindowMinSize; // Minimum window size
ImVec2 ItemSpacing; ImVec2 FramePadding; // Padding within a framed rectangle (used by most widgets)
ImVec2 ItemInnerSpacing; ImVec2 ItemSpacing; // Horizontal and vertical spacing between widgets/lines
ImVec2 TouchExtraPadding; ImVec2 ItemInnerSpacing; // Horizontal and vertical spacing between within elements of a composed widget (e.g. a slider and its label)
ImVec2 AutoFitPadding; ImVec2 TouchExtraPadding; // Expand bounding box for touch-based system where touch position is not accurate enough (unnecessary for mouse inputs). Unfortunately we don't sort widgets so priority on overlap will always be given to the first widget running. So dont grow this too much!
float WindowFillAlphaDefault; ImVec2 AutoFitPadding; // Extra space after auto-fit (double-clicking on resize grip)
float WindowRounding; float WindowFillAlphaDefault; // Default alpha of window background, if not specified in ImGui::Begin()
float TreeNodeSpacing; float WindowRounding; // Radius of window corners rounding. Set to 0.0f to have rectangular windows
float ColumnsMinSpacing; float TreeNodeSpacing; // Horizontal spacing when entering a tree node
float ScrollBarWidth; float ColumnsMinSpacing; // Minimum horizontal spacing between two columns
float ScrollBarWidth; // Width of the vertical scroll bar
ImVec4 Colors[ImGuiCol_COUNT]; ImVec4 Colors[ImGuiCol_COUNT];
ImGuiStyle(); ImGuiStyle();