refactoring: extract common logic into a separate method
This commit is contained in:
parent
3c88c56fa2
commit
6f8f5f080c
|
@ -275,21 +275,8 @@ func (l *Layout) Draw(buffer *ui.Buffer) {
|
||||||
rowHeight := float64(l.GetRect().Dy()-statusbarHeight) / float64(rowsCount)
|
rowHeight := float64(l.GetRect().Dy()-statusbarHeight) / float64(rowsCount)
|
||||||
|
|
||||||
for _, c := range l.Components {
|
for _, c := range l.Components {
|
||||||
|
rectangle := calculateComponentCoordinates(c, columnWidth, rowHeight)
|
||||||
x1 := math.Floor(float64(c.Location.X) * columnWidth)
|
c.SetRect(rectangle.Min.X, rectangle.Min.Y, rectangle.Max.X, rectangle.Max.Y)
|
||||||
y1 := math.Floor(float64(c.Location.Y) * rowHeight)
|
|
||||||
x2 := x1 + math.Floor(float64(c.Size.X))*columnWidth
|
|
||||||
y2 := y1 + math.Floor(float64(c.Size.Y))*rowHeight
|
|
||||||
|
|
||||||
if x2-x1 < minDimension {
|
|
||||||
x2 = x1 + minDimension
|
|
||||||
}
|
|
||||||
|
|
||||||
if y2-y1 < minDimension {
|
|
||||||
y2 = y1 + minDimension
|
|
||||||
}
|
|
||||||
|
|
||||||
c.SetRect(int(x1), int(y1), int(x2), int(y2))
|
|
||||||
c.Draw(buffer)
|
c.Draw(buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -301,7 +288,6 @@ func (l *Layout) Draw(buffer *ui.Buffer) {
|
||||||
l.menu.Draw(buffer)
|
l.menu.Draw(buffer)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO extract x/y calculation to a separate method
|
|
||||||
func (l *Layout) findComponentAtPoint(point image.Point) (*component.Component, int) {
|
func (l *Layout) findComponentAtPoint(point image.Point) (*component.Component, int) {
|
||||||
|
|
||||||
columnWidth := float64(l.GetRect().Dx()) / float64(columnsCount)
|
columnWidth := float64(l.GetRect().Dx()) / float64(columnsCount)
|
||||||
|
@ -309,6 +295,18 @@ func (l *Layout) findComponentAtPoint(point image.Point) (*component.Component,
|
||||||
|
|
||||||
for i, c := range l.Components {
|
for i, c := range l.Components {
|
||||||
|
|
||||||
|
rectangle := calculateComponentCoordinates(c, columnWidth, rowHeight)
|
||||||
|
|
||||||
|
if point.In(rectangle) {
|
||||||
|
return c, i
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil, -1
|
||||||
|
}
|
||||||
|
|
||||||
|
func calculateComponentCoordinates(c *component.Component, columnWidth float64, rowHeight float64) image.Rectangle {
|
||||||
|
|
||||||
x1 := math.Floor(float64(c.Location.X) * columnWidth)
|
x1 := math.Floor(float64(c.Location.X) * columnWidth)
|
||||||
y1 := math.Floor(float64(c.Location.Y) * rowHeight)
|
y1 := math.Floor(float64(c.Location.Y) * rowHeight)
|
||||||
x2 := x1 + math.Floor(float64(c.Size.X))*columnWidth
|
x2 := x1 + math.Floor(float64(c.Size.X))*columnWidth
|
||||||
|
@ -322,17 +320,10 @@ func (l *Layout) findComponentAtPoint(point image.Point) (*component.Component,
|
||||||
y2 = y1 + minDimension
|
y2 = y1 + minDimension
|
||||||
}
|
}
|
||||||
|
|
||||||
rectangle := image.Rectangle{Min: image.Point{
|
return image.Rectangle{Min: image.Point{
|
||||||
X: int(x1), Y: int(y1)},
|
X: int(x1), Y: int(y1)},
|
||||||
Max: image.Point{X: int(x2), Y: int(y2)},
|
Max: image.Point{X: int(x2), Y: int(y2)},
|
||||||
}
|
}
|
||||||
|
|
||||||
if point.In(rectangle) {
|
|
||||||
return c, i
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil, -1
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *Layout) resetAlerts() {
|
func (l *Layout) resetAlerts() {
|
||||||
|
|
Loading…
Reference in New Issue