mirror of
				https://github.com/ocornut/imgui.git
				synced 2025-10-26 12:27:30 +00:00 
			
		
		
		
	This commit is contained in:
		| @@ -1958,6 +1958,7 @@ namespace ImGui | ||||
|     IMGUI_API bool          ArrowButtonEx(const char* str_id, ImGuiDir dir, ImVec2 size_arg, ImGuiButtonFlags flags = 0); | ||||
|     IMGUI_API void          Scrollbar(ImGuiAxis axis); | ||||
|     IMGUI_API bool          ScrollbarEx(const ImRect& bb, ImGuiID id, ImGuiAxis axis, float* p_scroll_v, float avail_v, float contents_v, ImDrawCornerFlags rounding_corners); | ||||
|     IMGUI_API bool          ImageButtonEx(ImGuiID id, ImTextureID texture_id, const ImVec2& size, const ImVec2& uv0, const ImVec2& uv1, const ImVec2& padding, const ImVec4& bg_col, const ImVec4& tint_col);  | ||||
|     IMGUI_API ImRect        GetWindowScrollbarRect(ImGuiWindow* window, ImGuiAxis axis); | ||||
|     IMGUI_API ImGuiID       GetWindowScrollbarID(ImGuiWindow* window, ImGuiAxis axis); | ||||
|     IMGUI_API ImGuiID       GetWindowResizeID(ImGuiWindow* window, int n); // 0..3: corners, 4..7: borders | ||||
|   | ||||
| @@ -981,28 +981,16 @@ void ImGui::Image(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& | ||||
|     } | ||||
| } | ||||
|  | ||||
| // frame_padding < 0: uses FramePadding from style (default) | ||||
| // frame_padding = 0: no framing | ||||
| // frame_padding > 0: set framing size | ||||
| // The color used are the button colors. | ||||
| bool ImGui::ImageButton(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0, const ImVec2& uv1, int frame_padding, const ImVec4& bg_col, const ImVec4& tint_col) | ||||
| // ImageButton() is flawed as 'id' is always derived from 'texture_id' (see #2464 #1390) | ||||
| // We provide this internal helper to write your own variant while we figure out how to redesign the public ImageButton() API. | ||||
| bool ImGui::ImageButtonEx(ImGuiID id, ImTextureID texture_id, const ImVec2& size, const ImVec2& uv0, const ImVec2& uv1, const ImVec2& padding, const ImVec4& bg_col, const ImVec4& tint_col) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     ImGuiWindow* window = GetCurrentWindow(); | ||||
|     if (window->SkipItems) | ||||
|         return false; | ||||
|  | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     const ImGuiStyle& style = g.Style; | ||||
|  | ||||
|     // Default to using texture ID as ID. User can still push string/integer prefixes. | ||||
|     // We could hash the size/uv to create a unique ID but that would prevent the user from animating UV. | ||||
|     PushID((void*)(intptr_t)user_texture_id); | ||||
|     const ImGuiID id = window->GetID("#image"); | ||||
|     PopID(); | ||||
|  | ||||
|     const ImVec2 padding = (frame_padding >= 0) ? ImVec2((float)frame_padding, (float)frame_padding) : style.FramePadding; | ||||
|     const ImRect bb(window->DC.CursorPos, window->DC.CursorPos + size + padding * 2); | ||||
|     const ImRect image_bb(window->DC.CursorPos + padding, window->DC.CursorPos + padding + size); | ||||
|     ItemSize(bb); | ||||
|     if (!ItemAdd(bb, id)) | ||||
|         return false; | ||||
| @@ -1013,14 +1001,33 @@ bool ImGui::ImageButton(ImTextureID user_texture_id, const ImVec2& size, const I | ||||
|     // Render | ||||
|     const ImU32 col = GetColorU32((held && hovered) ? ImGuiCol_ButtonActive : hovered ? ImGuiCol_ButtonHovered : ImGuiCol_Button); | ||||
|     RenderNavHighlight(bb, id); | ||||
|     RenderFrame(bb.Min, bb.Max, col, true, ImClamp((float)ImMin(padding.x, padding.y), 0.0f, style.FrameRounding)); | ||||
|     RenderFrame(bb.Min, bb.Max, col, true, ImClamp((float)ImMin(padding.x, padding.y), 0.0f, g.Style.FrameRounding)); | ||||
|     if (bg_col.w > 0.0f) | ||||
|         window->DrawList->AddRectFilled(image_bb.Min, image_bb.Max, GetColorU32(bg_col)); | ||||
|     window->DrawList->AddImage(user_texture_id, image_bb.Min, image_bb.Max, uv0, uv1, GetColorU32(tint_col)); | ||||
|         window->DrawList->AddRectFilled(bb.Min + padding, bb.Max - padding, GetColorU32(bg_col)); | ||||
|     window->DrawList->AddImage(texture_id, bb.Min + padding, bb.Max - padding, uv0, uv1, GetColorU32(tint_col)); | ||||
|  | ||||
|     return pressed; | ||||
| } | ||||
|  | ||||
| // frame_padding < 0: uses FramePadding from style (default) | ||||
| // frame_padding = 0: no framing | ||||
| // frame_padding > 0: set framing size | ||||
| bool ImGui::ImageButton(ImTextureID user_texture_id, const ImVec2& size, const ImVec2& uv0, const ImVec2& uv1, int frame_padding, const ImVec4& bg_col, const ImVec4& tint_col) | ||||
| { | ||||
|     ImGuiContext& g = *GImGui; | ||||
|     ImGuiWindow* window = g.CurrentWindow; | ||||
|     if (window->SkipItems) | ||||
|         return false; | ||||
|  | ||||
|     // Default to using texture ID as ID. User can still push string/integer prefixes. | ||||
|     PushID((void*)(intptr_t)user_texture_id); | ||||
|     const ImGuiID id = window->GetID("#image"); | ||||
|     PopID(); | ||||
|  | ||||
|     const ImVec2 padding = (frame_padding >= 0) ? ImVec2((float)frame_padding, (float)frame_padding) : g.Style.FramePadding; | ||||
|     return ImageButtonEx(id, user_texture_id, size, uv0, uv1, padding, bg_col, tint_col); | ||||
| } | ||||
|  | ||||
| bool ImGui::Checkbox(const char* label, bool* v) | ||||
| { | ||||
|     ImGuiWindow* window = GetCurrentWindow(); | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 omar
					omar