class RectTracker : public LocalLoop
RectTracker is a class that represent repositioning modal loop. It can reposition and/or resize rectangle or line as single modal operation.
Callback1<Rect> sync
This callback is called each time the dimensions change.
Callback1<Rect&> round
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.
RectTracker& SetCursorImage(const Image& m)
Sets the mouse cursor appearance during the loop.
RectTracker& MinSize(Size sz)
Sets the minimal size of rectangle.
RectTracker& MaxSize(Size sz)
Sets the maximal size of rectangle.
RectTracker& MaxRect(const Rect& mr)
Sets the bounding rectangle which the resulting rectangle cannot exceed.
RectTracker& Clip(const Rect& c)
Sets the clipping rectangle.
RectTracker& Width(int n)
Sets the width of tracking rectangle shape lines.
RectTracker& SetColor(Color c)
Sets the color of tracking rectangle (if on white background).
RectTracker& Pattern(int p)
Sets the pattern used to drive lines. p can be one of
|
DRAWDRAGRECT_SOLID
|
solid line
|
DRAWDRAGRECT_NORMAL
|
line of alternating single dots - default
|
DRAWDRAGRECT_DASHED
|
line of alternating 4 pixel segments
|
|
RectTracker& Dashed()
Same as Pattern(DRAWDRAGRECT_DASH).
RectTracker& Solid()
Same as Pattern(DRAWDRAGRECT_SOLID).
RectTracker& Normal()
Same as Pattern(DRAWDRAGRECT_NORMAL). This is default.
RectTracker& Animation(int step_ms = 40)
Activates pattern animation.
RectTracker& KeepRatio(bool b)
Forces rectangle to keep the original ratio.
RectTracker& Round(Rounder& r)
Sets the rounding object. This is somewhat obsoleted by round callback.
Rect Get()
Returns the current tracking rectangle.
Rect Track(const Rect& r, int tx = ALIGN_RIGHT, int ty = ALIGN_BOTTOM)
Performs the modal rectangle tracking loop. tx and ty specify which edge or corner of rectangle is being changed:
|
tx
|
ty
|
Changed
|
ALIGN_LEFT
|
ALIGN_TOP
|
Top-left corner.
|
ALIGN_LEFT
|
ALIGN_CENTER
|
Left edge.
|
ALIGN_LEFT
|
ALIGN_BOTTOM
|
Bottom-left corner.
|
ALIGN_CENTER
|
ALIGN_TOP
|
Top edge.
|
ALIGN_CENTER
|
ALIGN_CENTER
|
Rectangle is moved.
|
ALIGN_CENTER
|
ALIGN_BOTTOM
|
Bottom edge.
|
ALIGN_RIGHT
|
ALIGN_TOP
|
Top-right corner.
|
ALIGN_RIGHT
|
ALIGN_CENTER
|
Right edge.
|
ALIGN_RIGHT
|
ALIGN_BOTTOM
|
Bottom-right corner.
|
|
|
Returns a new rectangle.
int TrackHorzLine(int x0, int y0, int cx, int line)
Performs tracking loop of horizontal line. x0, y0 is base point, cx the width of line, line the current position. Returns the new position.
int TrackVertLine(int x0, int y0, int cy, int line)
Performs tracking loop of vertical line. x0, y0 is base point, cy the width of line, line the current position. Returns the new position.
Point TrackLine(int x0, int y0)
Performs tracking loop of line from the point x0 y0. Returns the new endpoint.
RectTracker(Ctrl& master)
Constructs RectTracker, the view area of master is used for drawing and coordinate system.
|