Skip to main content

oxframe_2d/
lib.rs

1//! 2D scene graph of oxframe.
2//!
3//! > **Status:** oxframe is under very active development. The API is not stable yet and
4//! > may change from version to version. Pin the exact version in your Cargo.toml and check
5//! > the [changelog](https://github.com/oxygenframe/oxframe-sdk/blob/main/CHANGELOG.md)
6//! > before upgrading.
7//!
8//! Scene code creates nodes with builders (`Rect::new().width(100.0)`) and
9//! adds them with [`Node::add`] (`view.add(..)`), which returns a `Copy`
10//! handle whose zero-argument methods of the same names return
11//! [`Signal`]s:
12//!
13//! ```ignore
14//! let r = view.add(Rect::new().size(200.0).x(-300.0));
15//! r.x().to(300.0, 1.0).await;
16//! ```
17//!
18//! Renderers consume a flat [`DrawItem`] list produced by
19//! [`SceneGraph::draw_list`], so every backend draws exactly the same thing.
20
21#![warn(missing_docs)]
22
23mod builder;
24mod draw;
25mod flex;
26mod graph;
27mod handles;
28mod image;
29mod text;
30mod trim;
31
32pub use builder::{
33    BaseProps, CircleBuilder, CodeBuilder, GridBuilder, GroupBuilder, ImgBuilder, LayoutBuilder,
34    LineBuilder, NodeBuilder, PathBuilder, PolygonBuilder, RectBuilder, StarBuilder, TxtBuilder,
35};
36pub use draw::{DrawItem, Layer, LineCap, LineJoin, Paint, Primitive, Shadow, StrokeStyle};
37pub use graph::{Direction, Justify, LayoutAlign, NodeData, NodeId, NodeKind, SceneGraph};
38pub use handles::{
39    Circle, Code, Grid, Group, Img, Layout, Line, Node, Path, Polygon, Rect, Star, Txt, View,
40};
41pub use image::{ImageSource, RasterImage, VectorImage, VectorShape};
42pub use trim::trim;
43
44pub use oxframe_core::{BlendMode, Color, Gradient, GradientKind, Signal};
45pub use oxframe_text::{Align as TextAlign, Lang, MONO, SANS};
46pub use text::{CodeTheme, RichSpan, span};