[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: =?utf-8?q?=5Bkwordquiz=5D_src=3A_Make_sure_images_on_flashcards_?=
From: Peter Hedlund <peter () peterandlinda ! com>
Date: 2011-05-31 23:27:29
Message-ID: 20110531232729.78023A60A4 () git ! kde ! org
[Download RAW message or body]
Git commit 1ebe5fda2d064e42b34cb8630163c8bd342e815d by Peter Hedlund.
Committed on 01/06/2011 at 01:18.
Pushed by hedlund into branch 'master'.
Make sure images on flashcards are painted with best possible resolution.
BUG:273276
M +1 -0 src/CMakeLists.txt
M +7 -22 src/kwqcardscene.cpp
M +5 -3 src/kwqcardscene.h
M +1 -1 src/kwqcardview.cpp
M +1 -1 src/kwqcardview.h
A +50 -0 src/kwqpixmapitem.cpp [License: GPL (v2+)]
A +37 -0 src/kwqpixmapitem.h [License: GPL (v2+)]
http://commits.kde.org/kwordquiz/1ebe5fda2d064e42b34cb8630163c8bd342e815d
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4c9ee3c..fef14a2 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -38,6 +38,7 @@ set(kwordquiz_SRCS
kwqcardview.cpp
kwqquizview.cpp
kwqcleardialog.cpp
+ kwqpixmapitem.cpp
)
diff --git a/src/kwqcardscene.cpp b/src/kwqcardscene.cpp
index 41a9d5c..272e552 100644
--- a/src/kwqcardscene.cpp
+++ b/src/kwqcardscene.cpp
@@ -1,7 +1,7 @@
/***************************************************************************
kwqcardscene.cpp
-------------------
- copyright : (C) 2009-2010 by Peter Hedlund
+ copyright : (C) 2009-2011 by Peter Hedlund
email : peter.hedlund@kdemail.net
***************************************************************************/
@@ -55,13 +55,8 @@ KWQCardScene::KWQCardScene(QObject *parent) : \
QGraphicsScene(parent) f.setPointSize(12);
m_text->setParentItem(m_textArea);
- m_imageArea = addRect(textMargin, cardMargin * 4, cardWidth - (textMargin * 2), \
cardHeight - (cardMargin * 5));
- m_imageArea->setPen(Qt::NoPen);
- m_imageArea->setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
- m_imageArea->setZValue(3);
-
- m_pixmap = addPixmap(QPixmap());
- m_pixmap->setParentItem(m_imageArea);
+ m_pixmap = new KWQPixmapItem(QPixmap(), m_card);
+ m_pixmap->setImageRect(QRect(textMargin, cardMargin * 4, cardWidth - (textMargin \
* 2), cardHeight - (cardMargin * 5)));
setIdentifier("");
setText("");
@@ -119,18 +114,8 @@ void KWQCardScene::setFrameColor(const QColor &frameColor)
void KWQCardScene::setImage(const QPixmap &image)
{
- if (!image.isNull()) {
- realign(false);
- QSize s;
- s.setWidth(m_imageArea->rect().width());
- s.setHeight(m_imageArea->rect().height());
- m_pixmap->setPixmap(image.scaled(s, Qt::KeepAspectRatio));
- }
- else
- {
- realign(true);
- m_pixmap->setPixmap(image); //clear image
- }
+ realign(image.isNull());
+ m_pixmap->setPixmap(image);
repositionText();
}
@@ -139,7 +124,7 @@ void KWQCardScene::realign(bool textOnly)
if (textOnly) {
m_textArea->setRect(textMargin, cardMargin * 4, cardWidth - (textMargin * \
2), cardHeight - (cardMargin * 5)); } else {
- m_imageArea->setRect(textMargin, cardMargin * 4, (cardWidth / 2) - \
textMargin, cardHeight - (cardMargin * 5)); + \
m_pixmap->setImageRect(QRect(textMargin, cardMargin * 4, (cardWidth / 2) - \
textMargin, cardHeight - (cardMargin * 5)));
m_textArea->setRect((cardWidth / 2), cardMargin * 4, (cardWidth / 2) - \
textMargin, cardHeight - (cardMargin * 5)); }
}
@@ -153,7 +138,7 @@ void KWQCardScene::repositionText()
m_text->setTextWidth(cardWidth - (textMargin * 2));
m_text->setPos(textMargin, h);
} else {
- h = ((cardMargin * 4) + ((cardHeight - (cardMargin * 5)) - \
m_pixmap->boundingRect().height()) / 2); + h = ((cardMargin * 4) + \
((cardHeight - (cardMargin * 5)) - m_textArea->boundingRect().height()) / 2); \
m_pixmap->setPos(textMargin, h);
h = ((cardMargin * 4) + ((cardHeight - (cardMargin * 5)) - \
m_text->boundingRect().height()) / 2); m_text->setTextWidth((cardWidth / 2) - \
textMargin);
diff --git a/src/kwqcardscene.h b/src/kwqcardscene.h
index a8e4191..59aba31 100644
--- a/src/kwqcardscene.h
+++ b/src/kwqcardscene.h
@@ -1,7 +1,7 @@
/***************************************************************************
kwqcardscene.h
-------------------
- copyright : (C) 2009-2010 by Peter Hedlund
+ copyright : (C) 2009-2011 by Peter Hedlund
email : peter.hedlund@kdemail.net
***************************************************************************/
@@ -22,6 +22,9 @@
#include <QGraphicsSimpleTextItem>
#include <QGraphicsRectItem>
#include <QGraphicsLineItem>
+#include <QGraphicsPixmapItem>
+
+#include "kwqpixmapitem.h"
class KWQCardScene : public QGraphicsScene
{
@@ -56,8 +59,7 @@ private:
QGraphicsSimpleTextItem *m_identifier;
QGraphicsRectItem *m_textArea;
QGraphicsTextItem *m_text;
- QGraphicsRectItem *m_imageArea;
- QGraphicsPixmapItem *m_pixmap;
+ KWQPixmapItem *m_pixmap;
void realign(bool );
void repositionText();
diff --git a/src/kwqcardview.cpp b/src/kwqcardview.cpp
index fccffc9..e60b80f 100644
--- a/src/kwqcardview.cpp
+++ b/src/kwqcardview.cpp
@@ -1,7 +1,7 @@
/***************************************************************************
kwqcardview.cpp
-------------------
- copyright : (C) 2009-2010 by Peter Hedlund
+ copyright : (C) 2009-2011 by Peter Hedlund
email : peter.hedlund@kdemail.net
***************************************************************************/
diff --git a/src/kwqcardview.h b/src/kwqcardview.h
index 7853bda..7b08fd4 100644
--- a/src/kwqcardview.h
+++ b/src/kwqcardview.h
@@ -1,7 +1,7 @@
/***************************************************************************
kwqcardview.h
-------------------
- copyright : (C) 2009-2010 by Peter Hedlund
+ copyright : (C) 2009-2011 by Peter Hedlund
email : peter.hedlund@kdemail.net
***************************************************************************/
diff --git a/src/kwqpixmapitem.cpp b/src/kwqpixmapitem.cpp
new file mode 100644
index 0000000..0e66399
--- /dev/null
+++ b/src/kwqpixmapitem.cpp
@@ -0,0 +1,50 @@
+/***************************************************************************
+ kwqpixmapitem.cpp
+ -------------------
+ copyright : (C) 2011 by Peter Hedlund
+ email : peter.hedlund@kdemail.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+#include "kwqpixmapitem.h"
+
+#include <QtGui/QPainter>
+
+KWQPixmapItem::KWQPixmapItem(const QPixmap &pixmap, QGraphicsItem *parentItem) : \
QGraphicsPixmapItem(pixmap, parentItem) +{
+ setCacheMode(NoCache);
+ setTransformationMode(Qt::SmoothTransformation);
+}
+
+
+QRectF KWQPixmapItem::boundingRect() const
+{
+ return m_imageRect;
+}
+
+
+void KWQPixmapItem::setImageRect(const QRect& rect)
+{
+ m_imageRect = rect;
+}
+
+
+void KWQPixmapItem::paint(QPainter *painter, const QStyleOptionGraphicsItem* \
options, QWidget* widget) +{
+ Q_UNUSED(options);
+ Q_UNUSED(widget);
+ QRect viewRect = painter->combinedTransform().mapRect(boundingRect().toRect());
+ QPixmap pm = pixmap().scaled(viewRect.size(), Qt::KeepAspectRatio, \
Qt::SmoothTransformation); + QSize pixmapSize = pm.size();
+ pixmapSize.scale(QSizeF(boundingRect().width(), \
boundingRect().height()).toSize(), Qt::KeepAspectRatio); + \
painter->drawPixmap((boundingRect().width() - pixmapSize.width()) / 2, \
(boundingRect().height() - pixmapSize.height()) / 2, pixmapSize.width(), \
pixmapSize.height(), pm); +}
diff --git a/src/kwqpixmapitem.h b/src/kwqpixmapitem.h
new file mode 100644
index 0000000..9776f24
--- /dev/null
+++ b/src/kwqpixmapitem.h
@@ -0,0 +1,37 @@
+/***************************************************************************
+ kwqpixmapitem.h
+ -------------------
+ copyright : (C) 2011 by Peter Hedlund
+ email : peter.hedlund@kdemail.net
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+
+#ifndef KWQPIXMAPITEM_H
+#define KWQPIXMAPITEM_H
+
+#include <QGraphicsPixmapItem>
+
+class KWQPixmapItem: public QGraphicsPixmapItem
+{
+public:
+ KWQPixmapItem(const QPixmap &pixmap, QGraphicsItem *parentItem = 0);
+
+public:
+ QRectF boundingRect() const;
+ void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget \
*widget = 0); + void setImageRect(const QRect &rect);
+
+private:
+ QRect m_imageRect;
+};
+
+#endif // KWQPIXMAPITEM_H
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic