Hello World
Minimal Presentar application.
Code
use presentar::widgets::{Column, Text};
use presentar::widgets::row::MainAxisAlignment;
use presentar::{Constraints, Rect, Size, Widget, RecordingCanvas};
fn main() {
// Build UI
let mut ui = Column::new()
.main_axis_alignment(MainAxisAlignment::Center)
.gap(16.0)
.child(
Text::new("Hello, Presentar!")
.font_size(24.0)
)
.child(
Text::new("A WASM-first visualization framework")
.font_size(14.0)
);
// Measure
let size = ui.measure(Constraints::loose(Size::new(400.0, 300.0)));
println!("Size: {}x{}", size.width, size.height);
// Layout
ui.layout(Rect::new(0.0, 0.0, size.width, size.height));
// Paint
let mut canvas = RecordingCanvas::new();
ui.paint(&mut canvas);
println!("Commands: {}", canvas.command_count());
}
Run
cargo run --example hello_world
Output
Size: 302.4x118.4
Commands: 4
Verified Test
#[test]
fn test_hello_world() {
use presentar_widgets::{Column, Text};
use presentar_core::{Constraints, Size, Widget};
let ui = Column::new()
.child(Text::new("Hello, Presentar!"));
let size = ui.measure(Constraints::loose(Size::new(400.0, 300.0)));
assert!(size.width > 0.0);
}