[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-devel
Subject:    KAnagram patch using qsvgrenderer for all graphics.
From:       Jeremy Whiting <jeremy () scitools ! com>
Date:       2007-05-18 22:21:51
Message-ID: 200705181621.52109.jeremy () scitools ! com
[Download RAW message or body]

Hi all,

Here's my patch for kanagram to use svg graphics instead of png graphics, to 
be applied to kdeedu/kanagram folder.   Thanks dannya and annma for the 
help :)

Regards,
Jeremy Whiting


["kanagram.diff" (text/x-diff)]

Index: images/CMakeLists.txt
===================================================================
--- images/CMakeLists.txt	(revision 666137)
+++ images/CMakeLists.txt	(working copy)
@@ -1,3 +1,3 @@
 
-install( FILES kanagram.png hint.png eyes1.png eyes2.png eyes3.png eyes4.png \
eyes5.png eyes6.png eyes7.png eyes8.png kicon.png kiconover.png appicon.png \
appiconover.png handbookiconover.png handbookicon.png card.png arrow.png \
arrowover.png basicarrow.png basicarrowover.png next.png nextover.png help.png \
helpover.png quit.png quitover.png config.png configover.png up.png upover.png \
updisabled.png  DESTINATION  ${DATA_INSTALL_DIR}/kanagram/images ) +install( FILES \
kanagram.svg kanagram.png hint.png eyes1.png eyes2.png eyes3.png eyes4.png eyes5.png \
eyes6.png eyes7.png eyes8.png kicon.png kiconover.png appicon.png appiconover.png \
handbookiconover.png handbookicon.png card.png arrow.png arrowover.png basicarrow.png \
basicarrowover.png next.png nextover.png help.png helpover.png quit.png quitover.png \
config.png configover.png up.png upover.png updisabled.png  DESTINATION  \
${DATA_INSTALL_DIR}/kanagram/images )  
Index: images/kanagram.svg
===================================================================
--- images/kanagram.svg	(revision 666137)
+++ images/kanagram.svg	(working copy)
@@ -15,7 +15,7 @@
    sodipodi:version="0.32"
    inkscape:version="0.45"
    sodipodi:docname="kanagram.svg"
-   sodipodi:docbase="/home/danny/CVS/TRUNK/kdeedu/kanagram/images"
+   sodipodi:docbase="/home/jeremy/devel/kde4/src/kdeedu/kanagram/images"
    inkscape:output_extension="org.inkscape.output.svg.inkscape"
    sodipodi:modified="true">
   <metadata
@@ -41,8 +41,8 @@
      bordercolor="#666666"
      pagecolor="#ffffff"
      id="base"
-     inkscape:window-x="0"
-     inkscape:window-y="0"
+     inkscape:window-x="122"
+     inkscape:window-y="60"
      inkscape:current-layer="svg1" />
   <defs
      id="defs3" />
@@ -338,11 +338,12 @@
   </g>
   <g
      transform="matrix(0.8410233,0,0,0.8184181,480.81399,624.02352)"
-     id="arrow_over"
+     id="arrow_hover"
      inkscape:export-filename="/home/danny/work/kde/MOCKUPS/kanagram/arrow.png"
      inkscape:export-xdpi="58.500000"
      inkscape:export-ydpi="58.500000"
-     style="stroke:#ffffff;stroke-opacity:1">
+     style="stroke:#ffffff;stroke-opacity:1"
+     inkscape:label="#arrow_hover">
     <path
        style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#ffffff;stroke-width: \
3.125;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" \
d="M 600.58507,224.60699 C 600.58507,224.33477 599.54621,201.09279 \
599.54621,198.63554 C 599.54621,192.53826 614.7828,208.13608 615.64851,209.52122 C \
617.0731,211.80056 607.03874,223.74557 600.58507,224.60699 z " @@ -373,15 +374,16 @@
   <path
      style="color:#000000;fill:#9b9b9b;fill-opacity:1;fill-rule:evenodd;stroke:#9b9b9 \
b;stroke-width:2.59720993;stroke-linecap:square;stroke-linejoin:round;marker:none;mark \
er-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:non \
e;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
                
      d="M 937.7756,767.84331 L 937.7756,745.44052 L 951.4283,756.64191 L \
                937.7756,767.84331 z "
