mancini
import "mazzy/mazarin/mancini"
Code generated by compile-constraints from add_sub_deref.vgo. DO NOT EDIT.
Code generated by compile-constraints from appWindowHeight.vgo. DO NOT EDIT.
Code generated by compile-constraints from appWindowWidth.vgo. DO NOT EDIT.
Code generated by compile-constraints from between_deref.vgo. DO NOT EDIT.
Code generated by compile-constraints from bounds_from_xywh.vgo. DO NOT EDIT.
Code generated by compile-constraints from bounds_hash.vgo. DO NOT EDIT.
Code generated by compile-constraints from decorationHeight.vgo. DO NOT EDIT.
Code generated by compile-constraints from decorationWidth.vgo. DO NOT EDIT.
dispatch.go implements the Henry-Hudson (subArctic) input dispatch model for shepherd applications. This is the in-app dispatch pipeline — rachel handles WM-level dispatch (focus granting, window selection), then forwards typed events to the focused shepherd. The shepherd’s AppDispatcher routes those events to the correct mancini interactors.
Three layers:
- AppPolicy — ordered routing strategies (focus or positional)
- Agent — each policy contains agents that translate raw events into semantic protocol callbacks via FSMs
- Protocol Interfaces — Clickable, ClickDraggable, KeyReceivable, etc.
Reference: Hudson, Mankoff, Smith. “Extensible Input Handling in the subArctic Toolkit.” CHI 2005.
Package mancini is the core of the Mazzy UI toolkit. It defines the interfaces and types that all interactors share: layout, drawing, theming, and neumorphic shadow parameters.
Architecture
Mancini uses an object-oriented design layered on Go’s embedding. Every UI element (“interactor”) ultimately satisfies the Interactor interface, which provides position (X, Y), size (W, H), visibility, and access to the current DrawContext. Themed interactors additionally satisfy ThemedInteractor, adding palette colors and font resolution.
Concrete interactor types live in the mazzy/mazarin/mancini/std package. Their implementation base types live in mazzy/mazarin/mancini/impl:
- [impl.Interactor] — root base “class”; stores the backpointer, layout attributes, and drawing context.
- [impl.ThemedInteractor] — extends [impl.Interactor] with a Theme reference; provides BgColor, FgColor, and font resolution.
- [impl.Parent] — mixin for interactors that have children; discovers children through the constraint network.
- [impl.Decorator] — single-child parent with inside-out sizing and customizable visual decoration.
Backpointer and Virtual Dispatch
Go embedding promotes methods but does not provide virtual dispatch. Mancini solves this with a backpointer pattern: every [impl.Interactor] stores an “owner” field of type Interactor that points to the outermost concrete type. During construction, the concrete type passes itself:
b := &Button{...}
b.ThemedInteractor.Init(b, layout, theme) // b is the backpointer
The Draw protocol uses this backpointer as the “self” parameter:
func (b *Button) Draw(self Interactor, x, y, w, h int64) { ... }
This ensures that self.DC(), self.Visible(), etc. resolve through the concrete type, enabling correct virtual dispatch across the embedding hierarchy.
Layout and Constraints
Each interactor has a LayoutAttributes that publishes its position, size, and visibility as named attributes in a global constraint network. Container interactors ([impl.Parent]) discover children by querying which attributes name them as their parent. This decouples parent–child relationships from Go’s type system — children register themselves by setting their Parent attribute to the parent’s constraint-system name.
Neumorphic Rendering
The visual system supports three depth states (NeuDepth):
- Raised — proud of the surface, casting external dark and light shadows
- Flush — level with the surface, with a thin edge outline
- Inset — recessed into the surface, with inner shadows
Shadow parameters are bundled in NeuParams and delivered through the Theme via the NeumorphicParams interface. Two weight classes exist: Heavy (for windows) and Light (for controls). Either may return nil to disable neumorphic rendering entirely, falling back to flat drawing.
Drawing
All rendering goes through DrawContext, which wraps a github.com/fogleman/gg context. The NewDrawer interface is the standard draw protocol:
Draw(self Interactor, x, y, w, h int64)
The parent passes authoritative bounds (x, y, w, h) that override any stale values in the layout attributes. The “self” parameter is the backpointer described above.
Code generated by compile-constraints from greater_i64_bool.vgo. DO NOT EDIT.
Code generated by compile-constraints from horizontal_center.vgo. DO NOT EDIT.
Code generated by compile-constraints from identity_bool.vgo. DO NOT EDIT.
Code generated by compile-constraints from identity_i64.vgo. DO NOT EDIT.
Code generated by compile-constraints from identity_rect.vgo. DO NOT EDIT.
Code generated by compile-constraints from identity_str.vgo. DO NOT EDIT.
Code generated by compile-constraints from inout_bridge.vgo. DO NOT EDIT.
Code generated by compile-constraints from leaf_damage_rect.vgo. DO NOT EDIT.
Code generated by compile-constraints from max_deref.vgo. DO NOT EDIT.
Code generated by compile-constraints from min_deref.vgo. DO NOT EDIT.
Code generated by compile-constraints from nonneg_sub.vgo. DO NOT EDIT.
Code generated by compile-constraints from parent_damage_default.vgo. DO NOT EDIT.
Code generated by compile-constraints from parent_damage_rect.vgo. DO NOT EDIT.
Code generated by compile-constraints from scale_deref.vgo. DO NOT EDIT.
Code generated by compile-constraints from string_length.vgo. DO NOT EDIT.
Code generated by compile-constraints from sub_deref.vgo. DO NOT EDIT.
Code generated by compile-constraints from sub_two_deref.vgo. DO NOT EDIT.
Code generated by compile-constraints from thumb_frac_permille.vgo. DO NOT EDIT.
Code generated by compile-constraints from vertical_center.vgo. DO NOT EDIT.
Index
- Constants
- Variables
- func AddSubI64(aURI, bURI, cURI string) *vm.Program
- func BetweenI64(sourceURI string, lo, hi int64) *vm.Program
- func BindStrings(prog *vm.Program, bindings …string) *vm.Program
- func BindStringsChildren(prog *vm.Program, bindings …string) *vm.Program
- func BindStringsParent(prog *vm.Program, parentSeg string, bindings …string) *vm.Program
- func BindStringsSibling(prog *vm.Program, parentName string, bindings …string) *vm.Program
- func BoolPrefix() string
- func ChildHasDamage(child Interactor) bool
- func ChildHeight(l Layouter, fallback float64) float64
- func ChildPattern() string
- func ChildWidth(l Layouter, fallback float64) float64
- func DefaultName(typeName string) string
- func DrawHand(dc DrawContext, cx, cy, angle, length, width float64, col color.NRGBA)
- func EqualBool(sourceURI string) *vm.Program
- func EqualI64(sourceURI string) *vm.Program
- func EqualStr(sourceURI string) *vm.Program
- func GlobalToLocal(globalX, globalY int64, d Drawer) (localX, localY int64, inside bool)
- func GreaterI64Bool(aURI, bURI string) *vm.Program
- func Init()
- func InitDefaultParentDamage(lh *LayoutAttributes)
- func InsideBounds(inter Interactor, x, y int64) bool
- func Int64Prefix() string
- func InteractorName(i Interactor) string
- func IsAltDown(mods uint64) bool
- func IsControlDown(mods uint64) bool
- func IsLeftAltDown(mods uint64) bool
- func IsLeftControlDown(mods uint64) bool
- func IsLeftMetaDown(mods uint64) bool
- func IsLeftShiftDown(mods uint64) bool
- func IsMetaDown(mods uint64) bool
- func IsRightAltDown(mods uint64) bool
- func IsRightControlDown(mods uint64) bool
- func IsRightMetaDown(mods uint64) bool
- func IsRightShiftDown(mods uint64) bool
- func IsShiftDown(mods uint64) bool
- func LayoutURI(myName string, dt DataType, prop LayoutProp) string
- func MaxI64(sourceURI string, floor int64) *vm.Program
- func MeasureTextWidth(face font.Face, text string) int64
- func MinI64(sourceURI string, ceiling int64) *vm.Program
- func NeuMaxPad(p NeuParams) int64
- func NonnegSubI64(aURI, bURI string) *vm.Program
- func OpenFont(dc DrawContext, theme Theme, feature Feature, size int64) int32
- func PickDebugEnabled() bool
- func PopClip()
- func PopDamageClip(dc DrawContext)
- func PublishLayout(l *LayoutAttributes, x, y, w, h float64)
- func PushClip(x, y, w, h float64)
- func RectPrefix() string
- func RegisterInteractor(name string, i Interactor)
- func RegistrySeq(name string) (uint64, bool)
- func ScaleI64(sourceURI, numeratorURI, denominatorURI string) *vm.Program
- func ScreenOrigin() (int64, int64)
- func SetPickDebug(v bool)
- func SetRegistrySeq(name string, seq uint64)
- func SetScreenOrigin(x, y int64)
- func StandardPipeline(root Interactor) (*AppDispatcher, *ClickAgent, *KeyAgent)
- func SubI64(aURI, bURI string) *vm.Program
- func SwapRB(c color.NRGBA) color.NRGBA
- func SwapSequence(a, b string)
- func ThumbFracPermille(visibleURI, totalURI string) *vm.Program
- func UnregisterInteractor(name string)
- type Agent
- type Alignment
- type Animatable
- type AppDispatcher
- type AppPolicy
- type AppPolicyKind
- type ChildAccessor
- type ClassicFace
- type ClickAgent
- type ClickDragAgent
- type ClickDraggable
- type Clickable
- type ClipEdge
- type ClippedContext
- type ClockFace
- type DamageAttributes
- type DataType
- type Decoratable
- type DetailedHit
- type DigitFace
- type DoubleClickable
- type DrawContext
- type Drawer
- type EventKind
- type Face
- type Feature
- type FlushParams
- type FocusAgent
- type FocusClaimer
- type FontConfig
- type FontResolver
- type FramebufferContext
- type HAlign
- type InputEvent
- type InsetParams
- type Interactor
- type KeyAgent
- type KeyMapper
- type KeyMapperInit
- type KeyMapperInjector
- type KeyPressable
- type KeyReceivable
- type LatinTextFace
- type LayoutAttributes
- func NewAppWindowLayout() *LayoutAttributes
- func NewBridgeLayout(myName string, minW, maxW, minH, maxH int64) *LayoutAttributes
- func NewDecoratorLayout(name string, parent Interactor, hPadding, vPadding, maxSize int64) *LayoutAttributes
- func NewDecoratorLayoutByParentName(myName, parentName string, hPadding, vPadding, maxSize int64) *LayoutAttributes
- func NewLayoutAttributes(myName, parent string) *LayoutAttributes
- func NewLayoutAttributesBase(myName, parent string) *LayoutAttributes
- func NewVerticalLineLayout(myName, parent, heightSourceURI string) *LayoutAttributes
- func (lh *LayoutAttributes) CleanConstraints()
- func (lh *LayoutAttributes) ClearDamage()
- func (lh *LayoutAttributes) FullDamage()
- func (lh *LayoutAttributes) GetCrossAlign() Alignment
- func (lh *LayoutAttributes) GetDamageRect() (x0, y0, x1, y1 int64)
- func (lh *LayoutAttributes) GetSpacing() float64
- func (lh *LayoutAttributes) HasDamage() bool
- func (lh *LayoutAttributes) InitBounds(myName string)
- func (lh *LayoutAttributes) InitLeafDamage(bgColorURI, fgColorURI, contentHashURI string)
- func (lh *LayoutAttributes) InitParentDamage(bgColorURI, fgColorURI, childDamageURI string)
- func (lh *LayoutAttributes) Name() string
- func (lh *LayoutAttributes) PushDamageClip(dc DrawContext) bool
- func (lh *LayoutAttributes) SnapshotDamage()
- func (lh *LayoutAttributes) SnapshotDamageColors(bgColor, fgColor int64)
- func (lh *LayoutAttributes) SnapshotDamageContentHash(hash int64)
- type LayoutProp
- type Layouter
- type MetricFace
- type MouseState
- type MovadoFace
- type NeuDepth
- type NeuParams
- type NeumorphicParams
- type NewDrawer
- type Palette
- type Parent
- type Picker
- type PolarFace
- type RaisedParams
- type RomanFace
- type ShapedFontResolver
- type SimpleParentDraw
- type StdMouseFeedback
- type SurfaceStyle
- type TextAlignmentParams
- type Theme
- type ThemedInteractor
- type TitleBar
- type TitleBarStyle
- type TripleClickable
- type UnfocusedMode
- type VAlign
- type WMTheme
- type Weight
- type WindowState
- type WindowType
Constants
BtnLeft is the evdev boundary between keyboard and mouse button codes.
const BtnLeft = 0x110
Variables
ErrPink is the background color drawn when an interactor has no children (almost always a programming error).
var ErrPink = color.NRGBA{255, 105, 180, 255}
GrooveParams are the default InsetParams used for thin inset separator lines. Used by [std.NeuGroove] and by [std.NOfMChooser] for inter-strip groove separators.
var GrooveParams = InsetParams{Off: 1, DarkBlur: 3, LightBlur: 2}
var ProgAddSubDeref = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x21, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_a_",
"_b_",
"_c_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "addSubDeref", PC: 0, NumArgs: 0, NumLocals: 3, LocalBase: 0},
},
Entry: 0,
}
var ProgAppWindowHeight = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x09, Op1: 47, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 9, Op2: 10, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 212, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 13, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 13, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 40, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 14, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 14, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 15, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 15, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 16, Op2: 17, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 17, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 18, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 18, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 19, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 19, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 20, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 20, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 23, Op2: 24, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 24, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 25, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 25, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 24, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 26, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 26, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 27, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 27, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 29, Op2: 30, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 30, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 31, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 31, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 33, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 32, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 32, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 34, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 34, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 37, Op2: 38, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 38, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 39, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 39, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 33, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 38, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 9, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x05, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 3, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0xc8},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_int64Prefix_",
"_xSuffix_",
"_ySuffix_",
"_widthSuffix_",
"_heightSuffix_",
"_boolPrefix_",
"_visSuffix_",
"_boundsHashSuffix_",
"_childPattern_",
"",
"_myName_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "childX", PC: 0, NumArgs: 1, NumLocals: 1, LocalBase: 0},
{Name: "childY", PC: 8, NumArgs: 1, NumLocals: 1, LocalBase: 1},
{Name: "childWidth", PC: 16, NumArgs: 1, NumLocals: 1, LocalBase: 2},
{Name: "childHeight", PC: 24, NumArgs: 1, NumLocals: 1, LocalBase: 3},
{Name: "isChildVisible", PC: 32, NumArgs: 1, NumLocals: 1, LocalBase: 4},
{Name: "childBoundsHash", PC: 40, NumArgs: 1, NumLocals: 1, LocalBase: 5},
{Name: "findVisibleChildren", PC: 48, NumArgs: 1, NumLocals: 6, LocalBase: 6},
{Name: "hasNoChildren", PC: 72, NumArgs: 1, NumLocals: 2, LocalBase: 12},
{Name: "hasNoVisibleChildren", PC: 87, NumArgs: 1, NumLocals: 5, LocalBase: 14},
{Name: "hasOneChild", PC: 107, NumArgs: 1, NumLocals: 7, LocalBase: 19},
{Name: "numChildren", PC: 142, NumArgs: 1, NumLocals: 6, LocalBase: 26},
{Name: "nthChild", PC: 166, NumArgs: 2, NumLocals: 8, LocalBase: 32},
{Name: "appWindowHeight", PC: 200, NumArgs: 0, NumLocals: 2, LocalBase: 40},
},
Entry: 12,
}
var ProgAppWindowWidth = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x09, Op1: 47, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 9, Op2: 10, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 212, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 13, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 13, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 40, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 14, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 14, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 15, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 15, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 16, Op2: 17, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 17, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 18, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 18, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 19, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 19, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 20, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 20, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 23, Op2: 24, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 24, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 25, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 25, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 24, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 26, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 26, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 27, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 27, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 29, Op2: 30, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 30, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 31, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 31, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 33, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 32, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 32, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 34, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 34, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 37, Op2: 38, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 38, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 39, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 39, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 33, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 38, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 9, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x05, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 2, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0xc8},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_int64Prefix_",
"_xSuffix_",
"_ySuffix_",
"_widthSuffix_",
"_heightSuffix_",
"_boolPrefix_",
"_visSuffix_",
"_boundsHashSuffix_",
"_childPattern_",
"",
"_myName_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "childX", PC: 0, NumArgs: 1, NumLocals: 1, LocalBase: 0},
{Name: "childY", PC: 8, NumArgs: 1, NumLocals: 1, LocalBase: 1},
{Name: "childWidth", PC: 16, NumArgs: 1, NumLocals: 1, LocalBase: 2},
{Name: "childHeight", PC: 24, NumArgs: 1, NumLocals: 1, LocalBase: 3},
{Name: "isChildVisible", PC: 32, NumArgs: 1, NumLocals: 1, LocalBase: 4},
{Name: "childBoundsHash", PC: 40, NumArgs: 1, NumLocals: 1, LocalBase: 5},
{Name: "findVisibleChildren", PC: 48, NumArgs: 1, NumLocals: 6, LocalBase: 6},
{Name: "hasNoChildren", PC: 72, NumArgs: 1, NumLocals: 2, LocalBase: 12},
{Name: "hasNoVisibleChildren", PC: 87, NumArgs: 1, NumLocals: 5, LocalBase: 14},
{Name: "hasOneChild", PC: 107, NumArgs: 1, NumLocals: 7, LocalBase: 19},
{Name: "numChildren", PC: 142, NumArgs: 1, NumLocals: 6, LocalBase: 26},
{Name: "nthChild", PC: 166, NumArgs: 2, NumLocals: 8, LocalBase: 32},
{Name: "appWindowWidth", PC: 200, NumArgs: 0, NumLocals: 2, LocalBase: 40},
},
Entry: 12,
}
var ProgBetweenDeref = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 2, Op2: 3, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_source_",
"_min_",
"_max_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "betweenDeref", PC: 0, NumArgs: 0, NumLocals: 3, LocalBase: 0},
},
Entry: 0,
}
var ProgBoundsFromXywh = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 60, Op2: 4, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_x_",
"_y_",
"_width_",
"_height_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "boundsFromXywh", PC: 0, NumArgs: 0, NumLocals: 4, LocalBase: 0},
},
Entry: 0,
}
var ProgBoundsHash = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x9e3779b1},
{Opcode: 0x22, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x85ebca77},
{Opcode: 0x22, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0xc2b2ae3d},
{Opcode: 0x22, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x27d4eb2f},
{Opcode: 0x22, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_x_",
"_y_",
"_width_",
"_height_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "boundsHash", PC: 0, NumArgs: 0, NumLocals: 4, LocalBase: 0},
},
Entry: 0,
}
var ProgDecorationHeight = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x09, Op1: 47, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 9, Op2: 10, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 212, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 13, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 13, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 40, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 14, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 14, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 15, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 15, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 16, Op2: 17, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 17, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 18, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 18, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 19, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 19, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 20, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 20, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 23, Op2: 24, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 24, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 25, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 25, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 24, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 26, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 26, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 27, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 27, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 29, Op2: 30, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 30, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 31, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 31, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 33, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 32, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 32, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 34, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 34, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 37, Op2: 38, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 38, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 39, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 39, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 33, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 38, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 9, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 42, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1e},
{Opcode: 0x11, Typ: 0x00, Op1: 43, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 42, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x05, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 42, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 44, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 44, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 3, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 43, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 43, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 45, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x33, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 45, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x33, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x40, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 45, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_int64Prefix_",
"_xSuffix_",
"_ySuffix_",
"_widthSuffix_",
"_heightSuffix_",
"_boolPrefix_",
"_visSuffix_",
"_boundsHashSuffix_",
"_childPattern_",
"",
"_padding_",
"_maxSize_",
"_myName_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "childX", PC: 0, NumArgs: 1, NumLocals: 1, LocalBase: 0},
{Name: "childY", PC: 8, NumArgs: 1, NumLocals: 1, LocalBase: 1},
{Name: "childWidth", PC: 16, NumArgs: 1, NumLocals: 1, LocalBase: 2},
{Name: "childHeight", PC: 24, NumArgs: 1, NumLocals: 1, LocalBase: 3},
{Name: "isChildVisible", PC: 32, NumArgs: 1, NumLocals: 1, LocalBase: 4},
{Name: "childBoundsHash", PC: 40, NumArgs: 1, NumLocals: 1, LocalBase: 5},
{Name: "findVisibleChildren", PC: 48, NumArgs: 1, NumLocals: 6, LocalBase: 6},
{Name: "hasNoChildren", PC: 72, NumArgs: 1, NumLocals: 2, LocalBase: 12},
{Name: "hasNoVisibleChildren", PC: 87, NumArgs: 1, NumLocals: 5, LocalBase: 14},
{Name: "hasOneChild", PC: 107, NumArgs: 1, NumLocals: 7, LocalBase: 19},
{Name: "numChildren", PC: 142, NumArgs: 1, NumLocals: 6, LocalBase: 26},
{Name: "nthChild", PC: 166, NumArgs: 2, NumLocals: 8, LocalBase: 32},
{Name: "decorationHeight", PC: 200, NumArgs: 0, NumLocals: 6, LocalBase: 40},
},
Entry: 12,
}
var ProgDecorationWidth = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x09, Op1: 47, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 9, Op2: 10, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 212, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 13, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 13, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 40, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 14, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 14, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 15, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 15, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 16, Op2: 17, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 17, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 18, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 18, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x03, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 19, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 19, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 20, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 20, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 23, Op2: 24, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 24, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 25, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 25, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 24, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 22, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 21, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 26, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 26, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 27, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 27, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 29, Op2: 30, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 30, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 31, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 31, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 28, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 33, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 32, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 32, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 34, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 34, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 37, Op2: 38, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 38, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 39, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 39, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 4, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 33, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x30, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 38, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x1},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 35, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 36, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 12, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 9, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 42, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x14},
{Opcode: 0x11, Typ: 0x00, Op1: 43, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 42, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x05, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 42, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 44, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 44, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 2, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 43, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 43, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 40, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 45, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x33, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 45, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x33, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x40, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 41, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 45, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_int64Prefix_",
"_xSuffix_",
"_ySuffix_",
"_widthSuffix_",
"_heightSuffix_",
"_boolPrefix_",
"_visSuffix_",
"_boundsHashSuffix_",
"_childPattern_",
"",
"_padding_",
"_maxSize_",
"_myName_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "childX", PC: 0, NumArgs: 1, NumLocals: 1, LocalBase: 0},
{Name: "childY", PC: 8, NumArgs: 1, NumLocals: 1, LocalBase: 1},
{Name: "childWidth", PC: 16, NumArgs: 1, NumLocals: 1, LocalBase: 2},
{Name: "childHeight", PC: 24, NumArgs: 1, NumLocals: 1, LocalBase: 3},
{Name: "isChildVisible", PC: 32, NumArgs: 1, NumLocals: 1, LocalBase: 4},
{Name: "childBoundsHash", PC: 40, NumArgs: 1, NumLocals: 1, LocalBase: 5},
{Name: "findVisibleChildren", PC: 48, NumArgs: 1, NumLocals: 6, LocalBase: 6},
{Name: "hasNoChildren", PC: 72, NumArgs: 1, NumLocals: 2, LocalBase: 12},
{Name: "hasNoVisibleChildren", PC: 87, NumArgs: 1, NumLocals: 5, LocalBase: 14},
{Name: "hasOneChild", PC: 107, NumArgs: 1, NumLocals: 7, LocalBase: 19},
{Name: "numChildren", PC: 142, NumArgs: 1, NumLocals: 6, LocalBase: 26},
{Name: "nthChild", PC: 166, NumArgs: 2, NumLocals: 8, LocalBase: 32},
{Name: "decorationWidth", PC: 200, NumArgs: 0, NumLocals: 6, LocalBase: 40},
},
Entry: 12,
}
var ProgGreaterI64Bool = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x33, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_a_",
"_b_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "greaterI64Bool", PC: 0, NumArgs: 0, NumLocals: 0, LocalBase: 0},
},
Entry: 0,
}
var ProgHorizontalCenter = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x21, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x2},
{Opcode: 0x23, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_containerX_",
"_containerWidth_",
"_elementWidth_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "horizontalCenter", PC: 0, NumArgs: 0, NumLocals: 3, LocalBase: 0},
},
Entry: 0,
}
var ProgIdentityBool = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_source_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "identityBool", PC: 0, NumArgs: 0, NumLocals: 0, LocalBase: 0},
},
Entry: 0,
}
var ProgIdentityI64 = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_source_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "identityI64", PC: 0, NumArgs: 0, NumLocals: 0, LocalBase: 0},
},
Entry: 0,
}
var ProgIdentityRect = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 205, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_0_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "identityRect", PC: 0, NumArgs: 0, NumLocals: 0, LocalBase: 0},
},
Entry: 0,
}
var ProgIdentityStr = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 202, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_source_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "identityStr", PC: 0, NumArgs: 0, NumLocals: 0, LocalBase: 0},
},
Entry: 0,
}
var ProgInoutBridge = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 2, Op2: 3, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_dim_",
"_min_",
"_max_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "inoutBridge", PC: 0, NumArgs: 0, NumLocals: 3, LocalBase: 0},
},
Entry: 0,
}
var ProgLeafDamageRect = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 205, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 205, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x03, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 60, Op2: 4, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_bounds_",
"_lpBounds_",
"_visible_",
"_lpVisible_",
"_contentHash_",
"_lpContentHash_",
"_bgColor_",
"_lpBgColor_",
"_fgColor_",
"_lpFgColor_",
"_boundsHash_",
"_lpBoundsHash_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "leafDamageRect", PC: 0, NumArgs: 0, NumLocals: 12, LocalBase: 0},
},
Entry: 0,
}
var ProgMaxDeref = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 1, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_source_",
"_floor_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "maxDeref", PC: 0, NumArgs: 0, NumLocals: 2, LocalBase: 0},
},
Entry: 0,
}
var ProgMinDeref = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 0, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_source_",
"_ceiling_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "minDeref", PC: 0, NumArgs: 0, NumLocals: 2, LocalBase: 0},
},
Entry: 0,
}
var ProgNonnegSub = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x21, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x32, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_a_",
"_b_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "nonnegSub", PC: 0, NumArgs: 0, NumLocals: 1, LocalBase: 0},
},
Entry: 0,
}
var ProgParentDamageDefault = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 21, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 205, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 211, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 60, Op2: 4, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x68, Typ: 0x00, Op1: 6, Op2: 7, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3},
{Opcode: 0x80, Typ: 0x00, Op1: 209, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x42, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x6b, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x81, Typ: 0x00, Op1: 1, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 208, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x42, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x6b, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 205, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 65, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x42, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 65, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x61, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x69, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_boolPrefix_",
"_visSuffix_",
"_rectPrefix_",
"_damageRectSuffix_",
"_boundsHash_",
"_lpBoundsHash_",
"_bounds_",
"_childPattern_",
"_myName_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "childVisible", PC: 0, NumArgs: 1, NumLocals: 1, LocalBase: 0},
{Name: "childDmgURI", PC: 8, NumArgs: 1, NumLocals: 1, LocalBase: 1},
{Name: "parentDamageDefault", PC: 15, NumArgs: 0, NumLocals: 9, LocalBase: 2},
},
Entry: 2,
}
var ProgParentDamageRect = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 205, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 205, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 203, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 60, Op2: 4, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 3, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x03, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 4, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 5, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 6, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 7, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 8, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 9, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x31, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 205, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 65, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x42, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 65, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 11, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 61, Op2: 2, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 10, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_bounds_",
"_lpBounds_",
"_visible_",
"_lpVisible_",
"_bgColor_",
"_lpBgColor_",
"_fgColor_",
"_lpFgColor_",
"_boundsHash_",
"_lpBoundsHash_",
"_childDamage_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "parentDamageRect", PC: 0, NumArgs: 0, NumLocals: 12, LocalBase: 0},
},
Entry: 0,
}
var ProgScaleDeref = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x22, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x23, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_source_",
"_numerator_",
"_denominator_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "scaleDeref", PC: 0, NumArgs: 0, NumLocals: 3, LocalBase: 0},
},
Entry: 0,
}
var ProgStringLength = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 202, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 20, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_source_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "stringLength", PC: 0, NumArgs: 0, NumLocals: 1, LocalBase: 0},
},
Entry: 0,
}
var ProgSubDeref = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x21, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_a_",
"_b_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "subDeref", PC: 0, NumArgs: 0, NumLocals: 0, LocalBase: 0},
},
Entry: 0,
}
var ProgSubTwoDeref = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x21, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x21, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_a_",
"_b_",
"_c_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "subTwoDeref", PC: 0, NumArgs: 0, NumLocals: 3, LocalBase: 0},
},
Entry: 0,
}
var ProgThumbFracPermille = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x34, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3e8},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x35, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3e8},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x34, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x60, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x62, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x3e8},
{Opcode: 0x22, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x23, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_visible_",
"_total_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "thumbFracPermille", PC: 0, NumArgs: 0, NumLocals: 2, LocalBase: 0},
},
Entry: 0,
}
var ProgVerticalCenter = &vm.Program{
Code: []vm.Inst{
{Opcode: 0x05, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x05, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x80, Typ: 0x00, Op1: 201, Op2: 1, Flags: 0, Imm: 0x0},
{Opcode: 0x11, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 1, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x10, Typ: 0x00, Op1: 2, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x21, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x01, Typ: 0x00, Op1: 0, Op2: 0, Flags: 0, Imm: 0x2},
{Opcode: 0x23, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x20, Typ: 0x01, Op1: 0, Op2: 0, Flags: 0, Imm: 0x0},
{Opcode: 0x70, Typ: 0x00, Op1: 0, Op2: 1, Flags: 0, Imm: 0x0},
},
Strings: []string{
"_containerY_",
"_containerHeight_",
"_elementHeight_",
},
NumArgs: 0,
ArgTypes: []uint8{},
Funcs: []vm.FuncInfo{
{Name: "verticalCenter", PC: 0, NumArgs: 0, NumLocals: 3, LocalBase: 0},
},
Entry: 0,
}
VisSuffix is the URI suffix for the Visible attribute, used by constraint programs to check child visibility.
var VisSuffix = LayoutVisible.Suffix()
func AddSubI64
func AddSubI64(aURI, bURI, cURI string) *vm.Program
AddSubI64 returns a constraint program that computes aURI + bURI - cURI.
func BetweenI64
func BetweenI64(sourceURI string, lo, hi int64) *vm.Program
BetweenI64 returns a constraint program that clamps sourceURI to [lo, hi].
func BindStrings
func BindStrings(prog *vm.Program, bindings ...string) *vm.Program
BindStrings returns a copy of prog with placeholder strings replaced by the given bindings. Bindings are alternating name-value pairs:
BindStrings(prog, "_maxWidth_", maxWidthURI, "_spacing_", spacingURI, ...)
Any string in the program’s string table that matches a placeholder name (underscore-prefixed and suffixed, e.g. “_maxWidth_”) is replaced with the corresponding value. Non-placeholder strings are preserved.
func BindStringsChildren
func BindStringsChildren(prog *vm.Program, bindings ...string) *vm.Program
BindStringsChildren is BindStrings plus automatic binding of the placeholders required by the “children” vgo library: child discovery (_childPattern_), type prefixes (_boolPrefix_, _int64Prefix_), and layout property suffixes (_xSuffix_, _ySuffix_, _widthSuffix_, _heightSuffix_, _visSuffix_, _boundsHashSuffix_).
func BindStringsParent
func BindStringsParent(prog *vm.Program, parentSeg string, bindings ...string) *vm.Program
BindStringsParent is BindStrings plus automatic binding of the placeholders required by the “parent” vgo library. The caller must supply the parent interactor’s constraint-system name as parentSeg.
func BindStringsSibling
func BindStringsSibling(prog *vm.Program, parentName string, bindings ...string) *vm.Program
BindStringsSibling is BindStrings plus automatic binding of the placeholders required by the “sibling” vgo library. The caller must supply the parent interactor’s constraint-system name as parentName (the value stored in each child’s Parent layout attribute).
func BoolPrefix
func BoolPrefix() string
BoolPrefix returns the URI prefix for bool attributes in the mancini namespace.
func ChildHasDamage
func ChildHasDamage(child Interactor) bool
ChildHasDamage checks whether a child interactor has pending damage. Returns true (safe default) if the child has no layout information. Used by parent Draw methods to skip undamaged children.
func ChildHeight
func ChildHeight(l Layouter, fallback float64) float64
ChildHeight reads a Layouter’s height from its constraint attributes. Returns fallback if the layout is nil or height is 0.
func ChildPattern
func ChildPattern() string
ChildPattern returns the URI pattern for discovering children via their Parent attributes.
func ChildWidth
func ChildWidth(l Layouter, fallback float64) float64
ChildWidth reads a Layouter’s width from its constraint attributes. Returns fallback if the layout is nil or width is 0.
func DefaultName
func DefaultName(typeName string) string
DefaultName returns a unique constraint-system name by suffixing typeName with a process-local counter (e.g. “Button1”, “Button2”).
func DrawHand
func DrawHand(dc DrawContext, cx, cy, angle, length, width float64, col color.NRGBA)
DrawHand draws a single clock hand as a line from center. Exported as a convenience for ClockFace implementations.
func EqualBool
func EqualBool(sourceURI string) *vm.Program
EqualBool returns a constraint program that mirrors a bool source attribute. The returned program reads sourceURI and returns its value unchanged.
func EqualI64
func EqualI64(sourceURI string) *vm.Program
EqualI64 returns a constraint program that mirrors an int64 source attribute. The returned program reads sourceURI and returns its value unchanged.
func EqualStr
func EqualStr(sourceURI string) *vm.Program
EqualStr returns a constraint program that mirrors a string source attribute. The returned program reads sourceURI and returns its value unchanged.
func GlobalToLocal
func GlobalToLocal(globalX, globalY int64, d Drawer) (localX, localY int64, inside bool)
GlobalToLocal transforms global screen coordinates to local coordinates relative to the interactor’s layout origin. Returns the local coordinates and whether the point falls inside the interactor’s bounds.
func GreaterI64Bool
func GreaterI64Bool(aURI, bURI string) *vm.Program
GreaterI64Bool returns a constraint program that evaluates `a > b`, where a and b are int64 source attributes. Used by scrollable containers (GridFrame, ConsoleFrame) to drive scrollbar visibility: `total > visible → scrollNeeded`.
func Init
func Init()
Init initializes the mancini layout system using the shepherd’s SID from attr.SID(). Must be called after attr.Init().
func InitDefaultParentDamage
func InitDefaultParentDamage(lh *LayoutAttributes)
InitDefaultParentDamage creates a damage constraint for a parent interactor that unions its visible children’s damage rectangles. If the parent’s own BoundsHash has changed, it returns the full bounds instead (everything needs repainting when the parent moves or resizes).
Called by [impl.Parent.Initialize] when wantDefaultDamageConstraint is true.
func InsideBounds
func InsideBounds(inter Interactor, x, y int64) bool
InsideBounds checks whether (x, y) in app-local coordinates falls within the interactor’s layout bounds. Used by agents (e.g., ClickDragAgent) to test whether the cursor is inside the target.
func Int64Prefix
func Int64Prefix() string
Int64Prefix returns the URI prefix for int64 attributes in the mancini namespace.
func InteractorName
func InteractorName(i Interactor) string
InteractorName returns the constraint-system name for an interactor by looking it up via its GetLayout().Name(). Returns “” if the interactor doesn’t implement Layouter or has no layout.
func IsAltDown
func IsAltDown(mods uint64) bool
IsAltDown reports whether either alt modifier is set in mods.
func IsControlDown
func IsControlDown(mods uint64) bool
IsControlDown reports whether either control modifier is set in mods.
func IsLeftAltDown
func IsLeftAltDown(mods uint64) bool
IsLeftAltDown reports whether the left alt modifier is set in mods.
func IsLeftControlDown
func IsLeftControlDown(mods uint64) bool
IsLeftControlDown reports whether the left control modifier is set in mods.
func IsLeftMetaDown
func IsLeftMetaDown(mods uint64) bool
IsLeftMetaDown reports whether the left meta modifier is set in mods.
func IsLeftShiftDown
func IsLeftShiftDown(mods uint64) bool
IsLeftShiftDown reports whether the left shift modifier is set in mods.
func IsMetaDown
func IsMetaDown(mods uint64) bool
IsMetaDown reports whether either meta modifier is set in mods.
func IsRightAltDown
func IsRightAltDown(mods uint64) bool
IsRightAltDown reports whether the right alt modifier is set in mods.
func IsRightControlDown
func IsRightControlDown(mods uint64) bool
IsRightControlDown reports whether the right control modifier is set in mods.
func IsRightMetaDown
func IsRightMetaDown(mods uint64) bool
IsRightMetaDown reports whether the right meta modifier is set in mods.
func IsRightShiftDown
func IsRightShiftDown(mods uint64) bool
IsRightShiftDown reports whether the right shift modifier is set in mods.
func IsShiftDown
func IsShiftDown(mods uint64) bool
IsShiftDown reports whether either shift modifier is set in mods.
func LayoutURI
func LayoutURI(myName string, dt DataType, prop LayoutProp) string
LayoutURI builds an attribute URI in the mancini namespace.
func MaxI64
func MaxI64(sourceURI string, floor int64) *vm.Program
MaxI64 returns a constraint program that computes max(sourceURI, floor).
func MeasureTextWidth
func MeasureTextWidth(face font.Face, text string) int64
MeasureTextWidth returns the advance width of text using a pre-resolved font.Face.
func MinI64
func MinI64(sourceURI string, ceiling int64) *vm.Program
MinI64 returns a constraint program that computes min(sourceURI, ceiling).
func NeuMaxPad
func NeuMaxPad(p NeuParams) int64
NeuMaxPad computes the maximum shadow padding across all depth states. Returns the ceiling as an integer — all interactor dimensions are int64.
func NonnegSubI64
func NonnegSubI64(aURI, bURI string) *vm.Program
NonnegSubI64 returns a constraint program that computes `max(a - b, 0)`, where a and b are int64 source attributes. Used for scrollbar Max values (`max(total - visible, 0)`) to ensure a sensible range even when visible momentarily exceeds total during a layout transition.
func OpenFont
func OpenFont(dc DrawContext, theme Theme, feature Feature, size int64) int32
OpenFont opens a font via DrawContext.OpenFont for a given Theme, Feature, and size. Returns the fontID or -1 on failure.
func PickDebugEnabled
func PickDebugEnabled() bool
PickDebugEnabled returns true when verbose pick tracing is active. Called from [impl.Interactor.Pick] to avoid an import cycle.
func PopClip
func PopClip()
PopClip restores the previous clip rectangle.
func PopDamageClip
func PopDamageClip(dc DrawContext)
PopDamageClip restores the DrawContext state saved by PushDamageClip.
func PublishLayout
func PublishLayout(l *LayoutAttributes, x, y, w, h float64)
PublishLayout writes position and size to an interactor’s layout attributes. Panics if a non-nil attribute is a constraint — constraint values are computed by the VM and must not be set imperatively.
func PushClip
func PushClip(x, y, w, h float64)
PushClip pushes a clip rectangle (global coords). The effective clip is the intersection of this rect with the parent’s clip.
func RectPrefix
func RectPrefix() string
RectPrefix returns the URI prefix for rect attributes in the mancini namespace.
func RegisterInteractor
func RegisterInteractor(name string, i Interactor)
RegisterInteractor adds an interactor to the global registry keyed by its constraint-system name. Called from impl.Interactor.Init().
func RegistrySeq
func RegistrySeq(name string) (uint64, bool)
RegistrySeq returns the sequence number for a named interactor, and whether it was found.
func ScaleI64
func ScaleI64(sourceURI, numeratorURI, denominatorURI string) *vm.Program
ScaleI64 returns a constraint program that computes deref(sourceURI) * deref(numeratorURI) / deref(denominatorURI). Division by zero returns 0.
func ScreenOrigin
func ScreenOrigin() (int64, int64)
ScreenOrigin returns the screen-space position of the app content origin.
func SetPickDebug
func SetPickDebug(v bool)
SetPickDebug enables or disables verbose pick tracing globally.
func SetRegistrySeq
func SetRegistrySeq(name string, seq uint64)
SetRegistrySeq sets the sequence number for a named interactor. Panics if the name is not in the registry.
func SetScreenOrigin
func SetScreenOrigin(x, y int64)
SetScreenOrigin records the screen-space position of the app content origin. Call this once from BackingStoreReady with AppX, AppY (NOT AppX+LeftInset — AppX already points to the content area).
func StandardPipeline
func StandardPipeline(root Interactor) (*AppDispatcher, *ClickAgent, *KeyAgent)
StandardPipeline creates the standard three-policy dispatch pipeline:
- “clickdrag” (focus) — ClickDragAgent captures move/release during active ClickDraggable interaction
- “clickdrag-pick” (positional) — ClickDragAgent picks ClickDraggable targets on press
- “click” (positional) — ClickAgent recognizes single/double/triple clicks
- “keyboard” (focus) — KeyAgent forwards to keyboard focus target
Returns the dispatcher, the ClickAgent (for CheckTimer calls), and the KeyAgent.
func SubI64
func SubI64(aURI, bURI string) *vm.Program
SubI64 returns a constraint program that computes aURI - bURI.
func SwapRB
func SwapRB(c color.NRGBA) color.NRGBA
SwapRB returns a copy of c with the red and blue channels exchanged. Use this when writing directly to a BGR framebuffer with colors that did not come from a palette (which pre-swaps its own colors).
func SwapSequence
func SwapSequence(a, b string)
SwapSequence swaps the registration sequence numbers of two named interactors, changing their order in FindChildren results.
func ThumbFracPermille
func ThumbFracPermille(visibleURI, totalURI string) *vm.Program
ThumbFracPermille returns a constraint program that computes the scrollbar thumb fraction in permille (0..1000) from a `visible` count and `total` count. Both URIs hold int64 attributes in the SAME UNITS (rows for row-based scrollers, pixels for pixel-based). Edge cases: total ≤ 0 or visible ≥ total → 1000 (full track); visible ≤ 0 → 0. Output binds to Scrollbar.ThumbFracPermilleAttr.
func UnregisterInteractor
func UnregisterInteractor(name string)
UnregisterInteractor removes an interactor from the global registry.
type Agent
Agent translates raw InputEvents into semantic protocol callbacks. Each agent targets a specific protocol interface and maintains its own state machine.
type Agent interface {
// Name returns the agent identifier (used in debug logs).
Name() string
// Deliver attempts to deliver ev to target. Returns true if consumed.
Deliver(ev *InputEvent, target Interactor) bool
}
type Alignment
Alignment controls cross-axis positioning of children within a container. For Column (vertical layout), this aligns children horizontally. For Row (horizontal layout), this aligns children vertically.
type Alignment int
const (
AxisMinimum Alignment = 0 // left (Column) or top (Row)
AxisMiddle Alignment = 1 // centered
AxisMaximum Alignment = 2 // right (Column) or bottom (Row)
)
type Animatable
Animatable is implemented by interactors that participate in rachel’s animation protocol. AppWindow dispatches animation messages to registered Animatable interactors using their local animation ID.
type Animatable interface {
// AnimationStart is called when an animation with the given local ID begins.
AnimationStart(localID uint64, startNanos int64)
// AnimationUpdate is called on each animation tick with elapsed-time fractions.
AnimationUpdate(localID uint64, startNanos, endNanos int64, coveredStart, coveredEnd float64, nanosSinceStart int64)
// AnimationFinish is called when the animation ends.
AnimationFinish(localID uint64, endNanos int64)
}
type AppDispatcher
AppDispatcher is the top-level dispatch pipeline for a shepherd app. It converts WM messages to local-coordinate InputEvents and routes them through ordered policies.
type AppDispatcher struct {
// PickFn returns interactors under (x, y) in local coords,
// front-to-back. Default: PickTree.
PickFn func(x, y int64) []Interactor
// OriginX, OriginY are the AppWindow's screen-space origin.
// Set from BackingStoreReady inset values. Used to translate
// screen coords to local coords.
OriginX, OriginY int64
// Debug enables tracing of dispatch decisions to UART.
Debug bool
// Tag is a short prefix for debug output (e.g. "clocks").
Tag string
// contains filtered or unexported fields
}
func NewAppDispatcher
func NewAppDispatcher(root Interactor) *AppDispatcher
NewAppDispatcher creates a dispatcher rooted at the given interactor.
func (*AppDispatcher) AddPolicy
func (d *AppDispatcher) AddPolicy(p *AppPolicy)
AddPolicy appends a policy to the dispatch pipeline.
func (*AppDispatcher) DispatchWM
func (d *AppDispatcher) DispatchWM(wmMsg any) bool
DispatchWM is the entry point called from the shepherd’s message loop. It accepts a raw WM message (any from wm.DecodeShepherdNotify), converts to InputEvent with local coordinates, and routes through the policy pipeline. Returns true if consumed.
type AppPolicy
AppPolicy is a named routing strategy with an ordered agent list.
type AppPolicy struct {
// contains filtered or unexported fields
}
func NewAppPolicy
func NewAppPolicy(name string, kind AppPolicyKind) *AppPolicy
NewAppPolicy creates a policy with the given name and routing kind.
func (*AppPolicy) AddAgent
func (p *AppPolicy) AddAgent(a Agent)
AddAgent appends an agent to this policy’s agent list.
func (*AppPolicy) Kind
func (p *AppPolicy) Kind() AppPolicyKind
Kind returns the policy’s routing kind.
func (*AppPolicy) Name
func (p *AppPolicy) Name() string
Name returns the policy’s name.
type AppPolicyKind
AppPolicyKind determines how a policy routes events.
type AppPolicyKind int
const (
// AppPolicyFocus delivers to the agent's focus target.
AppPolicyFocus AppPolicyKind = iota
// AppPolicyPositional delivers to interactors under the cursor via PickFn.
AppPolicyPositional
// AppPolicyMonitorFocus delivers to focus but never consumes.
AppPolicyMonitorFocus
// AppPolicyMonitorPositional delivers positionally but never consumes.
AppPolicyMonitorPositional
)
type ChildAccessor
ChildAccessor is implemented by decorator interactors that wrap a single child.
type ChildAccessor interface {
// GetChild returns the wrapped child [Drawer], or nil.
GetChild() Drawer
}
type ClassicFace
ClassicFace draws a traditional analog clock with dot hour markers, three hands (hour, minute, second), and a center dot.
type ClassicFace struct {
HandColor color.NRGBA // hand and marker color (zero = black)
FillColor color.NRGBA // face fill color (zero = theme Surface)
Loc *time.Location // timezone
}
func (*ClassicFace) DrawFace
func (f *ClassicFace) DrawFace(dc DrawContext, fc *FontConfig, pal Palette, cx, cy, radius float64, hour, minute, second, millis int)
DrawFace renders the classic clock face.
func (*ClassicFace) FaceName
func (f *ClassicFace) FaceName() string
FaceName returns the short display name “Classic”.
func (*ClassicFace) Location
func (f *ClassicFace) Location() *time.Location
Location returns the timezone. Falls back to UTC if nil.
type ClickAgent
ClickAgent implements a FSM that recognizes single, double, and triple clicks. It dispatches to Clickable, DoubleClickable, and TripleClickable protocol interfaces on the picked target.
Single clicks are committed immediately on release for responsiveness. If the target also implements DoubleClickable, the agent continues listening — a second click within ClickTimeout fires DoubleClick, which overrides the already-committed single click. The interactor is responsible for handling the override (typically the DoubleClick just sets new state, overwriting what Click did).
If the target only implements Clickable (not DoubleClickable), the agent resets immediately after committing — no timeout, zero delay.
type ClickAgent struct {
// ClickTimeout is the maximum delay between clicks for multi-click
// recognition. Default: 250ms.
ClickTimeout time.Duration
// ClickRadius is the maximum cursor movement between clicks.
// Default: 5 pixels.
ClickRadius int64
// contains filtered or unexported fields
}
func NewClickAgent
func NewClickAgent() *ClickAgent
NewClickAgent creates a ClickAgent with default timeout and radius.
func (*ClickAgent) CheckTimer
func (a *ClickAgent) CheckTimer() bool
CheckTimer cleans up stale state whose deadline has expired. With immediate commit, clicks are already fired — the timer just resets the FSM so it stops waiting for multi-click follow-ups. Returns true if state was cleaned up (caller should redraw).
func (*ClickAgent) Deliver
func (a *ClickAgent) Deliver(ev *InputEvent, target Interactor) bool
Deliver processes a raw press/release event through the click FSM.
func (*ClickAgent) Name
func (a *ClickAgent) Name() string
Name returns the agent’s identifier for dispatch logging.
type ClickDragAgent
ClickDragAgent handles the three-phase press-drag-release protocol for ClickDraggable interactors (scrollbar thumbs, buttons, sliders).
On EvPress, it checks if the picked target implements ClickDraggable and calls ClickDragStart. If accepted, the agent captures the target — all subsequent EvMove and the final EvRelease are delivered focus-style, regardless of cursor position. The agent computes outsideBounds by testing the cursor against the target’s layout bounds.
type ClickDragAgent struct {
// contains filtered or unexported fields
}
func (*ClickDragAgent) Deliver
func (a *ClickDragAgent) Deliver(ev *InputEvent, target Interactor) bool
Deliver routes an event to the appropriate ClickDraggable method.
func (*ClickDragAgent) FocusTarget
func (a *ClickDragAgent) FocusTarget() Interactor
FocusTarget returns the captured target, or nil when idle.
func (*ClickDragAgent) Name
func (a *ClickDragAgent) Name() string
Name returns the agent’s identifier for dispatch logging.
func (*ClickDragAgent) SetFocus
func (a *ClickDragAgent) SetFocus(t Interactor)
SetFocus sets the captured target. Typically only used internally.
type ClickDraggable
ClickDraggable is the three-phase press-drag-release protocol for scrollbar thumbs, buttons, sliders, and any interactor where the user presses, optionally moves, and releases.
The agent manages the FSM: on press it calls ClickDragStart. The agent then captures mouse movement (focus-style, regardless of cursor position) and delivers ClickDragMove with outsideBounds indicating whether the cursor has left the interactor’s bounds. On release, ClickDragEnd is called with the same outsideBounds signal.
The outsideBounds parameter drives visual feedback: a button shows “armed” when inside, “disarmed” when outside. A scrollbar thumb continues tracking regardless. The interactor decides what outsideBounds means for its own semantics.
type ClickDraggable interface {
// ClickDragStart is called on press. Return true to begin a drag.
ClickDragStart(ev *InputEvent) bool
// ClickDragMove is called on each move while the drag is active.
ClickDragMove(ev *InputEvent, startEv *InputEvent, outsideBounds bool) bool
// ClickDragEnd is called on release. outsideBounds reports cursor position.
ClickDragEnd(ev *InputEvent, outsideBounds bool) bool
}
type Clickable
Clickable receives single-click callbacks.
type Clickable interface {
// Click is invoked on a recognized single click. Returns true if consumed.
Click(ev *InputEvent) bool
}
type ClipEdge
ClipEdge indicates which edge of the clip rect has overflow.
type ClipEdge int
const (
ClipRight ClipEdge = iota // Row: child overflows to the right
ClipBottom // Column: child overflows downward
)
type ClippedContext
ClippedContext wraps a DrawContext and enforces rectangular clipping on one edge. It saves overflow pixels before the child draws, then restores them in Flush(). Only the overflow side is saved — the child’s shadows on other sides (within the parent) are left intact.
type ClippedContext struct {
DrawContext
// contains filtered or unexported fields
}
func WithClip
func WithClip(dc DrawContext, clipX, clipY, clipW, clipH, pad float64, edge ClipEdge) *ClippedContext
WithClip creates a ClippedContext that will erase overflow drawing past the given clip rectangle on the specified edge. pad is the maximum shadow spread the child might draw beyond the clip boundary.
For ClipRight (Row): saves the strip to the right of clipX+clipW. For ClipBottom (Column): saves the strip below clipY+clipH.
func (*ClippedContext) Flush
func (c *ClippedContext) Flush()
Flush restores the overflow pixels saved during WithClip construction.
type ClockFace
ClockFace defines how an analog clock renders and what timezone it displays. Implementations control the visual appearance of the face, markers, hands, and center. The Clock interactor handles layout and time conversion.
type ClockFace interface {
// DrawFace renders the complete clock within a circle centered at (cx, cy)
// with the given radius. Time components are already converted to the
// face's local timezone by the Clock interactor.
DrawFace(dc DrawContext, fc *FontConfig, pal Palette, cx, cy, radius float64, hour, minute, second, millis int)
// Location returns the timezone for this clock face.
Location() *time.Location
// FaceName returns a short display name for this face style.
FaceName() string
}
type DamageAttributes
DamageAttributes holds “last painted” mirror attributes and the computed damage rectangle for an interactor. The damage rectangle is the union of current and last-painted bounds when any tracked property changes.
type DamageAttributes struct {
DamageRect *attr.Attribute[vm.Value] // constraint: damaged region (empty if no change)
LPBounds *attr.Attribute[vm.Value] // value: last-painted bounds (set after painting)
LPVisible *attr.Attribute[bool] // value: last-painted visibility
LPBoundsHash *attr.Attribute[int64] // value: last-painted bounds hash
LPBgColor *attr.Attribute[int64] // value: last-painted background color
LPFgColor *attr.Attribute[int64] // value: last-painted foreground color
LPContentHash *attr.Attribute[int64] // value: last-painted content hash
}
type DataType
DataType identifies the type segment in an attribute URI.
type DataType string
const (
DataTypeInt64 DataType = "int64"
DataTypeBool DataType = "bool"
DataTypeStr DataType = "str"
DataTypeRect DataType = "rect"
)
type Decoratable
Decoratable is implemented by types that customize the visual decoration drawn by [impl.Decorator]. The default [impl.Decorator] draws a thick black box; [std.NeuBox] and [std.NeuCircle] override Decorate to draw neumorphic shadows, and [std.AppWindow] draws both shadows and a title bar.
x, y, w, h are the decorator’s authoritative bounds from its parent.
type Decoratable interface {
// Decorate draws the visual decoration around the decorator's child.
Decorate(self Interactor, x, y, w, h int64)
}
type DetailedHit
DetailedHit is optionally implemented by interactors that need finer-grained hit testing than their rectangular bounds. The mouse state machine calls DetailedHit with local coordinates after the bounding-box check passes. If the interactor does not implement this interface, the bounding-box hit is accepted as-is.
type DetailedHit interface {
// DetailedHit returns true if (localX, localY) is a real hit beyond the bounding-box check.
DetailedHit(localX, localY int64) bool
}
type DigitFace
DigitFace draws an analog clock with Arabic numerals rotated to match their angular position around the dial. 12 is upright, 3 is rotated 90° clockwise, 6 is upside-down, 9 is rotated 270° clockwise, etc.
type DigitFace struct {
HandColor color.NRGBA // hand and digit color (zero = black)
FillColor color.NRGBA // face fill color (zero = theme Surface)
Loc *time.Location // timezone
}
func (*DigitFace) DrawFace
func (f *DigitFace) DrawFace(dc DrawContext, fc *FontConfig, pal Palette, cx, cy, radius float64, hour, minute, second, millis int)
DrawFace renders the digit clock face with rotated numerals.
func (*DigitFace) FaceName
func (f *DigitFace) FaceName() string
FaceName returns the short display name “Digital”.
func (*DigitFace) Location
func (f *DigitFace) Location() *time.Location
Location returns the timezone. Falls back to UTC if nil.
type DoubleClickable
DoubleClickable receives double-click callbacks.
type DoubleClickable interface {
// DoubleClick is invoked on a recognized double click. Returns true if consumed.
DoubleClick(ev *InputEvent) bool
}
type DrawContext
DrawContext is the unified drawing surface for all interactor rendering. It is a type alias for [textshape.DrawContext], the canonical definition shared between louis14 and the mazarin UI toolkit.
DrawContext is propagated from parent to child during the draw pass via SetDC (see [impl.Interactor.SetDC]). All interactors access it through self.DC() in their NewDrawer.Draw method.
ClippedContext wraps a DrawContext to enforce rectangular clipping by saving/restoring overflow pixels — used by [std.Column], [std.Row], and [std.AppWindow] for child overflow.
type DrawContext = textshape.DrawContext
func NewDrawContextForImage
func NewDrawContextForImage(target *image.RGBA, provider textshape.GlyphProvider) DrawContext
NewDrawContextForImage creates a DrawContext that renders onto an existing RGBA image using the given GlyphProvider for text rendering. On mazarin, the provider is backed by fontsvc IPC; on the host OS, it can be a DirectGlyphProvider. Application code receives the DrawContext interface and never interacts with the provider directly.
type Drawer
Drawer draws itself into the given bounds using a DrawContext. This is the legacy interface — new interactors should implement NewDrawer instead.
type Drawer interface {
// Draw paints this interactor into the given bounds.
Draw(dc DrawContext, x, y, w, h float64)
}
type EventKind
EventKind identifies the type of input event.
type EventKind uint8
const (
EvPress EventKind = iota // mouse button press
EvRelease // mouse button release
EvMove // mouse move
EvKeyDown // key press
EvKeyUp // key release
)
type Face
Face draws content into a rectangular area. It is the base interface for all content rendered on the face of neumorphic shapes, menu segments, buttons, and other interactors.
The caller sets color and clipping on the DrawContext before calling DrawFace. Implementations render content but do not clear the background or modify persistent DC state.
type Face interface {
// DrawFace paints content into the given rectangle.
DrawFace(dc DrawContext, x, y, w, h float64)
}
type Feature
Feature selects a font variant within a family. Used by Theme.Font and FontResolver to request specific weights and styles.
type Feature int
const (
None Feature = iota // Regular weight, upright.
Bold // Bold weight.
Italic // Italic style.
BoldItalic // Bold weight, italic style.
Light // Light weight.
Condensed // Condensed width.
)
func (Feature) String
func (f Feature) String() string
String returns the style name used by the font index CSV.
type FlushParams
FlushParams controls the thin edge outline for the Flush depth state. EdgeW is the stroke width; EdgeAlpha is the opacity of both the dark and light edge strokes.
type FlushParams struct {
// EdgeW is the stroke width of the edge outline.
EdgeW float64
// EdgeAlpha is the opacity of the dark and light edge strokes.
EdgeAlpha uint8
}
type FocusAgent
FocusAgent is an Agent that maintains a designated focus target. Used with AppPolicyFocus policies. When FocusTarget returns non-nil, events are delivered to that target regardless of cursor position.
type FocusAgent interface {
Agent
// FocusTarget returns the current focus target, or nil if none.
FocusTarget() Interactor
// SetFocus designates target as the new focus target.
SetFocus(target Interactor)
}
type FocusClaimer
FocusClaimer is implemented by interactors that can claim in-app keyboard focus. Children call FocusClaimer.SetFocusToSelf() on their parent to request focus when clicked or otherwise activated.
type FocusClaimer interface {
// SetFocusToSelf requests in-app keyboard focus for this interactor.
SetFocusToSelf()
}
type FontConfig
FontConfig holds font loading and text measurement functions, independent of palette or rendering configuration. It is returned by Theme.Font and Theme.DefaultFont.
If LoadFace is nil (e.g., when no FontResolver was provided to the theme), text measurement falls back to a rough character-width estimate.
If Layout is non-nil, [MeasureText] uses shaped text measurement instead of the simple face-based measurement. Interactors check Layout to decide whether to use the shaped text rendering path.
type FontConfig struct {
// LoadFace creates a font.Face at the given size.
LoadFace func(bold bool, size int64) font.Face
// FontRegular is the path to the regular-weight font file.
// Used when LoadFace is nil.
FontRegular string
// FontBold is the path to the bold-weight font file.
// Used when LoadFace is nil.
FontBold string
// Layout is the text shaping+layout engine. When non-nil,
// MeasureText uses shaped measurement and interactors use the
// shaped rendering path via DrawShapedText.
Layout textshape.TextLayout
// ShapedFontID is the fontID registered with Layout for this config.
// Only valid when Layout is non-nil.
ShapedFontID int32
}
func (*FontConfig) MeasureText
func (fc *FontConfig) MeasureText(text string, bold bool, fontSize int64) float64
MeasureText returns the advance width of text at the given font size.
type FontResolver
FontResolver loads a font.Face for a given family, Feature, and point size. It is typically backed by a font cache (e.g., fontcache.FontCache). Passed to [theme.NewDefaultTheme] at application startup.
type FontResolver func(family string, feature Feature, size int64) font.Face
type FramebufferContext
FramebufferContext wraps the GPU framebuffer as an *image.RGBA and provides Flush for sending dirty regions to the GPU. This is the minimal bridge between mancini rendering (via *gg.Context) and the hardware framebuffer.
type FramebufferContext struct {
// contains filtered or unexported fields
}
func NewFramebufferContext
func NewFramebufferContext() *FramebufferContext
NewFramebufferContext maps the GPU framebuffer and returns a context for rendering into it. The returned Image() can be passed to gg.NewContextForRGBA for neumorphic rendering.
func (*FramebufferContext) Flush
func (fc *FramebufferContext) Flush(x0, y0, x1, y1 int32)
Flush sends the given rectangle to the GPU.
func (*FramebufferContext) Image
func (fc *FramebufferContext) Image() *image.RGBA
Image returns the framebuffer as an *image.RGBA.
type HAlign
HAlign controls horizontal text placement within the draw rectangle.
type HAlign int
const (
HAlignCenter HAlign = iota // Centered horizontally (default).
HAlignLeft // Flush to the left edge.
HAlignRight // Flush to the right edge.
)
type InputEvent
InputEvent is a local-coordinate input event. Coordinates are relative to the AppWindow origin — the AppDispatcher translates from screen coordinates before dispatching.
type InputEvent struct {
Kind EventKind
Code uint16 // evdev keycode or mouse button code
X, Y int64 // local coordinates
Mods uint64 // modifier bitmask (hid.ModXxx)
Char rune // translated character (0 if non-printable); set by rachel's KeyMapper
Action string // action name ("backspace", "enter", etc.); set by rachel's KeyMapper
}
func (*InputEvent) IsKeyboard
func (e *InputEvent) IsKeyboard() bool
IsKeyboard reports whether the event is a key down or key up.
func (*InputEvent) IsMouseButton
func (e *InputEvent) IsMouseButton() bool
IsMouseButton reports whether the event is a mouse press or release.
func (*InputEvent) IsMouseMove
func (e *InputEvent) IsMouseMove() bool
IsMouseMove reports whether the event is a mouse move.
type InsetParams
InsetParams controls the inner shadow layers for the Inset depth state. Off is the shadow offset (dark biased upper-left, light biased lower-right). DarkBlur and LightBlur set the Gaussian blur radius for each shadow layer. Inner shadows are masked to the shape boundary.
type InsetParams struct {
// Off is the inner shadow offset in pixels.
Off float64
// DarkBlur and LightBlur set the Gaussian blur radius for each inner shadow layer.
DarkBlur, LightBlur float64
}
type Interactor
Interactor is the base interface for all UI elements in the tree. Every concrete interactor type satisfies this interface via struct embedding of [impl.Interactor] or [impl.ThemedInteractor].
Position (X, Y) and size (W, H) are read from LayoutAttributes published in the constraint network. DrawContext is set by the parent before each draw pass via SetDC.
type Interactor interface {
// X returns the interactor's local X position.
X() int64
// Y returns the interactor's local Y position.
Y() int64
// W returns the interactor's width.
W() int64
// H returns the interactor's height.
H() int64
// Visible reports whether the interactor should be drawn.
Visible() bool
// DC returns the [DrawContext] propagated from the parent.
DC() DrawContext
// ScreenCoordConvertTo converts a point in this interactor's local
// coordinate frame to screen-absolute coordinates. Passing (0,0)
// returns the screen position of this interactor's top-left corner.
ScreenCoordConvertTo(localX, localY int64) (int64, int64)
// ScreenCoordConvertFrom converts screen-absolute coordinates to
// this interactor's local coordinate frame.
ScreenCoordConvertFrom(screenX, screenY int64) (int64, int64)
}
func FindChildren
func FindChildren(parentName string) []Interactor
FindChildren discovers children of the named parent via the constraint network. It calls attr.Find with the wildcard Parent pattern, reads each matching Parent value, filters by parentName, extracts the child’s constraint-system name from the URI, looks it up in the registry, and returns them sorted by registration sequence number.
func LookupInteractor
func LookupInteractor(name string) Interactor
LookupInteractor returns the interactor registered under the given constraint-system name, or nil if not found.
func PickTree
func PickTree(x, y int64, root Interactor) []Interactor
PickTree walks the mancini interactor tree via the Picker interface and returns all interactors whose bounds contain (x, y). Coordinates are in the app-local frame (the same frame as dispatch event coordinates).
Each interactor’s Picker.Pick method handles its own bounds check, child traversal, and coordinate conversion. Concrete types like [std.Scroller] override Pick to apply virtual-space transforms.
Results are front-to-back: deepest children first, then ancestors.
type KeyAgent
KeyAgent forwards keyboard events to a designated focus target that implements KeyPressable. Char and Action are pre-translated by rachel’s KeyMapper and carried in the InputEvent.
type KeyAgent struct {
// contains filtered or unexported fields
}
func (*KeyAgent) Deliver
func (a *KeyAgent) Deliver(ev *InputEvent, target Interactor) bool
Deliver translates keyboard events via the KeyMapper and fires KeyPress on the focus target.
func (*KeyAgent) FocusTarget
func (a *KeyAgent) FocusTarget() Interactor
FocusTarget returns the Interactor currently receiving key events, or nil.
func (*KeyAgent) Name
func (a *KeyAgent) Name() string
Name returns the agent’s identifier for dispatch logging.
func (*KeyAgent) SetFocus
func (a *KeyAgent) SetFocus(t Interactor)
SetFocus directs subsequent key events to t.
type KeyMapper
KeyMapper translates raw evdev keycodes into characters and actions, accounting for modifier state (shift, ctrl, alt, meta) and internal state like capslock. Implementations must be safe for concurrent use.
Rachel loads a KeyMapper from keymapper.maz at startup. The TOML config specifies which keymap to use (e.g. keymap = “us”).
type KeyMapper interface {
// Map translates a raw evdev keycode into a character and/or action.
// code is the evdev keycode, pressed is true for key-down / false for
// key-up, and mods is the modifier bitmask (hid.ModXxx).
// Returns:
// ch: the translated character (0 if modifier-only or non-printable)
// action: a named action ("enter", "backspace", "escape", etc.) or ""
Map(code uint16, pressed bool, mods uint64) (ch rune, action string)
// Name returns the keymap name (e.g. "identity", "us", "dvorak-qwerty").
Name() string
}
type KeyMapperInit
KeyMapperInit implements KeyMapperInjector. Rachel fills in KeymapName, passes it to keymapper.maz, and reads back the Mapper field.
type KeyMapperInit struct {
KeymapName string
Mapper KeyMapper
}
func (*KeyMapperInit) GetKeymapName
func (k *KeyMapperInit) GetKeymapName() string
GetKeymapName implements KeyMapperInjector.
func (*KeyMapperInit) RegisterKeyMapper
func (k *KeyMapperInit) RegisterKeyMapper(km KeyMapper)
RegisterKeyMapper implements KeyMapperInjector.
type KeyMapperInjector
KeyMapperInjector is the interface used for cross-module injection between rachel and keymapper.maz. Rachel creates a KeyMapperInit, passes it to keymapper.maz’s MazarinShepherd. Keymapper calls RegisterKeyMapper with the constructed mapper. Rachel reads it back from the struct’s Mapper field.
This uses the same callback-registration pattern as FontSvcInjector to ensure the linker keeps interface methods alive in both binaries.
type KeyMapperInjector interface {
// GetKeymapName returns the name of the keymap to load (e.g. "us").
GetKeymapName() string
// RegisterKeyMapper stores the constructed [KeyMapper] for the caller to read back.
RegisterKeyMapper(km KeyMapper)
}
type KeyPressable
KeyPressable receives matched key-press events (down+up pair). The KeyAgent handles keymap translation via a KeyMapper and matches EvKeyDown with EvKeyUp to produce KeyPress callbacks.
type KeyPressable interface {
KeyPress(ch rune, action string, ev *InputEvent) bool
}
type KeyReceivable
KeyReceivable handles keyboard events.
type KeyReceivable interface {
// KeyDown is called on a key-down event. Returns true if consumed.
KeyDown(ev *InputEvent) bool
// KeyUp is called on a key-up event. Returns true if consumed.
KeyUp(ev *InputEvent) bool
}
type LatinTextFace
LatinTextFace extends Face for Latin left-to-right text rendering. [SetText] updates the text to render; [Text] returns the current text; [MeasureText] returns the advance width without rasterization.
The standard implementation is [impl.LatinTextFaceImpl].
type LatinTextFace interface {
Face
// SetText updates the text rendered by this face.
SetText(text string)
// Text returns the current text.
Text() string
// MeasureText returns the advance width of text without rasterizing.
MeasureText(text string) float64
}
type LayoutAttributes
LayoutAttributes holds constraint system attributes for an interactor’s layout.
type LayoutAttributes struct {
X, Y, Width, Height *attr.Attribute[int64] // local position and size
Visible *attr.Attribute[bool] // visibility flag
Bounds *attr.Attribute[vm.Value] // Rectangle2D: (x, y, x+w, y+h)
BoundsHash *attr.Attribute[int64] // hash of X,Y,W,H for fast change detection
Parent *attr.Attribute[string] // parent's constraint-system name
SpacingAttr *attr.Attribute[int64] // inter-child spacing (containers only)
CrossAlignAttr *attr.Attribute[int64] // cross-axis alignment (containers only)
MaxWidthAttr *attr.Attribute[int64] // max width for overflow clipping (Row)
MaxHeightAttr *attr.Attribute[int64] // max height for overflow clipping (Column)
LastChildDrawnAttr *attr.Attribute[int64] // 0-based index of last child to draw (Row/Column)
Damage *DamageAttributes // damage rectangle tracking (nil = no damage)
// contains filtered or unexported fields
}
func NewAppWindowLayout
func NewAppWindowLayout() *LayoutAttributes
NewAppWindowLayout creates layout attributes for the root AppWindow interactor. Width and Height are value attributes set by rachel via BackingStoreReady / WindowResized messages (outside-in sizing). The constraint name is always “AppWindow” so that rachel can locate it at a well-known path.
func NewBridgeLayout
func NewBridgeLayout(myName string, minW, maxW, minH, maxH int64) *LayoutAttributes
NewBridgeLayout creates layout attributes for the topmost child of an AppWindow. Width and Height are constraints that clamp AppWindow’s outside-in dimensions to the given [min, max] range, bridging outside-in sizing (from rachel) to inside-out sizing (children below compute their own sizes).
func NewDecoratorLayout
func NewDecoratorLayout(name string, parent Interactor, hPadding, vPadding, maxSize int64) *LayoutAttributes
NewDecoratorLayout creates layout attributes with inside-out constraint sizing for decorator-style parents. The parent interactor is used to extract the parent’s constraint-system name. hPadding and vPadding are the half-padding for width and height respectively: width = child.Width + 2*hPadding, height = child.Height + 2*vPadding (both clamped to maxSize). For symmetric decorators (equal insets), pass the same value for both. If no child is found, defaults from ProgDecorationWidth/Height apply (20/30).
func NewDecoratorLayoutByParentName
func NewDecoratorLayoutByParentName(myName, parentName string, hPadding, vPadding, maxSize int64) *LayoutAttributes
NewDecoratorLayoutByParentName is the string-based variant of NewDecoratorLayout. Prefer NewDecoratorLayout which takes an Interactor — this version exists for cases where only the parent’s constraint-system name is available.
func NewLayoutAttributes
func NewLayoutAttributes(myName, parent string) *LayoutAttributes
NewLayoutAttributes creates all layout attributes as Value attributes, plus a Bounds constraint derived from X, Y, Width, Height.
func NewLayoutAttributesBase
func NewLayoutAttributesBase(myName, parent string) *LayoutAttributes
NewLayoutAttributesBase creates X, Y, Visible, Parent attributes (no Width/Height).
func NewVerticalLineLayout
func NewVerticalLineLayout(myName, parent, heightSourceURI string) *LayoutAttributes
NewVerticalLineLayout creates layout attributes where Height is constrained to equal the source int64 attribute at heightSourceURI. Width is a value attribute (set by parent). X and Y are value attributes.
func (*LayoutAttributes) CleanConstraints
func (lh *LayoutAttributes) CleanConstraints()
CleanConstraints deletes all constraint attributes owned by this LayoutAttributes in dependency order. Constraints that read from other attributes are deleted first, then the leaf value attributes. After this call the LayoutAttributes should not be used.
func (*LayoutAttributes) ClearDamage
func (lh *LayoutAttributes) ClearDamage()
ClearDamage resets this interactor’s damage rectangle to empty (0,0,0,0). For value DamageRect attributes (leaves using FullDamage), this directly sets the value. For constraint DamageRect attributes (parents using InitDefaultParentDamage), this is a no-op — the constraint automatically re-evaluates to empty when all children clear their damage.
Called by [impl.ThemedInteractor.Draw] after painting.
func (*LayoutAttributes) FullDamage
func (lh *LayoutAttributes) FullDamage()
FullDamage sets this interactor’s damage rectangle to its full Bounds, forcing a complete repaint on the next draw pass. Creates the DamageAttributes and DamageRect if they don’t exist yet.
Called by [impl.Interactor.Initialize] to ensure the first draw paints everything. Also available for input handlers that need to force a full repaint (e.g., a clock face on tick).
func (*LayoutAttributes) GetCrossAlign
func (lh *LayoutAttributes) GetCrossAlign() Alignment
GetCrossAlign returns the current cross-axis alignment, or AxisMinimum if unavailable.
func (*LayoutAttributes) GetDamageRect
func (lh *LayoutAttributes) GetDamageRect() (x0, y0, x1, y1 int64)
GetDamageRect returns the current damage rectangle as (x0, y0, x1, y1). Returns (0,0,0,0) if no damage is pending.
func (*LayoutAttributes) GetSpacing
func (lh *LayoutAttributes) GetSpacing() float64
GetSpacing returns the current inter-child spacing value, or 0 if unavailable.
func (*LayoutAttributes) HasDamage
func (lh *LayoutAttributes) HasDamage() bool
HasDamage returns true if the damage rectangle is non-empty.
func (*LayoutAttributes) InitBounds
func (lh *LayoutAttributes) InitBounds(myName string)
InitBounds creates the Bounds constraint: rect(X, Y, X+Width, Y+Height), plus a BoundsHash constraint for fast layout-change detection.
func (*LayoutAttributes) InitLeafDamage
func (lh *LayoutAttributes) InitLeafDamage(bgColorURI, fgColorURI, contentHashURI string)
InitLeafDamage creates damage tracking for a leaf interactor (no children). bgColorURI and fgColorURI point to the interactor’s current color attributes. contentHashURI points to a content hash attribute (use “” for non-text interactors; the placeholder will remain unbound and the deref will return 0 — matching the LP default).
func (*LayoutAttributes) InitParentDamage
func (lh *LayoutAttributes) InitParentDamage(bgColorURI, fgColorURI, childDamageURI string)
InitParentDamage creates damage tracking for a parent interactor. childDamageURI is the URI of the first child’s DamageRect attribute.
func (*LayoutAttributes) Name
func (lh *LayoutAttributes) Name() string
Name returns the interactor’s constraint-system name.
func (*LayoutAttributes) PushDamageClip
func (lh *LayoutAttributes) PushDamageClip(dc DrawContext) bool
PushDamageClip reads this interactor’s DamageRect and, if non-empty, sets a clip rectangle on the DrawContext to restrict drawing to the damaged region. Returns true if a clip was pushed (caller must call PopDamageClip to restore). Returns false if no damage or no clip was needed (full bounds = no restriction).
Used by parent Draw methods to avoid redrawing the entire window when only a small region changed.
func (*LayoutAttributes) SnapshotDamage
func (lh *LayoutAttributes) SnapshotDamage()
SnapshotDamage copies current visual state into last-painted attributes. Called by the draw loop after painting an interactor. Only writes when the value has actually changed, to avoid triggering spurious constraint re-evaluations and eager notifications.
func (*LayoutAttributes) SnapshotDamageColors
func (lh *LayoutAttributes) SnapshotDamageColors(bgColor, fgColor int64)
SnapshotDamageColors copies current color values into last-painted attributes. bgColor and fgColor are the current values to snapshot. Only writes when the value has actually changed.
func (*LayoutAttributes) SnapshotDamageContentHash
func (lh *LayoutAttributes) SnapshotDamageContentHash(hash int64)
SnapshotDamageContentHash copies a content hash into the last-painted attribute. Only writes when the value has actually changed.
type LayoutProp
LayoutProp identifies a layout property name in an attribute URI. The Suffix method returns the “/layout/<prop>” form used in constraint program bindings.
type LayoutProp string
const (
// Core layout properties.
LayoutX LayoutProp = "X"
LayoutY LayoutProp = "Y"
LayoutWidth LayoutProp = "Width"
LayoutHeight LayoutProp = "Height"
LayoutVisible LayoutProp = "Visible"
LayoutParent LayoutProp = "Parent"
// Derived layout properties.
LayoutBounds LayoutProp = "Bounds"
LayoutBoundsHash LayoutProp = "BoundsHash"
// Container properties (Row, Column, ColumnOutsideIn).
LayoutSpacing LayoutProp = "Spacing"
LayoutCrossAlign LayoutProp = "CrossAlign"
LayoutMaxWidth LayoutProp = "MaxWidth"
LayoutLastChildDrawn LayoutProp = "LastChildDrawn"
LayoutMinHeight LayoutProp = "MinHeight"
LayoutMaxHeight LayoutProp = "MaxHeight"
// Decorator properties (NeuBox, NeuCircle, AppWindow, AppTitleBar).
LayoutPadding LayoutProp = "Padding"
LayoutHPadding LayoutProp = "HPadding"
LayoutVPadding LayoutProp = "VPadding"
LayoutMaxSize LayoutProp = "MaxSize"
// Clock properties.
LayoutFaceName LayoutProp = "FaceName"
// MultiLineText properties.
LayoutText LayoutProp = "Text"
LayoutTextDirty LayoutProp = "TextDirty"
LayoutTextLen LayoutProp = "TextLen"
LayoutTextPageAddr LayoutProp = "TextPageAddr"
LayoutLineCount LayoutProp = "LineCount"
LayoutCursorLine LayoutProp = "CursorLine"
LayoutCursorCol LayoutProp = "CursorCol"
LayoutTopLine LayoutProp = "TopLine"
LayoutMaxLineCount LayoutProp = "MaxLineCount"
// Damage rectangle tracking.
LayoutDamageRect LayoutProp = "DamageRect"
LayoutLPBounds LayoutProp = "LPBounds"
LayoutLPVisible LayoutProp = "LPVisible"
LayoutLPBoundsHash LayoutProp = "LPBoundsHash"
LayoutLPBgColor LayoutProp = "LPBgColor"
LayoutLPFgColor LayoutProp = "LPFgColor"
LayoutLPContentHash LayoutProp = "LPContentHash"
)
func (LayoutProp) Suffix
func (p LayoutProp) Suffix() string
Suffix returns the “/layout/<prop>” form used in constraint program bindings.
type Layouter
Layouter is implemented by interactors that have LayoutAttributes. All interactors that embed [impl.Interactor] satisfy this interface via the promoted GetLayout method.
type Layouter interface {
// GetLayout returns this interactor's layout attributes.
GetLayout() *LayoutAttributes
}
type MetricFace
MetricFace draws an analog clock using French Revolutionary / metric time: 10 hours per day, 100 minutes per hour, 100 seconds per minute. The dial shows digits 0-9 evenly spaced (36 degrees each), with 0 at top. All hands move slower than conventional clocks because one revolution of the hour hand covers an entire day.
type MetricFace struct {
HandColor color.NRGBA // hand and digit color (zero = black)
FillColor color.NRGBA // face fill color (zero = theme Surface)
Loc *time.Location // timezone (for converting UTC to local midnight)
}
func (*MetricFace) DrawFace
func (f *MetricFace) DrawFace(dc DrawContext, fc *FontConfig, pal Palette, cx, cy, radius float64, hour, minute, second, millis int)
DrawFace renders the metric clock face. The hour/minute/second/millis parameters are conventional (24h) local time; this method converts them to metric time for display.
func (*MetricFace) FaceName
func (f *MetricFace) FaceName() string
FaceName returns the short display name “Metric”.
func (*MetricFace) Location
func (f *MetricFace) Location() *time.Location
Location returns the timezone. Falls back to UTC if nil.
type MouseState
MouseState tracks the press-drag-release state machine for mouse interactions. Create one with NewMouseState and call Press/Move/Release from the event loop.
type MouseState struct {
// contains filtered or unexported fields
}
func NewMouseState
func NewMouseState(interactors []Drawer) *MouseState
NewMouseState creates a MouseState for the given set of interactors.
func (*MouseState) Move
func (m *MouseState) Move(x, y int64)
Move handles a mouse move at global coordinates (x, y) during a drag. Transitions between armed and disarmed states.
func (*MouseState) Press
func (m *MouseState) Press(x, y int64)
Press handles a mouse press at global coordinates (x, y). Hit-tests each interactor and begins an interaction if one is found.
func (*MouseState) Release
func (m *MouseState) Release(x, y int64)
Release handles a mouse release at global coordinates (x, y). Completes the interaction: success if armed, failure if disarmed.
func (*MouseState) SetTargets
func (m *MouseState) SetTargets(interactors []Drawer)
SetTargets replaces the set of interactors that receive mouse events.
type MovadoFace
MovadoFace draws a minimalist clock inspired by the Movado Museum Watch: clean face, single dot marker at 12 o’clock.
type MovadoFace struct {
HandColor color.NRGBA // hand and dot color (zero = black)
FillColor color.NRGBA // face fill color (zero = theme Surface)
Loc *time.Location // timezone
}
func (*MovadoFace) DrawFace
func (f *MovadoFace) DrawFace(dc DrawContext, _ *FontConfig, pal Palette, cx, cy, radius float64, hour, minute, second, millis int)
DrawFace renders the Movado-style clock face.
func (*MovadoFace) FaceName
func (f *MovadoFace) FaceName() string
FaceName returns the short display name “Movado”.
func (*MovadoFace) Location
func (f *MovadoFace) Location() *time.Location
Location returns the timezone. Falls back to UTC if nil.
type NeuDepth
NeuDepth represents the neumorphic depth of an interactor relative to the surface. It controls which shadow treatment is applied by [std.NeuBoxWith] and [std.NeuCircleWith].
Interactive controls like [std.Button] use NeuDepth.MouseDown to animate between states on press/release.
type NeuDepth int
const (
Raised NeuDepth = iota // Proud of the surface — casts outer shadows.
Flush // Level with the surface — thin edge outline only.
Inset // Recessed into the surface — inner shadows.
)
func (NeuDepth) MouseDown
func (d NeuDepth) MouseDown() NeuDepth
MouseDown returns the depth a button transitions to when pressed.
Raised → Inset (pushes below surface)
Flush → Inset (pushes below surface)
Inset → Flush (pops back to surface level)
func (NeuDepth) String
func (d NeuDepth) String() string
String returns the depth’s name (“Raised”, “Flush”, “Inset”).
type NeuParams
NeuParams bundles per-depth drawing parameters for an interactor class. Each NeuDepth state has its own parameter sub-struct. Interactors select which sub-struct to use based on their current depth.
A nil *NeuParams disables all neumorphic rendering. See NeumorphicParams for details on the nil convention.
type NeuParams struct {
// Raised holds parameters for the [Raised] depth state.
Raised RaisedParams
// Flush holds parameters for the [Flush] depth state.
Flush FlushParams
// Inset holds parameters for the [Inset] depth state.
Inset InsetParams
}
type NeumorphicParams
NeumorphicParams provides two weight classes of shadow parameters, delivered through Theme.Neumorphic. The default implementation is [theme.DefaultNeumorphicParams].
- Heavy — window-weight shadows, used by [std.AppWindow] and [std.FreeFloatingWindow].
- Light — control-weight shadows, used by [std.Button], [std.Checkbox], [std.Scrollbar], [std.NOfMChooser], and other controls.
Either method may return nil to disable neumorphic rendering for that weight class. All interactors in mazzy/mazarin/mancini/std handle nil gracefully by falling back to flat rendering.
type NeumorphicParams interface {
// Heavy returns window-weight neumorphic parameters, or nil to disable.
Heavy() *NeuParams
// Light returns control-weight neumorphic parameters, or nil to disable.
Light() *NeuParams
}
type NewDrawer
NewDrawer is the standard draw protocol for all interactors. The parent passes authoritative x, y, w, h — these override any stale layout handle values. The self parameter is the backpointer to the concrete type, enabling virtual dispatch for DC(), Visible(), and other interface methods. The damage parameter is the region that needs repainting; interactors whose bounds do not intersect it can skip drawing. See the package documentation for details on the backpointer pattern.
All concrete interactors in mazzy/mazarin/mancini/std implement this interface.
type NewDrawer interface {
// Draw paints this interactor into the given bounds, restricted to damage.
Draw(self Interactor, x, y, w, h int64, damage image.Rectangle)
}
type Palette
Palette provides the color vocabulary for interactor rendering. The default implementation is [theme.DefaultPalette]. Color roles follow the Qt QPalette model with additions for terminal and cursor colors.
The original 10 roles (Surface through DesktopBG) are retained for backward compatibility. New roles added in the theming overhaul are listed after DesktopBG.
type Palette interface {
// Surface is the primary background color for interactors.
Surface() color.NRGBA
// SurfaceTint is a subtle variant of Surface for layered backgrounds.
SurfaceTint() color.NRGBA
// DarkShadow is the dark side of neumorphic shadows.
DarkShadow() color.NRGBA
// LightShadow is the light side of neumorphic shadows.
LightShadow() color.NRGBA
// Text is the default foreground color for text.
Text() color.NRGBA
// Icon is the foreground color for icons and glyphs.
Icon() color.NRGBA
// Highlight is the selection background color.
Highlight() color.NRGBA
// HighlightText is the foreground color used on Highlight backgrounds.
HighlightText() color.NRGBA
// DisabledAlpha is the alpha multiplier (0..1) applied to disabled controls.
DisabledAlpha() float64
// DesktopBG is the root window background color.
DesktopBG() color.NRGBA
// Base is the background for text input fields and list views.
Base() color.NRGBA
// BaseText is the foreground for text on Base backgrounds.
BaseText() color.NRGBA
// Midlight is the midpoint between Surface and LightShadow.
Midlight() color.NRGBA
// Mid is the midpoint between DarkShadow and Surface.
Mid() color.NRGBA
// Shadow is a near-black color for hard drop shadows.
Shadow() color.NRGBA
// BrightText is high-contrast text for use on dark backgrounds.
BrightText() color.NRGBA
// AlternateBase is an alternating row color for lists and tables.
AlternateBase() color.NRGBA
// ToolTipBase is the background for tooltip popups.
ToolTipBase() color.NRGBA
// ToolTipText is the foreground for tooltip text.
ToolTipText() color.NRGBA
// Link is the color for hyperlink text.
Link() color.NRGBA
// PlaceholderText is the color for placeholder/hint text in fields.
PlaceholderText() color.NRGBA
// Accent is the primary accent color (selection, focus rings).
Accent() color.NRGBA
// WindowText is the default text color for window content areas.
WindowText() color.NRGBA
// AnsiColor returns one of the 16 standard ANSI terminal colors
// (0-7 normal, 8-15 bright). Index is clamped to [0,15].
AnsiColor(index int) color.NRGBA
// CursorColor is the text cursor fill/outline color.
CursorColor() color.NRGBA
// CursorTextColor is the text color when drawn over the cursor.
CursorTextColor() color.NRGBA
}
type Parent
Parent is an Interactor that has children. [impl.Parent] provides a default implementation that discovers children via the constraint network (each child’s Parent attribute names this interactor) and draws them by propagating the DrawContext and calling each child’s NewDrawer.Draw.
Container interactors ([std.Column], [std.Row]) embed [impl.Parent] but override DrawChildren with custom layout logic. Decorator interactors ([impl.Decorator]) use GetChildren but handle the single child directly in their own Draw method.
type Parent interface {
// GetChildren returns this parent's children, discovered via the constraint network.
GetChildren() []Interactor
// DrawChildren paints this parent's children within the given bounds and damage rect.
DrawChildren(self Interactor, x, y, w, h int64, damage image.Rectangle)
// IsRectSingleChild returns the child that completely contains rect,
// or nil if no single child does. When non-nil, the parent can skip
// its own drawing and forward Draw directly to that child.
IsRectSingleChild(rect image.Rectangle) Interactor
// SmallestDraw returns the parts of rect not covered by any child.
// These are the background strips the parent must repaint.
SmallestDraw(rect image.Rectangle) []image.Rectangle
}
type Picker
Picker performs hit testing on an interactor and its children. Pick receives coordinates in the interactor’s LOCAL frame (0,0 = top-left of this interactor). It returns all hit interactors front-to-back (deepest children first, then ancestors).
The default implementation on [impl.Interactor] handles both leaf interactors (simple bounds check) and parents (recursive traversal converting coordinates to each child’s local frame). Concrete types like [std.Scroller] override Pick to apply coordinate transforms (e.g., adding a scroll offset before recursing into the child).
type Picker interface {
// Pick returns the interactors hit at (localX, localY), front-to-back.
Pick(localX, localY int64) []Interactor
}
type PolarFace
PolarFace draws a 24-hour analog clock inspired by the Raketa Polar watch. A single hand makes one revolution per day. The dial shows 0 at top, 6 at 3 o’clock, 12 at bottom, 18 at 9 o’clock — with dots at all other hour positions.
type PolarFace struct {
HandColor color.NRGBA // hand and marker color (zero = black)
FillColor color.NRGBA // face fill color (zero = theme Surface)
Loc *time.Location // timezone
}
func (*PolarFace) DrawFace
func (f *PolarFace) DrawFace(dc DrawContext, fc *FontConfig, pal Palette, cx, cy, radius float64, hour, minute, second, millis int)
DrawFace renders the Raketa Polar clock face.
func (*PolarFace) FaceName
func (f *PolarFace) FaceName() string
FaceName returns the short display name “Polar”.
func (*PolarFace) Location
func (f *PolarFace) Location() *time.Location
Location returns the timezone. Falls back to UTC if nil.
type RaisedParams
RaisedParams controls the dark and light outer shadow layers for the Raised depth state. DarkOff/LightOff set the shadow offset in pixels; DarkBlur/LightBlur set the Gaussian blur radius; DarkAlpha/LightAlpha set the shadow opacity.
type RaisedParams struct {
// LightOff and LightBlur set the light-side shadow offset and blur.
LightOff, LightBlur float64
// DarkOff and DarkBlur set the dark-side shadow offset and blur.
DarkOff, DarkBlur float64
// DarkAlpha and LightAlpha set the opacity of each shadow layer.
DarkAlpha, LightAlpha uint8
}
type RomanFace
RomanFace draws an analog clock with Roman numeral hour markers.
type RomanFace struct {
HandColor color.NRGBA // hand and numeral color (zero = black)
FillColor color.NRGBA // face fill color (zero = theme Surface)
Loc *time.Location // timezone
}
func (*RomanFace) DrawFace
func (f *RomanFace) DrawFace(dc DrawContext, fc *FontConfig, pal Palette, cx, cy, radius float64, hour, minute, second, millis int)
DrawFace renders the Roman numeral clock face.
func (*RomanFace) FaceName
func (f *RomanFace) FaceName() string
FaceName returns the short display name “Roman”.
func (*RomanFace) Location
func (f *RomanFace) Location() *time.Location
Location returns the timezone. Falls back to UTC if nil.
type ShapedFontResolver
ShapedFontResolver resolves a font for shaped text rendering. Returns (fontID, layout) — the caller uses layout.LayoutText with fontID. This parallels FontResolver for the shaped text path.
type ShapedFontResolver func(family string, feature Feature, size int64) (int32, textshape.TextLayout)
type SimpleParentDraw
SimpleParentDraw is the draw protocol for parent interactors that want damage-aware drawing. DrawChildren orchestrates the draw pass: it uses Parent.IsRectSingleChild and Parent.SmallestDraw to minimize work. DrawSelf paints the parent’s own content (typically background fill) for a single rectangle.
[impl.Parent] provides a default implementation where DrawSelf is a no-op. [impl.ThemedInteractor] implements DrawSelf to fill with the theme’s Surface color. Concrete parent types can override DrawSelf for custom background rendering.
type SimpleParentDraw interface {
// DrawChildren paints this parent's children within the given bounds and damage rect.
DrawChildren(self Interactor, x, y, w, h int64, damage image.Rectangle)
// DrawSelf paints this parent's own background for a single rectangle.
DrawSelf(dc DrawContext, rect image.Rectangle)
}
type StdMouseFeedback
StdMouseFeedback is implemented by interactors that respond to press-drag-release interactions. The mancini state machine handles all armed/disarmed transitions and calls these two methods:
- Feedback(true) — you are active (mouse inside, button held)
- Feedback(false) — you are inactive (mouse dragged outside)
- Complete(true) — interaction succeeded (released inside)
- Complete(false) — interaction cancelled (released outside)
Feedback is called on each state change during the drag. Complete is called exactly once when the button is released.
type StdMouseFeedback interface {
// Feedback reports whether the interactor is currently armed (active).
Feedback(active bool)
// Complete is called once when the press-drag-release ends; success is true if released inside.
Complete(success bool)
}
type SurfaceStyle
SurfaceStyle abstracts the visual treatment applied to interactor surfaces. Implementations include neumorphic shadows, classic directional bevels, and flat color fills.
All interactors in mazzy/mazarin/mancini/std call SurfaceStyle methods (via Theme.Style) instead of directly invoking neumorphic rendering functions. This allows the entire desktop to switch visual styles by changing the Theme’s SurfaceStyle.
type SurfaceStyle interface {
// DrawBox renders a rounded rectangle at the given depth and weight.
// face is the fill color; r is the corner radius.
DrawBox(pal Palette, dc DrawContext, depth NeuDepth, weight Weight,
x1, y1, x2, y2, r float64, face color.NRGBA)
// DrawCircle renders a circle at the given depth and weight.
// face is the fill color.
DrawCircle(pal Palette, dc DrawContext, depth NeuDepth, weight Weight,
cx, cy, radius float64, face color.NRGBA)
// Groove renders a thin horizontal inset separator line from x1 to x2
// at vertical position y.
Groove(pal Palette, dc DrawContext, x1, y, x2 float64)
// Pad returns the padding (in pixels) that this style's shadows or
// bevels consume around a surface of the given weight.
Pad(weight Weight) float64
// TintOverlay draws a semi-transparent tinted overlay on top of an
// already-rendered surface. Used for hover/focus highlights and
// disabled dimming.
TintOverlay(dc DrawContext, depth NeuDepth,
x1, y1, x2, y2, r float64, face color.NRGBA)
}
type TextAlignmentParams
TextAlignmentParams controls text alignment for LatinTextFace rendering. The zero value is center/center, the most common case.
type TextAlignmentParams struct {
// HAlign controls horizontal placement.
HAlign HAlign
// VAlign controls vertical placement.
VAlign VAlign
}
type Theme
Theme provides the complete visual styling for all interactors: colors (Palette), surface style (SurfaceStyle), geometry, and font resolution (FontConfig).
The standard implementation is [theme.DefaultTheme], created by [theme.NewDefaultTheme] or [std.NewDefaultTheme].
Theme is accessed by interactors through [impl.ThemedInteractor.Theme].
type Theme interface {
// Name returns a human-readable identifier for this theme (e.g. "Purple Neumorphic").
Name() string
// Palette returns the color scheme.
Palette() Palette
// Style returns the active [SurfaceStyle] used to render interactor
// surfaces. All interactors should call Style().DrawBox() instead of
// using [NeuBoxWith] directly.
Style() SurfaceStyle
// Neumorphic returns the shadow parameter provider. May return nil
// to disable all neumorphic rendering.
//
// Deprecated: use [Theme.Style] instead. Will be removed after all
// interactors are migrated.
Neumorphic() NeumorphicParams
// Font returns a [FontConfig] for the given feature and size.
// The returned FontConfig's LoadFace closure resolves the theme's
// font family with the requested variant.
Font(feature Feature, size int64) *FontConfig
// DefaultFont returns a [FontConfig] for the theme's default
// family and size using the [None] (regular) feature.
DefaultFont() *FontConfig
// DefaultFontSize returns the theme's default font size in points.
DefaultFontSize() int64
// ControlRadius returns the corner radius for buttons and choosers.
ControlRadius() float64
// FieldRadius returns the corner radius for text input fields.
FieldRadius() float64
// FieldBorderWidth returns the border stroke width for text fields.
FieldBorderWidth() float64
// FieldPadding returns the horizontal padding inside text fields.
FieldPadding() float64
// ScrollbarThickness returns the cross-axis thickness of scrollbars.
ScrollbarThickness() float64
// ScrollbarMinThumb returns the minimum thumb length for scrollbars.
ScrollbarMinThumb() float64
// FontFamily returns the primary font family name.
FontFamily() string
// FontFamilyMono returns the monospace font family name.
FontFamilyMono() string
// TitleFontSize returns the font size for window titles.
TitleFontSize() int64
// ControlFontSize returns the font size for buttons and controls.
ControlFontSize() int64
// BodyFontSize returns the font size for body text.
BodyFontSize() int64
// SmallFontSize returns the font size for small/caption text.
SmallFontSize() int64
}
type ThemedInteractor
ThemedInteractor extends Interactor with access to the Theme’s colors and fonts. The standard implementation is [impl.ThemedInteractor], which most leaf interactors and controls embed.
type ThemedInteractor interface {
Interactor
// BgColor returns the resolved background color from the theme.
BgColor() color.NRGBA
// FgColor returns the resolved foreground color from the theme.
FgColor() color.NRGBA
// Font returns a [FontConfig] for the given feature and size.
Font(feature Feature, size int64) *FontConfig
// DefaultFont returns the theme's default [FontConfig].
DefaultFont() *FontConfig
// DefaultSize returns the theme's default font size.
DefaultSize() int64
}
type TitleBar
TitleBar draws a window title bar into a DrawContext. Implementations vary the appearance based on the window’s focus state and type. The title bar is drawn into the rectangle (x, y, w, h) using the provided DrawContext.
type TitleBar interface {
// DrawTitleBar paints a title bar with the given title, state, and type.
DrawTitleBar(dc DrawContext, title string, state WindowState, wtype WindowType, x, y, w, h float64)
}
type TitleBarStyle
TitleBarStyle selects the visual treatment for the window title bar.
type TitleBarStyle int
const (
TitleBarStriped TitleBarStyle = iota // Alternating colored stripes.
TitleBarGradient // Gradient fill.
TitleBarFlat // Solid color fill.
)
type TripleClickable
TripleClickable receives triple-click callbacks.
type TripleClickable interface {
// TripleClick is invoked on a recognized triple click. Returns true if consumed.
TripleClick(ev *InputEvent) bool
}
type UnfocusedMode
UnfocusedMode controls how unfocused window content is rendered.
type UnfocusedMode int
const (
UnfocusedDesktopBG UnfocusedMode = iota // Replace content with desktop BG.
UnfocusedDim // Dim content with a translucent overlay.
UnfocusedNormal // Show content normally.
)
type VAlign
VAlign controls vertical text placement within the draw rectangle.
type VAlign int
const (
VAlignCenter VAlign = iota // Centered vertically (default).
VAlignTop // Top of text at top of rectangle.
VAlignBottom // Bottom of text at bottom of rectangle.
VAlignBaseline // y parameter is the baseline Y; h is ignored for vertical placement.
)
type WMTheme
WMTheme provides the complete visual styling for the window manager’s decorations: shadows, title bar, border geometry, and focus state colors.
WMTheme is separate from Theme because rachel (the window manager) renders decorations independently of the application’s interactor theme. The standard implementation is [theme.DefaultWMTheme].
type WMTheme interface {
// Name returns a human-readable identifier for this WM theme.
Name() string
// Palette returns the WM's color scheme.
Palette() Palette
// Style returns the [SurfaceStyle] used to render decorations.
Style() SurfaceStyle
// ShadowTop returns the top shadow margin outside the NeuBox face.
ShadowTop() int
// ShadowBottom returns the bottom shadow margin outside the NeuBox face.
ShadowBottom() int
// ShadowLeft returns the left shadow margin outside the NeuBox face.
ShadowLeft() int
// ShadowRight returns the right shadow margin outside the NeuBox face.
ShadowRight() int
// TitleBarHeight returns the height of the window title bar.
TitleBarHeight() int
// TitleGap returns the gap between the title bar and the content area.
TitleGap() int
// CornerRadius returns the corner radius for the decoration NeuBox.
CornerRadius() float64
BorderTop() int // ShadowTop + TitleBarHeight + TitleGap
BorderRight() int // ShadowRight
BorderBottom() int // ShadowBottom
BorderLeft() int // ShadowLeft
// TitleStyle returns the [TitleBarStyle] (striped, gradient, flat).
TitleStyle() TitleBarStyle
// TitleFont returns the font family used for window titles.
TitleFont() string
// TitleFontSize returns the font size for window titles.
TitleFontSize() int64
// TitleActiveAlpha returns the title text alpha for active windows.
TitleActiveAlpha() uint8
// TitleInactiveAlpha returns the title text alpha for inactive windows.
TitleInactiveAlpha() uint8
// ActiveBorderColor returns the border color for the focused window.
ActiveBorderColor() color.NRGBA
// InactiveBorderColor returns the border color for unfocused windows.
InactiveBorderColor() color.NRGBA
// UrgentBorderColor returns the border color for windows demanding attention.
UrgentBorderColor() color.NRGBA
// UnfocusedContentMode returns how content is rendered when the window loses focus.
UnfocusedContentMode() UnfocusedMode
// UnfocusedDimAlpha returns the overlay alpha used when [UnfocusedDim] is active.
UnfocusedDimAlpha() uint8
}
type Weight
Weight selects between control-weight and window-weight rendering parameters. Interactors pass their weight to SurfaceStyle.DrawBox and SurfaceStyle.Pad so the style can apply appropriate shadow sizes and padding.
type Weight int
const (
LightWeight Weight = iota // Controls (buttons, checkboxes, scrollbars)
HeavyWeight // Window decorations (title bars, window frames)
)
type WindowState
WindowState describes the focus state of a window.
type WindowState int
const (
Active WindowState = iota // Window has focus.
Inactive // Window does not have focus.
)
func (WindowState) String
func (s WindowState) String() string
String returns the state’s name (“Active” or “Inactive”).
type WindowType
WindowType describes the kind of window a title bar belongs to.
type WindowType int
const (
AppWindowType WindowType = iota // Root application window.
FreeStandingWindowType // Non-root floating panel.
GadgetType // Small utility or accessory window.
)
func (WindowType) String
func (t WindowType) String() string
String returns the type’s name (“AppWindow”, “FreeStandingWindow”, or “Gadget”).
Generated by gomarkdoc