{
{"xpos", true},
{"ypos", true},
- {"src", false}
+ {"zpos", true},
+ {"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();
}
case YPOS:
element_->setY(intVal);
break;
+ case ZPOS:
+ element_->setZValue(intVal);
+ break;
case SRC:
return loadImage(value);
break;
-
+ case WIDTH:
+ width_ = intVal;
+ break;
+ case HEIGHT:
+ height_ = intVal;
+ break;
default:
qDebug() << "Unknown attribute: " << attr;
return false;
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_);
}
bool ImageElement::loadImage(QString const& name)
{
- QPixmap pixmap;
QByteArray data;
if(!readFile(name, data))
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_;
+}