[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