canvas_core 0.10.0
canvas_core: ^0.10.0 copied to clipboard
Pure-Dart canvas scene model, layout, geometry, serialization, and renderer-agnostic paint operations.
0.10.0 #
- Breaking: replace the
NodeIdalias with the sharedElementIdidentity type. - Breaking: make
TextMeasurerandImageIntrinsicsinterface-only runtime contracts and remove image-intrinsic change notifications from core. - Breaking: rename
CoreServices.tmtotextMeasurerand remove the forwarding text-measurement extension. - Add
CanvasImageAssetResolverfor batch resolution of logical imagesourceRefvalues into host-renderable sources and stable intrinsic metadata. - Add
collectSceneFontFamiliesfor renderer/resource preflight across nested and hidden text and font-backed icon nodes. - Keep renderer-neutral scene preparation outside
CanvasRenderPipeline; the pipeline continues to own deterministic scene computation and paint-op construction only.
0.9.0 #
- Breaking: normalize image backing sources into the document-local
CanvasSceneDocument.assetsregistry. - Breaking: replace
ImageData.sourcePathwith nullableassetIdand makeImageData.sizea required editable frame size. - Add
CanvasImageAssetwith an opaquesourceRefand optional persisted intrinsic dimensions. - Validate image asset records and image-to-asset references.
0.8.2 #
- Add
encodeCanvasSceneanddecodeCanvasSceneas the canonical external JSON boundary forCanvasSceneDocumentvalues. - Keep scene decoding separate from semantic document validation.
0.8.1 #
- Add deterministic, domain-neutral
CanvasSceneDocumentvalidation with stable machine-readable issue codes and JSON Pointer paths. - Validate generic scene integrity including finite numeric values, established ranges, globally unique node IDs, neutral group-behavior envelopes, and recursively JSON-safe behavior data.
- Keep unknown group behavior types and versions valid so optional extension packages remain responsible for component semantics.
- Make the existing 80-character node-name limit Unicode-safe in both
validation and
NodeEditingXnormalization.
0.8.0 #
- Breaking: replace the exported
NodeMutationsextension withNodeEditingX. - Breaking: remove the public
withId()andwithChildren()node extension helpers. Structural identity and tree changes remain owned by scene-tree and rewrite operations. - Keep
withName(),withXf(),withHidden(), andwithLocked()as the public immutable node-editing convenience API.
0.7.0 #
- Breaking: require explicit
versionanddatavalues when constructing or deserializingGroupBehaviorRef. - Remove implicit version
1and empty-data defaults from behavior envelopes.
0.6.0 #
- Breaking: remove
SceneRenderBuilderanddefaultSceneRenderBuilder. Use aScenePreparerfor synchronous renderer-neutral scene transformation before callingCanvasRenderPipeline.build(), or callbuild()directly when no preparation is required. - Breaking: expose one stable
CanvasRenderPipeline.servicesbundle and removeCanvasRenderPipeline.createServices(). Preparation and final layout can now use the exact sameCoreServicesinstance. - Keep scene computation, paint-operation construction, content-bounds
calculation, and
RenderSnapshotcreation exclusively inCanvasRenderPipeline.build(). - Breaking: remove the unused
CanvasViewportPolicyandCanvasViewportSourceAPIs. UseCanvasViewportPlannerand select the bounds to fit explicitly. - Breaking: make
CanvasViewportPlanner.plan()returnCanvasViewportTransformdirectly and removeCanvasViewportPlanResult. - Breaking: remove
computeViewportWithPadding. UseCanvasViewportPlanner.plan()withpaddingPx, or callcomputeViewportdirectly for low-level viewport math.
0.5.0 #
- Breaking: remove
TextMeasureCacheand thetextMeasureCacheparameters fromCoreServices,SceneRenderBuilder,defaultSceneRenderBuilder,CanvasRenderPipeline.createServices(), andCanvasRenderPipeline.build(). - Breaking: remove the deprecated
CanvasRenderPipeline.buildCanonical()compatibility helper. - Delegate text measurement directly to the host-provided
TextMeasurer. Platform implementations are now responsible for their own caching strategy.
0.4.0 #
- Breaking: change
TextData.letterSpacingandTextMeasurer.measurefrominttodouble. - Replace synthetic hair-space expansion with native logical-unit letter spacing while preserving the original text.
- Add
letterSpacingtoDrawTextOp. - Remove
spacedText,measureSpaced, andmeasureSpacedText. - Existing non-zero spacing values now use the new native semantics.
0.3.0 #
- Breaking: remove the unused
labelnamed parameter fromHistory.reduce. - Breaking: remove the unused
labelnamed parameter fromHistory.withPresent. - History behavior and stored state are unchanged; labels were previously accepted but ignored.
0.2.2 #
- Add
CanvasFields.iconRefas the shared field identity for an icon's reference value.
0.2.1 #
- Add
CanvasFieldKey,CanvasFields, andCanvasFieldKeyConverteras a shared runtime field identity API.
0.2.0 #
- Breaking: replace the scene background color model with
CanvasFillviabackgroundFill. - Support no-fill, solid, and gradient canvas backgrounds.
- Add package licensing details for the public release.
0.1.1 #
- Fix internal layout imports to avoid resolving duplicate canvas_core types.
- Move image/icon layout payload types into a shared internal layout payload file.
0.1.0 #
- Initial open-source release of canvas_core.