]> git.cworth.org Git - vogl/blob - src/vogleditor/vogleditor_statetreetexenvitem.h
Initial vogl checkin
[vogl] / src / vogleditor / vogleditor_statetreetexenvitem.h
1 #ifndef VOGLEDITOR_STATETREETEXENVITEM_H
2 #define VOGLEDITOR_STATETREETEXENVITEM_H
3
4 #include "vogleditor_statetreeitem.h"
5
6 class vogl_texenv_state;
7
8 class vogleditor_stateTreeTexEnvStateVecDiffableItem : public vogleditor_stateTreeStateVecDiffableItem
9 {
10 public:
11     vogleditor_stateTreeTexEnvStateVecDiffableItem(GLenum target, GLenum enumId, unsigned int index, unsigned int numComponents, QString name, QString value, vogleditor_stateTreeItem* parent);
12
13     virtual void set_diff_base_state(const vogl_state_vector* pBaseState) { VOGL_NOTE_UNUSED(pBaseState); VOGL_ASSERT(!"This version of the function is not supported for vogleditor_stateTreeTexEnvStateVecDiffableItem"); }
14     void set_diff_base_state(const vogl_context_info* pInfo, const vogl_texenv_state* pBaseState)
15     {
16         m_pDiffBaseInfo = pInfo;
17         m_pDiffBaseState = pBaseState;
18     }
19
20     GLenum get_target() const { return m_target; }
21
22 protected:
23     GLenum m_target;
24     GLenum m_name;
25     unsigned int m_index;
26     unsigned int m_numComponents;
27     const vogl_context_info* m_pDiffBaseInfo;
28     const vogl_texenv_state* m_pDiffBaseState;
29 };
30
31 class vogleditor_stateTreeTexEnvStateVecEnumItem : public vogleditor_stateTreeTexEnvStateVecDiffableItem
32 {
33 public:
34     vogleditor_stateTreeTexEnvStateVecEnumItem(GLenum target, QString glenumName, GLenum name, unsigned int index, int* values, unsigned int numComponents, vogleditor_stateTreeItem* parent, vogl_texenv_state& state);
35     virtual ~vogleditor_stateTreeTexEnvStateVecEnumItem() { m_pState = NULL; }
36
37     virtual bool hasChanged() const;
38     virtual QString getDiffedValue() const;
39
40 private:
41     vogl_texenv_state* m_pState;
42 };
43
44 class vogleditor_stateTreeTexEnvStateVecFloatItem : public vogleditor_stateTreeTexEnvStateVecDiffableItem
45 {
46 public:
47     vogleditor_stateTreeTexEnvStateVecFloatItem(GLenum target, QString glenumName, GLenum name, unsigned int index, float* values, unsigned int numComponents, vogleditor_stateTreeItem* parent, vogl_texenv_state& state);
48     virtual ~vogleditor_stateTreeTexEnvStateVecFloatItem() { m_pState = NULL; }
49
50     virtual bool hasChanged() const;
51     virtual QString getDiffedValue() const;
52
53 private:
54     vogl_texenv_state* m_pState;
55 };
56
57 class vogleditor_stateTreeTexEnvItem: public vogleditor_stateTreeItem
58 {
59 public:
60     vogleditor_stateTreeTexEnvItem(QString name, vogleditor_stateTreeItem* parent, vogl_texenv_state& state, const vogl_context_info& info);
61     virtual ~vogleditor_stateTreeTexEnvItem()
62     {
63         m_pState = NULL;
64         m_pDiffBaseState = NULL;
65         m_pDiffBaseInfo = NULL;
66     }
67
68     void set_diff_base_state(const vogl_context_info* pInfo, const vogl_texenv_state* pBaseState);
69
70 private:
71     vogl_texenv_state* m_pState;
72     const vogl_texenv_state* m_pDiffBaseState;
73     const vogl_context_info* m_pDiffBaseInfo;
74     vogl::vector<vogleditor_stateTreeTexEnvStateVecDiffableItem*> m_diffableItems;
75 };
76
77
78 #endif // VOGLEDITOR_STATETREETEXENVITEM_H