mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-22 20:07:01 +00:00
ImDrawList: Store initial flags for the frame in ImDrawListSharedData, reducing code duplication in setting up the flags.
This commit is contained in:
parent
cb7ba60d3f
commit
40b9e5e0b4
@ -3502,16 +3502,15 @@ void ImGui::NewFrame()
|
|||||||
IM_ASSERT(g.Font->IsLoaded());
|
IM_ASSERT(g.Font->IsLoaded());
|
||||||
g.DrawListSharedData.ClipRectFullscreen = ImVec4(0.0f, 0.0f, g.IO.DisplaySize.x, g.IO.DisplaySize.y);
|
g.DrawListSharedData.ClipRectFullscreen = ImVec4(0.0f, 0.0f, g.IO.DisplaySize.x, g.IO.DisplaySize.y);
|
||||||
g.DrawListSharedData.CurveTessellationTol = g.Style.CurveTessellationTol;
|
g.DrawListSharedData.CurveTessellationTol = g.Style.CurveTessellationTol;
|
||||||
|
g.DrawListSharedData.InitialFlags = (g.Style.AntiAliasedLines ? ImDrawListFlags_AntiAliasedLines : 0) | (g.Style.AntiAliasedFill ? ImDrawListFlags_AntiAliasedFill : 0);
|
||||||
|
|
||||||
g.BackgroundDrawList.Clear();
|
g.BackgroundDrawList.Clear();
|
||||||
g.BackgroundDrawList.PushTextureID(g.IO.Fonts->TexID);
|
g.BackgroundDrawList.PushTextureID(g.IO.Fonts->TexID);
|
||||||
g.BackgroundDrawList.PushClipRectFullScreen();
|
g.BackgroundDrawList.PushClipRectFullScreen();
|
||||||
g.BackgroundDrawList.Flags = (g.Style.AntiAliasedLines ? ImDrawListFlags_AntiAliasedLines : 0) | (g.Style.AntiAliasedFill ? ImDrawListFlags_AntiAliasedFill : 0);
|
|
||||||
|
|
||||||
g.ForegroundDrawList.Clear();
|
g.ForegroundDrawList.Clear();
|
||||||
g.ForegroundDrawList.PushTextureID(g.IO.Fonts->TexID);
|
g.ForegroundDrawList.PushTextureID(g.IO.Fonts->TexID);
|
||||||
g.ForegroundDrawList.PushClipRectFullScreen();
|
g.ForegroundDrawList.PushClipRectFullScreen();
|
||||||
g.ForegroundDrawList.Flags = (g.Style.AntiAliasedLines ? ImDrawListFlags_AntiAliasedLines : 0) | (g.Style.AntiAliasedFill ? ImDrawListFlags_AntiAliasedFill : 0);
|
|
||||||
|
|
||||||
// Mark rendering data as invalid to prevent user who may have a handle on it to use it.
|
// Mark rendering data as invalid to prevent user who may have a handle on it to use it.
|
||||||
g.DrawData.Clear();
|
g.DrawData.Clear();
|
||||||
@ -5529,7 +5528,6 @@ bool ImGui::Begin(const char* name, bool* p_open, ImGuiWindowFlags flags)
|
|||||||
|
|
||||||
// Setup draw list and outer clipping rectangle
|
// Setup draw list and outer clipping rectangle
|
||||||
window->DrawList->Clear();
|
window->DrawList->Clear();
|
||||||
window->DrawList->Flags = (g.Style.AntiAliasedLines ? ImDrawListFlags_AntiAliasedLines : 0) | (g.Style.AntiAliasedFill ? ImDrawListFlags_AntiAliasedFill : 0);
|
|
||||||
window->DrawList->PushTextureID(g.Font->ContainerAtlas->TexID);
|
window->DrawList->PushTextureID(g.Font->ContainerAtlas->TexID);
|
||||||
PushClipRect(host_rect.Min, host_rect.Max, false);
|
PushClipRect(host_rect.Min, host_rect.Max, false);
|
||||||
|
|
||||||
|
6
imgui.h
6
imgui.h
@ -218,9 +218,9 @@ namespace ImGui
|
|||||||
IMGUI_API ImDrawData* GetDrawData(); // valid after Render() and until the next call to NewFrame(). this is what you have to render.
|
IMGUI_API ImDrawData* GetDrawData(); // valid after Render() and until the next call to NewFrame(). this is what you have to render.
|
||||||
|
|
||||||
// Demo, Debug, Information
|
// Demo, Debug, Information
|
||||||
IMGUI_API void ShowDemoWindow(bool* p_open = NULL); // create demo/test window (previously called ShowTestWindow). demonstrate most ImGui features. call this to learn about the library! try to make it always available in your application!
|
IMGUI_API void ShowDemoWindow(bool* p_open = NULL); // create Demo window (previously called ShowTestWindow). demonstrate most ImGui features. call this to learn about the library! try to make it always available in your application!
|
||||||
IMGUI_API void ShowAboutWindow(bool* p_open = NULL); // create about window. display Dear ImGui version, credits and build/system information.
|
IMGUI_API void ShowAboutWindow(bool* p_open = NULL); // create About window. display Dear ImGui version, credits and build/system information.
|
||||||
IMGUI_API void ShowMetricsWindow(bool* p_open = NULL); // create metrics/debug window. display Dear ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.
|
IMGUI_API void ShowMetricsWindow(bool* p_open = NULL); // create Metrics/Debug window. display Dear ImGui internals: draw commands (with individual draw calls and vertices), window list, basic internal state, etc.
|
||||||
IMGUI_API void ShowStyleEditor(ImGuiStyle* ref = NULL); // add style editor block (not a window). you can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style)
|
IMGUI_API void ShowStyleEditor(ImGuiStyle* ref = NULL); // add style editor block (not a window). you can pass in a reference ImGuiStyle structure to compare to, revert to and save to (else it uses the default style)
|
||||||
IMGUI_API bool ShowStyleSelector(const char* label); // add style selector block (not a window), essentially a combo listing the default styles.
|
IMGUI_API bool ShowStyleSelector(const char* label); // add style selector block (not a window), essentially a combo listing the default styles.
|
||||||
IMGUI_API void ShowFontSelector(const char* label); // add font selector block (not a window), essentially a combo listing the loaded fonts.
|
IMGUI_API void ShowFontSelector(const char* label); // add font selector block (not a window), essentially a combo listing the loaded fonts.
|
||||||
|
@ -348,6 +348,7 @@ ImDrawListSharedData::ImDrawListSharedData()
|
|||||||
FontSize = 0.0f;
|
FontSize = 0.0f;
|
||||||
CurveTessellationTol = 0.0f;
|
CurveTessellationTol = 0.0f;
|
||||||
ClipRectFullscreen = ImVec4(-8192.0f, -8192.0f, +8192.0f, +8192.0f);
|
ClipRectFullscreen = ImVec4(-8192.0f, -8192.0f, +8192.0f, +8192.0f);
|
||||||
|
InitialFlags = ImDrawListFlags_None;
|
||||||
|
|
||||||
// Const data
|
// Const data
|
||||||
for (int i = 0; i < IM_ARRAYSIZE(CircleVtx12); i++)
|
for (int i = 0; i < IM_ARRAYSIZE(CircleVtx12); i++)
|
||||||
@ -362,7 +363,7 @@ void ImDrawList::Clear()
|
|||||||
CmdBuffer.resize(0);
|
CmdBuffer.resize(0);
|
||||||
IdxBuffer.resize(0);
|
IdxBuffer.resize(0);
|
||||||
VtxBuffer.resize(0);
|
VtxBuffer.resize(0);
|
||||||
Flags = ImDrawListFlags_AntiAliasedLines | ImDrawListFlags_AntiAliasedFill;
|
Flags = _Data->InitialFlags;
|
||||||
_VtxCurrentIdx = 0;
|
_VtxCurrentIdx = 0;
|
||||||
_VtxWritePtr = NULL;
|
_VtxWritePtr = NULL;
|
||||||
_IdxWritePtr = NULL;
|
_IdxWritePtr = NULL;
|
||||||
|
@ -731,6 +731,7 @@ struct IMGUI_API ImDrawListSharedData
|
|||||||
float FontSize; // Current/default font size (optional, for simplified AddText overload)
|
float FontSize; // Current/default font size (optional, for simplified AddText overload)
|
||||||
float CurveTessellationTol;
|
float CurveTessellationTol;
|
||||||
ImVec4 ClipRectFullscreen; // Value for PushClipRectFullscreen()
|
ImVec4 ClipRectFullscreen; // Value for PushClipRectFullscreen()
|
||||||
|
ImDrawListFlags InitialFlags; // Initial flags at the beginning of the frame (it is possible to alter flags on a per-drawlist basis afterwards)
|
||||||
|
|
||||||
// Const data
|
// Const data
|
||||||
// FIXME: Bake rounded corners fill/borders in atlas
|
// FIXME: Bake rounded corners fill/borders in atlas
|
||||||
@ -1034,7 +1035,7 @@ struct ImGuiContext
|
|||||||
int WantTextInputNextFrame;
|
int WantTextInputNextFrame;
|
||||||
char TempBuffer[1024*3+1]; // Temporary text buffer
|
char TempBuffer[1024*3+1]; // Temporary text buffer
|
||||||
|
|
||||||
ImGuiContext(ImFontAtlas* shared_font_atlas) : BackgroundDrawList(NULL), ForegroundDrawList(NULL)
|
ImGuiContext(ImFontAtlas* shared_font_atlas) : BackgroundDrawList(&DrawListSharedData), ForegroundDrawList(&DrawListSharedData)
|
||||||
{
|
{
|
||||||
Initialized = false;
|
Initialized = false;
|
||||||
FrameScopeActive = FrameScopePushedImplicitWindow = false;
|
FrameScopeActive = FrameScopePushedImplicitWindow = false;
|
||||||
@ -1109,9 +1110,7 @@ struct ImGuiContext
|
|||||||
FocusTabPressed = false;
|
FocusTabPressed = false;
|
||||||
|
|
||||||
DimBgRatio = 0.0f;
|
DimBgRatio = 0.0f;
|
||||||
BackgroundDrawList._Data = &DrawListSharedData;
|
|
||||||
BackgroundDrawList._OwnerName = "##Background"; // Give it a name for debugging
|
BackgroundDrawList._OwnerName = "##Background"; // Give it a name for debugging
|
||||||
ForegroundDrawList._Data = &DrawListSharedData;
|
|
||||||
ForegroundDrawList._OwnerName = "##Foreground"; // Give it a name for debugging
|
ForegroundDrawList._OwnerName = "##Foreground"; // Give it a name for debugging
|
||||||
MouseCursor = ImGuiMouseCursor_Arrow;
|
MouseCursor = ImGuiMouseCursor_Arrow;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user