casa  5.7.0-16
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Protected Member Functions | Private Types | Private Member Functions | Private Attributes | List of all members
casa::MultiPolylineTool Class Reference

Base class for WorldCanvas event-based polyline tools. More...

#include <MultiPolylineTool.h>

Inheritance diagram for casa::MultiPolylineTool:
casa::RegionTool casa::DTVisible casa::viewer::RegionCreator casa::MultiWCTool casa::DisplayTool casa::WCPositionEH casa::WCMotionEH casa::WCRefreshEH casa::DisplayEH casa::MultiPolylineToolImpl casa::QtPolylineToolRegion casa::QtPolylineTool

Public Member Functions

 MultiPolylineTool (viewer::RegionSourceFactory *rsf, PanelDisplay *pd, Display::KeySym keysym=Display::K_Pointer_Button1, const casacore::Bool persistent=false)
 Constructor. More...
 
virtual ~MultiPolylineTool ()
 Destructor. More...
 
virtual void disable ()
 Switch the tool off - this calls the base class disable, and then erases the polyline if it's around. More...
 
virtual void reset (casacore::Bool skipRefresh=false)
 reset to non-existent, non-active polyline. More...
 
virtual casacore::Bool polylineDefined ()
 Is a polyline currently defined? More...
 
viewer::RegionSourcegetRegionSource ()
 
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 &)
 Functions called by the base class event handling operators–and normally only those. More...
 
virtual void moved (const WCMotionEvent &, const viewer::region::region_list_type &)
 
virtual void keyReleased (const WCPositionEvent &)
 
virtual void otherKeyPressed (const WCPositionEvent &)
 
virtual void draw (const WCRefreshEvent &, const viewer::region::region_list_type &)
 draw the polyline (if any) on the object's currently active WC. More...
 
virtual void doubleInside ()
 Output callback functions–to be overridden in derived class as needed. More...
 
virtual void doubleOutside ()
 
virtual void polylineReady ()
 casacore::Function called when a polyline is ready and not being edited. More...
 
virtual void get (casacore::Vector< casacore::Int > &x, casacore::Vector< casacore::Int > &y) const
 Retrieve polyline vertices, or a single vertex, in screen pixels. More...
 
virtual void get (casacore::Int &x, casacore::Int &y, const casacore::Int pt) const
 
virtual bool checkType (viewer::region::RegionTypes t)
 
- 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...
 
