#include <MRPickPointManager.h>
Inheritance diagram for MR::PickPointManager:Classes | |
| struct | ObjectState |
| struct | Params |
| struct | WidgetHistoryAction |
| A common base class for all history actions of this widget. More... | |
Public Types | |
| using | PickerPointCallBack = std::function<void( std::shared_ptr<VisualObject> obj, int index )> |
| using | AllowCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj, int index )> |
| using | ChangeObjectCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj )> |
| using | SurfaceContour = std::vector<std::shared_ptr<SurfacePointWidget>> |
| using | SurfaceContours = std::unordered_map <std::shared_ptr<VisualObject>, SurfaceContour> |
| using | FullState = std::vector<ObjectState> |
Public Member Functions | |
| MRVIEWER_API | PickPointManager () |
| create an object and starts listening for mouse events | |
| MRVIEWER_API | ~PickPointManager () |
| destroy this and remove the undo/redo actions referring this from the history. | |
| const SurfaceContour & | getSurfaceContour (const std::shared_ptr< VisualObject > &obj) |
| return contour for specific object (creating new one if necessary) | |
| const SurfaceContours & | getSurfaceContours () const |
| return all contours, i.e. per object unorderd_map of ordered surface points [vector]. | |
| MRVIEWER_API bool | isClosedContour (const std::shared_ptr< VisualObject > &obj) const |
| check whether the contour is closed for a particular object. | |
| MRVIEWER_API size_t | numPickPoints (const std::shared_ptr< VisualObject > &obj) const |
| returns the total number of pick points (including extra point if the contour is closed) on given object | |
| MRVIEWER_API std::shared_ptr< SurfacePointWidget > | getPointWidget (const std::shared_ptr< VisualObject > &obj, int index) const |
| returns point widget by index from given object or nullptr if no such widget exists | |
| MRVIEWER_API int | getPointIndex (const std::shared_ptr< VisualObject > &obj, SurfacePointWidget &pointWidget) const |
| returns index of given point widget on given object or -1 if this widget is not from given object | |
| SurfacePointWidget * | draggedPointWidget () const |
| returns point widget currently dragged by mouse | |
| MRVIEWER_API bool | appendPoint (const std::shared_ptr< VisualObject > &obj, const PickedPoint &triPoint, bool startDragging=false) |
| MRVIEWER_API bool | insertPoint (const std::shared_ptr< VisualObject > &obj, int index, const PickedPoint &triPoint, bool startDragging=false) |
| MRVIEWER_API bool | removePoint (const std::shared_ptr< VisualObject > &obj, int pickedIndex) |
| Remove point with pickedIndex index from contour connected with obj. | |
| MRVIEWER_API bool | closeContour (const std::shared_ptr< VisualObject > &obj, bool makeClosed=true) |
| MRVIEWER_API FullState | getFullState () const |
| returns the state of this | |
| MRVIEWER_API void | clear () |
| removes all points from all objects | |
| MRVIEWER_API void | setFullState (FullState s) |
| removes all current points, then adds pick points on all objects as prescribed by given state | |
Public Member Functions inherited from MR::MultiListener< MouseDownListener, MouseMoveListener > | |
| virtual | ~MultiListener ()=default |
| virtual void | connect (Viewer *viewer, int group=0, boost::signals2::connect_position pos=boost::signals2::connect_position::at_back) |
| virtual void | disconnect () |
Public Attributes | |
| Params | params |
PickPointManager allows the user to pick/move/delete several ordered points on one or more visual objects; mouse events and public methods automatically add history actions for reverting (if enabled)
| using MR::PickPointManager::AllowCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj, int index )> |
| using MR::PickPointManager::ChangeObjectCallBack = std::function<bool( const std::shared_ptr<VisualObject>& obj )> |
| using MR::PickPointManager::FullState = std::vector<ObjectState> |
| using MR::PickPointManager::PickerPointCallBack = std::function<void( std::shared_ptr<VisualObject> obj, int index )> |
| using MR::PickPointManager::SurfaceContour = std::vector<std::shared_ptr<SurfacePointWidget>> |
| using MR::PickPointManager::SurfaceContours = std::unordered_map <std::shared_ptr<VisualObject>, SurfaceContour> |
| MRVIEWER_API MR::PickPointManager::PickPointManager | ( | ) |
create an object and starts listening for mouse events
| MRVIEWER_API MR::PickPointManager::~PickPointManager | ( | ) |
destroy this and remove the undo/redo actions referring this from the history.
| MRVIEWER_API bool MR::PickPointManager::appendPoint | ( | const std::shared_ptr< VisualObject > & | obj, |
| const PickedPoint & | triPoint, | ||
| bool | startDragging = false ) |
Add a point to the end of non closed contour connected with obj
| startDragging | if true then new point widget is immediately made draggable by mouse, please be sure that mouse is over new point and is down |
| MRVIEWER_API void MR::PickPointManager::clear | ( | ) |
removes all points from all objects
| MRVIEWER_API bool MR::PickPointManager::closeContour | ( | const std::shared_ptr< VisualObject > & | obj, |
| bool | makeClosed = true ) |
|
inlinenodiscard |
returns point widget currently dragged by mouse
| MRVIEWER_API FullState MR::PickPointManager::getFullState | ( | ) | const |
returns the state of this
|
nodiscard |
returns index of given point widget on given object or -1 if this widget is not from given object
|
nodiscard |
returns point widget by index from given object or nullptr if no such widget exists
|
inlinenodiscard |
return contour for specific object (creating new one if necessary)
|
inlinenodiscard |
return all contours, i.e. per object unorderd_map of ordered surface points [vector].
| MRVIEWER_API bool MR::PickPointManager::insertPoint | ( | const std::shared_ptr< VisualObject > & | obj, |
| int | index, | ||
| const PickedPoint & | triPoint, | ||
| bool | startDragging = false ) |
Inserts a point into contour connected with obj
| index | point index before which to insert new point |
| startDragging | if true then new point widget is immediately made draggable by mouse, please be sure that mouse is over new point and is down |
|
nodiscard |
check whether the contour is closed for a particular object.
|
nodiscard |
returns the total number of pick points (including extra point if the contour is closed) on given object
| MRVIEWER_API bool MR::PickPointManager::removePoint | ( | const std::shared_ptr< VisualObject > & | obj, |
| int | pickedIndex ) |
Remove point with pickedIndex index from contour connected with obj.
| MRVIEWER_API void MR::PickPointManager::setFullState | ( | FullState | s | ) |
removes all current points, then adds pick points on all objects as prescribed by given state
| Params MR::PickPointManager::params |