cherish
ShaderedEntity2D.h
1 #ifndef SHADEREDENTITY2D_H
2 #define SHADEREDENTITY2D_H
3 
4 #include <string>
5 #include <osg/Geometry>
6 #include <osg/Program>
7 #include <osg/MatrixTransform>
8 
9 #include "Entity2D.h"
10 #include "libSGControls/ProgramEntity2D.h"
11 #include "Settings.h"
12 
13 namespace entity{
14 
19 {
20 public:
22  ShaderedEntity2D(unsigned int drawing, osg::Geometry::AttributeBinding binding,
23  const std::string& name, const osg::Vec4f& color);
24 
26  ShaderedEntity2D(const entity::ShaderedEntity2D& copy, const osg::CopyOp& copyop);
27 
30  virtual void initializeProgram(ProgramEntity2D* p, unsigned int mode = GL_LINE_STRIP);
31 
34  virtual bool copyFrom(const entity::ShaderedEntity2D* copy);
35 
38  virtual void appendPoint(const float u, const float v, osg::Vec4f color);
39 
41  virtual osg::Vec2f getPoint(unsigned int i) const;
42 
44  virtual osg::Vec3f getPoint3(unsigned int i) const;
45 
50  virtual bool redefineToShape(osg::MatrixTransform* t = 0) = 0;
51 
53  int getNumPoints() const;
54 
55 protected:
57  virtual bool redefineToShader(osg::MatrixTransform* t) = 0;
58 
59 public:
62  virtual void moveDelta(double du, double dv);
63 
67  virtual void scale(double scaleX, double scaleY, osg::Vec3f center);
68 
71  virtual void scale(double scale, osg::Vec3f center);
72 
75  virtual void rotate(double theta, osg::Vec3f center);
76 
77  virtual cher::ENTITY_TYPE getEntityType() const = 0;
78 
79 #ifndef DOXYGEN_SHOULD_SKIP_THIS
80  void setLines(osg::DrawArrays* lines);
81  const osg::DrawArrays* getLines() const;
82 
83  void setColor(const osg::Vec4f& color);
84  const osg::Vec4f& getColor() const;
85 
87  void setSelected(float alpha);
88 
90  void setUnselected(float alpha);
91 
92  void setIsShadered(bool shadered);
93  bool getIsShadered() const;
94 
95  virtual void setProgram(ProgramEntity2D* p);
96  virtual ProgramEntity2D* getProgram() const;
97 
98 #endif /* DOXYGEN_SHOULD_SKIP_THIS */
99 
100 protected:
101  osg::ref_ptr<osg::DrawArrays> m_lines;
102  osg::observer_ptr<ProgramEntity2D> m_program;
103  bool m_isShadered;
104  osg::Vec4f m_colorNormal, m_colorSelected;
105 
106 }; // class ShaderedEntity2D
107 
108 } // namespace entity
109 
110 #endif // SHADEREDENTITY2D_H
A virtual class to be inhereted by program for stroke, polygon and other entities.
Definition: ProgramEntity2D.h:17
virtual osg::Vec3f getPoint3(unsigned int i) const
Definition: ShaderedEntity2D.cpp:277
Scene graph entities.
Definition: AddEntityCommand.h:17
virtual void initializeProgram(ProgramEntity2D *p, unsigned int mode=GL_LINE_STRIP)
Definition: ShaderedEntity2D.cpp:43
int getNumPoints() const
Definition: ShaderedEntity2D.cpp:153
virtual void scale(double scaleX, double scaleY, osg::Vec3f center)
Definition: ShaderedEntity2D.cpp:172
void setUnselected(float alpha)
Definition: ShaderedEntity2D.cpp:249
ShaderedEntity2D(unsigned int drawing, osg::Geometry::AttributeBinding binding, const std::string &name, const osg::Vec4f &color)
Definition: Entity2D.h:13
virtual bool copyFrom(const entity::ShaderedEntity2D *copy)
Definition: ShaderedEntity2D.cpp:61
virtual void appendPoint(const float u, const float v, osg::Vec4f color)
Definition: ShaderedEntity2D.cpp:78
Settings is a configuration variables file for Cherish: enums, consts, defaults. Contains settings su...
virtual osg::Vec2f getPoint(unsigned int i) const
Definition: ShaderedEntity2D.cpp:96
void setSelected(float alpha)
Definition: ShaderedEntity2D.cpp:234
virtual void moveDelta(double du, double dv)
Definition: ShaderedEntity2D.cpp:161
Abstract class for all the shaderized entities, i.e., strokes, polygons and line segments.
Definition: ShaderedEntity2D.h:18
virtual void rotate(double theta, osg::Vec3f center)
Definition: ShaderedEntity2D.cpp:194
virtual bool redefineToShape(osg::MatrixTransform *t=0)=0
virtual bool redefineToShader(osg::MatrixTransform *t)=0