ui.gadgets.buttons: memoize the roll button themes pens

It reduces memory usage by about 10% for the #1488 test on my machine
and doesnt seem to have any bad side-effects.
db4
Björn Lindqvist 2015-10-16 09:20:29 +02:00
parent 9af7be2ef9
commit 4812cec634
2 changed files with 21 additions and 11 deletions

View File

@ -1,4 +1,4 @@
USING: accessors models namespaces tools.test ui.gadgets USING: accessors kernel models namespaces tools.test ui.gadgets
ui.gadgets.buttons ; ui.gadgets.buttons ;
IN: ui.gadgets.buttons.tests IN: ui.gadgets.buttons.tests
@ -18,3 +18,8 @@ IN: ui.gadgets.buttons.tests
{ 2 } [ { 2 } [
"religion" get gadget-child control-value "religion" get gadget-child control-value
] unit-test ] unit-test
{ t t } [
"but1" [ ] <roll-button> "but2" [ ] <roll-button>
[ [ boundary>> ] bi@ eq? ] [ [ interior>> ] bi@ eq? ] 2bi
] unit-test

View File

@ -1,11 +1,10 @@
! Copyright (C) 2005, 2009 Slava Pestov. ! Copyright (C) 2005, 2009 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license. ! See http://factorcode.org/license.txt for BSD license.
USING: accessors assocs classes colors colors.constants combinators USING: accessors assocs colors combinators combinators.short-circuit
combinators.short-circuit combinators.smart fry kernel locals combinators.smart fry kernel locals math.vectors memoize models
math.vectors models namespaces sequences ui.commands ui.gadgets namespaces sequences ui.commands ui.gadgets ui.gadgets.borders
ui.gadgets.borders ui.gadgets.labels ui.gadgets.packs ui.gadgets.labels ui.gadgets.packs ui.gadgets.theme ui.gadgets.worlds
ui.gadgets.theme ui.gadgets.tracks ui.gadgets.worlds ui.gestures ui.gestures ui.pens ui.pens.image ui.pens.solid ui.pens.tile ;
ui.pens ui.pens.image ui.pens.solid ui.pens.tile ;
FROM: models => change-model ; FROM: models => change-model ;
IN: ui.gadgets.buttons IN: ui.gadgets.buttons
@ -60,8 +59,8 @@ button H{
button new-button ; button new-button ;
TUPLE: button-pen TUPLE: button-pen
plain rollover plain rollover
pressed selected pressed-selected ; pressed selected pressed-selected ;
C: <button-pen> button-pen C: <button-pen> button-pen
@ -103,9 +102,15 @@ M: button-pen pen-foreground
: align-left ( button -- button ) : align-left ( button -- button )
{ 0 1/2 } >>align ; inline { 0 1/2 } >>align ; inline
MEMO: button-pen-boundary ( -- button-pen )
f roll-button-rollover-border <solid> dup f f <button-pen> ;
MEMO: button-pen-interior ( -- button-pen )
f f roll-button-selected-background <solid> f f <button-pen> ;
: roll-button-theme ( button -- button ) : roll-button-theme ( button -- button )
f roll-button-rollover-border <solid> dup f f <button-pen> >>boundary button-pen-boundary >>boundary
f f roll-button-selected-background <solid> f f <button-pen> >>interior button-pen-interior >>interior
align-left ; inline align-left ; inline
PRIVATE> PRIVATE>