forked from len0rd/rockbox
Theme Editor: Fixed image positioning bug, implemented saveGeometry() in RBImage
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27711 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
430eb651a2
commit
bfc20975b0
3 changed files with 33 additions and 9 deletions
|
@ -24,10 +24,16 @@
|
|||
#include <QBitmap>
|
||||
|
||||
#include "rbimage.h"
|
||||
#include "parsetreenode.h"
|
||||
|
||||
RBImage::RBImage(QString file, int tiles, int x, int y, QGraphicsItem* parent)
|
||||
: RBMovable(parent), tiles(tiles), currentTile(0)
|
||||
RBImage::RBImage(QString file, int tiles, int x, int y, ParseTreeNode* node,
|
||||
QGraphicsItem* parent)
|
||||
: RBMovable(parent), tiles(tiles), currentTile(0),
|
||||
node(node)
|
||||
{
|
||||
/* Prevents RBMovable from interfering with initial position setting */
|
||||
setFlag(ItemSendsGeometryChanges, false);
|
||||
|
||||
if(QFile::exists(file))
|
||||
{
|
||||
image = new QPixmap(file);
|
||||
|
@ -56,7 +62,8 @@ RBImage::RBImage(QString file, int tiles, int x, int y, QGraphicsItem* parent)
|
|||
}
|
||||
|
||||
RBImage::RBImage(const RBImage &other, QGraphicsItem* parent)
|
||||
: RBMovable(parent), tiles(other.tiles), currentTile(other.currentTile)
|
||||
: RBMovable(parent), tiles(other.tiles), currentTile(other.currentTile),
|
||||
node(other.node)
|
||||
{
|
||||
if(other.image)
|
||||
image = new QPixmap(*(other.image));
|
||||
|
@ -90,7 +97,12 @@ void RBImage::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
|||
RBMovable::paint(painter, option, widget);
|
||||
}
|
||||
|
||||
|
||||
|
||||
void RBImage::saveGeometry()
|
||||
{
|
||||
QPointF origin = pos();
|
||||
|
||||
node->modParam(static_cast<int>(origin.x()), 2);
|
||||
node->modParam(static_cast<int>(origin.y()), 3);
|
||||
}
|
||||
|
|
|
@ -27,10 +27,13 @@
|
|||
|
||||
#include "rbmovable.h"
|
||||
|
||||
class ParseTreeNode;
|
||||
|
||||
class RBImage: public RBMovable
|
||||
{
|
||||
public:
|
||||
RBImage(QString file, int tiles, int x, int y, QGraphicsItem* parent = 0);
|
||||
RBImage(QString file, int tiles, int x, int y, ParseTreeNode* node,
|
||||
QGraphicsItem* parent = 0);
|
||||
RBImage(const RBImage& other, QGraphicsItem* parent);
|
||||
virtual ~RBImage();
|
||||
|
||||
|
@ -45,6 +48,11 @@ public:
|
|||
currentTile = tiles -1;
|
||||
}
|
||||
|
||||
void enableMovement()
|
||||
{
|
||||
setFlag(ItemSendsGeometryChanges, true);
|
||||
}
|
||||
|
||||
|
||||
protected:
|
||||
void saveGeometry();
|
||||
|
@ -56,6 +64,8 @@ private:
|
|||
|
||||
QRectF size;
|
||||
|
||||
ParseTreeNode* node;
|
||||
|
||||
};
|
||||
|
||||
#endif // RBIMAGE_H
|
||||
|
|
|
@ -758,6 +758,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
|
|||
image = new RBImage(*(info.screen()->getImage(id)), viewport);
|
||||
image->setTile(tile);
|
||||
image->show();
|
||||
image->enableMovement();
|
||||
}
|
||||
|
||||
return true;
|
||||
|
@ -775,7 +776,7 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
|
|||
tiles = 1;
|
||||
|
||||
info.screen()->loadImage(id, new RBImage(filename, tiles, x, y,
|
||||
viewport));
|
||||
this, viewport));
|
||||
return true;
|
||||
|
||||
case '\0':
|
||||
|
@ -785,10 +786,11 @@ bool ParseTreeNode::execTag(const RBRenderInfo& info, RBViewport* viewport)
|
|||
element->params[1].data.text;
|
||||
x = element->params[2].data.number;
|
||||
y = element->params[3].data.number;
|
||||
image = new RBImage(filename, 1, x, y, viewport);
|
||||
info.screen()->loadImage(id, new RBImage(filename, 1, x, y,
|
||||
viewport));
|
||||
info.screen()->getImage(id)->show();
|
||||
image = new RBImage(filename, 1, x, y, this, viewport);
|
||||
info.screen()->loadImage(id, image);
|
||||
image->show();
|
||||
image->enableMovement();
|
||||
|
||||
return true;
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue