casa
5.7.0-16
|
Base class for MultiWorldCanvas event-based rectangle tools. More...
#include <MultiPVTool.h>
Public Member Functions | |
MultiPVTool (viewer::RegionSourceFactory *rsf, PanelDisplay *pd, Display::KeySym keysym=Display::K_Pointer_Button1, const casacore::Bool persistent=false) | |
Constructor. More... | |
virtual | ~MultiPVTool () |
Destructor. More... | |
virtual void | disable () |
Switch the tool off - this erases the rectangle, if any, and calls the base class disable. More... | |
virtual void | reset (casacore::Bool skipRefresh=false) |
reset to non-existent, non-active rectangle. More... | |
virtual casacore::Bool | rectangleDefined () |
Is a rectangle currently defined? More... | |
viewer::RegionSource * | getRegionSource () |
void | checkPoint (WorldCanvas *wc, State &state) |
this is a non-const function because a non-const RegionTool ptr is returned in 'state' which can then be used for setting the state of the regions managed by the various tools.... More... | |
void | revokeRegion (viewer::Region *) |
called when the user (read GUI user) indicates that a region should be deleted... More... | |
const std::set < viewer::region::RegionTypes > & | regionsCreated () const |
returns a set which indicates regions this creator creates... More... | |
bool | create (viewer::region::RegionTypes, WorldCanvas *, const std::vector< std::pair< double, double > > &, const std::string &, viewer::region::TextPosition, const std::vector< int > &, const std::string &, int, int, const std::string &, const std::string &, viewer::region::LineStyle, unsigned int, bool, VOID *) |
create regions of various types (e.g. More... | |
RegionToolTypes | type () const |
Public Member Functions inherited from casa::RegionTool | |
RegionTool (Display::KeySym keysym=Display::K_Pointer_Button1) | |
Constructor taking the primary key to which this tool will respond. More... | |
~RegionTool () | |
void | otherKeyReleased (const WCPositionEvent &) |
void | enable () |
DISPLAY_PURE_VIRTUAL(RegionTool::create,true);. More... | |
Public Member Functions inherited from casa::MultiWCTool | |
MultiWCTool (const Display::KeySym &keysym=Display::K_Pointer_Button1, bool enable_events=true) | |
Constructor taking the primary key to which this tool will respond. More... | |
virtual | ~MultiWCTool () |
Destructor. More... | |
virtual void | addWorldCanvas (WorldCanvas &worldcanvas) |
Add/remove a WorldCanvas from the control of this tool. More... | |
virtual void | removeWorldCanvas (WorldCanvas &worldcanvas) |
virtual void | addWorldCanvases (PanelDisplay *pdisp) |
Add/Remove a list of WorldCanvases from PanelDisplay. More... | |
virtual void | removeWorldCanvases (PanelDisplay *pdisp) |
virtual void | operator() (const WCPositionEvent &ev) |
Required operators for event handling - these are called when events occur, and distribute the events to the "user-level" methods. More... | |
virtual void | operator() (const WCMotionEvent &ev) |
default sends event to cout More... | |
virtual void | operator() (const WCRefreshEvent &ev) |
original handler interface (still used for WCRefreshEvents) More... | |
Public Member Functions inherited from casa::DisplayTool | |
virtual | ~DisplayTool () |
Destructor. More... | |
virtual void | setKey (const Display::KeySym &keysym) |
Set/get which key to catch. More... | |
virtual Display::KeySym | getKey () const |
Public Member Functions inherited from casa::WCPositionEH | |
WCPositionEH () | |
Default Constructor Required. More... | |
virtual | ~WCPositionEH () |
Destructor. More... | |
Public Member Functions inherited from casa::WCMotionEH | |
WCMotionEH () | |
Default Constructor Required. More... | |
virtual | ~WCMotionEH () |
Destructor. More... | |
Public Member Functions inherited from casa::WCRefreshEH | |
WCRefreshEH () | |
Default Constructor Required. More... | |
virtual | ~WCRefreshEH () |
Destructor. More... | |
Public Member Functions inherited from casa::DisplayEH | |
virtual void | handleEvent (DisplayEvent &) |
Classes that contain this interface (i.e., derive from it) can override this method to implement actions for whatever types of DisplayEvent they're interested in. More... | |
virtual | ~DisplayEH () |
Public Member Functions inherited from casa::DTVisible | |
DTVisible () | |
Default constructor. More... | |
virtual | ~DTVisible () |
Destructor. More... | |
virtual casacore::String | drawColor () const |
Return the color to use. More... | |
virtual casacore::Int | lineWidth () const |
Return the line width to use. More... | |
virtual casacore::Double | doubleClickInterval () const |
Return the double click interval (in seconds). More... | |
Public Member Functions inherited from casa::viewer::RegionCreator | |
RegionCreator () | |
DISPLAY_PURE_VIRTUAL(RegionCreator::create,true);. More... | |
virtual | ~RegionCreator () |
Protected Member Functions | |
virtual void | keyPressed (const WCPositionEvent &ev) |
Functions called by the base class event handling operators–and normally only those. More... | |
virtual void | keyReleased (const WCPositionEvent &ev) |
virtual void | otherKeyPressed (const WCPositionEvent &ev) |
virtual void | moved (const WCMotionEvent &ev, const viewer::region::region_list_type &) |
virtual void | draw (const WCRefreshEvent &, const viewer::region::region_list_type &) |
draw the rectangle (if any) on the object's currently active WC. More... | |
virtual void | doubleInside () |
Output callback functions–to be overridden in derived class. More... | |
virtual void | doubleOutside () |
virtual void | rectangleReady () |
Called when a rectangle is ready and not being edited. More... | |
virtual void | get (casacore::Int &x1, casacore::Int &y1, casacore::Int &x2, casacore::Int &y2) const |
Retrieve the rectangle coordinates, in screen pixels. More... | |
virtual bool | checkType (viewer::region::RegionTypes t) |
virtual std::shared_ptr < viewer::PVLine > | allocate_region (WorldCanvas *wc, double x1, double y1, double x2, double y2, VOID *region_specific_state) const |
Protected Member Functions inherited from casa::MultiWCTool | |
virtual void | updateRegion () |
virtual void | clicked (casacore::Int, casacore::Int) |
virtual void | doubleClicked (casacore::Int, casacore::Int) |
virtual void | refresh () |
Copy back-to-front buffer (erasing all MWCTool drawings), then cause this (and all MWCTools on current WC's PC) to draw (or not draw) themselves, according to their current state. More... | |
virtual void | setClipToDrawArea () |
Cause subsequent drawing commands to be clipped to the current WC (or its drawing area). More... | |
virtual void | setClipToWC () |
virtual void | resetClip () |
Protected Member Functions inherited from casa::DisplayTool | |
DisplayTool (const Display::KeySym &keysym=Display::K_Pointer_Button1) | |
Constructor taking a key to which this tool will initially be attached, typically one of the pointer buttons. More... | |
DisplayTool (const DisplayTool &other) | |
Copy constructor - construct a new DisplayTool from other , using copy semantics. More... | |
DisplayTool & | operator= (const DisplayTool &other) |
Copy assignment using copy semantics. More... | |
Display::KeyModifier | keyModifiers () |
Return the modifier mask. More... | |
Protected Member Functions inherited from casa::DTVisible | |
DTVisible (const DTVisible &other) | |
(Required) copy constructor. More... | |
DTVisible & | operator= (const DTVisible &other) |
(Required) copy assignment. More... | |
Protected Attributes | |
viewer::RegionSource * | rfactory |
Protected Attributes inherited from casa::MultiWCTool | |
WorldCanvas * | itsCurrentWC |
WC being (or to be) drawn on (may be 0 initially). More... | |
Private Types | |
typedef std::list < std::shared_ptr < viewer::PVLine > > | pvlinelist |
Private Member Functions | |
void | update_stats (const WCMotionEvent &ev) |
void | start_new_rectangle (WorldCanvas *, int x, int y) |
virtual void | set (const casacore::Int &x1, const casacore::Int &y1, const casacore::Int &x2, const casacore::Int &y2) |
set the pixel coordinates of the rectangle More... | |
virtual void | get (casacore::Int &x1, casacore::Int &y1) const |
get only the anchor point More... | |
Private Attributes | |
casacore::Bool | itsPVLineExists |
do we have a rectangle yet? (if true, itsCurrentWC, itsEmitted, P1, and P2 are valid) More... | |
casacore::Bool | itsActive |
was the button pressed in the rectangle (or, if none, in an active WC) and not yet released/reset? More... | |
std::shared_ptr< viewer::PVLine > | resizing_region |
itsActive is being replaced by resizing_region More... | |
std::shared_ptr< viewer::PVLine > | creating_region |
int | resizing_region_handle |
casacore::Bool | itsMoving |
(valid only if itsActive==true): true = being moved false = being resized More... | |
pvlinelist | moving_regions |
itsMoving is being replaced by moving_regions More... | |
double | moving_linx_ |
double | moving_liny_ |
casacore::Bool | itsEmitted |
(valid only if itsPVLineExists==true) Has doubleInside/Outside been called for this rectangle? If so, a key press outside the rectangle will start a new rectangle, as if itsPVLineExists were false. More... | |
casacore::Vector < casacore::Double > | itsP1 |
(Linear) coordinates of the rectangle (invariant over zooms, but not coordinate system changes. More... | |
casacore::Vector < casacore::Double > | itsP2 |
casacore::Vector< casacore::Int > | itsHX |
storage of the handle (pixel) coordinates More... | |
casacore::Vector< casacore::Int > | itsHY |
casacore::Int | itsBaseMoveX |
position that move started from More... | |
casacore::Int | itsBaseMoveY |
casacore::Double | itsLastPressTime |
store the times of the last two presses here: More... | |
casacore::Double | its2ndLastPressTime |
pvlinelist | rectangles |
PanelDisplay * | pd_ |
Additional Inherited Members | |
Public Types inherited from casa::RegionTool | |
enum | RegionToolTypes { POLYTOOL, RECTTOOL, POINTTOOL, ELLIPSETOOL, POLYLINETOOL, PVLINETOOL } |
typedef std::map < viewer::Region *, viewer::region::PointInfo > | region_map_type |
Public Types inherited from casa::viewer::RegionCreator | |
typedef std::list < RegionCreator * > | creator_list_type |
Static Public Member Functions inherited from casa::viewer::RegionCreator | |
static const creator_list_type & | findCreator (region::RegionTypes type) |
Base class for MultiWorldCanvas event-based rectangle tools.
Public interface
<prerequisites> WCTool </prerequisites>
MultiPVTool stands for MultiWorldCanvas PVLine Tool
This class adds to its base WCTool to provide a tool for drawing, resizing and moving rectangles on a WorldCanvas. While MultiPVTool is not abstract, it performs no useful function. The programmer should derive from this class, and implement the functions doubleInside and doubleOutside, which are called when the user double-clicks the key or mouse button inside or outside an existing rectangle respectively. It is up to the programmer to decide what double clicks inside and outside the rectangle correspond to, although it is recommended that a double click inside correspond to the main action of the tool, and a double click outside correspond to a secondary action of the tool, if indeed a secondary action exists.
The rectangle is drawn by dragging the mouse from one corner to the diagonally opposite corner. Once constructed, the rectangle can be resized by dragging its corners, or relocated by dragging inside the rectangle. The rectangle is removed from the display when the Esc key is pressed.
Many activities on the WorldCanvas will be based on the user drawing a rectangle, and then proceeding to some action with that rectangle. A nice example is zooming.
Definition at line 92 of file MultiPVTool.h.
|
private |
Definition at line 185 of file MultiPVTool.h.
casa::MultiPVTool::MultiPVTool | ( | viewer::RegionSourceFactory * | rsf, |
PanelDisplay * | pd, | ||
Display::KeySym | keysym = Display::K_Pointer_Button1 , |
||
const casacore::Bool | persistent = false |
||
) |
Constructor.
|
virtual |
Destructor.
|
protectedvirtual |
|
virtual |
this is a non-const function because a non-const RegionTool ptr is returned in 'state' which can then be used for setting the state of the regions managed by the various tools....
Implements casa::RegionTool.
|
inlineprotectedvirtual |
Definition at line 176 of file MultiPVTool.h.
References casa::viewer::region::PVLineRegion.
|
virtual |
create regions of various types (e.g.
point, rect, poly, etc.). For use when loading casa region files...
Implements casa::RegionTool.
|
virtual |
Switch the tool off - this erases the rectangle, if any, and calls the base class disable.
Reimplemented from casa::RegionTool.
|
inlineprotectedvirtual |
Output callback functions–to be overridden in derived class.
Called when there is a double click inside/outside the rectangle
Reimplemented in casa::MultiPVToolImpl.
Definition at line 162 of file MultiPVTool.h.
|
inlineprotectedvirtual |
Definition at line 163 of file MultiPVTool.h.
|
protectedvirtual |
draw the rectangle (if any) on the object's currently active WC.
Only to be called by the base class refresh event handler. Derived objects should use refresh() if they need to redraw, but even that is normally handled automatically.
Reimplemented from casa::RegionTool.
|
protectedvirtual |
Retrieve the rectangle coordinates, in screen pixels.
Anchor (if applicable) is (x1,y1). Valid during the output callbacks; to be used by them, as well as internally.
|
privatevirtual |
get only the anchor point
|
inline |
Definition at line 118 of file MultiPVTool.h.
References rfactory.
|
protectedvirtual |
Functions called by the base class event handling operators–and normally only those.
This is the input that controls the rectangle's appearance and action. When the rectangle is ready and double-click is received, the doubleInside/Outside routine will be invoked.
Reimplemented from casa::RegionTool.
|
protectedvirtual |
Reimplemented from casa::RegionTool.
|
protectedvirtual |
Reimplemented from casa::RegionTool.
|
protectedvirtual |
Reimplemented from casa::RegionTool.
|
inlinevirtual |
Is a rectangle currently defined?
Definition at line 114 of file MultiPVTool.h.
References itsPVLineExists.
|
inlineprotectedvirtual |
Called when a rectangle is ready and not being edited.
(Unused so far on the glish level (12/01)).
Definition at line 168 of file MultiPVTool.h.
|
virtual |
returns a set which indicates regions this creator creates...
Implements casa::viewer::RegionCreator.
|
virtual |
reset to non-existent, non-active rectangle.
Refreshes if necessary to erase (unless skipRefresh==true In that case, the caller should do the refresh itself). (Does not unregister from WCs or disable future event handling).
Reimplemented from casa::MultiWCTool.
|
virtual |
called when the user (read GUI user) indicates that a region should be deleted...
Implements casa::RegionTool.
|
privatevirtual |
set the pixel coordinates of the rectangle
|
private |
|
inlinevirtual |
Implements casa::RegionTool.
Definition at line 136 of file MultiPVTool.h.
References casa::RegionTool::PVLINETOOL.
|
private |
|
private |
Definition at line 204 of file MultiPVTool.h.
|
private |
Definition at line 236 of file MultiPVTool.h.
|
private |
was the button pressed in the rectangle (or, if none, in an active WC) and not yet released/reset?
Definition at line 201 of file MultiPVTool.h.
|
private |
position that move started from
Definition at line 233 of file MultiPVTool.h.
|
private |
Definition at line 233 of file MultiPVTool.h.
|
private |
(valid only if itsPVLineExists==true) Has doubleInside/Outside been called for this rectangle? If so, a key press outside the rectangle will start a new rectangle, as if itsPVLineExists were false.
However, a key press inside the rectangle will reset itsEmitted to false, allowing the rectangle to be reused (possibly moved or resized, and emitted again).
Definition at line 222 of file MultiPVTool.h.
|
private |
storage of the handle (pixel) coordinates
Definition at line 230 of file MultiPVTool.h.
|
private |
Definition at line 230 of file MultiPVTool.h.
|
private |
store the times of the last two presses here:
Definition at line 236 of file MultiPVTool.h.
|
private |
(valid only if itsActive==true): true = being moved false = being resized
Definition at line 209 of file MultiPVTool.h.
|
private |
(Linear) coordinates of the rectangle (invariant over zooms, but not coordinate system changes.
To do: support the WorldCoordinateChange refresh reason, and reset this tool when it occurs).
Definition at line 227 of file MultiPVTool.h.
|
private |
Definition at line 227 of file MultiPVTool.h.
|
private |
do we have a rectangle yet? (if true, itsCurrentWC, itsEmitted, P1, and P2 are valid)
Definition at line 197 of file MultiPVTool.h.
Referenced by rectangleDefined().
|
private |
Definition at line 212 of file MultiPVTool.h.
|
private |
Definition at line 213 of file MultiPVTool.h.
|
private |
itsMoving is being replaced by moving_regions
Definition at line 211 of file MultiPVTool.h.
|
private |
Definition at line 239 of file MultiPVTool.h.
|
private |
Definition at line 238 of file MultiPVTool.h.
|
private |
itsActive is being replaced by resizing_region
Definition at line 203 of file MultiPVTool.h.
|
private |
Definition at line 205 of file MultiPVTool.h.
|
protected |
Definition at line 182 of file MultiPVTool.h.
Referenced by getRegionSource().