1 #ifndef VOGLEDITOR_STATETREEVERTEXARRAYITEM_H
2 #define VOGLEDITOR_STATETREEVERTEXARRAYITEM_H
4 #include "vogleditor_statetreeitem.h"
5 #include "vogl_vao_state.h"
7 class vogleditor_stateTreeVertexArrayDiffableItem : public vogleditor_stateTreeItem
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)
17 void set_diff_base_state(const vogl_vao_state* pBaseState) {
18 m_pDiffBaseState = pBaseState;
21 unsigned int get_array_index() const { return m_arrayIndex; }
23 virtual bool hasChanged() const = 0;
26 unsigned int m_arrayIndex;
27 const vogl_vao_state* m_pDiffBaseState;
30 class vogleditor_stateTreeVertexArrayBoolItem : public vogleditor_stateTreeVertexArrayDiffableItem
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; }
37 virtual bool hasChanged() const;
38 virtual QString getDiffedValue() const;
41 const vogl_vertex_attrib_desc* m_pState;
42 bool vogl_vertex_attrib_desc::* m_pVal;
43 int vogl_vertex_attrib_desc::* m_pIntVal;
46 class vogleditor_stateTreeVertexArrayEnumItem : public vogleditor_stateTreeVertexArrayDiffableItem
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; }
52 virtual bool hasChanged() const;
53 virtual QString getDiffedValue() const;
56 const vogl_vertex_attrib_desc* m_pState;
57 GLenum vogl_vertex_attrib_desc::* m_pVal;
60 class vogleditor_stateTreeVertexArrayPtrItem : public vogleditor_stateTreeVertexArrayDiffableItem
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; }
66 virtual bool hasChanged() const;
67 virtual QString getDiffedValue() const;
70 const vogl_vertex_attrib_desc* m_pState;
71 vogl_trace_ptr_value vogl_vertex_attrib_desc::* m_pVal;
74 class vogleditor_stateTreeVertexArrayUIntItem : public vogleditor_stateTreeVertexArrayDiffableItem
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; }
80 virtual bool hasChanged() const;
81 virtual QString getDiffedValue() const;
84 const vogl_vertex_attrib_desc* m_pState;
85 GLuint vogl_vertex_attrib_desc::* m_pVal;
88 class vogleditor_stateTreeVertexArrayIntItem : public vogleditor_stateTreeVertexArrayDiffableItem
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; }
94 virtual bool hasChanged() const;
95 virtual QString getDiffedValue() const;
98 const vogl_vertex_attrib_desc* m_pState;
99 GLint vogl_vertex_attrib_desc::* m_pVal;
102 class vogleditor_stateTreeVertexArrayItem : public vogleditor_stateTreeItem
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()
108 m_pState = NULL; m_pDiffBaseState = NULL;
111 void set_diff_base_state(const vogl_vao_state* pBaseState)
113 m_pDiffBaseState = pBaseState;
114 for (vogleditor_stateTreeVertexArrayDiffableItem** iter = m_diffableItems.begin(); iter != m_diffableItems.end(); iter++)
116 (*iter)->set_diff_base_state(pBaseState);
120 GLuint64 get_handle() const { return m_handle; }
123 vogl_vao_state* m_pState;
125 const vogl_vao_state* m_pDiffBaseState;
126 vogl::vector<vogleditor_stateTreeVertexArrayDiffableItem*> m_diffableItems;
128 #endif // VOGLEDITOR_STATETREEVERTEXARRAYITEM_H