-     id="basic_arrow"
+     id="basicarrow"
      sodipodi:nodetypes="cccc"
      inkscape:export-filename="/home/danny/work/kde/kanagram/stuff/basic_arrow_over.png"
  inkscape:export-xdpi="58.500000"
-     inkscape:export-ydpi="58.500000" />
+     inkscape:export-ydpi="58.500000"
+     inkscape:label="#basicarrow" />
   <path
      style="color:#000000;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#fffff \
f;stroke-width:2.59720993;stroke-linecap:square;stroke-linejoin:round;marker:none;mark \
er-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:non \
e;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible"
                
      d="M 985.0487,767.84331 L 985.0487,745.44052 L 998.7014,756.64191 L \
                985.0487,767.84331 z "
-     id="basic_arrow_over"
+     id="basicarrow_hover"
      sodipodi:nodetypes="cccc"
      inkscape:export-filename="/home/danny/work/kde/kanagram/stuff/basic_arrow_over.png"
  inkscape:export-xdpi="58.500000"
@@ -442,7 +444,7 @@
        style="font-size:12px;fill:#666666;fill-opacity:1;fill-rule:evenodd;stroke:non \
e;stroke-width:5.13161612;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1" \
/>  </g>
   <g
-     id="handbook_help"
+     id="handbook_hover"
      transform="matrix(1.3068178,0,0,1.3068178,-462.71213,-396.71707)">
     <path
        id="path4147"
Index: src/kanagram.cpp
===================================================================
--- src/kanagram.cpp	(revision 666137)
+++ src/kanagram.cpp	(working copy)
@@ -26,6 +26,7 @@
 #include <QMouseEvent>
 #include <QEvent>
 #include <QPaintEvent>
+#include <QSvgRenderer>
 using namespace std;
 
 #include <qcursor.h>
@@ -60,76 +61,48 @@ using namespace std;
 static const char* m_textRevealWord = I18N_NOOP("reveal word");
 static const char* m_textHint = I18N_NOOP("hint");
 
+double kWindowWidth = 1000.0;
+double kWindowHeight = 725.0;
+
+double xEyesScale = 270.437 / kWindowWidth;
+double yEyesScale = 195.176 / kWindowHeight;
+
+double xScale57Buttons = 57.5 / kWindowWidth;
+double yScale57Buttons = 57.5 / kWindowHeight;
+
+double xScale55Buttons = 55.0 / kWindowWidth;
+double yScale55Buttons = 55.0 / kWindowHeight;
+
+double xTranslateButtons = 810.053 / kWindowWidth;
+
+double yTranslateNextButton = 59.588 / kWindowHeight;
+double yTranslateConfigButton = 199.85 / kWindowHeight;
+double yTranslateHelpButton = 337.487 / kWindowHeight;
+
+double xScaleQuitButton = 77.484 / kWindowWidth;
+double yScaleQuitButton = 77.5 / kWindowHeight;
+
 Kanagram::Kanagram() : QWidget(0), m_overNext(false), m_overConfig(false), \
