instant_image_transform(3)

πŸ“¦
version 0.7.1 Β· 2 versions
, in nixos 26.05

πŸ’… instant_image_transform(3) β€” the Arcan Lua API glow-up

okay so bestie, picture this: you're over in Arcan Lua API land and you've got a whole chain of transforms queued up like texts you haven't answered. this is the little function that hits "send all" on them. immediately. no waiting, no suspense. periodt.


✨ NAME ✨

instant_image_transform β€” immediately perform all pending transformations. like, all of them, right now, zero chill.


πŸ¦‹ SYNOPSIS πŸ¦‹

nil
instant_image_transform( vid:dst )
instant_image_transform( vid:dst, int:mask )
instant_image_transform( vid:dst, bool:trigger_last )
instant_image_transform( vid:dst, bool:trigger_last, bool:trigger_all )

🌸 DESCRIPTION 🌸

so this one fast-forwards through the transform chain for dst. the way that it just skips to the end of the queue, honestly iconic.

if mask is set, then only the specified bitmask of chains get fast-forwarded β€” and the squad of masks is:

  • MASK_OPACITY
  • MASK_ORIENTATION
  • MASK_POSITION
  • MASK_SCALE

everything else just sits there like 🧍 waiting its turn.

the default behaviour is to ignore all tagged transform handlers. (rude, but okay.)

  • if trigger_last is set πŸ‘‰ all handlers get ignored except the end of each chain.
  • if trigger_all is set πŸ‘‰ literally every handler gets triggered. no survivors. πŸ”₯

πŸ™ˆ NOTES πŸ™ˆ

  1. the trigger_last / trigger_all forms are problematic and should only be used in exceptional circumstances πŸ’€ because a tag transform might lead to a new transform being added, which will immediately be triggered, and then another, and then another β€” possibly causing hard to debug infinite chains. like an infinite group chat that you can never leave. be careful, bestie, fr fr.
  2. (there's just a 2 here. no text. nothing. an empty queen. i don't make the rules. 🫢)

πŸŽ€ EXAMPLE πŸŽ€

function instant_image_transform0()
      a = fill_surface(32, 32, 255, 0, 0);
      show_image(a);
      move_image(a, 50, 50, 100);
      instant_image_transform(a);
      props = image_surface_properties(a);
      print(props.x, props.y);
end

like, make the surface, show it, move it over 100 (which would normally be a whole animated thing), then instant_image_transform(a) yanks it straight to the finish line, and the print(props.x, props.y) proves it landed. slay. πŸ’…


πŸ‘‘ SEE ALSO: πŸ‘‘


mwah πŸ’– that's the whole page β€” brought to you by the image manual, October 2026 edition. stay transformed, stay instant, and don't build infinite chains. 🌈

πŸ“¦ where this page comes from