~eliasnaur/gio

ref: b981ccf9eda43816ae9d809466fe96c8e0c2475b gio/ui/internal/ops/ops.go -rw-r--r-- 1.3 KiB
b981ccf9Elias Naur ui/input: support single stepping through events 2 years ago
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
package ops

type OpType byte

// Start at a high number for easier debugging.
const firstOpIndex = 200

const (
	TypeBlockDef OpType = iota + firstOpIndex
	TypeBlock
	TypeTransform
	TypeLayer
	TypeRedraw
	TypeImage
	TypeDraw
	TypeColor
	TypeArea
	TypePointerHandler
	TypeKeyHandler
	TypeHideInput
	TypePush
	TypePop
	TypeAux
	TypeClip
)

const (
	TypeBlockDefLen       = 1 + 4 + 4
	TypeBlockLen          = 1 + 4 + 4 + 4
	TypeTransformLen      = 1 + 4*2
	TypeLayerLen          = 1
	TypeRedrawLen         = 1 + 8
	TypeImageLen          = 1 + 4*4
	TypeDrawLen           = 1 + 4*4
	TypeColorLen          = 1 + 4
	TypeAreaLen           = 1 + 1 + 2*4
	TypePointerHandlerLen = 1 + 1
	TypeKeyHandlerLen     = 1 + 1
	TypeHideInputLen      = 1
	TypePushLen           = 1
	TypePopLen            = 1
	TypeAuxLen            = 1 + 4
	TypeClipLen           = 1 + 4*4
)

func (t OpType) Size() int {
	return [...]int{
		TypeBlockDefLen,
		TypeBlockLen,
		TypeTransformLen,
		TypeLayerLen,
		TypeRedrawLen,
		TypeImageLen,
		TypeDrawLen,
		TypeColorLen,
		TypeAreaLen,
		TypePointerHandlerLen,
		TypeKeyHandlerLen,
		TypeHideInputLen,
		TypePushLen,
		TypePopLen,
		TypeAuxLen,
		TypeClipLen,
	}[t-firstOpIndex]
}

func (t OpType) NumRefs() int {
	switch t {
	case TypeBlock, TypeImage, TypeKeyHandler, TypePointerHandler:
		return 1
	default:
		return 0
	}
}