-
Notifications
You must be signed in to change notification settings - Fork 0
/
view.go
57 lines (52 loc) · 1.15 KB
/
view.go
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
package main
// View holds data to be displayed on screen.
type View struct {
Size Size
Visible bool
Select bool
Content [][]rune
Selection [][]bool
Position Position
Color Color
Status string
Prompt string
Cursor Cursor
}
// Cursor represents type of cursor.
type Cursor int
// Cursor types.
const (
CursorNone Cursor = iota
CursorContent
CursorPrompt
)
// NewView creates a new content of a given size.
func NewView(size Size) *View {
content := make([][]rune, size.Lines)
selection := make([][]bool, size.Lines)
for line := 0; line < size.Lines; line++ {
content[line] = make([]rune, size.Columns)
selection[line] = make([]bool, size.Columns)
}
return &View{
Size: size,
Content: content,
Selection: selection,
}
}
// Clear clears view.
func (view *View) Clear() {
for line := 0; line < view.Size.Lines; line++ {
for column := 0; column < view.Size.Columns; column++ {
view.Content[line][column] = 0
view.Selection[line][column] = false
}
}
view.Visible = false
view.Select = false
view.Position = Position{}
view.Color = ColorNone
view.Status = ""
view.Prompt = ""
view.Cursor = CursorNone
}