m_overHelp(false), m_overQuit(false), m_overReveal(false), m_overHint(false), \
m_overUp(false), m_overHintBox(false), m_showHint(false), m_player(0)  {
 	setAttribute(Qt::WA_StaticContents);
-	m_game = new KanagramGame(this);
+	m_renderer = new QSvgRenderer(KStandardDirs::locate("appdata", \
"images/kanagram.svg"));  
-	m_back = new QPixmap(KStandardDirs::locate("appdata", "images/kanagram.png"));
-	m_aboutKDEOverlay = new QPixmap(KStandardDirs::locate("appdata", \
                "images/kicon.png"));
-	m_aboutKDEOverlayOver = new QPixmap(KStandardDirs::locate("appdata", \
                "images/kiconover.png"));
-	m_aboutAppOverlay = new QPixmap(KStandardDirs::locate("appdata", \
                "images/appicon.png"));
-	m_aboutAppOverlayOver = new QPixmap(KStandardDirs::locate("appdata", \
                "images/appiconover.png"));
-	m_handbookOverlay = new QPixmap(KStandardDirs::locate("appdata", \
                "images/handbookicon.png"));
-	m_handbookOverlayOver = new QPixmap(KStandardDirs::locate("appdata", \
                "images/handbookiconover.png"));
-	m_card = new QPixmap(KStandardDirs::locate("appdata", "images/card.png"));
-
-	m_next = new QPixmap(KStandardDirs::locate("appdata", "images/next.png"));
-	m_nextOver = new QPixmap(KStandardDirs::locate("appdata", "images/nextover.png"));
-	m_config = new QPixmap(KStandardDirs::locate("appdata", "images/config.png"));
-	m_configOver = new QPixmap(KStandardDirs::locate("appdata", \
                "images/configover.png"));
-	m_help = new QPixmap(KStandardDirs::locate("appdata", "images/help.png"));
-	m_helpOver = new QPixmap(KStandardDirs::locate("appdata", "images/helpover.png"));
-	m_quit = new QPixmap(KStandardDirs::locate("appdata", "images/quit.png"));
-	m_quitOver = new QPixmap(KStandardDirs::locate("appdata", "images/quitover.png"));
-
-	m_up = new QPixmap(KStandardDirs::locate("appdata", "images/up.png"));
-	m_upOver = new QPixmap(KStandardDirs::locate("appdata", "images/upover.png"));
-	m_upDisabled = new QPixmap(KStandardDirs::locate("appdata", \
                "images/updisabled.png"));
-
-	m_nextRect = QRect(477, 31, 134, 76);
-	m_configRect = QRect(477, 122, 134, 76);
-	m_helpRect = QRect(477, 212, 134, 76);
-	m_quitRect = QRect(453, 352, 182, 104);
-	
-	QFont font = m_blackboardFont;
-	font.setPointSize(14);
-	font.setBold(true);
-    QFontMetrics fm(font);
-	m_blackboardRect = QRect(41, 116, 366, 248);
-//	m_hintRect = QRect(51, 337, 39, 28);
-	QRect r = innerRect(m_blackboardRect, 6, 0);
-    m_hintRect = fm.boundingRect(r, Qt::AlignBottom|Qt::AlignLeft, \
                i18n(m_textHint));
-	m_hintBoxRect = QRect(446, 207, 171, 85);
-//	m_revealRect = QRect(279, 338, 119, 28);
-	r = innerRect(m_blackboardRect, 6, 0);
-    m_revealRect = fm.boundingRect(r, Qt::AlignBottom|Qt::AlignRight, \
                i18n(m_textRevealWord));
-	m_upRect = QRect(341, 425, 55, 33);
-	m_aboutKDERect = QRect(567, 213, 44, 44);
-	m_aboutAppRect = QRect(522, 213, 44, 44);
-	m_handbookRect = QRect(478, 213, 44, 44);
-	m_arrowRect = QRect(380, 134, 13, 20);
-	m_logoRect = QRect(76, 24, 297, 50);
+	m_game = new KanagramGame(this);
 	
 	setMouseTracking(true);
-	setFixedSize(650, 471);
-	show();
-	
+	//setFixedSize(650, 471);
 	m_chalkColor = QColor(155, 155, 155);
 	m_chalkHighlightColor = QColor(255, 255, 255);
 	m_fillColor = QColor(45, 45, 45);
 	m_fontColor = QColor(55, 55, 55);
 	m_fontHighlightColor = QColor(99, 99, 99);
 
-	loadSettings();
-
 	m_hintTimer = new QTimer(this);
 	m_hintTimer->setSingleShot(true);
 	
 	m_helpMenu = new KHelpMenu(this, KGlobal::mainComponent().aboutData());
 	
 	m_inputBox = new QLineEdit(this);
-	m_inputBox->setGeometry(QRect(52, 427, 273, 29));
 	m_inputBox->setFrame(false);
 	
 	connect(m_inputBox, SIGNAL(returnPressed()), this, SLOT(checkWord()));
@@ -142,6 +115,12 @@ Kanagram::Kanagram() : QWidget(0), m_ove
 	m_inputBox->show();
 
 	m_font = KGlobalSettings::generalFont();
+
+	show();
+
+	loadSettings();
+	
+	resize(1000, 725);
 }
 
 Kanagram::~Kanagram()
@@ -163,14 +142,12 @@ void Kanagram::loadSettings()
 	if(m_useStandardFonts)
 	{
 		m_blackboardFont = KGlobalSettings::generalFont();
-		m_arrow = new QPixmap(KStandardDirs::locate("appdata", "images/basicarrow.png"));
-		m_arrowOver = new QPixmap(KStandardDirs::locate("appdata", \
"images/basicarrowover.png")); +		m_arrowName = "basicarrow";
 	}
 	else
 	{
 		m_blackboardFont = QFont("squeaky chalk sound");
-		m_arrow = new QPixmap(KStandardDirs::locate("appdata", "images/arrow.png"));
-		m_arrowOver = new QPixmap(KStandardDirs::locate("appdata", \
"images/arrowover.png")); +		m_arrowName = "arrow";
 	}
 
 	m_game->refreshVocabList();
@@ -181,24 +158,42 @@ void Kanagram::paintEvent(QPaintEvent *)
 	QPixmap buf(width(), height());
 	QPainter p(&buf);
 	
-	p.drawPixmap(0, 0, *m_back);
+	m_renderer->render(&p, "background");
+
+	m_xRatio = width() / kWindowWidth;
+	m_yRatio = height() / kWindowHeight;
 
 	if(m_overNext)
-		p.drawPixmap(525, 38, *m_nextOver);
-	else
-		p.drawPixmap(525, 38, *m_next);
+	{
+		p.translate(xTranslateButtons * width(), yTranslateNextButton * height());
+		p.scale(xScale55Buttons, yScale55Buttons);
+		m_renderer->render(&p, "next_hover");
+		p.resetMatrix();
+	}
+
 	if(m_overConfig)
-		p.drawPixmap(525, 130, *m_configOver);
-	else
-		p.drawPixmap(525, 130, *m_config);
+	{
+		p.translate(xTranslateButtons * width(), yTranslateConfigButton * height());
+		p.scale(xScale55Buttons, yScale55Buttons);
+		m_renderer->render(&p, "config_hover");
+		p.resetMatrix();
+	}
+
 	if(m_overHelp)
-		p.drawPixmap(525, 218, *m_helpOver);
-	else
-		p.drawPixmap(525, 218, *m_help);
+	{
+		p.translate(xTranslateButtons * width(), yTranslateHelpButton * height());
+		p.scale(xScale55Buttons, yScale55Buttons);
+		m_renderer->render(&p, "help_hover");
+		p.resetMatrix();
+	}
+
 	if(m_overQuit)
-		p.drawPixmap(520, 362, *m_quitOver);
-	else
-		p.drawPixmap(520, 362, *m_quit);
+	{
+		p.translate(798.811 * m_xRatio, 556.803 * m_yRatio);
+		p.scale(xScaleQuitButton, yScaleQuitButton);
+		m_renderer->render(&p, "quit_hover");
+		p.resetMatrix();
+	}
 
 //	drawText(p, m_game->getAnagram(), QPoint(223, 243), false, 0, 0, 0, true, 28);
 	drawTextNew(p, m_game->getAnagram(), Qt::AlignCenter, 10, 10, m_blackboardRect, \
true, 28); @@ -221,8 +216,8 @@ void Kanagram::paintEvent(QPaintEvent *)
 
 	//Draw the border of the input box
 	QRect borderRect = m_inputBox->geometry();
-	borderRect.setLeft(borderRect.left() - 2);
-	borderRect.setTop(borderRect.top() - 2);
+	borderRect.setLeft(borderRect.left() - 1);
+	borderRect.setTop(borderRect.top() - 1);
 	borderRect.setWidth(borderRect.width() + 2 * 1);
 	borderRect.setHeight(borderRect.height() + 2 * 1);
 	p.drawRoundRect(borderRect, 10, 5);
@@ -232,61 +227,94 @@ void Kanagram::paintEvent(QPaintEvent *)
 	p.fillRect(borderRect, m_fillColor);
 	p.drawRoundRect(borderRect, 10, 5);
 	
