layout: replace Align with a Layout method on Direction

It's one less type (Align) and shorter:

Before:

	layout.Align(layout.Center).Layout(...)

After

	layout.Center.Layout(...)

It is also safer: since `layout.Align(...)` was a casting operation,
the Go compiler would not complain about an incompatible constant.

For example, the widget/material package contained a wrong cast:

	layout.Align(layout.Start)

which should have been

	layout.Align(layout.W)

After this change, attempting `layout.Start.Layout(...)` result
in a compile error.

Signed-off-by: Elias Naur <mail@eliasnaur.com>
This commit is contained in:
Elias Naur
2020-02-02 17:13:02 +01:00
parent 359839ad07
commit fb7337f794
4 changed files with 7 additions and 11 deletions
+2 -3
View File
@@ -30,13 +30,12 @@ func ExampleInset() {
// (70,70)
}
func ExampleAlign() {
func ExampleDirection() {
gtx := new(layout.Context)
// Rigid constraints with both minimum and maximum set.
gtx.Reset(nil, image.Point{X: 100, Y: 100})
align := layout.Align(layout.Center)
align.Layout(gtx, func() {
layout.Center.Layout(gtx, func() {
// Lay out a 50x50 sized widget.
layoutWidget(gtx, 50, 50)
fmt.Println(gtx.Dimensions.Size)
+2 -5
View File
@@ -95,9 +95,6 @@ type Inset struct {
Top, Right, Bottom, Left unit.Value
}
// Align aligns a widget in the available space.
type Align Direction
// Layout a widget.
func (in Inset) Layout(gtx *Context, w Widget) {
top := gtx.Px(in.Top)
@@ -140,8 +137,8 @@ func UniformInset(v unit.Value) Inset {
return Inset{Top: v, Right: v, Bottom: v, Left: v}
}
// Layout a widget.
func (a Align) Layout(gtx *Context, w Widget) {
// Layout a widget according to the direction.
func (a Direction) Layout(gtx *Context, w Widget) {
var macro op.MacroOp
macro.Record(gtx.Ops)
cs := gtx.Constraints