From d59b7d812dedb26a47028622ffff84829d6887d0 Mon Sep 17 00:00:00 2001 From: Sasha Koshka Date: Tue, 14 Feb 2023 17:05:13 -0500 Subject: [PATCH] Stop some redundant rendering in the piano --- elements/basic/list.go | 1 - elements/fun/piano.go | 17 ++++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/elements/basic/list.go b/elements/basic/list.go index d4cbe10..75c7a0d 100644 --- a/elements/basic/list.go +++ b/elements/basic/list.go @@ -460,7 +460,6 @@ func (element *List) draw () { 0, 0, innerBounds.Dx(), element.contentHeight, ).Add(innerBounds.Min).Intersect(innerBounds) - println(covered.String()) pattern := element.theme.Pattern(theme.PatternSunken, state) tiles := shatter.Shatter(bounds, covered) diff --git a/elements/fun/piano.go b/elements/fun/piano.go index 236678e..a3ea0a0 100644 --- a/elements/fun/piano.go +++ b/elements/fun/piano.go @@ -5,6 +5,7 @@ import "git.tebibyte.media/sashakoshka/tomo/input" import "git.tebibyte.media/sashakoshka/tomo/theme" import "git.tebibyte.media/sashakoshka/tomo/config" import "git.tebibyte.media/sashakoshka/tomo/artist" +import "git.tebibyte.media/sashakoshka/tomo/shatter" import "git.tebibyte.media/sashakoshka/tomo/elements/core" import "git.tebibyte.media/sashakoshka/tomo/elements/fun/music" @@ -28,6 +29,7 @@ type Piano struct { flatKeys []pianoKey sharpKeys []pianoKey + contentBounds image.Rectangle pressed *pianoKey keynavPressed map[music.Note] bool @@ -271,6 +273,11 @@ func (element *Piano) recalculate () { } note ++ } + + element.contentBounds = image.Rectangle { + bounds.Min, + image.Pt(dot.X, bounds.Max.Y), + } } func (element *Piano) draw () { @@ -278,9 +285,6 @@ func (element *Piano) draw () { Focused: element.Focused(), Disabled: !element.Enabled(), } - pattern := element.theme.Pattern(theme.PatternPinboard, state) - // inset := element.theme.Inset(theme.PatternSunken) - artist.FillRectangle(element.core, pattern, element.Bounds()) for _, key := range element.flatKeys { _, keynavPressed := element.keynavPressed[key.Note] @@ -298,6 +302,13 @@ func (element *Piano) draw () { (*element.pressed).Note == key.Note || keynavPressed, state) } + + pattern := element.theme.Pattern(theme.PatternPinboard, state) + tiles := shatter.Shatter(element.Bounds(), element.contentBounds) + for _, tile := range tiles { + artist.FillRectangleClip ( + element.core, pattern, element.Bounds(), tile) + } } func (element *Piano) drawFlat (