Oberon Object Tiler ✪
Oberon’s tiler is unique in that tiling is not a mode but the only mode, and tiles contain objects not processes.
class Tiler: def __init__(self, x, y, w, h): self.x = x; self.y = y; self.w = w; self.h = h self.left = None self.right = None self.orientation = None # 'H' or 'V' def split(self, orientation, ratio): self.orientation = orientation if orientation == 'V': # Vertical split (left/right) split_point = self.w * ratio self.left = Tiler(self.x, self.y, split_point, self.h) self.right = Tiler(self.x + split_point, self.y, self.w - split_point, self.h) else: # Horizontal split (top/bottom) split_point = self.h * ratio self.left = Tiler(self.x, self.y, self.w, split_point) self.right = Tiler(self.x, self.y + split_point, self.w, self.h - split_point) Oberon Object Tiler
PROCEDURE Draw(obj: Object; frame: Rectangle); PROCEDURE Handle(obj: Object; VAR msg: Message); Oberon’s tiler is unique in that tiling is
: It can automatically generate standard crop/cut marks for each object, which is essential for professional printing of business cards or flyers. It then automatically enlarges or reduces the page
(* Add objects to the tiler *) tiler.AddObject(obj1); tiler.AddObject(obj2); tiler.AddObject(obj3);
When you check the Adapt Page Height option, the macro allows you to specify a target number of objects. It then automatically enlarges or reduces the page height to fit exactly that many rows, respecting your margins, gutters, and object size. Clicking the Adapt button triggers this recalculation, and the macro displays the new, optimized page size. This is an incredibly powerful feature for batch production.