[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    playground/games/kolf-ng
From:       Stefan Majewsky <majewsky () gmx ! net>
Date:       2009-09-22 20:08:56
Message-ID: 1253650136.986675.12898.nullmailer () svn ! kde ! org
[Download RAW message or body]

SVN commit 1026908 by majewsky:

Add a TexturePool, which bothers with finding and loading textures.

 M  +2 -0      CMakeLists.txt  
 M  +14 -5     editor/blender-manager.cpp  
 M  +4 -1      editor/blender-manager.h  
 M  +9 -20     editor/blender-model.cpp  
 M  +1 -1      editor/blender-model.h  
 A             editor/blender-texture-adddialog.cpp   [License: GPL (v2+)]
 A             editor/blender-texture-adddialog.h   [License: GPL (v2+)]
 M  +3 -7      editor/blender-texture.cpp  
 M  +1 -1      editor/blender-texture.h  
 A             editor/blender-texturepool.cpp   [License: GPL (v2+)]
 A             editor/blender-texturepool.h   [License: GPL (v2+)]


--- trunk/playground/games/kolf-ng/CMakeLists.txt #1026907:1026908
@@ -20,6 +20,8 @@
 	editor/blender-manager.cpp
 	editor/blender-model.cpp
 	editor/blender-texture.cpp
+	editor/blender-texture-adddialog.cpp
+	editor/blender-texturepool.cpp
 	editor/blender-widget.cpp
 	editor/hmcreator-allselectbutton.cpp
 	editor/hmcreator-drawingboard.cpp
--- trunk/playground/games/kolf-ng/editor/blender-manager.cpp #1026907:1026908
@@ -22,13 +22,14 @@
 #include "blender-delegate.h"
 #include "blender-model.h"
 #include "blender-texture.h"
+#include "blender-texturepool.h"
+#include "blender-texture-adddialog.h"
 #include "hmcreator-drawingboard.h"
 #include "../elements/utils-heightmap.h"
 
 #include <QListView>
-#include <KFileDialog>
+#include <QPointer>
 #include <KLocalizedString>
-#include <KStandardDirs>
 
 namespace Kolf
 {
@@ -56,11 +57,19 @@
 
 void Kolf::BlenderManager::addTextures()
 {	
-	QMutexLocker locker(&m_mutex);
-	KUrl url = KFileDialog::getOpenUrl(KUrl("kfiledialog://kolf-ng/textures"), \
QLatin1String("image/png image/jpeg image/bmp image/tiff"), 0, i18nc("Used as caption \
                for file dialog.", "Select texture file - Kolf"));
-	m_model->addTexture(url);
+	QPointer<KDialog> dialog(new Kolf::BlenderAddTextureDialog);
+	connect(dialog, SIGNAL(textureSelectedFromPool(const QModelIndex&)), this, \
SLOT(addTextureFromPool(const QModelIndex&))); +	dialog->exec();
+	delete dialog;
 }
 
+#include <KDebug>
+
+void Kolf::BlenderManager::addTextureFromPool(const QModelIndex& index)
+{
+	m_model->addTexture(index.data(Kolf::BlenderTexturePool::ImageRole).value<QImage>());
 +}
+
 void Kolf::BlenderManager::delTextures()
 {
 	QModelIndexList indexes = m_view->selectionModel()->selectedIndexes();
--- trunk/playground/games/kolf-ng/editor/blender-manager.h #1026907:1026908
@@ -25,8 +25,10 @@
 #include <QImage>
 #include <QObject>
 
+class QListView;
+class QModelIndex;
 class KAction;
-class QListView;
+
 namespace Kolf
 {
 	class BlendThread;
@@ -51,6 +53,7 @@
 			void blendingFinished();
 		private Q_SLOTS:
 			void addTextures();
+			void addTextureFromPool(const QModelIndex& index);
 			void delTextures();
 			void startBlending(bool force = false);
 			void processBlending();
--- trunk/playground/games/kolf-ng/editor/blender-model.cpp #1026907:1026908
@@ -19,27 +19,24 @@
 
 #include "blender-model.h"
 #include "blender-texture.h"
+#include "blender-texturepool.h"
 
-#include <QStringList>
-#include <KIO/NetAccess>
-#include <KStandardDirs>
-
 Kolf::TextureModel::TextureModel(QObject* parent)
 	: QAbstractListModel(parent)
 {
 	//default rock texture
-	QString fileName = KStandardDirs::locate("appdata", \
                QLatin1String("textures/default-rock.jpg"));
-	Kolf::BlenderTexture* texture = new Kolf::BlenderTexture(fileName);
+	QImage image = Kolf::BlenderTexturePool::instance()->imageForKey("default-rock");
+	Kolf::BlenderTexture* texture = new Kolf::BlenderTexture(image);
 	texture->setRange(150, 255, 255);
 	m_textures << texture;
 	//default grass texture
-	fileName = KStandardDirs::locate("appdata", \
                QLatin1String("textures/default-grass.jpg"));
-	texture = new Kolf::BlenderTexture(fileName);
+	image = Kolf::BlenderTexturePool::instance()->imageForKey("default-grass");
+	texture = new Kolf::BlenderTexture(image);
 	texture->setRange(60, 140, 220);
 	m_textures << texture;
 	//default water texture
-	fileName = KStandardDirs::locate("appdata", \
                QLatin1String("textures/default-water.jpg"));
-	texture = new BlenderTexture(fileName);
+	image = Kolf::BlenderTexturePool::instance()->imageForKey("default-water");
+	texture = new BlenderTexture(image);
 	texture->setRange(0, 0, 80);
 	m_textures << texture;
 }
@@ -102,21 +99,13 @@
 	return m_textures;
 }
 
-void Kolf::TextureModel::addTexture(const KUrl& url)
+void Kolf::TextureModel::addTexture(const QImage& image)
 {
-	//make file locally available if necessary
-	QString localFile = url.path();
-	if (!url.isLocalFile())
-		if (!KIO::NetAccess::download(url, localFile, 0))
-			return;
-	//add texture
 	int newRow = m_textures.count();
 	beginInsertRows(QModelIndex(), newRow, newRow);
-	m_textures << new Kolf::BlenderTexture(localFile);
+	m_textures << new Kolf::BlenderTexture(image);
 	endInsertRows();
 	emit texturesModified();
-	//cleanup
-	KIO::NetAccess::removeTempFile(localFile);
 }
 
 void Kolf::TextureModel::removeTexture(int index)
--- trunk/playground/games/kolf-ng/editor/blender-model.h #1026907:1026908
@@ -41,7 +41,7 @@
 			bool setData(const QModelIndex& index, const QVariant& value, int role = \
Qt::EditRole);  
 			QList<Kolf::BlenderTexture*> textures() const;
-			void addTexture(const KUrl& url);
+			void addTexture(const QImage& image);
 			void removeTexture(int index);
 		Q_SIGNALS:
 			///This signal is used to avoid unneeded reblending.
--- trunk/playground/games/kolf-ng/editor/blender-texture.cpp #1026907:1026908
@@ -18,15 +18,11 @@
  ***************************************************************************/
 
 #include "blender-texture.h"
+
 #include <cmath>
 
-QImage Kolf__BlenderTexture__imageFromPath(const QString& path)
-{
-	return QImage(path).convertToFormat(QImage::Format_ARGB32);
-}
-
-Kolf::BlenderTexture::BlenderTexture(const QString& path)
-	: QImage(Kolf__BlenderTexture__imageFromPath(path))
+Kolf::BlenderTexture::BlenderTexture(const QImage& image)
+	: QImage(image.convertToFormat(QImage::Format_ARGB32))
 	, m_thumbnail(QPixmap::fromImage(scaled(48, 48)))
 {
 	m_range[0] = 0;
--- trunk/playground/games/kolf-ng/editor/blender-texture.h #1026907:1026908
@@ -43,7 +43,7 @@
 	class BlenderTexture : private QImage
 	{
 		public:
-			BlenderTexture(const QString& path);
+			explicit BlenderTexture(const QImage& image);
 
 			QPixmap thumbnail() const;
 			QColor pixel(int x, int y, int z, Kolf::BlenderCurve curveShape = DefaultCurve) \
const;


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic