MCPcopy Create free account
hub / github.com/chrxh/alien / FileIcon

Function FileIcon

external/ImFileDialog/ImFileDialog.cpp:279–330  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

277 return ret;
278 }
279 bool FileIcon(const char* label, bool isSelected, ImTextureID icon, ImVec2 size, bool hasPreview, int previewWidth, int previewHeight)
280 {
281 ImGuiStyle& style = ImGui::GetStyle();
282 ImGuiContext& g = *GImGui;
283 ImGuiWindow* window = g.CurrentWindow;
284
285 float windowSpace = ImGui::GetWindowPos().x + ImGui::GetWindowContentRegionMax().x;
286 ImVec2 pos = window->DC.CursorPos;
287 bool ret = false;
288
289 if (ImGui::InvisibleButton(label, size))
290 ret = true;
291
292 bool hovered = ImGui::IsItemHovered();
293 bool active = ImGui::IsItemActive();
294 bool doubleClick = ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left);
295 if (doubleClick && hovered)
296 ret = true;
297
298
299 float iconSize = size.y - g.FontSize * 2;
300 float iconPosX = pos.x + (size.x - iconSize) / 2.0f;
301 ImVec2 textSize = ImGui::CalcTextSize(label, 0, true, size.x);
302
303
304 if (hovered || active || isSelected)
305 window->DrawList->AddRectFilled(g.LastItemData.Rect.Min, g.LastItemData.Rect.Max, ImGui::ColorConvertFloat4ToU32(ImGui::GetStyle().Colors[active ? ImGuiCol_HeaderActive : (isSelected ? ImGuiCol_Header : ImGuiCol_HeaderHovered)]));
306
307 if (hasPreview) {
308 ImVec2 availSize = ImVec2(size.x, iconSize);
309
310 float scale = std::min<float>(availSize.x / previewWidth, availSize.y / previewHeight);
311 availSize.x = previewWidth * scale;
312 availSize.y = previewHeight * scale;
313
314 float previewPosX = pos.x + (size.x - availSize.x) / 2.0f;
315 float previewPosY = pos.y + (iconSize - availSize.y) / 2.0f;
316
317 window->DrawList->AddImage(icon, ImVec2(previewPosX, previewPosY), ImVec2(previewPosX + availSize.x, previewPosY + availSize.y));
318 } else
319 window->DrawList->AddImage(icon, ImVec2(iconPosX, pos.y), ImVec2(iconPosX + iconSize, pos.y + iconSize));
320
321 window->DrawList->AddText(g.Font, g.FontSize, ImVec2(pos.x + (size.x-textSize.x) / 2.0f, pos.y + iconSize), ImGui::ColorConvertFloat4ToU32(ImGui::GetStyle().Colors[ImGuiCol_Text]), label, 0, size.x);
322
323
324 float lastButtomPos = ImGui::GetItemRectMax().x;
325 float thisButtonPos = lastButtomPos + style.ItemSpacing.x + size.x; // Expected position if next button was on same line
326 if (thisButtonPos < windowSpace)
327 ImGui::SameLine();
328
329 return ret;
330 }
331
332 FileDialog::FileData::FileData(const std::filesystem::path& path) {
333 std::error_code ec;

Callers 1

m_renderContentMethod · 0.85

Calls 1

ImVec2Class · 0.85

Tested by

no test coverage detected