Expand description
Takumi is a library with different parts to render your React components to images. This crate contains the core logic for layout, rendering.
Checkout the Quick Start if you are looking for napi-rs / WASM bindings.
§Example
use takumi::{
layout::{
node::Node,
Viewport,
style::{Length::Px, Style, StyleDeclaration},
},
rendering::{render, RenderOptionsBuilder},
GlobalContext,
};
// Create a node tree with `Node::container` and `Node::text`
let node = Node::container([Node::text("Hello, world!").with_style(
Style::default().with(StyleDeclaration::font_size(Px(32.0).into())),
)]);
// Create a context for storing resources, font caches.
// You should reuse the context to speed up the rendering.
let mut global = GlobalContext::default();
// Load fonts
global.font_context.load_and_store(
include_bytes!("../../assets/fonts/geist/Geist[wght].woff2").into(),
None,
None,
);
// Create a viewport
let viewport = Viewport::new(Some(1200), Some(630));
// Create render options
let options = RenderOptionsBuilder::default()
.viewport(viewport)
.node(node)
.global(&global)
.build()
.unwrap();
// Render the layout to an `RgbaImage`
let image = render(options).unwrap();§Feature Flags
woff2: Enable WOFF2 font support.woff: Enable WOFF font support.svg: Enable SVG support.rayon: Enable rayon support.
§Credits
Takumi wouldn’t be possible without the following works:
Re-exports§
pub use error::Result;pub use error::StyleSheetParseError;pub use error::TakumiError as Error;pub use image;pub use parley;pub use taffy;
Modules§
- error
- Error handling types and utilities.
- keyframes
- Shared deserializers for structured and shorthand keyframe inputs. Shared keyframe input parsing used by external bindings.
- layout
- Layout related modules, including the node tree, style parsing, and layout calculation.
- rendering
- Rendering related modules, including the image renderer, canvas operations.
- resources
- External resource management (fonts, images)
Structs§
- Global
Context - The main context for image rendering.