|
Deki 1.3.0
Modular C++ 2D engine for embedded displays and desktop
|
Namespaces | |
| namespace | EditorNaming |
| namespace | Fonts |
| namespace | Metrics |
| namespace | Palette |
Classes | |
| struct | AssetCacheContext |
| Context passed to asset cache handlers. More... | |
| struct | AssetData |
| Asset data stored in .data sidecar files. More... | |
| class | AssetDatabase |
| Unity-like asset database for editor tools. More... | |
| class | AssetFileWatcher |
| OS-level file watcher that feeds AssetPipeline::Tick(). More... | |
| struct | AssetInfo |
| Information about a discovered asset. More... | |
| class | AssetPicker |
| struct | AssetPickerEntry |
| class | AssetPipeline |
| Asset pipeline service - handles GUID creation, caching, and asset discovery. More... | |
| class | AssetTypeEditor |
| class | AssetTypeEditorRegistry |
| struct | AssetTypeHandler |
| class | AssetTypeRegistry |
| struct | AtlasFrame |
| struct | ChromaKeySettings |
| class | Command |
| Base interface for undoable commands. More... | |
| class | CommandHistory |
| Manages undo/redo command history with support for command merging. More... | |
| class | CompoundCommand |
| Groups multiple commands into a single undoable operation. More... | |
| struct | CreateMenuEntry |
| Entry for the hierarchy "Create Object" context menu. More... | |
| class | CreateMenuRegistry |
| class | CustomEditor |
| Custom editor for a specific component type. More... | |
| class | CustomEditorRegistry |
| class | DeadMemory |
| Memory that is about to be freed, described as byte ranges. More... | |
| struct | DecodedImage |
| class | EditorApplication |
| Main editor application singleton (facade). More... | |
| class | EditorAssets |
| Editor-only asset utilities for GPU resource management. More... | |
| class | EditorExtension |
| class | EditorHttpUtils |
| Static HTTP/archive utility functions used across the editor. More... | |
| class | EditorPaths |
| EditorPaths. More... | |
| class | EditorUI |
| Singleton providing the editor UI controls + inspector drawing. More... | |
| class | EditorWindow |
| Base class for standalone editor windows. More... | |
| struct | EditorWindowMeta |
| class | FileInspector |
| class | FileInspectorRegistry |
| class | GuidCache |
| Cache for mapping asset paths to GUIDs using .data sidecar files. More... | |
| class | IAssetImporter |
| struct | ImportResult |
| class | NodeCanvas |
| struct | NodeCanvasEvents |
| What happened this frame. More... | |
| struct | NodeCanvasLink |
| One link to draw, by node ids + pin indices. More... | |
| struct | NodeCanvasNode |
| One node to draw. More... | |
| struct | NodeCanvasPalette |
| Canvas colors (packed via EditorUI::Rgba: a<<24|b<<16|g<<8|r). More... | |
| struct | PickerItem |
| class | SceneView |
| Singleton providing current render context for scene view. More... | |
| struct | SceneViewContext |
| Context for rendering an object in the scene view Consolidates all parameters needed for BeginObject(). More... | |
| struct | SpriteFrameData |
| Runtime sprite frame data (texture coordinates). More... | |
| struct | SpriteSettings |
| struct | SubAssetInfo |
| Information about a sub-asset. More... | |
| struct | TexData |
| struct | TexHeader |
| class | TextureImporter |
Typedefs | |
| using | AssetCacheHandler = std::function<AssetCacheResult(const AssetCacheContext& ctx)> |
| Asset cache handler callback type. | |
| using | HttpStatusCallback = std::function<void(const std::string&)> |
Enumerations | |
| enum class | AssetFilterType { All , Textures , Audio , Scripts , Scenes , Fonts , Animations } |
| enum class | AssetCacheResult { NotCached , Cached , PreCached } |
| Result of a cache-handler invocation. More... | |
| enum class | AssetCompileTarget { Texture , Audio , Data , None } |
| enum class | AssetCategory { Unknown , Texture , Procedural , Audio , Font , Scene , Animation , Pipeline , Script , Data } |
| enum class | SceneEditTool { Select , Move , Rect } |
| Scene-view editing tool, requestable from package-DLL editors. More... | |
| enum class | EditorType { CustomEditor , AssetTypeEditor } |
| enum class | TexFlags : uint32_t { None = 0 , HasTransparency = 0x01 , HasAlpha = 0x02 , IsSprite = 0x04 , AllOpaque = 0x08 } |
| enum class | TextureFormat : uint32_t { RGB888 = 0 , RGBA8888 = 1 , RGB565 = 2 , RGB565A8 = 3 , ALPHA8 = 4 } |
| enum class | MetadataChunkType : uint32_t { Sprite = 1 , FrameList = 2 , ChromaKey = 3 } |
| enum class | SpriteSlicingMode { None = 0 , Grid = 1 , Atlas = 2 } |
Functions | |
| bool | LoadAssetData (const std::string &path, AssetData &out) |
| Load asset data from a .data file. | |
| bool | SaveAssetData (const std::string &path, const AssetData &data) |
| Save asset data to a .data file. | |
| std::string | GetAssetDataPath (const std::string &assetPath) |
| Get the .data file path for an asset. | |
| std::string | ReadAssetGuid (const std::string &assetPath) |
| Read asset GUID from .data sidecar file. | |
| std::string | GetOrCreateAssetGuid (const std::string &assetPath) |
| Get or create asset GUID (creates .data file if needed). | |
| std::string | GenerateDeterministicGuid (const std::string &seed) |
| Generate a deterministic GUID from a seed string (for derived assets like font sizes). | |
| std::string | GenerateGuid () |
| Generate a random GUID. | |
| void | SetupEditorTheme (float dpiScale) |
| void | Tooltip (const char *fmt,...) IM_FMTARGS(1) |
| int | SchematicPicker (const char *id, const char *title, const PickerItem *items, int itemCount, bool justOpened, float listHeight, const char *itemIcon=nullptr, const char *searchHint=nullptr, const char *emptyText=nullptr) |
| void | BeginPropertyContext () |
| void | EndPropertyContext () |
| bool | SchematicCollapsingHeader (const char *label, ImGuiTreeNodeFlags flags=ImGuiTreeNodeFlags_DefaultOpen) |
| bool | SchematicSectionBegin (const char *label, ImGuiTreeNodeFlags flags=ImGuiTreeNodeFlags_DefaultOpen, ImGuiID *outHeaderId=nullptr) |
| void | SchematicSectionEnd () |
| bool | SchematicTreeBodyBegin (bool open, ImGuiID nodeId) |
| void | SchematicTreeBodyEnd () |
| bool | SchematicSectionBand (const char *label, float *outLabelX=nullptr) |
| bool | SchematicBandTitleField (const char *id, char *buf, int bufSize, float x, float bandTop, float bandBottom, float width, const char *hint) |
| void | SchematicSubHeader (const char *label) |
| bool | SchematicAddButton (const char *label, float width=0.0f) |
| void | DrawTreeNodeChevronLabel (bool open, bool expandable, const char *label, ImU32 labelColor) |
| void | FullBleedSeparator () |
| bool | PanelToolbar (bool *pinned=nullptr) |
| void | SearchField (const char *id, char *buf, size_t bufSize, float rightReserve=0.0f, bool bottomBorder=false, float *outSlotX=nullptr, float *outSlotY=nullptr, float *outSlotW=nullptr, float *outSlotH=nullptr, const char *hint="Search") |
| bool | SchematicToolbarCombo (const char *id, int *currentIndex, const char *items, float height, bool leftDivider=false) |
| bool | SchematicActionLink (const char *label) |
| bool | SchematicDragFloat (const char *id, float *v, float v_speed=1.0f, float v_min=0.0f, float v_max=0.0f, const char *format="%.3f") |
| bool | SchematicDragInt (const char *id, int *v, float v_speed=1.0f, int v_min=0, int v_max=0, const char *format="%d") |
| bool | SchematicDragFloat2 (const char *id, float v[2], float v_speed=1.0f, float v_min=0.0f, float v_max=0.0f, const char *format="%.3f") |
| bool | SchematicDragFloat3 (const char *id, float v[3], float v_speed=1.0f, float v_min=0.0f, float v_max=0.0f, const char *format="%.3f") |
| bool | SchematicColorEdit4 (const char *id, float col[4]) |
| bool | SchematicColorEdit3 (const char *id, float col[3]) |
| bool | SchematicCombo (const char *id, int *currentIndex, const char *const items[], int count) |
| bool | SchematicCombo (const char *id, int *currentIndex, const char *itemsSeparatedByZeros) |
| bool | SchematicBeginCombo (const char *id, const char *preview) |
| void | SchematicEndCombo () |
| void | DrawAllTabTopAccents () |
| void | DrawDockSeams () |
| bool | SchematicCheckbox (const char *label, bool *v) |
| bool | SchematicCheckbox (const char *label, bool *v, const ImVec4 &fillColor) |
| void | PushContextMenuPopupStyle () |
| void | PushContextMenuItemStyle () |
| bool | BeginSchematicModal (const char *title, float cssWidth) |
| void | EndSchematicModal () |
| int | GetRegisteredWindowCount () |
| const EditorWindowMeta * | GetRegisteredWindowMeta (int index) |
| void | RegisterEditorWindow (const EditorWindowMeta &meta) |
| void | ClearRegisteredWindows () |
| void | TrimRegisteredWindows (int keepCount) |
| bool | ReadFileToString (const std::string &path, std::string &out, std::string &err) |
| bool | AtomicWriteFile (const std::string &path, std::string_view content, std::string &err) |
| std::string | NormalizeProjectRoot (const std::string &projectPath) |
| Where a project's generated content lives. | |
| std::string | GetGeneratedDirectory (const std::string &projectPath) |
| Root of everything the editor generates. | |
| std::string | GetCacheDirectoryRelative () |
| The cache directory as a project-relative path, forward-slashed. | |
| std::string | GetCacheDirectory (const std::string &projectPath) |
| Get the cache directory path for a project. | |
| std::string | GetCachePath (const std::string &projectPath, const std::string &assetGuid) |
| Get the cache path for a specific asset by GUID. | |
| std::string | GetRuntimeDirectory (const std::string &projectPath) |
| Package DLLs the editor loads. | |
| std::string | GetBuildDirectory (const std::string &projectPath) |
| CMake/Ninja build tree. | |
| std::string | GetShadowDirectory (const std::string &projectPath) |
| Hot-reload copies of the runtime DLLs. | |
| std::string | GetSettingsDirectory (const std::string &projectPath) |
| Project settings, authored and tracked. | |
| std::string | GetSourceDirectory (const std::string &projectPath) |
| std::string | GetAssetsDirectory (const std::string &projectPath) |
| std::string | GetPackagesDirectory (const std::string &projectPath) |
| std::string | GetPackageManifestFile (const std::string &projectPath) |
| The manifest naming a project's package dependencies, and its lockfile. | |
| std::string | GetPackageLockFile (const std::string &projectPath) |
| std::string | GetPlatformsDirectory (const std::string &projectPath) |
| std::string | GetAssetsDirectoryRelative () |
| std::string | GetSourceDirectoryRelative () |
| std::string | GetPackagesDirectoryRelative () |
| std::string | GetPackageManifestFileName () |
| Manifest and lock filenames, as written at the project root. | |
| std::string | GetPackageLockFileName () |
| std::string | GetPlatformsDirectoryRelative () |
| bool | DecodeImageFile (const std::string &absolutePath, DecodedImage &out) |
Variables | |
| constexpr int | DEKI_CACHE_VERSION = 3 |
| ImFont * | g_FontUI |
| ImFont * | g_FontUISmall |
| ImFont * | g_FontUIMed |
| ImFont * | g_FontUIBold |
| ImFont * | g_FontMono |
| ImFont * | g_FontMonoSmall |
| ImFont * | g_FontMonoBold |
| ImFont * | g_FontDisplay |
| ImFont * | g_FontDisplaySmall |
| ImFont * | g_FontLogo |
| constexpr float | TooltipDelaySeconds = 1.0f |
| using DekiEditor::AssetCacheHandler = std::function<AssetCacheResult(const AssetCacheContext& ctx)> |
Asset cache handler callback type.
Called during ProcessAsset for registered extensions. Responsible for generating cache files and registering sub-assets. Returns an AssetCacheResult describing what happened (see enum above).
Packages can register handlers via AssetPipeline::OnStarted to override built-in handlers or add support for new file types.
| using DekiEditor::HttpStatusCallback = std::function<void(const std::string&)> |
|
strong |
|
strong |
Result of a cache-handler invocation.
The handler's return value tells ProcessAsset what to do with the asset's cache state — without the handler having to mutate AssetCacheContext or touch AssetInfo directly.
| Enumerator | |
|---|---|
| NotCached | |
| Cached | |
| PreCached | |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
|
strong |
| bool DekiEditor::LoadAssetData | ( | const std::string & | path, |
| AssetData & | out ) |
Load asset data from a .data file.
| path | Path to the .data file |
| out | Output asset data |
| bool DekiEditor::SaveAssetData | ( | const std::string & | path, |
| const AssetData & | data ) |
Save asset data to a .data file.
| path | Path to the .data file |
| data | Asset data to save |
| std::string DekiEditor::GetAssetDataPath | ( | const std::string & | assetPath | ) |
Get the .data file path for an asset.
| assetPath | Path to the asset (e.g., "foo.png") |
| std::string DekiEditor::ReadAssetGuid | ( | const std::string & | assetPath | ) |
Read asset GUID from .data sidecar file.
| assetPath | Path to the asset file |
| std::string DekiEditor::GetOrCreateAssetGuid | ( | const std::string & | assetPath | ) |
Get or create asset GUID (creates .data file if needed).
| assetPath | Path to the asset file |
| std::string DekiEditor::GenerateDeterministicGuid | ( | const std::string & | seed | ) |
Generate a deterministic GUID from a seed string (for derived assets like font sizes).
| seed | Seed string for GUID generation |
| std::string DekiEditor::GenerateGuid | ( | ) |
Generate a random GUID.
| void DekiEditor::SetupEditorTheme | ( | float | dpiScale | ) |
| void DekiEditor::Tooltip | ( | const char * | fmt, |
| ... ) |
| int DekiEditor::SchematicPicker | ( | const char * | id, |
| const char * | title, | ||
| const PickerItem * | items, | ||
| int | itemCount, | ||
| bool | justOpened, | ||
| float | listHeight, | ||
| const char * | itemIcon = nullptr, | ||
| const char * | searchHint = nullptr, | ||
| const char * | emptyText = nullptr ) |
| void DekiEditor::BeginPropertyContext | ( | ) |
| void DekiEditor::EndPropertyContext | ( | ) |
| bool DekiEditor::SchematicCollapsingHeader | ( | const char * | label, |
| ImGuiTreeNodeFlags | flags = ImGuiTreeNodeFlags_DefaultOpen ) |
| bool DekiEditor::SchematicSectionBegin | ( | const char * | label, |
| ImGuiTreeNodeFlags | flags = ImGuiTreeNodeFlags_DefaultOpen, | ||
| ImGuiID * | outHeaderId = nullptr ) |
| void DekiEditor::SchematicSectionEnd | ( | ) |
| bool DekiEditor::SchematicTreeBodyBegin | ( | bool | open, |
| ImGuiID | nodeId ) |
| void DekiEditor::SchematicTreeBodyEnd | ( | ) |
| bool DekiEditor::SchematicSectionBand | ( | const char * | label, |
| float * | outLabelX = nullptr ) |
| bool DekiEditor::SchematicBandTitleField | ( | const char * | id, |
| char * | buf, | ||
| int | bufSize, | ||
| float | x, | ||
| float | bandTop, | ||
| float | bandBottom, | ||
| float | width, | ||
| const char * | hint ) |
| void DekiEditor::SchematicSubHeader | ( | const char * | label | ) |
| bool DekiEditor::SchematicAddButton | ( | const char * | label, |
| float | width = 0.0f ) |
| void DekiEditor::DrawTreeNodeChevronLabel | ( | bool | open, |
| bool | expandable, | ||
| const char * | label, | ||
| ImU32 | labelColor ) |
| void DekiEditor::FullBleedSeparator | ( | ) |
| bool DekiEditor::PanelToolbar | ( | bool * | pinned = nullptr | ) |
| void DekiEditor::SearchField | ( | const char * | id, |
| char * | buf, | ||
| size_t | bufSize, | ||
| float | rightReserve = 0.0f, | ||
| bool | bottomBorder = false, | ||
| float * | outSlotX = nullptr, | ||
| float * | outSlotY = nullptr, | ||
| float * | outSlotW = nullptr, | ||
| float * | outSlotH = nullptr, | ||
| const char * | hint = "Search" ) |
| bool DekiEditor::SchematicToolbarCombo | ( | const char * | id, |
| int * | currentIndex, | ||
| const char * | items, | ||
| float | height, | ||
| bool | leftDivider = false ) |
| bool DekiEditor::SchematicActionLink | ( | const char * | label | ) |
| bool DekiEditor::SchematicDragFloat | ( | const char * | id, |
| float * | v, | ||
| float | v_speed = 1.0f, | ||
| float | v_min = 0.0f, | ||
| float | v_max = 0.0f, | ||
| const char * | format = "%.3f" ) |
| bool DekiEditor::SchematicDragInt | ( | const char * | id, |
| int * | v, | ||
| float | v_speed = 1.0f, | ||
| int | v_min = 0, | ||
| int | v_max = 0, | ||
| const char * | format = "%d" ) |
| bool DekiEditor::SchematicDragFloat2 | ( | const char * | id, |
| float | v[2], | ||
| float | v_speed = 1.0f, | ||
| float | v_min = 0.0f, | ||
| float | v_max = 0.0f, | ||
| const char * | format = "%.3f" ) |
| bool DekiEditor::SchematicDragFloat3 | ( | const char * | id, |
| float | v[3], | ||
| float | v_speed = 1.0f, | ||
| float | v_min = 0.0f, | ||
| float | v_max = 0.0f, | ||
| const char * | format = "%.3f" ) |
| bool DekiEditor::SchematicColorEdit4 | ( | const char * | id, |
| float | col[4] ) |
| bool DekiEditor::SchematicColorEdit3 | ( | const char * | id, |
| float | col[3] ) |
| bool DekiEditor::SchematicCombo | ( | const char * | id, |
| int * | currentIndex, | ||
| const char *const | items[], | ||
| int | count ) |
| bool DekiEditor::SchematicCombo | ( | const char * | id, |
| int * | currentIndex, | ||
| const char * | itemsSeparatedByZeros ) |
| bool DekiEditor::SchematicBeginCombo | ( | const char * | id, |
| const char * | preview ) |
| void DekiEditor::SchematicEndCombo | ( | ) |
| void DekiEditor::DrawAllTabTopAccents | ( | ) |
| void DekiEditor::DrawDockSeams | ( | ) |
| bool DekiEditor::SchematicCheckbox | ( | const char * | label, |
| bool * | v ) |
| bool DekiEditor::SchematicCheckbox | ( | const char * | label, |
| bool * | v, | ||
| const ImVec4 & | fillColor ) |
| void DekiEditor::PushContextMenuPopupStyle | ( | ) |
| void DekiEditor::PushContextMenuItemStyle | ( | ) |
| bool DekiEditor::BeginSchematicModal | ( | const char * | title, |
| float | cssWidth ) |
| void DekiEditor::EndSchematicModal | ( | ) |
| int DekiEditor::GetRegisteredWindowCount | ( | ) |
| const EditorWindowMeta * DekiEditor::GetRegisteredWindowMeta | ( | int | index | ) |
| void DekiEditor::RegisterEditorWindow | ( | const EditorWindowMeta & | meta | ) |
| void DekiEditor::ClearRegisteredWindows | ( | ) |
| void DekiEditor::TrimRegisteredWindows | ( | int | keepCount | ) |
|
inline |
|
inline |
|
inline |
Where a project's generated content lives.
This is the public, package-visible definition of the layout, and the only one. src/core/ProjectPaths.h delegates here rather than restating it — an earlier split between the two is exactly how cache/ ended up being recreated at the project root after everything else had moved under generated/.
Header-only and dependency-free so a package can include it without linking anything.
Normalise a project root to an absolute path.
Every path below is built on this. A relative project root is not merely untidy: package DLLs are loaded with LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR, which rejects a relative path outright (ERROR_INVALID_PARAMETER), so opening a project by a relative path made every package fail to load with an error that pointed at the DLL rather than the path. Resolving once, here, means no caller has to remember.
|
inline |
Root of everything the editor generates.
Disposable; recreated on open/build.
|
inline |
The cache directory as a project-relative path, forward-slashed.
The asset database stores cache locations relative to the project so a project stays portable between machines. That relative form has to agree with the absolute one below — when they were separate literals, the pipeline wrote to one location and recorded the other.
|
inline |
Get the cache directory path for a project.
| projectPath | Path to the project root |
|
inline |
Get the cache path for a specific asset by GUID.
| projectPath | Path to the project root |
| assetGuid | GUID of the asset |
|
inline |
Package DLLs the editor loads.
|
inline |
CMake/Ninja build tree.
|
inline |
Hot-reload copies of the runtime DLLs.
A sibling of runtime/, never a child: runtime/ is the copy source, and nesting the destination inside it makes the loader enumerate its own copies.
|
inline |
Project settings, authored and tracked.
|
inline |
|
inline |
|
inline |
|
inline |
The manifest naming a project's package dependencies, and its lockfile.
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Manifest and lock filenames, as written at the project root.
|
inline |
|
inline |
| bool DekiEditor::DecodeImageFile | ( | const std::string & | absolutePath, |
| DecodedImage & | out ) |
|
constexpr |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
extern |
|
constexpr |