Migration Guide

Upgrading between Presentar versions.

General Strategy

  1. Read changelog for breaking changes
  2. Update dependencies
  3. Run tests to find issues
  4. Fix compile errors
  5. Run visual regression tests
  6. Verify accessibility

Widget Trait Changes

Old (pre-0.1)

trait Widget {
    fn render(&self, canvas: &mut Canvas);
}

New (0.1+)

trait Widget {
    fn measure(&self, constraints: &Constraints) -> Size;
    fn layout(&mut self, size: Size);
    fn paint(&self, canvas: &mut dyn Canvas);
}

Migration Steps

StepCommandPurpose
1cargo updateUpdate dependencies
2cargo checkFind compile errors
3cargo testRun test suite
4make test-visualCheck visual regression

Common Fixes

Canvas Method Renames

OldNew
fill_rectfill_rect (unchanged)
draw_textdraw_text (unchanged)
render()paint()

Size/Constraints

// Old
let size = (100.0, 50.0);

// New
let size = Size::new(100.0, 50.0);
let constraints = Constraints::tight(size);

Verified Test

#[test]
fn test_migration_size_creation() {
    use presentar_core::Size;

    // New API for size creation
    let size = Size::new(100.0, 50.0);
    assert_eq!(size.width, 100.0);
    assert_eq!(size.height, 50.0);

    // Size is Copy
    let size2 = size;
    assert_eq!(size, size2);
}