contentBrowserpanel¶
新增两个图片的引用
#pragma once
#include <filesystem>
#include "CryDust/Renderer/Texture.h"
namespace CryDust {
class ContentBrowserPanel
{
public:
ContentBrowserPanel();
void OnImGuiRender();
private:
std::filesystem::path m_CurrentDirectory;
Ref<Texture2D> m_DirectoryIcon;
Ref<Texture2D> m_FileIcon;
};
}
contentBrowserpanel ImguiRender¶
static float padding = 16.0f;
static float thumbnailSize = 128.0f;
float cellSize = thumbnailSize + padding;
float panelWidth = ImGui::GetContentRegionAvail().x;
int columnCount = (int)(panelWidth / cellSize);
if (columnCount < 1)
columnCount = 1;
ImGui::Columns(columnCount, 0, false);
图片、文件获取¶
for (auto& directoryEntry : std::filesystem::directory_iterator(m_CurrentDirectory))
{
const auto& path = directoryEntry.path();
auto relativePath = std::filesystem::relative(path, s_AssetPath);
std::string filenameString = relativePath.filename().string();
Ref<Texture2D> icon = directoryEntry.is_directory() ? m_DirectoryIcon : m_FileIcon;
ImGui::ImageButton((ImTextureID)icon->GetRendererID(), { thumbnailSize, thumbnailSize }, { 0, 1 }, { 1, 0 });
if (ImGui::IsItemHovered() && ImGui::IsMouseDoubleClicked(ImGuiMouseButton_Left))
{
if (directoryEntry.is_directory())
m_CurrentDirectory /= path.filename();
}
ImGui::TextWrapped(filenameString.c_str());
ImGui::NextColumn();
}
ImGui::Columns(1);
ImGui::SliderFloat("Thumbnail Size", &thumbnailSize, 16, 512);
ImGui::SliderFloat("Padding", &padding, 0, 32);
// TODO: status bar
ImGui::End();
InguiLayer字体调整¶
float fontSize = 18.0f;// *2.0f;
io.Fonts->AddFontFromFileTTF("assets/fonts/opensans/OpenSans-Bold.ttf", fontSize);
io.FontDefault = io.Fonts->AddFontFromFileTTF("assets/fonts/opensans/OpenSans-Regular.ttf", fontSize);