-
Notifications
You must be signed in to change notification settings - Fork 0
/
locale.go
68 lines (57 loc) · 1.83 KB
/
locale.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
58
59
60
61
62
63
64
65
66
67
68
package system
// Locale provides language information for the current system.
type Locale struct {
// Language is the BCP-47 tag for the primary language of the system.
Language string
// Direction indicates the primary direction of text and layout
// flow for the system.
Direction TextDirection
}
const (
axisShift = iota
progressionShift
)
// TextDirection defines a direction for text flow.
type TextDirection byte
const (
// LTR is left-to-right text.
LTR TextDirection = TextDirection(Horizontal<<axisShift) | TextDirection(FromOrigin<<progressionShift)
// RTL is right-to-left text.
RTL TextDirection = TextDirection(Horizontal<<axisShift) | TextDirection(TowardOrigin<<progressionShift)
)
// Axis returns the axis of the text layout.
func (d TextDirection) Axis() TextAxis {
return TextAxis((d & (1 << axisShift)) >> axisShift)
}
// Progression returns the way that the text flows relative to the origin.
func (d TextDirection) Progression() TextProgression {
return TextProgression((d & (1 << progressionShift)) >> progressionShift)
}
func (d TextDirection) String() string {
switch d {
case RTL:
return "RTL"
default:
return "LTR"
}
}
// TextAxis defines the layout axis of text.
type TextAxis byte
const (
// Horizontal indicates text that flows along the X axis.
Horizontal TextAxis = iota
// Vertical indicates text that flows along the Y axis.
Vertical
)
// TextProgression indicates how text flows along an axis relative to the
// origin. For these purposes, the origin is defined as the upper-left
// corner of coordinate space.
type TextProgression byte
const (
// FromOrigin indicates text that flows along its axis away from the
// origin (upper left corner).
FromOrigin TextProgression = iota
// TowardOrigin indicates text that flows along its axis towards the
// origin (upper left corner).
TowardOrigin
)