-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathtextattribs.go
45 lines (36 loc) · 1.06 KB
/
textattribs.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
package washeet
const (
defaultTextAttributes textAttribs = iota
boldAttrib textAttribs = 1 << (iota - 1) // 1
italicsAttrib // 2
underlineAttrib // 4
)
func newDefaultTextAttributes() *textAttribs {
txtAttribs := defaultTextAttributes
return &txtAttribs
}
func (tattribs *textAttribs) isBold() bool {
return (*tattribs & boldAttrib) == boldAttrib
}
func (tattribs *textAttribs) isItalics() bool {
return (*tattribs & italicsAttrib) == italicsAttrib
}
func (tattribs *textAttribs) isUnderline() bool {
return (*tattribs & underlineAttrib) == underlineAttrib
}
func (tattribs *textAttribs) setField(flag bool, field textAttribs) {
if flag {
*tattribs |= field
} else {
*tattribs &^= field
}
}
func (tattribs *textAttribs) setBold(flag bool) {
tattribs.setField(flag, boldAttrib)
}
func (tattribs *textAttribs) setItalics(flag bool) {
tattribs.setField(flag, italicsAttrib)
}
func (tattribs *textAttribs) setUnderline(flag bool) {
tattribs.setField(flag, underlineAttrib)
}