package x import "git.tebibyte.media/tomo/tomo" import "git.tebibyte.media/tomo/tomo/canvas" type canvasBox struct { *box userDrawer canvas.Drawer } func (backend *Backend) NewCanvasBox () tomo.CanvasBox { this := &canvasBox { } this.box = backend.newBox(this) this.drawer = this return this } func (this *canvasBox) Box () tomo.Box { return this } func (this *canvasBox) SetDrawer (drawer canvas.Drawer) { this.userDrawer = drawer this.invalidateDraw() } func (this *canvasBox) Invalidate () { this.invalidateDraw() } func (this *canvasBox) Draw (can canvas.Canvas) { this.box.Draw(can) this.userDrawer.Draw ( can.SubCanvas(this.padding.Apply(this.innerClippingBounds))) }