summaryrefslogtreecommitdiff
path: root/layoutgl/texturemanager.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'layoutgl/texturemanager.cpp')
-rw-r--r--layoutgl/texturemanager.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/layoutgl/texturemanager.cpp b/layoutgl/texturemanager.cpp
new file mode 100644
index 0000000..80a8186
--- /dev/null
+++ b/layoutgl/texturemanager.cpp
@@ -0,0 +1,31 @@
+#include "texturemanager.h"
+
+LGLTextureManager::LGLTextureManager() {
+}
+
+void LGLTextureManager::setup(QGLWidget *gl, const LYTLayout *layout) {
+ // TODO: code to cleanup previous stuff
+
+ //m_gl = gl;
+ m_layout = layout;
+ m_package = &layout->package();
+
+ QStringList textures = layout->generateTextureRefs();
+
+ foreach (const QString &texName, textures) {
+ qDebug() << texName;
+
+ QByteArray tplData = m_package->getTexture(texName);
+
+ QDataStream tplStream(tplData);
+ WiiTexPalette tpl(tplStream);
+
+ const QImage &image = tpl.textures.first().image;
+ image.save(QString("tpl/%2__%1.png").arg(texName).arg((int)tpl.textures.first().format));
+ // dirty, dirty hack, TODO: FIXME
+ GLuint tex = gl->bindTexture(image, GL_TEXTURE_2D);
+
+ m_textures.insert(texName, tex);
+ m_images.insert(texName, image);
+ }
+}