]> git.cworth.org Git - vogl/blob - src/vogleditor/vogleditor_statetreerenderbufferitem.h
Initial vogl checkin
[vogl] / src / vogleditor / vogleditor_statetreerenderbufferitem.h
1 #ifndef VOGLEDITOR_STATETREERENDERBUFFERITEM_H
2 #define VOGLEDITOR_STATETREERENDERBUFFERITEM_H
3
4 #include "vogleditor_statetreeitem.h"
5
6 class vogl_renderbuffer_state;
7
8 class vogleditor_stateTreeRenderbufferDiffableItem : public vogleditor_stateTreeItem
9 {
10 public:
11     vogleditor_stateTreeRenderbufferDiffableItem(QString name, QString value, vogleditor_stateTreeItem* parent)
12         : vogleditor_stateTreeItem(name, value, parent),
13           m_pDiffBaseState(NULL)
14     {
15     }
16
17     void set_diff_base_state(const vogl_renderbuffer_state* pBaseState)
18     {
19         m_pDiffBaseState = pBaseState;
20     }
21
22     virtual bool hasChanged() const = 0;
23 protected:
24     const vogl_renderbuffer_state* m_pDiffBaseState;
25 };
26
27 class vogleditor_stateTreeRenderbufferIntItem : public vogleditor_stateTreeRenderbufferDiffableItem
28 {
29 public:
30     vogleditor_stateTreeRenderbufferIntItem(QString name, GLenum enumName, vogleditor_stateTreeItem* parent, const vogl_renderbuffer_state& state);
31     virtual ~vogleditor_stateTreeRenderbufferIntItem() { m_pState = NULL; }
32
33     virtual bool hasChanged() const;
34     virtual QString getDiffedValue() const;
35
36 private:
37     GLenum m_enum;
38     const vogl_renderbuffer_state* m_pState;
39 };
40
41 class vogleditor_stateTreeRenderbufferEnumItem : public vogleditor_stateTreeRenderbufferDiffableItem
42 {
43 public:
44     vogleditor_stateTreeRenderbufferEnumItem(QString name, GLenum enumName, vogleditor_stateTreeItem* parent, const vogl_renderbuffer_state& state);
45     virtual ~vogleditor_stateTreeRenderbufferEnumItem() { m_pState = NULL; }
46
47     virtual bool hasChanged() const;
48     virtual QString getDiffedValue() const;
49
50 private:
51     GLenum m_enum;
52     const vogl_renderbuffer_state* m_pState;
53 };
54
55 class vogleditor_stateTreeRenderbufferItem : public vogleditor_stateTreeItem
56 {
57 public:
58     vogleditor_stateTreeRenderbufferItem(QString name, GLuint64 handle, vogleditor_stateTreeItem* parent, const vogl_renderbuffer_state& state);
59     virtual ~vogleditor_stateTreeRenderbufferItem()
60     {
61         m_pState = NULL; m_pDiffBaseState = NULL;
62     }
63
64     void set_diff_base_state(const vogl_renderbuffer_state* pBaseState) {
65         m_pDiffBaseState = pBaseState;
66         for (vogleditor_stateTreeRenderbufferDiffableItem** iter = m_diffableItems.begin(); iter != m_diffableItems.end(); iter++)
67         {
68             (*iter)->set_diff_base_state(pBaseState);
69         }
70     }
71
72     GLuint64 get_handle() const { return m_handle; }
73
74  private:
75     GLuint64 m_handle;
76     const vogl_renderbuffer_state* m_pState;
77     const vogl_renderbuffer_state* m_pDiffBaseState;
78     vogl::vector<vogleditor_stateTreeRenderbufferDiffableItem*> m_diffableItems;
79 };
80
81 #endif // VOGLEDITOR_STATETREERENDERBUFFERITEM_H