88 lines
1.8 KiB
Go
88 lines
1.8 KiB
Go
package widget
|
|
|
|
/*
|
|
2D geometry values
|
|
|
|
There are lots of issues when supporting multiple toolkit plugin
|
|
geometries. The geometries vary widely especially between the
|
|
graphical displays and the serial console ones.
|
|
|
|
To simplyfy this, we stick to using the concepts:
|
|
|
|
------------------------------ ^
|
|
| top | |
|
|
| | |
|
|
| left right | height
|
|
| | |
|
|
| bottom | |
|
|
------------------------------ v
|
|
|
|
<----------- width ---------->
|
|
|
|
This way, width & height are always positive numbers.
|
|
|
|
The qustion of (top,bottom) & (left,right) becomes problematic.
|
|
|
|
In almost every toolkit, right > left. However, top & bottom
|
|
vary and a choice can not be made easily. Luckily, we maybe do
|
|
not have to make that decision here and can pass that determination
|
|
to the toolkits. So, we use excusively:
|
|
|
|
geom(left, right, top, bottom)
|
|
size(width, height)
|
|
*/
|
|
|
|
type Geom struct {
|
|
Left any
|
|
Right any
|
|
Top any
|
|
Bottom any
|
|
}
|
|
|
|
type Size struct {
|
|
Width any
|
|
Height any
|
|
}
|
|
|
|
/*
|
|
Horizontal means layout widgets like books on a bookshelf
|
|
|
|
---------------------------------
|
|
| W | W | W | W | W | W | W | W |
|
|
| i | i | i | i | i | i | i | i |
|
|
| d | d | d | d | d | d | d | d |
|
|
| g | g | g | g | g | g | g | g |
|
|
| e | e | e | e | e | e | e | e |
|
|
| t | t | t | t | t | t | t | t |
|
|
---------------------------------
|
|
|
|
Vertical means layout widgets like books in a stack
|
|
----------
|
|
| Widget |
|
|
----------
|
|
| Widget |
|
|
----------
|
|
| Widget |
|
|
----------
|
|
| Widget |
|
|
----------
|
|
*/
|
|
type Orientation int
|
|
|
|
const (
|
|
Horizontal Orientation = iota
|
|
Vertical
|
|
)
|
|
|
|
func (s Orientation) String() string {
|
|
switch s {
|
|
case Horizontal:
|
|
return "Horizontal"
|
|
case Vertical:
|
|
return "Vertical"
|
|
default:
|
|
return "Horizontal"
|
|
}
|
|
return "Horizontal"
|
|
}
|