+	QString upArrow = "up";
 	if(m_overUp && !m_inputBox->text().isEmpty())
-		p.drawPixmap(350, 431, *m_upOver);
+	{
+		upArrow = "up_hover";
+	}
 	else if(m_inputBox->text().isEmpty())
-		p.drawPixmap(350, 431, *m_upDisabled);
-	else
-		p.drawPixmap(350, 431, *m_up);
+	{
+		upArrow = "up_disabled";
+	}
+
+	p.translate(m_inputBox->x() + m_inputBox->width() + 27 * m_xRatio, m_inputBox->y() \
+ 12 * m_yRatio); +	p.scale(38 / kWindowWidth, 20 / kWindowHeight);
+	m_renderer->render(&p, upArrow);
+	p.resetMatrix();
 
 	if(m_showHint)
 	{
-		p.drawPixmap(439, 204, *m_hintOverlay);
+		p.translate(684.813 * m_xRatio, 319.896 * m_yRatio);
+		p.scale(xEyesScale, yEyesScale);
+		m_renderer->render(&p, m_hintOverlayName);
+		p.resetMatrix();
+
+		// TODO: figure out how to do drawText with svg position and size
 		QFont f = QFont(m_font);
 		f.setWeight(QFont::Bold);
 		f.setPointSize(10);
 		p.setFont(f);
-		p.drawText(459, 217, 148, 67, Qt::TextWordWrap | Qt::AlignCenter, \
m_game->getHint()); +		p.drawText(694 * m_xRatio, 330 * m_yRatio, 250 * m_xRatio, 100 \
* m_yRatio, Qt::TextWordWrap | Qt::AlignCenter, m_game->getHint());  }
 
 	if(m_overHelp && !m_showHint)
 	{
-		p.drawPixmap(456, 275, *m_card);
 		if(m_overAboutApp)
 		{
-			p.drawPixmap(522, 213, *m_aboutAppOverlay);
+			p.translate(808.377 * m_xRatio, 335.352 * m_yRatio);
+			p.scale(xScale57Buttons, yScale57Buttons);
+			m_renderer->render(&p, "appicon_hover");
+			p.resetMatrix();
 			drawHelpText(p, i18n("About Kanagram"));
 		}
 		else
-			p.drawPixmap(522, 213, *m_aboutAppOverlayOver);
+		{
+			p.translate(808.377 * m_xRatio, 335.352 * m_yRatio);
+			p.scale(xScale57Buttons, yScale57Buttons);
+			m_renderer->render(&p, "appicon");
+			p.resetMatrix();
+		}
 		if(m_overAboutKDE)
 		{
-			p.drawPixmap(567, 213, *m_aboutKDEOverlay);
+			p.translate(865.877 * m_xRatio, 335.352 * m_yRatio);
+			p.scale(xScale57Buttons, yScale57Buttons);
+			m_renderer->render(&p, "kicon_hover");
+			p.resetMatrix();
 			drawHelpText(p, i18n("About KDE"));
 		}
 		else
-			p.drawPixmap(567, 213, *m_aboutKDEOverlayOver);
+		{
+			p.translate(865.877 * m_xRatio, 335.352 * m_yRatio);
+			p.scale(xScale57Buttons, yScale57Buttons);
+			m_renderer->render(&p, "kicon");
+			p.resetMatrix();
+		}
 		if(m_overHandbook)
 		{
-			p.drawPixmap(478, 213, *m_handbookOverlay);
+			p.translate(750.877 * m_xRatio, 335.352 * m_yRatio);
+			p.scale(xScale57Buttons, yScale57Buttons);
+			m_renderer->render(&p, "handbook_hover");
+			p.resetMatrix();
 			drawHelpText(p, i18n("Kanagram Handbook"));
 		}
 		else
-			p.drawPixmap(478, 213, *m_handbookOverlayOver);
+		{
+			p.translate(750.877 * m_xRatio, 335.352 * m_yRatio);
+			p.scale(xScale57Buttons, yScale57Buttons);
+			m_renderer->render(&p, "handbook");
+			p.resetMatrix();
+		}
 	}
 	else if(m_overNext)
 	{
-		p.drawPixmap(456, 275, *m_card);
 		drawHelpText(p, i18n("Next Word"));
 	}
 	else if(m_overConfig)
 	{
-		p.drawPixmap(456, 275, *m_card);
 		drawHelpText(p, i18n("Configure Kanagram"));
 	}
 	else if(m_overQuit)
 	{
-		p.drawPixmap(456, 275, *m_card);
 		drawHelpText(p, i18n("Quit Kanagram"));
 	}
 
