Gave CoreControl the ability to shatter parent backgrounds

This commit is contained in:
2023-04-02 22:46:38 -04:00
parent 46a4858597
commit 2d0a0cc073
2 changed files with 19 additions and 5 deletions

View File

@@ -5,6 +5,7 @@ import "image/color"
import "git.tebibyte.media/sashakoshka/tomo"
import "git.tebibyte.media/sashakoshka/tomo/canvas"
import "git.tebibyte.media/sashakoshka/tomo/artist"
import "git.tebibyte.media/sashakoshka/tomo/shatter"
// Core is a struct that implements some core functionality common to most
// widgets. It is meant to be embedded directly into a struct.
@@ -144,6 +145,19 @@ func (control CoreControl) DrawBackgroundBounds (
}
}
// DrawBackgroundBoundsShatter is like DrawBackgroundBounds, but uses the
// shattering algorithm to avoid drawing in areas specified by rocks.
func (control CoreControl) DrawBackgroundBoundsShatter (
fallback artist.Pattern,
bounds image.Rectangle,
rocks ...image.Rectangle,
) {
tiles := shatter.Shatter(bounds, rocks...)
for _, tile := range tiles {
control.DrawBackgroundBounds(fallback, tile)
}
}
// Window returns the window containing the element.
func (control CoreControl) Window () tomo.Window {
parent := control.Parent()