Prechádzať zdrojové kódy

Added TextColored() helper. Changed some parameters to const references (still allows implicit casting)

ocornut 11 rokov pred
rodič
commit
2bc6346b48
2 zmenil súbory, kde vykonal 31 pridanie a 12 odobranie
  1. 24 6
      imgui.cpp
  2. 7 6
      imgui.h

+ 24 - 6
imgui.cpp

@@ -1697,7 +1697,7 @@ void SetTooltip(const char* fmt, ...)
 	va_end(args);
 }
 
-void SetNewWindowDefaultPos(ImVec2 pos)
+void SetNewWindowDefaultPos(const ImVec2& pos)
 {
 	ImGuiState& g = GImGui;
 	g.NewWindowDefaultPos = pos;
@@ -2196,7 +2196,7 @@ void PopAllowKeyboardFocus()
 	window->DC.AllowKeyboardFocus.pop_back();
 }
 
-void PushStyleColor(ImGuiCol idx, ImVec4 col)
+void PushStyleColor(ImGuiCol idx, const ImVec4& col)
 {
 	ImGuiState& g = GImGui;
 	ImGuiWindow* window = GetCurrentWindow();
@@ -2284,7 +2284,7 @@ ImVec2 GetWindowPos()
 	return window->Pos;
 }
 
-void SetWindowPos(ImVec2 pos)
+void SetWindowPos(const ImVec2& pos)
 {
 	ImGuiWindow* window = GetCurrentWindow();
 	window->Pos = pos;
@@ -2342,10 +2342,10 @@ ImVec2 GetCursorPos()
 	return window->DC.CursorPos - window->Pos;
 }
 
-void SetCursorPos(ImVec2 p)
+void SetCursorPos(const ImVec2& pos)
 {
 	ImGuiWindow* window = GetCurrentWindow();
-	window->DC.CursorPos = window->Pos + p;
+	window->DC.CursorPos = window->Pos + pos;
 }
 
 void SetScrollPosHere()
@@ -2385,6 +2385,16 @@ void Text(const char* fmt, ...)
 	va_end(args);
 }
 
+void TextColored(const ImVec4& col, const char* fmt, ...)
+{
+	ImGui::PushStyleColor(ImGuiCol_Text, col);
+	va_list args;
+	va_start(args, fmt);
+	TextV(fmt, args);
+	va_end(args);
+	ImGui::PopStyleColor();
+}
+
 void TextUnformatted(const char* text, const char* text_end)
 {
 	ImGuiState& g = GImGui;
@@ -4409,7 +4419,7 @@ bool IsClipped(const ImGuiAabb& bb)
 	return false;
 }
 
-bool IsClipped(ImVec2 item_size)
+bool IsClipped(const ImVec2& item_size)
 {
 	ImGuiWindow* window = GetCurrentWindow();
 	return IsClipped(ImGuiAabb(window->DC.CursorPos, window->DC.CursorPos + item_size));
@@ -5441,6 +5451,14 @@ void ShowTestWindow(bool* open)
 			ImGui::TreePop();
 		}
 
+		if (ImGui::TreeNode("Colored Text"))
+		{
+			// This is a merely a shortcut, you can use PushStyleColor()/PopStyleColor() for more flexibility.
+			ImGui::TextColored(ImVec4(1.0f,0.0f,1.0f,1.0f), "Pink");
+			ImGui::TextColored(ImVec4(1.0f,1.0f,0.0f,1.0f), "Yellow");
+			ImGui::TreePop();
+		}
+
 		static int e = 0;
 		ImGui::RadioButton("radio a", &e, 0); ImGui::SameLine();
 		ImGui::RadioButton("radio b", &e, 1); ImGui::SameLine();

+ 7 - 6
imgui.h

@@ -135,7 +135,7 @@ namespace ImGui
 	bool		GetWindowIsFocused();
 	float		GetWindowWidth();
 	ImVec2		GetWindowPos();														// you should rarely need/care about the window position, but it can be useful if you want to use your own drawing
-	void		SetWindowPos(ImVec2 pos);											// unchecked
+	void		SetWindowPos(const ImVec2& pos);									// unchecked
 	ImVec2		GetWindowSize();
 	ImVec2		GetWindowContentRegionMin();
 	ImVec2		GetWindowContentRegionMax();
@@ -149,7 +149,7 @@ namespace ImGui
 	float		GetItemWidth();
 	void		PushAllowKeyboardFocus(bool v);
 	void		PopAllowKeyboardFocus();
-	void		PushStyleColor(ImGuiCol idx, ImVec4 col);
+	void		PushStyleColor(ImGuiCol idx, const ImVec4& col);
 	void		PopStyleColor();
 
 	// Layout
@@ -161,8 +161,8 @@ namespace ImGui
 	float		GetColumnOffset(int column_index = -1);
 	void		SetColumnOffset(int column_index, float offset);
 	float		GetColumnWidth(int column_index = -1);
-	ImVec2		GetCursorPos();														// cursor position relative to window position
-	void		SetCursorPos(ImVec2 p);
+	ImVec2		GetCursorPos();														// cursor position is relative to window position
+	void		SetCursorPos(const ImVec2& pos);									// "
 	void		AlignFirstTextHeightToWidgets();									// call once if the first item on the line is a Text() item and you want to vertically lower it to match higher widgets.
 	float		GetTextLineSpacing();
 	float		GetTextLineHeight();
@@ -176,6 +176,7 @@ namespace ImGui
 	// Widgets
 	void		Text(const char* fmt, ...);
 	void		TextV(const char* fmt, va_list args);
+	void		TextColored(const ImVec4& col, const char* fmt, ...);				// shortcut to doing PushStyleColor(ImGuiCol_Text, col); Text(fmt, ...); PopStyleColor();
 	void		TextUnformatted(const char* text, const char* text_end = NULL);		// doesn't require null terminated string if 'text_end' is specified. no copy done to any bounded stack buffer, better for long chunks of text.
 	void		LabelText(const char* label, const char* fmt, ...);
 	void		BulletText(const char* fmt, ...);
@@ -230,11 +231,11 @@ namespace ImGui
 
 	// Utilities
 	void		SetTooltip(const char* fmt, ...);									// set tooltip under mouse-cursor, typically use with ImGui::IsHovered(). (currently no contention handling, last call win)
-	void		SetNewWindowDefaultPos(ImVec2 pos);									// set position of window that do
+	void		SetNewWindowDefaultPos(const ImVec2& pos);							// set position of window that do
 	bool		IsHovered();														// was the last item active area hovered by mouse?
 	ImVec2		GetItemBoxMin();													// get bounding box of last item
 	ImVec2		GetItemBoxMax();													// get bounding box of last item
-	bool		IsClipped(ImVec2 item_size);										// to perform coarse clipping on user's side (as an optimisation)
+	bool		IsClipped(const ImVec2& item_size);									// to perform coarse clipping on user's side (as an optimisation)
 	bool		IsKeyPressed(int key_index, bool repeat = true);					// key_index into the keys_down[512] array, imgui doesn't know the semantic of each entry
 	bool		IsMouseClicked(int button, bool repeat = false);
 	bool		IsMouseDoubleClicked(int button);