@@ -294,16 +322,60 @@ void Kanagram::paintEvent(QPaintEvent *)
 	p2.drawPixmap(0, 0, buf);
 }
 
+void Kanagram::resizeEvent(QResizeEvent *)
+{
+	m_xRatio = width() / kWindowWidth;
+	m_yRatio = height() / kWindowHeight;
+
+	m_blackboardRect = QRect(63.657 * m_xRatio, 182.397 * m_yRatio, 563.273 * m_xRatio, \
380.735 * m_yRatio); +	m_inputBox->setGeometry(QRect(80 * m_xRatio, 657.272 * \
m_yRatio, 420 * m_xRatio, 44.639 * m_yRatio)); +
+	QFont font = m_blackboardFont;
+	font.setPointSize(14);
+	font.setBold(true);
+    QFontMetrics fm(font);
+//	m_hintRect = QRect(51, 337, 39, 28);
+	QRect r = innerRect(m_blackboardRect, 6, 0);
+    m_hintRect = fm.boundingRect(r, Qt::AlignBottom|Qt::AlignLeft, \
i18n(m_textHint)); +	m_hintBoxRect = QRect(684.813 * m_xRatio, 319.896 * m_yRatio, \
xEyesScale * width(), yEyesScale * height()); +//	m_revealRect = QRect(279, 338, 119, \
28); +	r = innerRect(m_blackboardRect, 6, 0);
+    m_revealRect = fm.boundingRect(r, Qt::AlignBottom|Qt::AlignRight, \
i18n(m_textRevealWord)); +
+	m_upRect = QRect(m_inputBox->x() + m_inputBox->width() + 20 * m_xRatio, \
m_inputBox->y(), 50 * m_xRatio, m_inputBox->height()); +	m_arrowRect = \
QRect(m_switcherRect.right() + 5, m_switcherRect.top(), 16.250 * m_xRatio, 25.0 * \
m_yRatio); +	m_logoRect = QRect(76, 24, 297, 50);
+
+	m_aboutAppRect = QRect(xTranslateButtons * width(), yTranslateHelpButton * \
height(),  +							xScale57Buttons * width(), yScale57Buttons * height());
+	m_aboutKDERect = QRect(867 * m_xRatio, 335.352 * m_yRatio, 
+							xScale57Buttons * width(), yScale57Buttons * height());
+	m_handbookRect = QRect(750.877 * m_xRatio, 335.352 * m_yRatio, 
+							xScale57Buttons * width(), yScale57Buttons * height());
+
+	m_nextRect = QRect(735.448 * m_xRatio, 49.028 * m_yRatio,	206.142 * m_xRatio, \
117.537 * m_yRatio);	 +	m_configRect = QRect(735.448 * m_xRatio, 188.264 * m_yRatio, \
206.142 * m_xRatio, 117.537 * m_yRatio); +	m_helpRect = QRect(735.448 * m_xRatio, \
327.5 * m_yRatio, 206.142 * m_xRatio, 117.537 * m_yRatio); +	m_quitRect = \
QRect(697.549 * m_xRatio, 542.337 * m_yRatio, 279.935 * m_xRatio, 160.68 * m_yRatio); \
+ +	update();
+}
+
 void Kanagram::drawHelpText(QPainter &p, const QString &text)
 {
+	p.translate(700.582 * m_xRatio, 424.176 * m_yRatio);
+	p.scale(256.582 / kWindowWidth, 101.150 / kWindowHeight);
+	m_renderer->render(&p, "card");
+	p.resetMatrix();
+	
 	p.save();
 	QFont font = m_font;
 	font.setPointSize(12);
 	p.setFont(font);
 	p.rotate(-3.29);
 	p.setPen(Qt::black);
-	p.drawText(450, 340, text.section(' ', 0, 0));
-	p.drawText(450, 360, text.section(' ', 1));
+	p.drawText(715 * m_xRatio, 520 * m_yRatio, text.section(' ', 0, 0));
+	p.drawText(715 * m_xRatio, 550 * m_yRatio, text.section(' ', 1));
 	p.restore();
 }
 
