card back svg

This commit is contained in:
Max-Wilhelm Bruker 2009-06-26 23:25:51 +02:00
parent fb03c5cdbb
commit 8efe15a201
5 changed files with 182 additions and 8 deletions

View file

@ -4,6 +4,8 @@
#include <QFile>
#include <QTextStream>
#include <QSettings>
#include <QSvgRenderer>
#include <QPainter>
CardSet::CardSet(const QString &_shortName, const QString &_longName)
: shortName(_shortName), longName(_longName)
@ -142,9 +144,18 @@ QPixmap *CardInfo::getPixmap(QSize size)
if (cachedPixmap)
return cachedPixmap;
QPixmap *bigPixmap = loadPixmap();
if (bigPixmap->isNull())
return 0;
QPixmap *result = new QPixmap(bigPixmap->scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
QPixmap *result;
if (bigPixmap->isNull()) {
if (!getName().isEmpty())
return 0;
else {
result = new QPixmap(size);
QSvgRenderer svg(QString(":/back.svg"));
QPainter painter(result);
svg.render(&painter, QRectF(0, 0, size.width(), size.height()));
}
} else
result = new QPixmap(bigPixmap->scaled(size, Qt::IgnoreAspectRatio, Qt::SmoothTransformation));
scaledPixmapCache.insert(size.width(), result);
return result;
}

View file

@ -1,4 +1,5 @@
#include "cardinfowidget.h"
#include "carditem.h"
#include <QGridLayout>
#include <QLabel>
#include <QTextEdit>
@ -12,7 +13,7 @@ CardInfoWidget::CardInfoWidget(CardDatabase *_db, QWidget *parent)
QFont f;
f.setPixelSize(11);
nameLabel1 = new QLabel(tr("Name:"));
nameLabel1->setFont(f);
nameLabel2 = new QLabel();
@ -54,11 +55,11 @@ CardInfoWidget::CardInfoWidget(CardDatabase *_db, QWidget *parent)
CardInfo *cardBack = db->getCard();
QPixmap *bigPixmap = cardBack->loadPixmap();
if (bigPixmap->isNull())
QMessageBox::critical(this, tr("Error"), tr("Unable to load pixmap for card back."));
pixmapHeight = pixmapWidth * CARD_HEIGHT / CARD_WIDTH;
else
pixmapHeight = pixmapWidth * bigPixmap->height() / bigPixmap->width();
setCard(cardBack);
setFrameStyle(QFrame::Panel | QFrame::Raised);
setFixedSize(sizeHint());
}
@ -73,7 +74,7 @@ void CardInfoWidget::setCard(CardInfo *card)
cardPicture->setPixmap(*resizedPixmap);
else
cardPicture->setPixmap(*(db->getCard()->getPixmap(QSize(pixmapWidth, pixmapHeight))));
nameLabel2->setText(card->getName());
manacostLabel2->setText(card->getManacost());
cardtypeLabel2->setText(card->getCardType());