Added a 4-way bevel pattern
This commit is contained in:
parent
9c24184f24
commit
24bcd6977a
@ -31,3 +31,33 @@ func (pattern Beveled) AtWhen (x, y, width, height int) (c color.RGBA) {
|
||||
return pattern.Shadow.AtWhen(x, y, width, height)
|
||||
}
|
||||
}
|
||||
|
||||
// QuadBeveled is like Beveled, but with four sides. A pattern can be specified
|
||||
// for each one.
|
||||
type QuadBeveled [4]Pattern
|
||||
|
||||
// AtWhen satisfies the Pattern interface.
|
||||
func (pattern QuadBeveled) AtWhen (x, y, width, height int) (c color.RGBA) {
|
||||
bottom := y > height / 2
|
||||
right := x > width / 2
|
||||
top := !bottom
|
||||
left := !right
|
||||
side := 0
|
||||
|
||||
switch {
|
||||
case top && left:
|
||||
if x > y { side = 0 } else { side = 3 }
|
||||
|
||||
case top && right:
|
||||
if width - x < y { side = 1 } else { side = 0 }
|
||||
|
||||
case bottom && left:
|
||||
if x > height - y { side = 2 } else { side = 3 }
|
||||
|
||||
case bottom && right:
|
||||
if width - x < height - y { side = 1 } else { side = 2 }
|
||||
|
||||
}
|
||||
|
||||
return pattern[side].AtWhen(x, y, width, height)
|
||||
}
|
||||
|
Reference in New Issue
Block a user