X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fimageelement.cpp;h=914ad6ba9c622b85ee4acaf7eaf6455d312e125f;hb=c9ce1260549ab90c599d7f0e513e8d1191da7c72;hp=20026668f0cd5a7505d2fdda40f3873cdd933ac3;hpb=64f0d552c4c5235f19988138edeb3048ac7ec151;p=jspeed diff --git a/src/imageelement.cpp b/src/imageelement.cpp index 2002666..914ad6b 100644 --- a/src/imageelement.cpp +++ b/src/imageelement.cpp @@ -30,11 +30,16 @@ namespace { {"xpos", true}, {"ypos", true}, - {"src", false} + {"zpos", true}, + {"visiblewhen", false}, + {"src", false}, + {"width", true}, + {"height", true} }; } -ImageElement::ImageElement(Reader* reader): GraphicsElement(reader) +ImageElement::ImageElement(Reader* reader): GraphicsElement(reader), +width_(0), height_(0), imageSet_(false) { element_ = new QGraphicsPixmapItem(); } @@ -57,10 +62,21 @@ bool ImageElement::setAttribute(QString const& name, case YPOS: element_->setY(intVal); break; + case ZPOS: + element_->setZValue(intVal); + break; + case VISIBLEWHEN: + setVisibleWhen(strToVisibleWhen(value)); + break; case SRC: return loadImage(value); break; - + case WIDTH: + width_ = intVal; + break; + case HEIGHT: + height_ = intVal; + break; default: qDebug() << "Unknown attribute: " << attr; return false; @@ -76,6 +92,31 @@ bool ImageElement::setAttribute(QString const& name, void ImageElement::addToScene(GraphicsScene* scene) { + if(!imageSet_) + { + return; + } + + QPixmap pix; + + if(width_ > 0 && height_ > 0) + { + pix = pixmap_.scaled(width_, height_, Qt::IgnoreAspectRatio, Qt::SmoothTransformation); + } + else if(width_ > 0) + { + pix = pixmap_.scaledToWidth(width_, Qt::SmoothTransformation); + } + else if(height_ > 0) + { + pix = pixmap_.scaledToHeight(height_, Qt::SmoothTransformation); + } + else + { + pix = pixmap_; + } + + element_->setPixmap(pix); scene->addItem(element_); } @@ -85,7 +126,6 @@ void ImageElement::update() bool ImageElement::loadImage(QString const& name) { - QPixmap pixmap; QByteArray data; if(!readFile(name, data)) @@ -93,13 +133,18 @@ bool ImageElement::loadImage(QString const& name) return false; } - if(!pixmap.loadFromData(data)) + if(!pixmap_.loadFromData(data)) { setError("Invalid image file: " + name); return false; } - element_->setPixmap(pixmap); + imageSet_ = true; return true; } + +QGraphicsItem* ImageElement::getElement() const +{ + return element_; +}