1 #ifndef VOGLEDITOR_STATETREEFRAMEBUFFERITEM_H
2 #define VOGLEDITOR_STATETREEFRAMEBUFFERITEM_H
4 #include "vogleditor_statetreeitem.h"
6 class vogl_framebuffer_state;
7 class vogl_framebuffer_attachment;
9 class vogleditor_stateTreeFramebufferDiffableItem : public vogleditor_stateTreeItem
12 vogleditor_stateTreeFramebufferDiffableItem(QString name, QString value, vogleditor_stateTreeItem* parent, GLenum attachment, GLuint attachmentHandle)
13 : vogleditor_stateTreeItem(name, value, parent),
14 m_attachment(attachment),
15 m_attachmentHandle(attachmentHandle),
16 m_pDiffBaseState(NULL)
20 void set_diff_base_state(const vogl_framebuffer_state* pBaseState)
22 m_pDiffBaseState = pBaseState;
25 GLenum get_attachment() const { return m_attachment; }
26 GLuint get_attachment_handle() const { return m_attachmentHandle; }
28 virtual bool hasChanged() const = 0;
31 GLuint m_attachmentHandle;
32 const vogl_framebuffer_state* m_pDiffBaseState;
35 class vogleditor_stateTreeFramebufferBoolItem : public vogleditor_stateTreeFramebufferDiffableItem
38 vogleditor_stateTreeFramebufferBoolItem(QString name, GLenum enumName, GLenum attachment, GLuint attachmentHandle, vogleditor_stateTreeItem* parent, const vogl_framebuffer_attachment* pAttachment);
39 virtual ~vogleditor_stateTreeFramebufferBoolItem() { m_pState = NULL; }
41 virtual bool hasChanged() const;
43 virtual QString getDiffedValue() const;
47 const vogl_framebuffer_attachment* m_pState;
50 class vogleditor_stateTreeFramebufferIntItem : public vogleditor_stateTreeFramebufferDiffableItem
53 vogleditor_stateTreeFramebufferIntItem(QString name, GLenum enumName, GLenum attachment, GLuint attachmentHandle, vogleditor_stateTreeItem* parent, const vogl_framebuffer_attachment* pAttachment);
54 virtual ~vogleditor_stateTreeFramebufferIntItem() { m_pState = NULL; }
56 virtual bool hasChanged() const;
58 virtual QString getDiffedValue() const;
62 const vogl_framebuffer_attachment* m_pState;
66 class vogleditor_stateTreeFramebufferEnumItem : public vogleditor_stateTreeFramebufferDiffableItem
69 vogleditor_stateTreeFramebufferEnumItem(QString name, GLenum enumName, GLenum attachment, GLuint attachmentHandle, vogleditor_stateTreeItem* parent, const vogl_framebuffer_attachment* pAttachment);
70 virtual ~vogleditor_stateTreeFramebufferEnumItem() { m_pState = NULL; }
72 virtual bool hasChanged() const;
74 virtual QString getDiffedValue() const;
78 const vogl_framebuffer_attachment* m_pState;
81 class vogleditor_stateTreeFramebufferReadbufferItem : public vogleditor_stateTreeFramebufferDiffableItem
84 vogleditor_stateTreeFramebufferReadbufferItem(QString name, vogleditor_stateTreeItem* parent, const vogl_framebuffer_state* pState);
85 virtual ~vogleditor_stateTreeFramebufferReadbufferItem() { m_pState = NULL; }
87 virtual bool hasChanged() const;
89 virtual QString getDiffedValue() const;
92 const vogl_framebuffer_state* m_pState;
95 class vogleditor_stateTreeFramebufferItem : public vogleditor_stateTreeItem
98 vogleditor_stateTreeFramebufferItem(QString name, QString value, GLuint64 handle, vogleditor_stateTreeItem* parent, vogl_framebuffer_state* pState);
99 virtual ~vogleditor_stateTreeFramebufferItem() { m_pFramebufferState = NULL; }
100 virtual state_tree_type getStateType() const { return vogleditor_stateTreeItem::cFRAMEBUFFER; }
102 vogl_framebuffer_state* get_framebuffer_state() const { return m_pFramebufferState; }
104 void set_diff_base_state(const vogl_framebuffer_state* pBaseState)
106 m_pDiffBaseState = pBaseState;
108 for (vogleditor_stateTreeFramebufferDiffableItem** iter = m_diffableItems.begin(); iter != m_diffableItems.end(); iter++)
110 (*iter)->set_diff_base_state(pBaseState);
114 GLuint64 get_handle() const { return m_handle; }
117 vogl_framebuffer_state* m_pFramebufferState;
118 const vogl_framebuffer_state* m_pDiffBaseState;
119 vogl::vector<vogleditor_stateTreeFramebufferDiffableItem*> m_diffableItems;
122 #endif // VOGLEDITOR_STATETREEFRAMEBUFFERITEM_H