op

package
v0.0.0-...-d956aad Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 2, 2020 License: Unlicense Imports: 5 Imported by: 0

Documentation

Overview

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 "github.com/gop9/olt/gio/unit"
import "github.com/gop9/olt/gio/app"
import "github.com/gop9/olt/gio/op/paint"

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

State

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)
var stack op.StackOp
// Save the current state, in particular the transform.
stack.Push(ops)
// Apply a transform to subsequent operations.
op.TransformOp{}.Offset(...).Add(ops)
...
// Restore the previous transform.
stack.Pop()

The CallOp invokes another operation list:

ops := new(op.Ops)
ops2 := new(op.Ops)
op.CallOp{Ops: ops2}.Add(ops)

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

ops := new(op.Ops)
var macro op.MacroOp
macro.Record(ops)
// Record operations by adding them.
op.InvalidateOp{}.Add(ops)
...
// End recording.
macro.Stop()

// replay the recorded operations by calling Add:
macro.Add()

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type CallOp

type CallOp struct {
	// Ops is the list of operations to invoke.
	Ops *Ops
}

CallOp invokes all the operations from a separate operations list.

func (CallOp) Add

func (c CallOp) Add(o *Ops)

Add the call to the operation list.

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 (*MacroOp) Add

func (m *MacroOp) Add()

Add the recorded list of operations.

func (*MacroOp) Record

func (m *MacroOp) Record(o *Ops)

Record a macro of operations.

func (*MacroOp) Stop

func (m *MacroOp) Stop()

Stop ends a previously started recording.

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.

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 (*StackOp) Pop

func (s *StackOp) Pop()

Pop (restore) a previously Pushed operations state.

func (*StackOp) Push

func (s *StackOp) Push(o *Ops)

Push (save) the current operations state.

type TransformOp

type TransformOp struct {
	// contains filtered or unexported fields
}

TransformOp applies a transform to the current transform.

func (TransformOp) Add

func (t TransformOp) Add(o *Ops)

func (TransformOp) Invert

func (t TransformOp) Invert() TransformOp

Invert the transformation.

func (TransformOp) Multiply

func (t TransformOp) Multiply(t2 TransformOp) TransformOp

Multiply by a transformation.

func (TransformOp) Offset

func (t TransformOp) Offset(o f32.Point) TransformOp

Offset the transformation.

func (TransformOp) Transform

func (t TransformOp) Transform(p f32.Point) f32.Point

Transform a point.

Directories

Path Synopsis
Package clip provides operations for clipping paint operations.
Package clip provides operations for clipping paint operations.
Package paint provides drawing operations for 2D graphics.
Package paint provides drawing operations for 2D graphics.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL