Core and the app · crate

kinogaki-editor

Core

Kinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one.

Repository
Core and the app (kinogaki/studio-core)
Folder
studio/core/editor
Source
136 files, 35,985 lines
Tests
70 files, 17,392 lines
Depends on This crate Used by Studio's animation channels.kinogaki-anim lib-color1 crate Studio's color service: the OpenColorIO config (lib-color's built-in ACES 2.0 CG config, or a file), the working space, and the viewer's display, view, look, exposure and gamma.kinogaki-color-service Studio's core cooking engine, the same for every network kind (the owner's rule: the cooking DAG for nodes is core's).kinogaki-cook Core's own SDK package (`kinogaki.core`): what Studio holds whatever plugins are installed.kinogaki-core-package lib-ui5 crates Studio's document: the scene, a tree of objects under one root, and the core network each object of a kind naming a context holds.kinogaki-document Geometry, curves and B-reps in the viewport, independent of any GPU API: the SDK's standard values as surface packets (over the SDK's display triangulation and shading normals, so Solid draws what Render renders), the one picker that answers rays and boxes ...kinogaki-geometry-view `ImagePipeline`: what renders become on screen and in files.kinogaki-image-pipeline lib-math1 crate Studio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").kinogaki-network Studio's plugin loader.kinogaki-plugin-host lib-prism1 crate Studio's project files: a document as a Prism document.kinogaki-project SDK3 crates Studio's scene: the document cooked object by object.kinogaki-scene The plugin SDK's UI layer over lib-ui: the SDK's [`Ui`](studio_ui_api::Ui) and [`Painter`](studio_ui_api::Painter), its sheets and the host's services, implemented over lib-ui.kinogaki-sdk-ui Timed spans of Studio's own work: where a frame, a cook or a render sync spends its time, without an instrumented build.kinogaki-spans lib-viewport3 crates kinogaki-editor Studio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names.kinogaki-harness Kinogaki Studio: the editor in a window, after the plugins load.kinogaki-studio
depends onused by tests alonedependencies for tests alone are listed below, not drawn

What it is

Kinogaki Studio's editor: the document and everything the window shows of it, as parts one frame borrows one by one.

PartModuleWhat it owns
Documentcore/documentthe scene, networks, undo, where the user is, picks, slots
CookStatecookthe scene cook, the results it published, packages' latest-wins jobs
ViewStateviewthe views and the transform tool
Panespanesthe docked panes: the network pane over every level
ImagePipelinecore/image-pipeline (painted by paint)the render engines the packages brought, live renders, the canvas's compositor, swatches, final writes
Shellshellthe document's file, file dialogs, the status line, frame input, services; holding the state of:
commandskey stores, the menu bar, marking menus, Repeat, tools, shelves
settingsthe user's settings, their file and the Settings window
logthe Console's log
placeswhere the frame's items drew (the harness's and --script's)
Packagespackagesthe installed packages and each one's UI state

What a part reports to the harness it records into a probe (probe), which holds data only with the harness feature; the part's readers sit in one place gated on it.

A part's fields are private to its module and a part never names Editor; frame alone names them all (the harness's readers, frame/drive, among its files). It destructures the editor and passes each part what it reads, so no part is shared or locked. A package's UI is called with a HostCx built from the parts (host): the SDK's host interface and nothing else.

No timers. Background work (the cook, opens and saves, packages' workers) takes the window's wake when it is made and wakes the UI once per result; a frame runs only when input arrives or something woke it.

Depends on

CrateRepositoryAsWhat it is
kinogaki-animCore and the appnormalStudio's animation channels.
kinogaki-colorlib-colornormalColor science and color management for Kinogaki.
kinogaki-color-serviceCore and the appnormalStudio's color service: the OpenColorIO config (lib-color's built-in ACES 2.0 CG config, or a file), the working space, and the viewer's display, view, look, exposure and gamma.
kinogaki-cookCore and the appnormalStudio's core cooking engine, the same for every network kind (the owner's rule: the cooking DAG for nodes is core's).
kinogaki-core-packageCore and the appnormalCore's own SDK package (kinogaki.core): what Studio holds whatever plugins are installed.
kinogaki-dialogslib-uinormalNative file dialogs behind one API: open one file, open several, save, or choose a directory, with file type filters, a starting directory and a suggested name.
kinogaki-documentCore and the appnormalStudio's document: the scene, a tree of objects under one root, and the core network each object of a kind naming a context holds.
kinogaki-geometry-viewCore and the appnormalGeometry, curves and B-reps in the viewport, independent of any GPU API: the SDK's standard values as surface packets (over the SDK's display triangulation and shading normals, so Solid draws what Render renders), the one picker that answers rays and boxes ...
kinogaki-image-pipelineCore and the appnormalImagePipeline: what renders become on screen and in files.
kinogaki-mathlib-mathnormalKinogaki's vectors, points, matrices, quaternions and deterministic elementary functions.
kinogaki-networkCore and the appnormalStudio's core networks (design: core-owned networks; "Cooking DAG for nodes is studio core").
kinogaki-plugin-hostCore and the appnormalStudio's plugin loader.
kinogaki-prismlib-prismnormalPrism documents for Kinogaki.
kinogaki-projectCore and the appnormalStudio's project files: a document as a Prism document.
kinogaki-propertieslib-uinormalProperty schemas: what an inspector shows, as data.
kinogaki-render-apiSDKnormalKinogaki's render interface: what a host (Studio) sends a render engine and what comes back, with no GPU or OS API.
kinogaki-sceneCore and the appnormalStudio's scene: the document cooked object by object.
kinogaki-sdk-uiCore and the appnormalThe plugin SDK's UI layer over lib-ui: the SDK's Ui and Painter, its sheets and the host's services, implemented over lib-ui.
kinogaki-spansCore and the appnormalTimed spans of Studio's own work: where a frame, a cook or a render sync spends its time, without an instrumented build.
kinogaki-studio-apiSDKnormalKinogaki Studio's headless plugin API.
kinogaki-studio-ui-apiSDKnormalKinogaki Studio's UI layer for plugins.
kinogaki-uilib-uinormalKinogaki UI: the immediate-mode UI framework Kinogaki applications are built on.
kinogaki-ui-shelllib-uinormalKinogaki UI's native shell: opens the windows, runs the winit event loop, turns window events into kinogaki_ui input, paints each frame with kinogaki-ui-wgpu and drives an App.
kinogaki-ui-wgpulib-uinormalkinogaki-ui drawn with wgpu.
kinogaki-viewport-corelib-viewportnormalKinogaki viewport core: what a 3D viewport shows, independent of any GPU API or UI toolkit.
kinogaki-viewport-gpulib-viewportnormalKinogaki's wgpu viewport renderer: pipelines, retained GPU buffers, offscreen multisampled targets and owned WGSL shaders.
kinogaki-viewport-uilib-viewportnormalKinogaki viewport widgets for Kinogaki UI (lib-ui): one/four-view layout, camera navigation, the six-axis view cube, transform gizmo handles and point number labels.

For its tests alone

CrateRepositoryAsWhat it is
kinogaki-harnessCore and the apptestsStudio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names.
kinogaki-studio-api-testingSDKtestsThe SDK's test support (a dev-dependency only): assert_refused for admission tests, read_hostile for a format's tests of hostile files, format for its scratch folders and round trips, workers as a host installs them, with wgpu an ...
kinogaki-testkitCore and the apptestsKinogaki Studio's core testkit: toy packages written against the SDK alone, so core is tested with no real plugin.

Third-party

CrateVersionLicenceFrozen inAsAlso used by
log0.4.34MIT OR Apache-2.0lib-ui/vendornormal, testskinogaki-image-pipeline, kinogaki-scene, kinogaki-shared, kinogaki-ui, kinogaki-ui-shell, kinogaki-ui-wgpu
objc20.6.5MITlib-ui/vendornormalkinogaki-dialogs, kinogaki-spectre, kinogaki-ui-shell
objc2-app-kit0.3.2Zlib OR Apache-2.0 OR MITlib-ui/vendornormalkinogaki-dialogs, kinogaki-ui-shell
wgpu30.0.1MIT OR Apache-2.0lib-ui/vendornormalkinogaki-color-wgpu, kinogaki-composit-wgpu, kinogaki-render-api, kinogaki-shared, kinogaki-ui-shell, kinogaki-ui-wgpu, kinogaki-viewport-gpu

Used by

CrateRepositoryAsWhat it is
kinogaki-harnessCore and the appnormalStudio's test harness: the real editor, its event routing and its background work, driven offscreen with only the packages a test names.
kinogaki-studioCore and the appnormalKinogaki Studio: the editor in a window, after the plugins load.

Modules

Public types and traits

At the crate root

Structs EditorLaunchOptionsPlugins

By module: 3 public types and traits in 2 modules

frame EditorLaunchOptions

packages::plugins Plugins