direct-draw #6

Merged
sashakoshka merged 10 commits from direct-draw into main 2023-02-01 04:05:26 +00:00
4 changed files with 20 additions and 17 deletions
Showing only changes of commit 81fc82c46e - Show all commits

View File

@ -6,7 +6,7 @@ import "image"
// it can be arranged by a Layout. // it can be arranged by a Layout.
type LayoutEntry struct { type LayoutEntry struct {
Element Element
Position image.Point Bounds image.Rectangle
Expand bool Expand bool
} }

View File

@ -32,19 +32,19 @@ func (layout Dialog) Arrange (entries []tomo.LayoutEntry, width, height int) {
} }
if len(entries) > 0 { if len(entries) > 0 {
entries[0].Position = image.Point { } entries[0].Bounds.Min = image.Point { }
if layout.Pad { if layout.Pad {
entries[0].Position.X += theme.Margin() entries[0].Bounds.Min.X += theme.Margin()
entries[0].Position.Y += theme.Margin() entries[0].Bounds.Min.Y += theme.Margin()
} }
mainHeight := height - controlRowHeight mainHeight := height - controlRowHeight
if layout.Gap { if layout.Gap {
mainHeight -= theme.Margin() mainHeight -= theme.Margin()
} }
mainBounds := entries[0].Bounds() mainBounds := entries[0].Bounds
if mainBounds.Dy() != mainHeight || if mainBounds.Dy() != mainHeight || mainBounds.Dx() != width {
mainBounds.Dx() != width { entries[0].Bounds.Max =
entries[0].Resize(width, mainHeight) mainBounds.Min.Add(image.Pt(width, mainHeight))
} }
} }
@ -85,7 +85,7 @@ func (layout Dialog) Arrange (entries []tomo.LayoutEntry, width, height int) {
for index, entry := range entries[1:] { for index, entry := range entries[1:] {
if index > 0 && layout.Gap { x += theme.Margin() } if index > 0 && layout.Gap { x += theme.Margin() }
entries[index + 1].Position = image.Pt(x, y) entries[index + 1].Bounds.Min = image.Pt(x, y)
entryWidth := 0 entryWidth := 0
if entry.Expand { if entry.Expand {
entryWidth = expandingElementWidth entryWidth = expandingElementWidth
@ -93,10 +93,11 @@ func (layout Dialog) Arrange (entries []tomo.LayoutEntry, width, height int) {
entryWidth, _ = entry.MinimumSize() entryWidth, _ = entry.MinimumSize()
} }
x += entryWidth x += entryWidth
entryBounds := entry.Bounds() entryBounds := entry.Bounds
if entryBounds.Dy() != controlRowHeight || if entryBounds.Dy() != controlRowHeight ||
entryBounds.Dx() != entryWidth { entryBounds.Dx() != entryWidth {
entry.Resize(entryWidth, controlRowHeight) entry.Bounds.Max = entryBounds.Min.Add (
image.Pt(entryWidth, controlRowHeight))
} }
} }
} }

View File

@ -35,7 +35,7 @@ func (layout Horizontal) Arrange (entries []tomo.LayoutEntry, width, height int)
for index, entry := range entries { for index, entry := range entries {
if index > 0 && layout.Gap { x += theme.Margin() } if index > 0 && layout.Gap { x += theme.Margin() }
entries[index].Position = image.Pt(x, y) entries[index].Bounds.Min = image.Pt(x, y)
entryWidth := 0 entryWidth := 0
if entry.Expand { if entry.Expand {
entryWidth = expandingElementWidth entryWidth = expandingElementWidth
@ -43,9 +43,10 @@ func (layout Horizontal) Arrange (entries []tomo.LayoutEntry, width, height int)
entryWidth, _ = entry.MinimumSize() entryWidth, _ = entry.MinimumSize()
} }
x += entryWidth x += entryWidth
entryBounds := entry.Bounds() entryBounds := entry.Bounds
if entryBounds.Dy() != height || entryBounds.Dx() != entryWidth { if entryBounds.Dy() != height || entryBounds.Dx() != entryWidth {
entry.Resize(entryWidth, height) entry.Bounds.Max = entryBounds.Min.Add (
image.Pt(entryWidth, height))
} }
} }
} }

View File

@ -62,7 +62,7 @@ func (layout Vertical) Arrange (entries []tomo.LayoutEntry, width, height int) {
for index, entry := range entries { for index, entry := range entries {
if index > 0 && layout.Gap { y += theme.Margin() } if index > 0 && layout.Gap { y += theme.Margin() }
entries[index].Position = image.Pt(x, y) entries[index].Bounds.Min = image.Pt(x, y)
entryHeight := 0 entryHeight := 0
if entry.Expand { if entry.Expand {
entryHeight = expandingElementHeight entryHeight = expandingElementHeight
@ -70,9 +70,10 @@ func (layout Vertical) Arrange (entries []tomo.LayoutEntry, width, height int) {
entryHeight = minimumHeights[index] entryHeight = minimumHeights[index]
} }
y += entryHeight y += entryHeight
entryBounds := entry.Bounds() entryBounds := entry.Bounds
if entryBounds.Dx() != width || entryBounds.Dy() != entryHeight { if entryBounds.Dx() != width || entryBounds.Dy() != entryHeight {
entry.Resize(width, entryHeight) entry.Bounds.Max = entryBounds.Min.Add (
image.Pt(width, entryHeight))
} }
} }
} }