cascada 0.2.0

A general purpose UI layout engine
Documentation

Cascada

Cascada is a lightweight, high-performance UI layout engine.

API Docs | Architecture

Features

  • Microsecond layout performance
  • Declarative syntax
  • Predictable layouts
  • Descriptive error handling

Usage

Add this to your Cargo.toml.

[dependencies]
cascada = "0.2.0"

Example

use cascada::{solve_layout,HorizontalLayout,EmptyLayout,Size};

let child = EmptyLayout::new()
    .intrinsic_size(IntrinsicSize::fill());

// Add three equally sized child nodes.
let mut layout = HorizontalLayout::new()
    .intrinsic_size(IntrinsicSize::fill())
    .add_child(child.clone())
    .add_child(child.clone())
    .add_child(child);

solve_layout(&mut layout, Size::unit(3000.0));

let children = layout.children();

assert_eq!(children[0].size().width,1000.0);
assert_eq!(children[1].size().width,1000.0);
assert_eq!(children[2].size().width,1000.0);

Implementation details

Cascada was originally agape_layout which I made for agape, but I forked it because over time it started to feel like more of a standalone crate.

License

Licensed under either of:

at your option.