]> git.cworth.org Git - vogl/blob - src/vogleditor/vogleditor_statetreevertexarrayitem.h
Initial vogl checkin
[vogl] / src / vogleditor / vogleditor_statetreevertexarrayitem.h
1 #ifndef VOGLEDITOR_STATETREEVERTEXARRAYITEM_H
2 #define VOGLEDITOR_STATETREEVERTEXARRAYITEM_H
3
4 #include "vogleditor_statetreeitem.h"
5 #include "vogl_vao_state.h"
6
7 class vogleditor_stateTreeVertexArrayDiffableItem : public vogleditor_stateTreeItem
8 {
9 public:
10     vogleditor_stateTreeVertexArrayDiffableItem(QString name, QString value, vogleditor_stateTreeItem* parent, unsigned int arrayIndex)
11         : vogleditor_stateTreeItem(name, value, parent),
12           m_arrayIndex(arrayIndex),
13           m_pDiffBaseState(NULL)
14     {
15     }
16
17     void set_diff_base_state(const vogl_vao_state* pBaseState) {
18         m_pDiffBaseState = pBaseState;
19     }
20
21     unsigned int get_array_index() const { return m_arrayIndex; }
22
23     virtual bool hasChanged() const = 0;
24
25 protected:
26     unsigned int m_arrayIndex;
27     const vogl_vao_state* m_pDiffBaseState;
28 };
29
30 class vogleditor_stateTreeVertexArrayBoolItem : public vogleditor_stateTreeVertexArrayDiffableItem
31 {
32 public:
33     vogleditor_stateTreeVertexArrayBoolItem(QString name, bool vogl_vertex_attrib_desc::* pVal, vogleditor_stateTreeItem* parent, const vogl_vertex_attrib_desc& state, unsigned int arrayIndex);
34     vogleditor_stateTreeVertexArrayBoolItem(QString name, int vogl_vertex_attrib_desc::* pVal, vogleditor_stateTreeItem* parent, const vogl_vertex_attrib_desc& state, unsigned int arrayIndex);
35     virtual ~vogleditor_stateTreeVertexArrayBoolItem() { m_pState = NULL; }
36
37     virtual bool hasChanged() const;
38     virtual QString getDiffedValue() const;
39
40 private:
41     const vogl_vertex_attrib_desc* m_pState;
42     bool vogl_vertex_attrib_desc::* m_pVal;
43     int vogl_vertex_attrib_desc::* m_pIntVal;
44 };
45
46 class vogleditor_stateTreeVertexArrayEnumItem : public vogleditor_stateTreeVertexArrayDiffableItem
47 {
48 public:
49     vogleditor_stateTreeVertexArrayEnumItem(QString name, GLenum vogl_vertex_attrib_desc::* pVal, vogleditor_stateTreeItem* parent, const vogl_vertex_attrib_desc& state, unsigned int arrayIndex);
50     virtual ~vogleditor_stateTreeVertexArrayEnumItem() { m_pState = NULL; }
51
52     virtual bool hasChanged() const;
53     virtual QString getDiffedValue() const;
54
55 private:
56     const vogl_vertex_attrib_desc* m_pState;
57     GLenum vogl_vertex_attrib_desc::* m_pVal;
58 };
59
60 class vogleditor_stateTreeVertexArrayPtrItem : public vogleditor_stateTreeVertexArrayDiffableItem
61 {
62 public:
63     vogleditor_stateTreeVertexArrayPtrItem(QString name, vogl_trace_ptr_value vogl_vertex_attrib_desc::* pVal, vogleditor_stateTreeItem* parent, const vogl_vertex_attrib_desc& state, unsigned int arrayIndex);
64     virtual ~vogleditor_stateTreeVertexArrayPtrItem() { m_pState = NULL; }
65
66     virtual bool hasChanged() const;
67     virtual QString getDiffedValue() const;
68
69 private:
70     const vogl_vertex_attrib_desc* m_pState;
71     vogl_trace_ptr_value vogl_vertex_attrib_desc::* m_pVal;
72 };
73
74 class vogleditor_stateTreeVertexArrayUIntItem : public vogleditor_stateTreeVertexArrayDiffableItem
75 {
76 public:
77     vogleditor_stateTreeVertexArrayUIntItem(QString name, GLuint vogl_vertex_attrib_desc::* pVal, vogleditor_stateTreeItem* parent, const vogl_vertex_attrib_desc& state, unsigned int arrayIndex);
78     virtual ~vogleditor_stateTreeVertexArrayUIntItem() { m_pState = NULL; }
79
80     virtual bool hasChanged() const;
81     virtual QString getDiffedValue() const;
82
83 private:
84     const vogl_vertex_attrib_desc* m_pState;
85     GLuint vogl_vertex_attrib_desc::* m_pVal;
86 };
87
88 class vogleditor_stateTreeVertexArrayIntItem : public vogleditor_stateTreeVertexArrayDiffableItem
89 {
90 public:
91     vogleditor_stateTreeVertexArrayIntItem(QString name, GLint vogl_vertex_attrib_desc::* pVal, vogleditor_stateTreeItem* parent, const vogl_vertex_attrib_desc& state, unsigned int arrayIndex);
92     virtual ~vogleditor_stateTreeVertexArrayIntItem() { m_pState = NULL; }
93
94     virtual bool hasChanged() const;
95     virtual QString getDiffedValue() const;
96
97 private:
98     const vogl_vertex_attrib_desc* m_pState;
99     GLint vogl_vertex_attrib_desc::* m_pVal;
100 };
101
102 class vogleditor_stateTreeVertexArrayItem : public vogleditor_stateTreeItem
103 {
104 public:
105     vogleditor_stateTreeVertexArrayItem(QString name, QString value, GLuint64 handle, vogleditor_stateTreeItem* parent, vogl_vao_state& state, const vogl_context_info& info);
106     virtual ~vogleditor_stateTreeVertexArrayItem()
107     {
108         m_pState = NULL; m_pDiffBaseState = NULL;
109     }
110
111     void set_diff_base_state(const vogl_vao_state* pBaseState)
112     {
113         m_pDiffBaseState = pBaseState;
114         for (vogleditor_stateTreeVertexArrayDiffableItem** iter = m_diffableItems.begin(); iter != m_diffableItems.end(); iter++)
115         {
116             (*iter)->set_diff_base_state(pBaseState);
117         }
118     }
119
120     GLuint64 get_handle() const { return m_handle; }
121
122  private:
123     vogl_vao_state* m_pState;
124     GLuint64 m_handle;
125     const vogl_vao_state* m_pDiffBaseState;
126     vogl::vector<vogleditor_stateTreeVertexArrayDiffableItem*> m_diffableItems;
127 };
128 #endif // VOGLEDITOR_STATETREEVERTEXARRAYITEM_H