Back to / op

package op

v0.0.0 (f958f95)
Latest Go to latest
Published: today | Licenses: MIT, Unlicense | Module:


Package op implements operations for updating a user interface.

Gio programs use operations, or ops, for describing their user interfaces. There are operations for drawing, defining input handlers, changing window properties as well as operations for controlling the execution of other operations.

Ops represents a list of operations. The most important use for an Ops list is to describe a complete user interface update to a ui/app.Window's Update method.

Drawing a colored square:

import ""
import ""
import ""

var w app.Window
var e system.FrameEvent
ops := new(op.Ops)
paint.ColorOp{Color: ...}.Add(ops)
paint.PaintOp{Rect: ...}.Add(ops)


An Ops list can be viewed as a very simple virtual machine: it has an implicit mutable state stack and execution flow can be controlled with macros.

The StackOp saves the current state to the state stack and restores it later:

ops := new(op.Ops)
// Save the current state, in particular the transform.
stack := op.Push(ops)
// Apply a transform to subsequent operations.
// Restore the previous transform.

You can also use this one-line to save the current state and restore it at the end of a function :

defer op.Push(ops).Pop()

The MacroOp records a list of operations to be executed later:

ops := new(op.Ops)
macro := op.Record(ops)
// Record operations by adding them.
// End recording.
call := macro.Stop()

// replay the recorded operations:


Package Files

  • op.go

type CallOp

type CallOp struct {
	// contains filtered or unexported fields

CallOp invokes the operations recorded by Record.

func (CallOp) Add

func (c CallOp) Add(o *Ops)

Add the recorded list of operations. Add panics if the Ops containing the recording has been reset.

type InvalidateOp

type InvalidateOp struct {
	At time.Time

InvalidateOp requests a redraw at the given time. Use the zero value to request an immediate redraw.

func (InvalidateOp) Add

func (r InvalidateOp) Add(o *Ops)

type MacroOp

type MacroOp struct {
	// contains filtered or unexported fields

MacroOp records a list of operations for later use.

func Record

func Record(o *Ops) MacroOp

Record a macro of operations.

func (MacroOp) Stop

func (m MacroOp) Stop() CallOp

Stop ends a previously started recording and returns an operation for replaying it.

type Ops

type Ops struct {
	// contains filtered or unexported fields

Ops holds a list of operations. Operations are stored in serialized form to avoid garbage during construction of the ops list.

func (*Ops) Data

func (o *Ops) Data() []byte

Data is for internal use only.

func (*Ops) Refs

func (o *Ops) Refs() []interface{}

Refs is for internal use only.

func (*Ops) Reset

func (o *Ops) Reset()

Reset the Ops, preparing it for re-use. Reset invalidates any recorded macros.

func (*Ops) Version

func (o *Ops) Version() int

Version is for internal use only.

func (*Ops) Write

func (o *Ops) Write(n int, refs ...interface{}) []byte

Write is for internal use only.

type StackOp

type StackOp struct {
	// contains filtered or unexported fields

StackOp saves and restores the operation state in a stack-like manner.

func Push

func Push(o *Ops) StackOp

Push (save) the current operations state.

func (StackOp) Pop

func (s StackOp) Pop()

Pop (restore) a previously Pushed operations state.

type TransformOp

type TransformOp struct {
	// contains filtered or unexported fields

TransformOp applies a transform to the current transform. The zero value for TransformOp represents the identity transform.

func Affine

func Affine(a f32.Affine2D) TransformOp

Affine creates a TransformOp representing the transformation a.

func Offset

func Offset(o f32.Point) TransformOp

Offset creates a TransformOp with the offset o.

func (TransformOp) Add

func (t TransformOp) Add(o *Ops)
Documentation was rendered with GOOS=linux and GOARCH=amd64.

Jump to identifier

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to identifier