This repository has been archived on 2023-08-08. You can view files and clone it, but cannot push or open issues or pull requests.
tomo-old/artist/bevel.go

47 lines
1.1 KiB
Go
Raw Normal View History

2023-01-09 06:03:19 +00:00
package artist
import "image/color"
2023-01-21 04:00:26 +00:00
// Beveled is a pattern that has a highlight section and a shadow section.
type Beveled [2]Pattern
2023-01-09 06:03:19 +00:00
// AtWhen satisfies the Pattern interface.
2023-01-21 04:00:26 +00:00
func (pattern Beveled) AtWhen (x, y, width, height int) (c color.RGBA) {
return QuadBeveled {
pattern[0],
pattern[1],
pattern[1],
pattern[0],
}.AtWhen(x, y, width, height)
2023-01-09 06:03:19 +00:00
}
2023-01-24 04:40:55 +00:00
// 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:
2023-01-24 05:10:02 +00:00
if x < y { side = 3 } else { side = 0 }
2023-01-24 04:40:55 +00:00
case top && right:
2023-01-24 05:09:19 +00:00
if width - x > y { side = 0 } else { side = 1 }
2023-01-24 04:40:55 +00:00
case bottom && left:
2023-01-24 05:09:19 +00:00
if x < height - y { side = 3 } else { side = 2 }
2023-01-24 04:40:55 +00:00
case bottom && right:
2023-01-24 05:09:19 +00:00
if width - x > height - y { side = 2 } else { side = 1 }
2023-01-24 04:40:55 +00:00
}
return pattern[side].AtWhen(x, y, width, height)
}