5 #include "ShaderedEntity2D.h" 8 #include "LineSegment.h" 10 #include "ToolGlobal.h" 11 #include "SelectedGroup.h" 12 #include "ProtectedGroup.h" 13 #include "libSGControls/ProgramStroke.h" 14 #include "libSGControls/ProgramPolygon.h" 15 #include "libSGControls/ProgramLineSegment.h" 17 #include <osg/ref_ptr> 20 #include <osg/BoundingBox> 21 #include <osg/Geometry> 22 #include <osg/MatrixTransform> 24 #include <osgDB/ObjectWrapper> 25 #include <osg/AutoTransform> 35 #ifndef DOXYGEN_SHOULD_SKIP_THIS 36 Canvas(
const Canvas& cnv,
const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
65 #ifndef DOXYGEN_SHOULD_SKIP_THIS 70 void setMatrixRotation(
const osg::Matrix& R);
71 const osg::Matrix& getMatrixRotation()
const;
73 void setMatrixTranslation(
const osg::Matrix& T);
74 const osg::Matrix& getMatrixTranslation()
const;
76 void setTransform(osg::MatrixTransform* t);
77 const osg::MatrixTransform* getTransform()
const;
78 osg::MatrixTransform* getTransform();
80 void setSwitch(osg::Switch* sw);
81 const osg::Switch* getSwitch()
const;
83 void setGroupData(osg::Group* group);
84 const osg::Group* getGroupData()
const;
86 void setGeodeStrokes(osg::Geode* geode);
87 const osg::Geode* getGeodeStrokes()
const;
89 void setGeodePhotos(osg::Geode* geode);
90 const osg::Geode* getGeodePhotos()
const;
92 void setGeodePolygons(osg::Geode* geode);
93 const osg::Geode* getGeodePolygons()
const;
95 void setGeodeLineSegments(osg::Geode* geode);
96 const osg::Geode* getGeodeLineSegments()
const;
98 void setCenter(
const osg::Vec3f& center);
103 #ifndef DOXYGEN_SHOULD_SKIP_THIS 104 void setNormal(
const osg::Vec3f& normal);
105 const osg::Vec3f& getNormal()
const;
110 void setColor(
const osg::Vec4f& color,
const osg::Vec4f& colorIntersection = cher::CANVAS_CLR_PREVIOUS);
115 #ifndef DOXYGEN_SHOULD_SKIP_THIS 116 void setVisibilityFrame(
bool vis);
117 bool getVisibilityFrame()
const;
118 #endif // DOXYGEN_SHOULD_SKIP_THIS 133 #ifndef DOXYGEN_SHOULD_SKIP_THIS 134 bool getVisibilityData()
const;
135 void setVisibilityData(
bool vis);
136 #endif // DOXYGEN_SHOULD_SKIP_THIS 168 void rotate(
const osg::Matrix& mr,
const osg::Vec3f& c3d_new);
198 void setEntityCurrent(
bool current);
200 template <
typename EntityType>
202 EntityType* getEntityCurrent()
const{
203 return dynamic_cast<EntityType*
>(m_entityCurrent.get());
241 void moveEntities(std::vector<Entity2D *> &entities,
double du,
double dv);
251 void scaleEntities(std::vector<Entity2D *> &entities,
double sx,
double sy, osg::Vec3f center);
260 void rotateEntities(std::vector<entity::Entity2D*> entities,
double theta, osg::Vec3f center);
336 unsigned int getNumLineSegments()
const;
364 void updateTransforms();
365 void resetTransforms();
366 void setVertices(
const osg::Vec3f& center,
float szX,
float szY,
float szCr,
float szAx);
367 void setVerticesDefault(
const osg::Vec3f& center);
371 void initializeProgramStroke();
372 void initializeProgramPolygon();
373 void initializeProgramLineSegment();
378 osg::ref_ptr<osg::MatrixTransform> m_transform;
379 osg::ref_ptr<osg::Switch> m_switch;
380 osg::ref_ptr<osg::Group> m_groupData;
381 osg::ref_ptr<osg::Geode> m_geodeStrokes;
382 osg::ref_ptr<osg::Geode> m_geodePhotos;
383 osg::ref_ptr<osg::Geode> m_geodePolygons;
384 osg::ref_ptr<osg::Geode> m_geodeLineSegments;
385 osg::ref_ptr<ProgramStroke> m_programStroke;
386 osg::ref_ptr<ProgramPolygon> m_programPolygon;
387 osg::ref_ptr<ProgramLineSegment> m_programLineSegment;
390 osg::ref_ptr<entity::FrameTool> m_toolFrame;
392 osg::observer_ptr<entity::Stroke> m_strokeCurrent;
393 osg::observer_ptr<entity::Polygon> m_polygonCurrent;
394 osg::observer_ptr<entity::ShaderedEntity2D> m_entityCurrent;
const osg::Vec3f & getCenter() const
Definition: Canvas.cpp:334
unsigned int getNumStrokes() const
Definition: Canvas.cpp:1066
void setVisibilityFrameInternal(bool vis)
Definition: Canvas.cpp:372
entity::Entity2D * getEntity(unsigned int i) const
Definition: Canvas.cpp:1105
bool isEntitiesSelected() const
Definition: Canvas.cpp:608
osg::Group * attachMeshGroup()
Definition: Canvas.cpp:782
osg::Plane getPlane() const
Definition: Canvas.cpp:822
bool disattachMeshGroup(osg::Group *group)
Definition: Canvas.cpp:792
int getEntitiesSelectedSize() const
Definition: Canvas.cpp:603
Definition: ProgramPolygon.h:12
void scaleEntitiesSelected(double sx, double sy)
Definition: Canvas.cpp:696
void rotateEntities(std::vector< entity::Entity2D *> entities, double theta, osg::Vec3f center)
Definition: Canvas.cpp:701
void setPolygonCurrent(entity::Polygon *poly)
Definition: Canvas.cpp:529
unsigned int getNumPolygons() const
Definition: Canvas.cpp:1071
void setModeEdit(bool on)
Definition: Canvas.cpp:807
virtual void initializeStateMachine()
Definition: Canvas.cpp:127
void addEntitySelected(entity::Entity2D *entity)
Definition: Canvas.cpp:569
bool addEntity(entity::Entity2D *entity)
Definition: Canvas.cpp:1133
virtual void initializeSG()
Definition: Canvas.cpp:96
Geometry class that represents a line segment in 3D space.
Definition: LineSegment.h:17
void setFrameEditable(bool on)
Definition: Canvas.cpp:812
bool containsEntity(entity::Entity2D *entity) const
Definition: Canvas.cpp:1184
osg::Vec3f getGlobalAxisV() const
Definition: Canvas.cpp:415
virtual void initializeTools()
Definition: Canvas.cpp:81
Scene graph entities.
Definition: AddEntityCommand.h:17
const osg::Vec4f & getColor() const
Definition: Canvas.cpp:356
osg::BoundingBox getBoundingBox() const
Definition: Canvas.cpp:659
bool attachFrame()
Definition: Canvas.cpp:776
Geometry class that defined strokes entered by a user. The creation and usage of this class must be f...
Definition: Stroke.h:62
void unselectEntities()
Definition: Canvas.cpp:493
osg::Vec3f getCenter3D() const
Definition: Canvas.cpp:207
osg::Vec3f getCenter2D() const
Definition: Canvas.cpp:623
An interface class that deals with entity::Stroke shader's state.
Definition: ProgramStroke.h:19
const std::vector< Entity2D * > & getEntitiesSelected() const
Definition: Canvas.cpp:598
unsigned int getNumPhotos() const
Definition: Canvas.cpp:1061
Geometry class that defines opacity polygons drawn by a user. The creation and usage of this class mu...
Definition: Polygon.h:47
osg::Vec3f getEntitiesSelectedCenter3D() const
Definition: Canvas.cpp:613
Definition: ProgramLineSegment.h:12
osg::Vec3f getBoundingBoxCenter3D() const
Definition: Canvas.cpp:632
Definition: Entity2D.h:13
void setVisibilityAll(bool vis)
Definition: Canvas.cpp:388
osg::Matrix getMatrixInverse() const
Definition: Canvas.cpp:192
entity::Photo * getPhoto(int row) const
Definition: Canvas.cpp:1081
osg::Vec3f getBoundingBoxCenter2D() const
Definition: Canvas.cpp:649
void scaleEntities(std::vector< Entity2D *> &entities, double sx, double sy, osg::Vec3f center)
Definition: Canvas.cpp:691
bool removeEntity(entity::Entity2D *entity)
Definition: Canvas.cpp:1158
void rotateEntitiesSelected(double theta)
Definition: Canvas.cpp:706
void rotate(const osg::Matrix &mr, const osg::Vec3f &c3d_new)
Definition: Canvas.cpp:440
entity::Polygon * getPolygon(int i) const
Definition: Canvas.cpp:1093
Settings is a configuration variables file for Cherish: enums, consts, defaults. Contains settings su...
void setColor(const osg::Vec4f &color, const osg::Vec4f &colorIntersection=cher::CANVAS_CLR_PREVIOUS)
Definition: Canvas.cpp:351
entity::Stroke * getStrokeCurrent() const
Definition: Canvas.cpp:523
virtual void initializeMasks()
Definition: Canvas.cpp:182
void unselectAll()
Definition: Canvas.cpp:486
void setStrokeCurrent(entity::Stroke *stroke)
Definition: Canvas.cpp:508
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
void selectAllEntities()
Definition: Canvas.cpp:498
osg::Vec3f getEntitiesSelectedCenter2D() const
Definition: Canvas.cpp:618
entity::Canvas * clone() const
Definition: Canvas.cpp:828
const osg::Geometry * getGeometryPickable() const
Definition: Canvas.cpp:424
bool getVisibilityAll() const
Definition: Canvas.cpp:382
void translate(const osg::Matrix &mt)
Definition: Canvas.cpp:430
entity::Polygon * getPolygonCurrent() const
Definition: Canvas.cpp:544
osg::Vec3f getGlobalAxisU() const
Definition: Canvas.cpp:406
void moveEntities(std::vector< Entity2D *> &entities, double du, double dv)
Definition: Canvas.cpp:681
bool detachFrame()
Definition: Canvas.cpp:771
osg::Matrix getMatrix() const
Definition: Canvas.cpp:202
const osg::Vec3Array * getFrameVertices() const
Definition: Canvas.cpp:766
Abstract class for all the shaderized entities, i.e., strokes, polygons and line segments.
Definition: ShaderedEntity2D.h:18
void removeEntitySelected(entity::Entity2D *entity)
Definition: Canvas.cpp:593
entity::Canvas * separate()
Definition: Canvas.cpp:894
unsigned int getNumEntities() const
Definition: Canvas.cpp:1052
entity::Stroke * getStroke(int i) const
Definition: Canvas.cpp:1087
bool getModeEdit() const
Definition: Canvas.cpp:817
bool getVisibilityFrameInternal() const
Definition: Canvas.cpp:377
bool addToMeshGroup(osg::Group *group, osg::Node *mesh)
Definition: Canvas.cpp:797
void moveEntitiesSelected(double du, double dv)
Definition: Canvas.cpp:686
const entity::FrameTool * getToolFrame() const
Definition: Canvas.cpp:1047
Definition: SelectedGroup.h:14
void updateFrame(entity::Canvas *against=0)
Definition: Canvas.cpp:723