/* * Copyright 2009 Ben Boeckel * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ // Header include #include "QGSCanvas.h" // Sigencore includes #include // Sigscript includes #include #include // KDE includes #include #include #include #include // Qt includes #include #include #include #include using namespace Sigscript; using namespace Sigencore; QGSCanvas::QGSCanvas(GameWrapper* game, Config* parent) : Canvas(parent), m_game(game), m_scene(new QGraphicsScene), m_collection(new Kross::ActionCollection(QString("canvas-%1").arg(QUuid::createUuid().toString()), Kross::Manager::self().actionCollection())) { } QGSCanvas::~QGSCanvas() { delete m_scene; delete m_collection; } QString QGSCanvas::name() { return "QGraphicsScene canvas"; } QString QGSCanvas::description() { return "A canvas using QGraphicsScene"; } QIcon QGSCanvas::icon() { return KIcon(); } void QGSCanvas::addSprite(const QString& name, const QString& sprite, const int x, const int y, const int zOrder) { // TODO: NOOP or refresh? if (m_items.contains(name)) return; SpriteWrapper* spr = m_game->sprite(sprite); if (spr) { QGraphicsPixmapItem* item = new QGraphicsPixmapItem(spr->sprite()); item->setPos(x, y); item->setZValue(zOrder); m_scene->addItem(item); m_items[name] = item; } } void QGSCanvas::removeSprite(const QString& name) { if (m_items.contains(name)) { delete m_items[name]; m_items.remove(name); } } void QGSCanvas::transform(const QString& transform, const QString& object, const QVariantList& parameters) { } int QGSCanvas::type() const { return QGraphicsSceneCanvas; } QWidget* QGSCanvas::viewport() { // TODO: Only one view allowed? or as many as wanted? QGraphicsView* view = new QGraphicsView; view->setScene(m_scene); return view; }