Widgets

/

effects

Subtract

Cuts the upper layer's shape out of the base layer.

A hole cut out

Subtract cuts the upper layers' shapes out of the base layer, the one with the lowest Order. What was cut shows whatever is behind.

LAYR
Subtract(
  Order(
    .posOrder(0)
    .obj(Container(.config(size: 160, color: accent, cornerRadius: 80)))
  )
  Order(
    .posOrder(1)
    .obj(
      Position(
        .config(bottom: 18, right: 18)
        .obj(Container(.config(size: 56, cornerRadius: 28)))
      )
    )
  )
)

What is left outside the cut

The base keeps everything the cut does not cover, even where it reaches outside the others. Here the base is the teal circle, pushed below the square by bottom: -40; the square cuts it away except for the part that hangs out underneath.

LAYR
Subtract(
  Order(.posOrder(1) .obj(Container(.config(size: 140, color: ember))))
  Order(
    .posOrder(0)
    .obj(
      Position(
        .config(bottom: -40)
        .obj(Container(.config(size: 90, color: teal, cornerRadius: 45)))
      )
    )
  )
)

Config keys

KeyTypeDefaultMeaning
align (alignment)alignmidWhere the cut sits by default.
w (width)len | fill | hugWidth: a length, fill (share the remaining space) or hug (fit content, default).
h (height)len | fill | hugHeight: a length, fill or hug (default).
size (s)sizeWidth and height together: size: 200 or size: (200, 120).
minW (minWidth)lenMinimum width.
maxW (maxWidth)lenMaximum width.
minH (minHeight)lenMinimum height.
maxH (maxHeight)lenMaximum height.
aspect (aspectRatio)numAspect ratio (width / height), e.g. 16/9.
margininsetsSpace outside the object: all(8), sym(x: 8, y: 4), only(top: 8).
opacitynumOpacity from 0 to 1.
hide (hidden)boolRemoves the object from layout and the accessibility tree.
shrinknum1Shrink priority when space runs out. Lower shrinks first; 0 never shrinks.
flexnum1Share of remaining space for fill sizes.
cursorauto | pointer | text | grab | grabbing | move | notAllowed | crosshair | nonePointer cursor.
className (class)txtExtra CSS class names: styling hooks for your own stylesheet (hover rules, third-party CSS).

Slots

  • .objs: several objects, the default slot