CanvasCV: canvascv::Shape Class Reference
CanvasCV  1.0.0

The Shape class hierarchy is for geomertric user interaction. More...

#include <shape.h>

Inheritance diagram for canvascv::Shape:
canvascv::CompoundShape canvascv::Handle canvascv::TextBox canvascv::Line canvascv::LineCrossing canvascv::Polygon canvascv::Rectangle canvascv::Arrow canvascv::ShapesConnector canvascv::Ellipse canvascv::LabeledShapesConnector

Public Types

typedef std::function< void(Shape *, Event)> CBPerShape
 signature of a callback which gets the Event
 

Public Member Functions

 Shape ()
 constructor
 
 Shape (const Shape &other)
 copy constructor
 
virtual ~Shape ()
 virtual destructor
 
void notifyOnEvent (CBPerShape cb)
 used to register for notifications on shape More...
 
virtual std::list< Handle * > getConnectionTargets ()=0
 getConnectionTargets More...
 
cv::Scalar getOutlineColor () const
 get the outline color
 
virtual void setOutlineColor (const cv::Scalar &value)
 set the outline color
 
cv::Scalar getFillColor () const
 get the fill color (fill color is not very useful for shapes right now)
 
virtual void setFillColor (const cv::Scalar &value)
 set the fill color (fill color is not very useful for shapes right now)
 
bool getLocked () const
 is the shape locked (can't be moved/edited)
 
virtual void setLocked (bool value)
 set the shape lock state (can/can't be moved/edited)
 
bool getVisible () const
 is the shape visible
 
virtual void setVisible (bool value)
 set the shape visible state
 
virtual const char * getType () const =0
 getType is always implemented by derived to return the same static pointer per shape. More...
 
int getThickness () const
 get line thickness to use when drawing
 
virtual void setThickness (int value)
 set line thickness to use when drawing
 
int getLineType () const
 get the line type (LINE_4, LINE_8, LINE_AA)
 
virtual void setLineType (int value)
 set the line type (LINE_4, LINE_8, LINE_AA)
 
virtual bool isAtPos (const cv::Point &pos)=0
 returns true if shape is at pos, false otherwise
 
int getId ()
 return a unique id for this shape
 

Protected Member Functions

virtual bool mousePressed (const cv::Point &pos, bool onCreate=false)=0
 mousePressed More...
 
virtual bool mouseMoved (const cv::Point &pos)=0
 mouseMoved More...
 
virtual std::shared_ptr< ShapegetShape (int id)
 getShape More...
 
virtual bool keyPressed (int &key)
 keyPressed will be called by Canvas for active shapes More...
 
virtual void lostFocus ()
 lostFocus is called by Canvas if we're in it and just became non-active
 
virtual bool mouseReleased (const cv::Point &pos)=0
 mouseReleased More...
 
virtual void draw (cv::Mat &canvas)=0
 draw shape on the canvas More...
 
void drawHelper (cv::Mat &canvas, Shape *other)
 helper method for non compund shapes to draw their members
 

Detailed Description

Use shapes to get on screen selections and landmark settings from your user.

See also
ThemeRepository for using themes.
Canvas for creating shapes.
Note
All shapes are create either with the mouse or by the Canvas::createShape() methods. This method will return a shared_ptr<T> instance, which you don't have to keep since another one is kept by the Canvas in which the shape is placed. Never use delete on a Shape pointer.
Examples:
example_linecrossing.cpp, and example_shapes_widgets.cpp.

Member Enumeration Documentation

Enumerator
SELECT 

shape selected

UNSELECT 

shape unselected

REMOVED 

shape removed

Member Function Documentation

virtual void canvascv::Shape::draw ( cv::Mat &  canvas)
protectedpure virtual
virtual std::list<Handle*> canvascv::Shape::getConnectionTargets ( )
pure virtual

Return a list of Handles this shape allows to connect to from other shapes (mainly for ShapesConnector)

Returns
list of Handle pointers we ShapesConnector can use to connect

Implemented in canvascv::Line, canvascv::LineCrossing, canvascv::ShapesConnector, canvascv::Handle, canvascv::TextBox, canvascv::Polygon, and canvascv::Rectangle.

virtual std::shared_ptr<Shape> canvascv::Shape::getShape ( int  id)
protectedvirtual

Get internal shapes, which Canvas doesn't know of.

Parameters
id
Returns
internal sub shape with requested id

Reimplemented in canvascv::TextBox, and canvascv::CompoundShape.

virtual const char* canvascv::Shape::getType ( ) const
pure virtual
virtual bool canvascv::Shape::keyPressed ( int &  key)
protectedvirtual
Parameters
keywas pressed. You must set it to -1 if you consumed it.
Returns
true if we want to stay in focus and false otherwise

Reimplemented in canvascv::Line, canvascv::TextBox, canvascv::Polygon, canvascv::CompoundShape, and canvascv::Rectangle.

virtual bool canvascv::Shape::mouseMoved ( const cv::Point &  pos)
protectedpure virtual
  1. Was a mouse moved over this shape?
  2. If shape is during edit, then these are the mouse position.
    Parameters
    pos
    Returns
    true if a mouse moved over this shape, or it is during edit. false otherwise.

Implemented in canvascv::Line, canvascv::TextBox, canvascv::Handle, canvascv::Polygon, canvascv::Rectangle, and canvascv::CompoundShape.

virtual bool canvascv::Shape::mousePressed ( const cv::Point &  pos,
bool  onCreate = false 
)
protectedpure virtual
Parameters
pos
onCreateis true if this is the mouse press which cerated this shape
Returns
true for keep in focus, false for leave focus

Implemented in canvascv::Line, canvascv::LineCrossing, canvascv::TextBox, canvascv::Handle, canvascv::ShapesConnector, canvascv::Polygon, canvascv::Rectangle, and canvascv::CompoundShape.

virtual bool canvascv::Shape::mouseReleased ( const cv::Point &  pos)
protectedpure virtual
Parameters
pos
Returns
true for keep in focus, false for leave focus

Implemented in canvascv::Line, canvascv::TextBox, canvascv::Handle, canvascv::ShapesConnector, canvascv::Polygon, canvascv::Rectangle, and canvascv::CompoundShape.

void canvascv::Shape::notifyOnEvent ( CBPerShape  cb)
Parameters
cbto invoke on shape event

The documentation for this class was generated from the following file:
  • CanvasCV-doxygen/src/canvascv/shapes/shape.h