DisplayTooloperator= (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...
 
DTVisibleoperator= (const DTVisible &other)
 (Required) copy assignment. More...
 

Private Types

enum  AdjustMode {
  Off,
  Def,
  Ready,
  Move,
  Resize
}
 state of the polyline tool More...
 
typedef std::list
< std::shared_ptr
< viewer::Polyline > > 
polylinelist
 

Private Member Functions

void start_new_polyline (WorldCanvas *, int x, int y)
 
virtual void set (const casacore::Vector< casacore::Int > &x, const casacore::Vector< casacore::Int > &y)
 Set the polyline vertices. More...
 
virtual void set (const casacore::Int x, const casacore::Int y, const casacore::Int pt)
 replace a single vertex. More...
 
void pushPoint (casacore::Int x1, casacore::Int y1)
 push/pop last vertex More...
 
void popPoint ()
 
casacore::Bool inPolyline (const casacore::Int &x, const casacore::Int &y) const
 are we inside the polyline? More...
 
casacore::Bool inHandle (const casacore::Int &pt, const casacore::Int &x, const casacore::Int &y) const
 are we within the specified handle? More...
 

Private Attributes

std::shared_ptr< viewer::Polylineresizing_region
 
std::shared_ptr< viewer::Polylinecreating_region
 
casacore::Bool itsPolylinePersistent
 should the polyline remain on screen after double clicks? More...
 
MultiPolylineTool::AdjustMode itsMode
 
casacore::Bool itsEmitted
 set true on double-click, if the polyline is persistent. More...
 
casacore::Int itsNPoints
 Number of points. More...
 
casacore::Vector
< casacore::Double
itsX
 Polyline points (linear). More...
 
casacore::Vector
< casacore::Double
itsY
 
casacore::Int itsX1
 pixel coordinates of the pan vector. More...
 
casacore::Int itsY1
 
casacore::Int itsX2
 
casacore::Int itsY2
 
casacore::Int itsX3
 
casacore::Int itsY3
 
casacore::Int itsHandleSize
 size in pixels of the handles More...
 
casacore::Int itsSelectedHandle
 vertex being moved More...
 
casacore::Int itsBaseMoveX
 position that move started from More...
 
casacore::Int itsBaseMoveY
 
int resizing_region_handle
 may not be needed... More...
 
polylinelist moving_regions
 
double moving_linx_
 
double moving_liny_
 
std::shared_ptr< viewer::Polylinebuilding_polyline
 
viewer::RegionSourcerfactory
 
polylinelist polylines
 
PanelDisplaypd_
 

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_typefindCreator (region::RegionTypes type)
 
- Protected Attributes inherited from casa::MultiWCTool
WorldCanvasitsCurrentWC
 WC being (or to be) drawn on (may be 0 initially). More...
 

Detailed Description

Base class for WorldCanvas event-based polyline tools.

Intended use:

Public interface

Review Status

Date Reviewed:
yyyy/mm/dd

<prerequisites> (see ())WCTool </prerequisites>

Etymology

MultiPolylineTool stands for Multi-WorldCanvas Polyline Tool

Synopsis

This class adds to its base MWCTool to provide a tool for drawing, reshaping and moving polylines on a WorldCanvas. While MultiPolylineTool is not abstract, it performs no useful function. The programmer should derive from this class and override the functions doubleInside and doubleOutside at the very least. These are called when the user double-clicks a particular key or mouse button inside or outside an existing polyline respectively. It is up to the programmer to decide what these events mean, but it is recommended that an internal double- click correspond to the main action of the tool, eg. emitting the polyline vertices to the application, and that an external double-click correspond to a secondary action of the tool, if indeed there are additional actions suitable to the tool.

The polyline is drawn by clicking at each of the vertices, and clicking again on the last or first vertex to complete the polyline. Once drawn, the vertices can be moved by dragging their handles, and the entire polyline relocated by dragging inside the polyline. The polyline is removed from the display when the Esc key is pressed.

Example

Definition at line 82 of file MultiPolylineTool.h.

Member Typedef Documentation

typedef std::list<std::shared_ptr<viewer::Polyline> > casa::MultiPolylineTool::polylinelist
private

Definition at line 172 of file MultiPolylineTool.h.

Member Enumeration Documentation

state of the polyline tool

Enumerator
Off 
Def 
Ready 
Move 
Resize 

Definition at line 202 of file MultiPolylineTool.h.

Constructor & Destructor Documentation

casa::MultiPolylineTool::MultiPolylineTool ( viewer::RegionSourceFactory rsf,
PanelDisplay pd,
Display::KeySym  keysym = Display::K_Pointer_Button1,
const casacore::Bool  persistent = false 
)

Constructor.

virtual casa::MultiPolylineTool::~MultiPolylineTool ( )
virtual

Destructor.

Member Function Documentation

void casa::MultiPolylineTool::checkPoint ( WorldCanvas wc,
State state 
)
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.

virtual bool casa::MultiPolylineTool::checkType ( viewer::region::RegionTypes  t)
inlineprotectedvirtual

Definition at line 167 of file MultiPolylineTool.h.

References casa::viewer::region::PolylineRegion.

bool casa::MultiPolylineTool::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  
)
virtual

create regions of various types (e.g.

point, rect, poly, etc.). For use when loading casa region files...

Implements casa::RegionTool.

virtual void casa::MultiPolylineTool::disable ( )
virtual

Switch the tool off - this calls the base class disable, and then erases the polyline if it's around.

Reimplemented from casa::RegionTool.

virtual void casa::MultiPolylineTool::doubleInside ( )
inlineprotectedvirtual

