forked from len0rd/rockbox
Theme Editor: Working on image rendering
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27083 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
a937b8ba05
commit
d3027053f9
5 changed files with 113 additions and 15 deletions
|
@ -20,19 +20,55 @@
|
|||
****************************************************************************/
|
||||
|
||||
#include <QPainter>
|
||||
#include <QFile>
|
||||
#include <QBitmap>
|
||||
|
||||
#include "rbimage.h"
|
||||
|
||||
RBImage::RBImage(QString file, int tiles)
|
||||
:image(file), tiles(tiles)
|
||||
RBImage::RBImage(QString file, int tiles, int x, int y, QGraphicsItem* parent)
|
||||
: QGraphicsItem(parent), tiles(tiles), currentTile(0)
|
||||
{
|
||||
if(QFile::exists(file))
|
||||
{
|
||||
image = new QPixmap(file);
|
||||
|
||||
if(image->isNull())
|
||||
{
|
||||
delete image;
|
||||
image = 0;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
image->setMask(image->createMaskFromColor(QColor(255,0,255)));
|
||||
|
||||
}
|
||||
|
||||
size = QRectF(x, y, image->width(), image->height() / tiles);
|
||||
|
||||
}
|
||||
else
|
||||
image = 0;
|
||||
}
|
||||
|
||||
void RBImage::draw(QPainter *painter, int x, int y, int tile)
|
||||
RBImage::~RBImage()
|
||||
{
|
||||
if(tiles == 0)
|
||||
painter->drawPixmap(x, y, image.width(), image.height(), image);
|
||||
else
|
||||
painter->drawPixmap(x, y, image, 0, tile * (image.height() / tiles),
|
||||
image.width(), image.height() / tiles);
|
||||
if(image)
|
||||
delete image;
|
||||
}
|
||||
|
||||
QRectF RBImage::boundingRect() const
|
||||
{
|
||||
return size;
|
||||
}
|
||||
|
||||
void RBImage::paint(QPainter *painter, const QStyleOptionGraphicsItem *option,
|
||||
QWidget *widget)
|
||||
{
|
||||
if(!image)
|
||||
return;
|
||||
|
||||
painter->drawPixmap(size, *image, QRect(0, currentTile * image->height()
|
||||
/ tiles, image->width(),
|
||||
image->height() / tiles));
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue