9 #include <QTreeWidgetItem> 12 #include <osg/ref_ptr> 13 #include <osg/observer_ptr> 14 #include <osgDB/ObjectWrapper> 17 #include "ProtectedGroup.h" 22 #include "LineSegment.h" 23 #include "Bookmarks.h" 24 #include "../libGUI/ListWidget.h" 25 #include "../libGUI/TreeWidget.h" 26 #include "../libSGControls/AddEntityCommand.h" 27 #include "../libSGControls/EditEntityCommand.h" 35 class AddCanvasCommand;
36 class AddPhotoCommand;
37 class EditCanvasDeleteCommand;
38 class AddCanvasSeparationCommand;
39 class EditPhotoDeleteCommand;
40 class EditEntityDeleteCommand;
41 class AddStrokeCommand;
42 class AddPolygonCommand;
43 class AddEntityCommand;
44 class AddLineSegmentCommand;
45 class EditStrokesPushCommand;
46 class EditStrokeDeleteCommand;
47 class EditPasteCommand;
49 class EditPhotoPushCommand;
50 class EditSelectedEntitiesDeleteCommand;
97 UserScene(
const UserScene& scene,
const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
105 #ifndef DOXYGEN_SHOULD_SKIP_THIS 106 void setGroupCanvases(osg::Group* group);
107 const osg::Group* getGroupCanvases()
const;
113 void setIdCanvas(
unsigned int id);
114 unsigned int getIdCanvas()
const;
116 void setIdPhoto(
unsigned int id);
117 unsigned int getIdPhoto()
const;
119 void setIdBookmark(
unsigned int id);
120 unsigned int getIdBookmark()
const;
122 void setFilePath(
const std::string& name);
123 const std::string& getFilePath()
const;
128 bool isSetFilePath()
const;
136 void addCanvas(QUndoStack* stack,
const osg::Matrix& R,
const osg::Matrix& T);
143 void addCanvas(QUndoStack* stack,
const osg::Vec3f& normal,
const osg::Vec3f& center);
152 void addCanvas(QUndoStack* stack,
const osg::Matrix& R,
const osg::Matrix& T,
const std::string& name);
162 void addStroke(QUndoStack* stack,
float u,
float v,
cher::EVENT event);
170 void addPolygon(QUndoStack* stack,
float u,
float v,
cher::EVENT event);
178 void addLineSegment(QUndoStack* stack,
float u,
float v,
cher::EVENT event);
184 void addPhoto(QUndoStack* stack,
const std::string& fname);
194 void addBookmark(
BookmarkWidget *widget,
const osg::Vec3d& eye,
const osg::Vec3d& center,
const osg::Vec3d& up,
const double& fov);
204 void deleteBookmark(
BookmarkWidget *widget,
const QModelIndex& index);
249 int getStrokeLevel()
const;
261 int getCanvasLevel()
const;
274 int getPhotoLevel()
const;
314 void setCanvasesButCurrent(
bool enabled);
318 void setAllCanvases(
bool enabled);
324 bool getCanvasesButCurrent()
const;
370 int getNumCanvases()
const;
388 void editCanvasOffset(QUndoStack* stack,
const osg::Vec3f& translate,
cher::EVENT event);
398 void editCanvasRotate(QUndoStack* stack,
const osg::Quat& rotation,
const osg::Vec3f& center3d,
cher::EVENT event);
413 void editCanvasClone(QUndoStack* stack,
const osg::Vec3f& translate,
cher::EVENT event);
427 void editCanvasSeparate(QUndoStack* stack,
const osg::Vec3f& translate,
cher::EVENT event);
461 void editStrokesPush(QUndoStack* stack, osg::Camera* camera);
470 void editStrokesMove(QUndoStack* stack,
double u,
double v,
cher::EVENT event);
478 void editStrokesScale(QUndoStack* stack,
double u,
double v,
cher::EVENT event);
487 void editStrokesRotate(QUndoStack* stack,
double u,
double v,
cher::EVENT event);
497 void editSelectedEntitiesDelete(QUndoStack* stack);
500 bool isEntityCurrent()
const;
504 bool isEmptyScene()
const;
508 bool clearUserData();
512 void updateWidgets();
522 void sendRequestUpdate();
525 void canvasAdded(
const std::string& name);
528 void photoAdded(
const std::string& name,
int idxCanvas);
531 void canvasRemoved(
int row);
534 void photoRemoved(
int rowCanvas,
int rowPhoto);
538 void canvasSelectedColor(
int row,
int color);
546 void canvasVisibilitySet(
int row,
bool visibility);
551 void requestSceneToolStatus(
bool& visibility);
554 void requestCanvasCreate(
const osg::Vec3f& eye,
const osg::Vec3f& center,
const osg::Vec3f& up);
559 void onItemChanged(QTreeWidgetItem* item,
int column);
563 void onClicked(
const QModelIndex& index);
567 void onRightClicked(
const QModelIndex& index);
570 std::string getCanvasName();
571 std::string getPhotoName();
572 std::string getBookmarkName();
573 std::string getEntityName(
const std::string& name,
unsigned int id)
const;
576 void strokeAppend(
float u,
float v);
577 void strokeFinish(QUndoStack* stack);
578 bool strokeValid()
const;
581 void polygonAppend(
float u,
float v, QUndoStack *stack);
582 void polygonEdit(
float u,
float v);
583 void polygonFinish(QUndoStack* stack);
584 bool polygonValid()
const;
586 void linesegmentStart();
587 void linesegmentAppend(
float u,
float v, QUndoStack* stack);
588 void linesegmentEdit(
float u,
float v);
589 void linesegmentFinish(QUndoStack* stack);
590 bool linesegmentValid()
const;
592 void entitiesMoveStart(
double u,
double v);
593 void entitiesMoveAppend(
double u,
double v);
594 void entitiesMoveFinish(QUndoStack* stack);
595 bool entitiesSelectedValid()
const;
597 void entitiesScaleStart(
double u,
double v);
598 void entitiesScaleAppend(
double u,
double v);
599 void entitiesScaleFinish(QUndoStack* stack);
601 void entitiesRotateStart(
double u,
double v);
602 void entitiesRotateAppend(
double u,
double v);
603 void entitiesRotateFinish(QUndoStack* stack);
610 void canvasOffsetStart();
611 void canvasOffsetAppend(
const osg::Vec3f& t);
612 void canvasOffsetFinish(QUndoStack* stack);
613 bool canvasEditValid()
const;
615 void canvasCloneStart();
616 void canvasCloneAppend(
const osg::Vec3f& t);
617 void canvasCloneFinish(QUndoStack* stack);
618 bool canvasCloneValid()
const;
620 void canvasSeparateStart();
621 void canvasSeparateAppend(
const osg::Vec3f& t);
622 void canvasSeparateFinish(QUndoStack* stack);
624 void canvasRotateStart();
625 void canvasRotateAppend(
const osg::Quat& r,
const osg::Vec3f& center3d);
626 void canvasRotateFinish(QUndoStack* stack);
628 friend class ::fur::AddCanvasCommand;
629 friend class ::fur::AddPhotoCommand;
630 friend class ::fur::EditCanvasDeleteCommand;
631 friend class ::fur::AddCanvasSeparationCommand;
632 friend class ::fur::EditPhotoDeleteCommand;
633 friend class ::fur::EditEntityDeleteCommand;
634 friend class ::fur::AddStrokeCommand;
635 friend class ::fur::AddPolygonCommand;
636 friend class ::fur::AddEntityCommand;
637 friend class ::fur::AddLineSegmentCommand;
638 friend class ::fur::EditStrokesPushCommand;
639 friend class ::fur::EditStrokeDeleteCommand;
640 friend class ::fur::EditPasteCommand;
641 friend class ::fur::EditCutCommand;
642 friend class ::fur::EditPhotoPushCommand;
643 friend class ::fur::EditSelectedEntitiesDeleteCommand;
652 osg::ref_ptr<osg::Group> m_groupCanvases;
653 osg::ref_ptr<entity::Bookmarks> m_groupBookmarks;
654 osg::observer_ptr<entity::Canvas> m_canvasCurrent;
655 osg::observer_ptr<entity::Canvas> m_canvasPrevious;
656 osg::ref_ptr<entity::Canvas> m_canvasClone;
668 unsigned int m_idCanvas;
669 unsigned int m_idPhoto;
670 unsigned int m_idBookmark;
671 std::string m_filePath;
676 #endif // USERSCENE_H A proxy class that helps to connect scene graph camera positions (in format eye, center, up and name) with the corresponding BookmarkWidget.
Definition: Bookmarks.h:48
Scene graph entities.
Definition: AddEntityCommand.h:17
EVENT
Definition: Settings.h:160
Geometry class that defined strokes entered by a user. The creation and usage of this class must be f...
Definition: Stroke.h:62
Geometry class that defines opacity polygons drawn by a user. The creation and usage of this class mu...
Definition: Polygon.h:47
The UserScene class contains scene graph that was created by user, including the construction tools...
Definition: UserScene.h:86
Definition: Entity2D.h:13
Quad that uses texture to represent a 2D photo in 3D space.
Definition: Photo.h:22
A convinience class that inherits full functionality of osg::Group except the methods that allow dire...
Definition: ProtectedGroup.h:17
Contains QUndoCommand - based classes that are defined within undo/redo framework. All these classes are made friend classes for entity::UserScene (protected) so that to access add and remove entity functionality.