X-Git-Url: https://git.cworth.org/git?p=vogl;a=blobdiff_plain;f=src%2Fvogleditor%2Fvogleditor_qtextureexplorer.cpp;h=6249e02cf2cf424e8d7b556134367185c0929644;hp=5a656d59b425f5e5669e7adcc01490f87a2e388c;hb=HEAD;hpb=96da0248021a617555bfcfa419eb385485379239 diff --git a/src/vogleditor/vogleditor_qtextureexplorer.cpp b/src/vogleditor/vogleditor_qtextureexplorer.cpp index 5a656d5..6249e02 100644 --- a/src/vogleditor/vogleditor_qtextureexplorer.cpp +++ b/src/vogleditor/vogleditor_qtextureexplorer.cpp @@ -2,6 +2,7 @@ #include "ui_vogleditor_qtextureexplorer.h" #include "vogl_gl_object.h" +#include "vogl_gl_state_snapshot.h" #include "vogl_texture_state.h" #include "vogl_renderbuffer_state.h" #include @@ -49,11 +50,14 @@ vogleditor_QTextureExplorer::vogleditor_QTextureExplorer(QWidget *parent) : vogleditor_QTextureExplorer::~vogleditor_QTextureExplorer() { + clear(); delete ui; } void vogleditor_QTextureExplorer::clear() { + m_objects.clear(); + ui->textureObjectListbox->clear(); m_textureViewer.clear(); @@ -71,13 +75,56 @@ unsigned int vogleditor_QTextureExplorer::get_preferred_height() const return m_textureViewer.get_preferred_height() + ui->textureObjectListbox->height() * 2 + 50; } -void vogleditor_QTextureExplorer::set_texture_objects(vogl_gl_object_state_ptr_vec objects) +uint vogleditor_QTextureExplorer::set_texture_objects(vogl::vector sharingContexts) +{ + clear(); + + uint textureCount = 0; + + for (uint c = 0; c < sharingContexts.size(); c++) + { + vogl_gl_object_state_ptr_vec textureObjects; + sharingContexts[c]->get_all_objects_of_category(cGLSTTexture, textureObjects); + + textureCount += add_texture_objects(textureObjects); + } + + return textureCount; +} + +uint vogleditor_QTextureExplorer::set_renderbuffer_objects(vogl::vector sharingContexts) +{ + clear(); + + uint textureCount = 0; + + for (uint c = 0; c < sharingContexts.size(); c++) + { + vogl_gl_object_state_ptr_vec renderbufferObjects; + sharingContexts[c]->get_all_objects_of_category(cGLSTRenderbuffer, renderbufferObjects); + + textureCount += add_texture_objects(renderbufferObjects); + } + + return textureCount; +} + +uint vogleditor_QTextureExplorer::set_texture_objects(vogl_gl_object_state_ptr_vec textureObjects) { clear(); - m_objects = objects; - for (vogl_gl_object_state_ptr_vec::iterator iter = objects.begin(); iter != objects.end(); iter++) + return add_texture_objects(textureObjects); +} + +uint vogleditor_QTextureExplorer::add_texture_objects(vogl_gl_object_state_ptr_vec textureObjects) +{ + uint textureCount = 0; + + for (vogl_gl_object_state_ptr_vec::iterator iter = textureObjects.begin(); iter != textureObjects.end(); iter++) { + ++textureCount; + m_objects.push_back(*iter); + if ((*iter)->get_type() == cGLSTTexture) { vogl_texture_state* pTexState = static_cast(*iter); @@ -101,9 +148,11 @@ void vogleditor_QTextureExplorer::set_texture_objects(vogl_gl_object_state_ptr_v VOGL_ASSERT(!"Unhandled object type in TextureExplorer"); } } + + return textureCount; } -void vogleditor_QTextureExplorer::add_texture_object(vogl_texture_state& textureState, vogl::dynamic_string bufferType) +uint vogleditor_QTextureExplorer::add_texture_object(vogl_texture_state& textureState, vogl::dynamic_string bufferType) { m_objects.push_back(&textureState); @@ -111,6 +160,7 @@ void vogleditor_QTextureExplorer::add_texture_object(vogl_texture_state& texture valueStr = valueStr.sprintf("%s (%u x %u) %s", bufferType.c_str(), textureState.get_texture().get_width(), textureState.get_texture().get_height(), g_gl_enums.find_name(textureState.get_texture().get_ogl_internal_fmt())); ui->textureObjectListbox->addItem(valueStr, QVariant::fromValue((vogl_gl_object_state*)&textureState)); + return 1; } bool vogleditor_QTextureExplorer::set_active_texture(unsigned long long textureHandle)