Gave CoreControl the ability to shatter parent backgrounds
This commit is contained in:
parent
46a4858597
commit
2d0a0cc073
@ -4,7 +4,6 @@ import "image"
|
||||
import "git.tebibyte.media/sashakoshka/tomo"
|
||||
import "git.tebibyte.media/sashakoshka/tomo/input"
|
||||
import "git.tebibyte.media/sashakoshka/tomo/canvas"
|
||||
import "git.tebibyte.media/sashakoshka/tomo/artist"
|
||||
import "git.tebibyte.media/sashakoshka/tomo/elements/core"
|
||||
import "git.tebibyte.media/sashakoshka/tomo/default/theme"
|
||||
import "git.tebibyte.media/sashakoshka/tomo/default/config"
|
||||
@ -189,10 +188,11 @@ func (element *Container) redoAll () {
|
||||
for index, entry := range element.children {
|
||||
rocks[index] = entry.Bounds
|
||||
}
|
||||
pattern := element.theme.Pattern (
|
||||
tomo.PatternBackground,
|
||||
tomo.State { })
|
||||
artist.DrawShatter(element.core, pattern, element.Bounds(), rocks...)
|
||||
|
||||
element.core.DrawBackgroundBoundsShatter (
|
||||
element.theme.Pattern(tomo.PatternBackground, tomo.State { }),
|
||||
element.Bounds(),
|
||||
rocks...)
|
||||
|
||||
// cut our canvas up and give peices to child elements
|
||||
for _, entry := range element.children {
|
||||
|
@ -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()
|
||||
|
Reference in New Issue
Block a user