topic "RectTracker"; [i448;a25;kKO9;2 $$1,0#37138531426314131252341829483380:class] [l288;2 $$2,2#27521748481378242620020725143825:desc] [0 $$3,0#96390100711032703541132217272105:end] [H6;0 $$4,0#05600065144404261032431302351956:begin] [i448;a25;kKO9;2 $$5,0#37138531426314131252341829483370:item] [l288;a4;*@5;1 $$6,6#70004532496200323422659154056402:requirement] [l288;i1121;b17;O9;~~~.1408;2 $$7,0#10431211400427159095818037425705:param] [i448;b42;O9;2 $$8,8#61672508125594000341940100500538:tparam] [b42;2 $$9,9#13035079074754324216151401829390:normal] [2 $$0,0#00000000000000000000000000000000:Default] [{_} [ {{10000t/25b/25@3 [s0; [*@(229)4 RectTracker]]}}&] [s3; &] [s1;:RectTracker`:`:class: [@(0.0.255)3 class][3 _][*3 RectTracker][3 _:_][@(0.0.255)3 public][3 _ ][*@3;3 LocalLoop]&] [s9;%% RectTracker is a class that represent repositioning modal loop. It can reposition and/or resize rectangle or line as single modal operation.&] [s3;%% &] [s0; &] [ {{10000F(128)G(128)@1 [s0;%% [* Public Member List]]}}&] [s3; &] [s5;:RectTracker`:`:sync: [_^Callback1^ Callback1]<[_^Rect^ Rect]>_[* sync]&] [s2;%% This callback is called each time the dimensions change.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:round: [_^Callback1^ Callback1]_[* round]&] [s2;%% If present, this callback is used to alter coordinates of rectangle after they are determined from mouse position, before other processing. Can be used e.g. to implement `"snap to grid`" operations. This is more recent alternative to defining rounding object and method Round.&] [s3; &] [s4; &] [s5;:RectTracker`:`:SetCursorImage`(const Image`&`): [_^RectTracker^ RectTracker][@(0.0.255) `& ]_[* SetCursorImage]([@(0.0.255) const]_[_^Image^ Image][@(0.0.255) `&]_[*@3 m])&] [s2;%% Sets the mouse cursor appearance during the loop.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:MinSize`(Size`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* MinSize ]([_^Size^ Size]_[*@3 sz])&] [s2;%% Sets the minimal size of rectangle.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:MaxSize`(Size`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* MaxSize ]([_^Size^ Size]_[*@3 sz])&] [s2;%% Sets the maximal size of rectangle.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:MaxRect`(const Rect`&`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_ [* MaxRect]([@(0.0.255) const]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 mr])&] [s2;%% Sets the bounding rectangle which the resulting rectangle cannot exceed.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Clip`(const Rect`&`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* Cl ip]([@(0.0.255) const]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 c])&] [s2;%% Sets the clipping rectangle.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Width`(int`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* Width]([@(0.0.255) i nt]_[*@3 n])&] [s2;%% Sets the width of tracking rectangle shape lines.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:SetColor`(Color`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* SetCo lor]([_^Color^ Color]_[*@3 c])&] [s2;%% Sets the color of tracking rectangle (if on white background).&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Pattern`(int`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* Pattern]( [@(0.0.255) int]_[*@3 p])&] [s2;%% Sets the pattern used to drive lines. [%-*@3 p] can be one of&] [s2;%% &] [ {{5000:5000<288; [s2;l0;%% DRAWDRAGRECT`_SOLID] :: [s2;l0;%% solid line] :: [s2;l0;%% DRAWDRAGRECT`_NORMAL] :: [s2;l0;%% line of alternating single dots `- default] :: [s2;l0;%% DRAWDRAGRECT`_DASHED ] :: [s2;l0;%% line of alternating 4 pixel segments]}}&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Dashed`(`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* Dashed]()&] [s2;%% Same as Pattern(DRAWDRAGRECT`_DASH).&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Solid`(`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* Solid]()&] [s2;%% Same as Pattern(DRAWDRAGRECT`_SOLID).&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Normal`(`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* Normal]()&] [s2;%% Same as Pattern(DRAWDRAGRECT`_NORMAL). This is default.&] [s3; &] [s4; &] [s5;:RectTracker`:`:Animation`(int`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* Animat ion]([@(0.0.255) int]_[*@3 step`_ms]_`=_[@3 40])&] [s2;%% Activates pattern animation.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:KeepRatio`(bool`): [_^RectTracker^ RectTracker][@(0.0.255) `&]_[* KeepR atio]([@(0.0.255) bool]_[*@3 b])&] [s2;%% Forces rectangle to keep the original ratio.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Round`(RectTracker`:`:Rounder`&`): [_^RectTracker^ RectTracker][@(0.0.255) `& ]_[* Round]([_^RectTracker`:`:Rounder^ Rounder][@(0.0.255) `&]_[*@3 r])&] [s2;%% Sets the rounding object. This is somewhat obsoleted by round callback.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Get`(`): [_^Rect^ Rect]_[* Get]()&] [s2;%% Returns the current tracking rectangle.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:Track`(const Rect`&`,int`,int`): [_^Rect^ Rect]_[* Track]([@(0.0.255) c onst]_[_^Rect^ Rect][@(0.0.255) `&]_[*@3 r], [@(0.0.255) int]_[*@3 tx]_`=_ALIGN`_RIGHT, [@(0.0.255) int]_[*@3 ty]_`=_ALIGN`_BOTTOM)&] [s2;%% Performs the modal rectangle tracking loop. [%-*@3 tx] and [%-*@3 ty] specify which edge or corner of rectangle is being changed:&] [s2;%% &] [ {{2807:2850:4343<288;>1088;h1;@(204) [s0; [*@3 tx]] :: [s0; [*@3 ty]] :: [s0;%% Changed] ::@2 [s0;%% ALIGN`_LEFT] :: [s0;%% ALIGN`_TOP] :: [s0;%% Top`-left corner.] :: [s0;%% ALIGN`_LEFT] :: [s0;%% ALIGN`_CENTER] :: [s0;%% Left edge.] :: [s0;%% ALIGN`_LEFT] :: [s0;%% ALIGN`_BOTTOM] :: [s0;%% Bottom`-left corner.] :: [s0;%% ALIGN`_CENTER] :: [s0;%% ALIGN`_TOP] :: [s0;%% Top edge.] ::@(255.255.192) [s0;%% ALIGN`_CENTER] :: [s0;%% ALIGN`_CENTER] :: [s0;%% Rectangle is moved.] ::@2 [s0;%% ALIGN`_CENTER] :: [s0;%% ALIGN`_BOTTOM] :: [s0;%% Bottom edge.] :: [s0;%% ALIGN`_RIGHT] :: [s0;%% ALIGN`_TOP] :: [s0;%% Top`-right corner.] :: [s0;%% ALIGN`_RIGHT] :: [s0;%% ALIGN`_CENTER] :: [s0;%% Right edge.] :: [s0;%% ALIGN`_RIGHT] :: [s0;%% ALIGN`_BOTTOM] :: [s0;%% Bottom`-right corner.]}}&] [s2;%% &] [s2;%% Returns a new rectangle.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:TrackHorzLine`(int`,int`,int`,int`): [@(0.0.255) int]_[* TrackHorzLin e]([@(0.0.255) int]_[*@3 x0], [@(0.0.255) int]_[*@3 y0], [@(0.0.255) int]_[*@3 cx], [@(0.0.255) int]_[*@3 line])&] [s2;%% Performs tracking loop of horizontal line. [%-*@3 x0], [%-*@3 y0] is base point, [%-*@3 cx] the width of line, [%-*@3 line] the current position. Returns the new position.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:TrackVertLine`(int`,int`,int`,int`): [@(0.0.255) int]_[* TrackVertLin e]([@(0.0.255) int]_[*@3 x0], [@(0.0.255) int]_[*@3 y0], [@(0.0.255) int]_[*@3 cy], [@(0.0.255) int]_[*@3 line])&] [s2;%% Performs tracking loop of vertical line. [%-*@3 x0], [%-*@3 y0] is base point, [%-*@3 cy] the width of line, [%-*@3 line] the current position. Returns the new position.&] [s3;%% &] [s4; &] [s5;:Upp`:`:RectTracker`:`:TrackLine`(int`,int`): [_^Upp`:`:Point^ Point]_[* TrackLine]([@(0.0.255) i nt]_[*@3 x0], [@(0.0.255) int]_[*@3 y0])&] [s2;%% Performs tracking loop of line from the point [%-*@3 x0] [%-*@3 y0]. Returns the new endpoint.&] [s3;%% &] [s4; &] [s5;:RectTracker`:`:RectTracker`(Ctrl`&`): [* RectTracker]([_^Ctrl^ Ctrl][@(0.0.255) `&]_[*@3 m aster])&] [s2;%% Constructs RectTracker, the view area of [%-*@3 master] is used for drawing and coordinate system.&] [s3;%% &] [s0;%% ]]