Files
XCEngine/new_editor/app/Features/Project/ProjectPanelInternal.h

84 lines
3.4 KiB
C++

#pragma once
#include "ProjectPanel.h"
#include "Rendering/Assets/BuiltInIcons.h"
#include "Composition/EditorPanelIds.h"
#include <XCEditor/Collections/UIEditorTreeView.h>
#include <XCEditor/Foundation/UIEditorTheme.h>
#include <algorithm>
#include <cmath>
#include <string_view>
namespace XCEngine::UI::Editor::App::ProjectPanelInternal {
using ::XCEngine::UI::Editor::UIEditorTextMeasureRequest;
using ::XCEngine::UI::Editor::UIEditorTextMeasurer;
using ::XCEngine::UI::UIColor;
using ::XCEngine::UI::UIDrawList;
using ::XCEngine::UI::UIInputEvent;
using ::XCEngine::UI::UIPoint;
using ::XCEngine::UI::UIRect;
inline constexpr std::size_t kInvalidLayoutIndex = static_cast<std::size_t>(-1);
inline constexpr float kBrowserHeaderHeight = 24.0f;
inline constexpr float kNavigationMinWidth = 180.0f;
inline constexpr float kBrowserMinWidth = 260.0f;
inline constexpr float kHeaderHorizontalPadding = 10.0f;
inline constexpr float kHeaderBottomBorderThickness = 1.0f;
inline constexpr float kBreadcrumbItemPaddingX = 4.0f;
inline constexpr float kBreadcrumbItemPaddingY = 1.0f;
inline constexpr float kBreadcrumbSpacing = 3.0f;
inline constexpr float kTreeTopPadding = 0.0f;
inline constexpr float kGridInsetX = 16.0f;
inline constexpr float kGridInsetY = 12.0f;
inline constexpr float kGridTileWidth = 92.0f;
inline constexpr float kGridTileHeight = 92.0f;
inline constexpr float kGridTileGapX = 12.0f;
inline constexpr float kGridTileGapY = 12.0f;
inline constexpr float kGridPreviewWidth = 68.0f;
inline constexpr float kGridPreviewHeight = 54.0f;
inline constexpr float kHeaderFontSize = 12.0f;
inline constexpr float kTileLabelFontSize = 11.0f;
inline constexpr UIColor kSurfaceColor(0.10f, 0.10f, 0.10f, 1.0f);
inline constexpr UIColor kPaneColor(0.10f, 0.10f, 0.10f, 1.0f);
inline constexpr UIColor kHeaderColor(0.11f, 0.11f, 0.11f, 1.0f);
inline constexpr UIColor kTextPrimary(0.880f, 0.880f, 0.880f, 1.0f);
inline constexpr UIColor kTextStrong(0.930f, 0.930f, 0.930f, 1.0f);
inline constexpr UIColor kTextMuted(0.640f, 0.640f, 0.640f, 1.0f);
inline constexpr UIColor kTileHoverColor(0.14f, 0.14f, 0.14f, 1.0f);
inline constexpr UIColor kTileSelectedColor(0.18f, 0.18f, 0.18f, 1.0f);
inline constexpr UIColor kTilePreviewFillColor(0.15f, 0.15f, 0.15f, 1.0f);
inline constexpr UIColor kTilePreviewShadeColor(0.12f, 0.12f, 0.12f, 1.0f);
inline constexpr UIColor kTilePreviewOutlineColor(0.920f, 0.920f, 0.920f, 0.20f);
inline constexpr UIColor kDropPreviewColor(0.92f, 0.92f, 0.92f, 0.42f);
bool ContainsPoint(const UIRect& rect, const UIPoint& point);
float ClampNonNegative(float value);
float ResolveTextTop(float rectY, float rectHeight, float fontSize);
float MeasureTextWidth(
const UIEditorTextMeasurer* textMeasurer,
std::string_view text,
float fontSize);
std::vector<UIInputEvent> FilterProjectPanelInputEvents(
const UIRect& bounds,
const std::vector<UIInputEvent>& inputEvents,
bool allowInteraction,
bool panelActive,
bool captureActive);
std::vector<UIInputEvent> FilterTreeInputEvents(
const std::vector<UIInputEvent>& inputEvents,
bool suppressPointerInput);
::XCEngine::UI::UITextureHandle ResolveFolderIcon(const BuiltInIcons* icons);
float ClampNavigationWidth(float value, float totalWidth);
void AppendTilePreview(
UIDrawList& drawList,
const UIRect& previewRect,
bool directory);
} // namespace XCEngine::UI::Editor::App::ProjectPanelInternal