Output callback functions–to be overridden in derived class as needed.

Called when there is a double click inside/outside the polyline

Reimplemented in casa::MultiPolylineToolImpl.

Definition at line 151 of file MultiPolylineTool.h.

virtual void casa::MultiPolylineTool::doubleOutside ( )
inlineprotectedvirtual

Definition at line 152 of file MultiPolylineTool.h.

virtual void casa::MultiPolylineTool::draw ( const WCRefreshEvent ,
const viewer::region::region_list_type  
)
protectedvirtual

draw the polyline (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 by this class.

Reimplemented from casa::RegionTool.

virtual void casa::MultiPolylineTool::get ( casacore::Vector< casacore::Int > &  x,
casacore::Vector< casacore::Int > &  y 
) const
protectedvirtual

Retrieve polyline vertices, or a single vertex, in screen pixels.

Valid results during the callback functions; to be used by them, as well as internally.

virtual void casa::MultiPolylineTool::get ( casacore::Int x,
casacore::Int y,
const casacore::Int  pt 
) const
protectedvirtual
viewer::RegionSource* casa::MultiPolylineTool::getRegionSource ( )
inline

Definition at line 107 of file MultiPolylineTool.h.

References rfactory.

casacore::Bool casa::MultiPolylineTool::inHandle ( const casacore::Int pt,
const casacore::Int x,
const casacore::Int y 
) const
private

are we within the specified handle?

casacore::Bool casa::MultiPolylineTool::inPolyline ( const casacore::Int x,
const casacore::Int y 
) const
private

are we inside the polyline?

virtual void casa::MultiPolylineTool::keyPressed ( const WCPositionEvent )
protectedvirtual

Functions called by the base class event handling operators–and normally only those.

This is the input that controls the polyline's appearance and action. When the polyline is ready and double-click is received, the doubleInside/Outside routine is invoked.

Reimplemented from casa::RegionTool.

virtual void casa::MultiPolylineTool::keyReleased ( const WCPositionEvent )
protectedvirtual

Reimplemented from casa::RegionTool.

virtual void casa::MultiPolylineTool::moved ( const WCMotionEvent ,
const viewer::region::region_list_type  
)
protectedvirtual

Reimplemented from casa::RegionTool.

virtual void casa::MultiPolylineTool::otherKeyPressed ( const WCPositionEvent )
protectedvirtual

Reimplemented from casa::RegionTool.

virtual casacore::Bool casa::MultiPolylineTool::polylineDefined ( )
inlinevirtual

Is a polyline currently defined?

Definition at line 103 of file MultiPolylineTool.h.

References itsMode, and Ready.

virtual void casa::MultiPolylineTool::polylineReady ( )
inlineprotectedvirtual

casacore::Function called when a polyline is ready and not being edited.

(Unused so far on the glish level (12/01)).

Reimplemented in casa::QtPolylineToolRegion.

Definition at line 157 of file MultiPolylineTool.h.

void casa::MultiPolylineTool::popPoint ( )
private
void casa::MultiPolylineTool::pushPoint ( casacore::Int  x1,
casacore::Int  y1 
)
private

push/pop last vertex

const std::set<viewer::region::RegionTypes>& casa::MultiPolylineTool::regionsCreated ( ) const
virtual

returns a set which indicates regions this creator creates...

Implements casa::viewer::RegionCreator.

virtual void casa::MultiPolylineTool::reset ( casacore::Bool  skipRefresh = false)
virtual

reset to non-existent, non-active polyline.

Refreshes if necessary to erase (unless skipRefresh==true). (Does not unregister from WCs or disable future event handling).

Reimplemented from casa::MultiWCTool.

void casa::MultiPolylineTool::revokeRegion ( viewer::Region )
virtual

called when the user (read GUI user) indicates that a region should be deleted...

Implements casa::RegionTool.

virtual void casa::MultiPolylineTool::set ( const casacore::Vector< casacore::Int > &  x,
const casacore::Vector< casacore::Int > &  y 
)
privatevirtual

Set the polyline vertices.

itsNPoints should already be set, and x and y must contain (at least) this many points.

virtual void casa::MultiPolylineTool::set ( const casacore::Int  x,
const casacore::Int  y,
const casacore::Int  pt 
)
privatevirtual

replace a single vertex.

void casa::MultiPolylineTool::start_new_polyline ( WorldCanvas ,
int  x,
int  y 
)
private
RegionToolTypes casa::MultiPolylineTool::type ( ) const
inlinevirtual

Implements casa::RegionTool.

Definition at line 125 of file MultiPolylineTool.h.

References casa::RegionTool::POLYLINETOOL.

Member Data Documentation

std::shared_ptr<viewer::Polyline> casa::MultiPolylineTool::building_polyline
private

Definition at line 244 of file MultiPolylineTool.h.

std::shared_ptr<viewer::Polyline> casa::MultiPolylineTool::creating_region
private

Definition at line 183 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsBaseMoveX
private

position that move started from

Definition at line 235 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsBaseMoveY
private

Definition at line 235 of file MultiPolylineTool.h.

casacore::Bool casa::MultiPolylineTool::itsEmitted
private

set true on double-click, if the polyline is persistent.

set false when the polyline is moved, resized or reset. If true, a click outside the polyline will erase it and begin definition of a new one.

Definition at line 215 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsHandleSize
private

size in pixels of the handles

Definition at line 229 of file MultiPolylineTool.h.

MultiPolylineTool::AdjustMode casa::MultiPolylineTool::itsMode
private

Definition at line 209 of file MultiPolylineTool.h.

Referenced by polylineDefined().

casacore::Int casa::MultiPolylineTool::itsNPoints
private

Number of points.

Definition at line 218 of file MultiPolylineTool.h.

casacore::Bool casa::MultiPolylineTool::itsPolylinePersistent
private

should the polyline remain on screen after double clicks?

Definition at line 199 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsSelectedHandle
private

vertex being moved

Definition at line 232 of file MultiPolylineTool.h.

casacore::Vector<casacore::Double> casa::MultiPolylineTool::itsX
private

Polyline points (linear).

Not to be used directly. use get, set, push, pop instead, which take pixel coordinate arguments. It's done this way so that zooms work on the figures.

Definition at line 223 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsX1
private

pixel coordinates of the pan vector.

1 = anchor, 2 = new position.

Definition at line 225 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsX2
private

Definition at line 225 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsX3
private

Definition at line 225 of file MultiPolylineTool.h.

casacore::Vector<casacore::Double> casa::MultiPolylineTool::itsY
private

Definition at line 223 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsY1
private

Definition at line 225 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsY2
private

Definition at line 225 of file MultiPolylineTool.h.

casacore::Int casa::MultiPolylineTool::itsY3
private

Definition at line 225 of file MultiPolylineTool.h.

double casa::MultiPolylineTool::moving_linx_
private

Definition at line 241 of file MultiPolylineTool.h.

double casa::MultiPolylineTool::moving_liny_
private

Definition at line 242 of file MultiPolylineTool.h.

polylinelist casa::MultiPolylineTool::moving_regions
private

Definition at line 240 of file MultiPolylineTool.h.

PanelDisplay* casa::MultiPolylineTool::pd_
private

Definition at line 247 of file MultiPolylineTool.h.

polylinelist casa::MultiPolylineTool::polylines
private

Definition at line 246 of file MultiPolylineTool.h.

std::shared_ptr<viewer::Polyline> casa::MultiPolylineTool::resizing_region
private

Definition at line 182 of file MultiPolylineTool.h.

int casa::MultiPolylineTool::resizing_region_handle
private

may not be needed...

Definition at line 238 of file MultiPolylineTool.h.

viewer::RegionSource* casa::MultiPolylineTool::rfactory
private

Definition at line 245 of file MultiPolylineTool.h.

Referenced by getRegionSource().


The documentation for this class was generated from the following file: