diff --git a/basis/math/geometry/rect/rect-docs.factor b/basis/math/geometry/rect/rect-docs.factor index 3e21dfe307..a892940363 100644 --- a/basis/math/geometry/rect/rect-docs.factor +++ b/basis/math/geometry/rect/rect-docs.factor @@ -17,11 +17,6 @@ HELP: ( loc dim -- rect ) { } related-words -HELP: set-rect-dim ( dim rect -- ) -{ $values { "dim" "a pair of integers" } { "rect" rect } } -{ $description "Modifies the dimensions of a rectangle." } -{ $side-effects "rect" } ; - HELP: rect-bounds { $values { "rect" rect } { "loc" "a pair of integers" } { "dim" "a pair of integers" } } { $description "Outputs the location and dimensions of a rectangle." } ; diff --git a/basis/math/geometry/rect/rect.factor b/basis/math/geometry/rect/rect.factor index 7f0bb94092..dd634f4a3b 100644 --- a/basis/math/geometry/rect/rect.factor +++ b/basis/math/geometry/rect/rect.factor @@ -7,6 +7,9 @@ IN: math.geometry.rect TUPLE: rect loc dim ; +GENERIC: rect-loc ( obj -- loc ) +GENERIC: rect-dim ( obj -- dim ) + : init-rect ( rect -- rect ) { 0 0 } clone >>loc { 0 0 } clone >>dim ; : ( loc dim -- rect ) rect boa ; @@ -17,6 +20,10 @@ M: array rect-loc ; M: array rect-dim drop { 0 0 } ; +M: rect rect-loc loc>> ; + +M: rect rect-dim dim>> ; + : rect-bounds ( rect -- loc dim ) dup rect-loc swap rect-dim ; : rect-extent ( rect -- loc ext ) rect-bounds over v+ ;