@@ -334,20 +406,21 @@ void Kanagram::drawSwitcher(QPainter &p,
 	QFontMetrics fm(font);
 	QRect r = innerRect(m_blackboardRect, xMargin, yMargin);
 	r = r.normalized();
-	r.translate(- padding - (m_overSwitcher ? m_arrowOver : m_arrow )->width(), \
                yMargin);
-	r.setHeight( (m_overSwitcher ? m_arrowOver : m_arrow )->height());
+	r.translate(- padding - (16.250 * m_xRatio), yMargin);
+	r.setHeight(25.0 * m_yRatio);
 	m_switcherRect = p.boundingRect(r, Qt::AlignVCenter|Qt::AlignRight, text);
 	p.setFont(font);
+	QString arrow = m_arrowName;
 	if (m_overSwitcher)
 	{
 		p.setPen(m_chalkHighlightColor);
-		p.drawPixmap(m_switcherRect.right() + padding, m_switcherRect.top(), \
                *m_arrowOver);
-	}
-	else
-	{
-		p.setPen(m_chalkColor);
-		p.drawPixmap(m_switcherRect.right() + padding, m_switcherRect.top(), *m_arrow);
+		arrow = m_arrowName + "_hover";
 	}
+	p.translate(m_switcherRect.right() + padding, m_switcherRect.top());
+	p.scale(16.250 / kWindowWidth, 25.0 / kWindowHeight);
+	m_renderer->render(&p, arrow);
+	p.resetMatrix();
+
 	m_switcherRect.translate(0, -2);
 	p.drawText(m_switcherRect, Qt::AlignVCenter|Qt::AlignRight, text);
 }
@@ -724,8 +797,7 @@ void Kanagram::checkWord()
 void Kanagram::randomHintImage()
 {
 	unsigned long imageNum = m_randomImage.getLong(8);
-	QString dir = "images/eyes" + QString::number(imageNum + 1) + ".png";
-	m_hintOverlay = new QPixmap(KStandardDirs::locate("appdata", dir));
+	m_hintOverlayName = "eyes" + QString::number(imageNum + 1);
 }
 
 void Kanagram::showSettings()
Index: src/kanagram.h
===================================================================
--- src/kanagram.h	(revision 666137)
+++ src/kanagram.h	(working copy)
@@ -36,6 +36,8 @@
 
 using namespace std;
 
+class QSvgRenderer;
+
 class KHelpMenu;
 class KConfigDialog;
 class KRandomSequence;
@@ -67,6 +69,8 @@ Q_OBJECT
 		void play(const QString &filename);
 
 		void paintEvent(QPaintEvent *);
+		
+		void resizeEvent(QResizeEvent *);
 
 		void mousePressEvent(QMouseEvent *e);
 
@@ -87,7 +91,8 @@ Q_OBJECT
 
 		KanagramGame *m_game;
 
-		QPixmap *m_back, *m_hintOverlay, *m_aboutKDEOverlay, *m_aboutAppOverlay, \
*m_handbookOverlay, *m_aboutKDEOverlayOver, *m_aboutAppOverlayOver, \
*m_handbookOverlayOver, *m_card, *m_arrow, *m_arrowOver, *m_next, *m_nextOver, \
*m_config, *m_configOver, *m_help, *m_helpOver, *m_quit, *m_quitOver, *m_up, \
*m_upOver, *m_upDisabled; +		QString m_hintOverlayName;
+		QString m_arrowName;
 
 		//Deprecated
 		//QRect m_newWordRect, m_settingsRect, m_helpRect, m_quitRect;
@@ -117,6 +122,11 @@ Q_OBJECT
 		QTimer *m_hintTimer;
 
 		Phonon::AudioPlayer *m_player;
+		
+		QSvgRenderer * m_renderer;
+		
+		double m_xRatio;
+		double m_yRatio;
 };
 
 #endif



>> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic