mirror of
https://github.com/storytold/filmcraft.git
synced 2026-10-31 21:47:02 -06:00
- project: ItemKind::Graphic (transparent canvas source, hidden from the Project panel, unlimited duration); graphic layers are hidden effect instances graphic_text / graphic_shape on the clip (serde for free, keyframes on every animatable property, Source Text holds), with appearance (fill, two strokes outer/centre/inner, background box with radius, drop shadow) and transform (position, anchor, scale, rotation, opacity); eval_layer gives a plain LayerSpec. No schema migration: all additive. - render: graphic_clip rasterises each layer straight to the output transform (crisp at any Motion scale/rotation), caches layer rasters, composes a tight image for the GPU plan; standard effects on a graphic run at source resolution first. - engine: graphics.newText (Cmd+T) / newShape (new clip above the footage at the playhead or a layer in an existing clip), setText (typing coalesces into one undo step), set, selectLayer, deleteLayer, arrangeLayer, align (frame / selection), distribute, graphics.list, fonts.list. EditorState.graphic_layers holds the layer selection. - goldens: graphic_title, graphic_shapes (CPU and GPU parity). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
31 lines
952 B
TOML
31 lines
952 B
TOML
[package]
|
|
name = "filmcraft-engine"
|
|
description = "FilmCraft engine façade: session, command registry, history, media pool"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
rust-version.workspace = true
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[dependencies]
|
|
filmcraft-time = { workspace = true }
|
|
filmcraft-geom = { workspace = true }
|
|
filmcraft-color = { workspace = true }
|
|
filmcraft-frame = { workspace = true }
|
|
filmcraft-media = { workspace = true }
|
|
filmcraft-codecs = { workspace = true }
|
|
filmcraft-project = { workspace = true }
|
|
filmcraft-edit = { workspace = true }
|
|
filmcraft-render = { workspace = true }
|
|
filmcraft-text = { workspace = true }
|
|
filmcraft-export = { workspace = true }
|
|
filmcraft-format = { workspace = true }
|
|
filmcraft-interchange = { workspace = true }
|
|
filmcraft-captions = { workspace = true }
|
|
serde = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
thiserror = { workspace = true }
|
|
log = { workspace = true }
|