1 #include "vogleditor_statetreeshaderitem.h"
2 #include "vogl_shader_state.h"
5 //=============================================================================
7 vogleditor_stateTreeShaderBoolItem::vogleditor_stateTreeShaderBoolItem(QString name, bool (vogl_shader_state::* func)(void) const, vogleditor_stateTreeItem* parent, const vogl_shader_state& state)
8 : vogleditor_stateTreeShaderDiffableItem(name, "", parent, state),
11 bool val = (state.*func)();
12 setValue(val? "GL_TRUE" : "GL_FALSE");
15 bool vogleditor_stateTreeShaderBoolItem::hasChanged() const
17 if (m_pDiffBaseState == NULL)
20 return (m_pState->*m_pFunc)() != (m_pDiffBaseState->*m_pFunc)();
23 QString vogleditor_stateTreeShaderBoolItem::getDiffedValue() const
25 if (m_pDiffBaseState == NULL)
28 bool value = (m_pDiffBaseState->*m_pFunc)();
29 return getValueFromBools(&value, 1);
32 //=============================================================================
34 vogleditor_stateTreeShaderLogItem::vogleditor_stateTreeShaderLogItem(QString name, const vogl::dynamic_string& (vogl_shader_state::* func)(void) const, vogleditor_stateTreeItem* parent, const vogl_shader_state& state)
35 : vogleditor_stateTreeShaderDiffableItem(name, "", parent, state),
38 uint val = (state.*func)().size();
43 vogleditor_stateTreeShaderItem* pShaderItem = static_cast<vogleditor_stateTreeShaderItem*>(this->parent());
44 pShaderItem->add_diffable_child(new vogleditor_stateTreeShaderStringItem("Info Log", func, this->parent(), state));
48 bool vogleditor_stateTreeShaderLogItem::hasChanged() const
50 if (m_pDiffBaseState == NULL)
53 return (m_pState->*m_pFunc)() != (m_pDiffBaseState->*m_pFunc)();
56 QString vogleditor_stateTreeShaderLogItem::getDiffedValue() const
58 if (m_pDiffBaseState == NULL)
61 uint value = (m_pDiffBaseState->*m_pFunc)().size();
62 return getValueFromUints(&value, 1);
65 //=============================================================================
66 vogleditor_stateTreeShaderSourceLengthItem::vogleditor_stateTreeShaderSourceLengthItem(QString name, vogleditor_stateTreeItem* parent, const vogl_shader_state& state)
67 : vogleditor_stateTreeShaderDiffableItem(name, "", parent, state)
69 unsigned int length = state.get_source().size();
73 bool vogleditor_stateTreeShaderSourceLengthItem::hasChanged() const
75 if (m_pDiffBaseState == NULL)
81 return m_pState->get_source().size() != m_pDiffBaseState->get_source().size();
85 QString vogleditor_stateTreeShaderSourceLengthItem::getDiffedValue() const
87 if (m_pDiffBaseState == NULL)
90 uint value = m_pDiffBaseState->get_source().size();
91 return getValueFromUints(&value, 1);
94 //=============================================================================
96 vogleditor_stateTreeShaderStringItem::vogleditor_stateTreeShaderStringItem(QString name, const vogl::dynamic_string& (vogl_shader_state::* func)(void) const, vogleditor_stateTreeItem* parent, const vogl_shader_state& state)
97 : vogleditor_stateTreeShaderDiffableItem(name, "", parent, state),
100 m_value = (state.*func)();
101 setValue(m_value.c_str());
104 bool vogleditor_stateTreeShaderStringItem::hasChanged() const
106 if (m_pDiffBaseState == NULL)
112 return (m_pState->*m_pFunc)() != (m_pDiffBaseState->*m_pFunc)();
116 QString vogleditor_stateTreeShaderStringItem::getDiffedValue() const
118 if (m_pDiffBaseState == NULL)
121 vogl::dynamic_string value = (m_pDiffBaseState->*m_pFunc)();
122 return QString(value.c_str());
125 //=============================================================================
127 vogleditor_stateTreeShaderItem::vogleditor_stateTreeShaderItem(QString name, QString value, vogleditor_stateTreeItem* parentNode, vogl_shader_state& state)
128 : vogleditor_stateTreeItem(name, value, parentNode),
133 { vogleditor_stateTreeShaderBoolItem* pItem = new vogleditor_stateTreeShaderBoolItem("GL_DELETE_STATUS", &vogl_shader_state::get_marked_for_deletion, this, state); m_diffableItems.push_back(pItem); this->appendChild(pItem); }
134 { vogleditor_stateTreeShaderBoolItem* pItem = new vogleditor_stateTreeShaderBoolItem("GL_COMPILE_STATUS", &vogl_shader_state::get_compile_status, this, state); m_diffableItems.push_back(pItem); this->appendChild(pItem); }
136 { vogleditor_stateTreeShaderLogItem* pItem = new vogleditor_stateTreeShaderLogItem("GL_INFO_LOG_LENGTH", &vogl_shader_state::get_info_log, this, state); m_diffableItems.push_back(pItem); this->appendChild(pItem); }
138 { vogleditor_stateTreeShaderSourceLengthItem* pItem = new vogleditor_stateTreeShaderSourceLengthItem("GL_SHADER_SOURCE_LENGTH", this, state); m_diffableItems.push_back(pItem); this->appendChild(pItem); }
141 void vogleditor_stateTreeShaderItem::add_diffable_child(vogleditor_stateTreeShaderDiffableItem* pItem)
143 m_diffableItems.push_back(pItem);