BluePrint
Language Reference

Altia BluePrint · ABPDescribe the interface. The screen follows.

BluePrint is a declarative language for human–machine interfaces. A design is a tree of components with reactive properties, events and actions. It is written in a restricted YAML, with expressions in a subset of JavaScript.

Component: $PrimaryButton
  labelText: ""
  tone: "#333344"
  @press:
    code: tone = "#5566AA"
  @release:
    code: tone = "#333344"
  Shape: face
    kind: ShapeType::Rect
    points: [[0, 0], [160, 48]]
    bg: tone
    fg: tone
  Text: lbl
    text: labelText
    justify: Justify::Center
    width: 160
    y: 8

PrimaryButton: okButton
  labelText: "OK"
  x: 100
  y: 60

Overview

A BluePrint document says what the interface is, not how to update it. When data that a property reads changes, the property is re-evaluated and the screen updates. Nobody writes the update code.

Components

A tree of typed components

Displays, text, images, shapes and groups nest by indentation. Define your own types with Base: $Name and reuse them across modules.

Reactive

Properties are expressions

Every value is an expression. Bind a needle's rotation to Vehicle.rpm and it follows the data with no handler code.

Events

Events and actions

Handlers such as @press, @init and @tick run actions: set values, start motions, call the host.

Visuals

Layout, motion and materials

Layout, animation and custom GPU materials written in GLSL are part of the language, not add-ons.

3D

Scenes

Place 3D scenes in a 2D design and drive their baked animations from expressions.

Host

A clean host boundary

I/O and heavy computation stay in the host application. The host reaches the design through Data objects and external functions.