mirror of
https://github.com/Drezil/imgui.git
synced 2025-07-04 12:08:47 +02:00
Apply Omar feedback and convert remaining 0xAABBGGRR's into IM_COL32(RR,GG,BB,AA) format.
This commit is contained in:
36
imgui.h
36
imgui.h
@ -827,6 +827,23 @@ struct ImGuiIO
|
||||
// Helpers
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// Helpers macros to generate 32-bits encoded colors
|
||||
#ifdef IMGUI_USE_BGRA_PACKED_COLOR
|
||||
#define IM_COL32_R_SHIFT 16
|
||||
#define IM_COL32_G_SHIFT 8
|
||||
#define IM_COL32_B_SHIFT 0
|
||||
#define IM_COL32_A_SHIFT 24
|
||||
#else
|
||||
#define IM_COL32_R_SHIFT 0
|
||||
#define IM_COL32_G_SHIFT 8
|
||||
#define IM_COL32_B_SHIFT 16
|
||||
#define IM_COL32_A_SHIFT 24
|
||||
#endif
|
||||
#define IM_COL32(R,G,B,A) (((ImU32)(A)<<IM_COL32_A_SHIFT) | ((ImU32)(B)<<IM_COL32_B_SHIFT) | ((ImU32)(G)<<IM_COL32_G_SHIFT) | ((ImU32)(R)<<IM_COL32_R_SHIFT))
|
||||
#define IM_COL32_WHITE (IM_COL32(255,255,255,255))
|
||||
#define IM_COL32_BLACK (IM_COL32(0,0,0,255))
|
||||
#define IM_COL32_BLACK_TRANS (IM_COL32(0,0,0,0)) // Transparent black
|
||||
|
||||
// Lightweight std::vector<> like class to avoid dragging dependencies (also: windows implementation of STL with debug enabled is absurdly slow, so let's bypass it so our code runs fast in debug).
|
||||
// Our implementation does NOT call c++ constructors because we don't use them in ImGui. Don't use this class as a straight std::vector replacement in your code!
|
||||
template<typename T>
|
||||
@ -1044,7 +1061,7 @@ struct ImColor
|
||||
|
||||
ImColor() { Value.x = Value.y = Value.z = Value.w = 0.0f; }
|
||||
ImColor(int r, int g, int b, int a = 255) { float sc = 1.0f/255.0f; Value.x = (float)r * sc; Value.y = (float)g * sc; Value.z = (float)b * sc; Value.w = (float)a * sc; }
|
||||
ImColor(ImU32 rgba) { float sc = 1.0f/255.0f; Value.x = (float)(rgba&0xFF) * sc; Value.y = (float)((rgba>>8)&0xFF) * sc; Value.z = (float)((rgba>>16)&0xFF) * sc; Value.w = (float)(rgba >> 24) * sc; }
|
||||
ImColor(ImU32 rgba) { float sc = 1.0f/255.0f; Value.x = (float)((rgba>>IM_COL32_R_SHIFT)&0xFF) * sc; Value.y = (float)((rgba>>IM_COL32_G_SHIFT)&0xFF) * sc; Value.z = (float)((rgba>>IM_COL32_B_SHIFT)&0xFF) * sc; Value.w = (float)((rgba>>IM_COL32_A_SHIFT)&0xFF) * sc; }
|
||||
ImColor(float r, float g, float b, float a = 1.0f) { Value.x = r; Value.y = g; Value.z = b; Value.w = a; }
|
||||
ImColor(const ImVec4& col) { Value = col; }
|
||||
inline operator ImU32() const { return ImGui::ColorConvertFloat4ToU32(Value); }
|
||||
@ -1090,23 +1107,6 @@ struct ImGuiListClipper
|
||||
// Hold a series of drawing commands. The user provides a renderer for ImDrawData which essentially contains an array of ImDrawList.
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
// Helpers macros to generate 32-bits encoded colors
|
||||
#ifdef IMGUI_USE_BGRA_PACKED_COLOR
|
||||
#define IM_COL32_R_SHIFT 16
|
||||
#define IM_COL32_G_SHIFT 8
|
||||
#define IM_COL32_B_SHIFT 0
|
||||
#define IM_COL32_A_SHIFT 24
|
||||
#else
|
||||
#define IM_COL32_R_SHIFT 0
|
||||
#define IM_COL32_G_SHIFT 8
|
||||
#define IM_COL32_B_SHIFT 16
|
||||
#define IM_COL32_A_SHIFT 24
|
||||
#endif
|
||||
#define IM_COL32(R,G,B,A) (((ImU32)(A)<<IM_COL32_A_SHIFT) | ((ImU32)(B)<<IM_COL32_B_SHIFT) | ((ImU32)(G)<<IM_COL32_G_SHIFT) | ((ImU32)(R)<<IM_COL32_R_SHIFT))
|
||||
#define IM_COL32_WHITE (0xFFFFFFFF)
|
||||
#define IM_COL32_BLACK (0xFF000000)
|
||||
#define IM_COL32_BLACK_TRANS (0x00000000) // Transparent black
|
||||
|
||||
// Draw callbacks for advanced uses.
|
||||
// NB- You most likely do NOT need to use draw callbacks just to create your own widget or customized UI rendering (you can poke into the draw list for that)
|
||||
// Draw callback may be useful for example, A) Change your GPU render state, B) render a complex 3D scene inside a UI element (without an intermediate texture/render target), etc.
|
||||
|
Reference in New Issue
Block a user