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

List:       kde-commits
Subject:    KDE/kdegames/ksame
From:       Stefan Majewsky <majewsky () gmx ! net>
Date:       2010-07-13 7:58:49
Message-ID: 20100713080436.DBD51AC905 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1149331 by majewsky:

Port KSame to KGameRenderer.

 M  +6 -4      CMakeLists.txt  
 M  +31 -43    board.cpp  
 M  +6 -13     board.h  
 A             default_theme.desktop  
 D             renderer.cpp  
 D             renderer.h  
 M  +0 -1      view.h  


--- trunk/KDE/kdegames/ksame/CMakeLists.txt #1149330:1149331
@@ -6,11 +6,10 @@
 ########### next target ###############
 
 set(ksame_SRCS 
+    board.cpp
     main.cpp 
     mainwindow.cpp
-    board.cpp
     view.cpp
-    renderer.cpp
    )
 
 kde4_add_app_icon(ksame_SRCS "${CMAKE_CURRENT_SOURCE_DIR}/hi*-app-ksame.png")
@@ -25,8 +24,11 @@
 
 install( FILES ksame.desktop      DESTINATION ${XDG_APPS_INSTALL_DIR} )
 install( FILES ksameui.rc         DESTINATION ${DATA_INSTALL_DIR}/ksame )
-install( FILES default_theme.svgz DESTINATION ${DATA_INSTALL_DIR}/ksame/pics/ )
-install( FILES old_theme.svgz	  DESTINATION ${DATA_INSTALL_DIR}/ksame/pics/ )
+install( FILES
+    default_theme.desktop
+    default_theme.svgz
+    old_theme.svgz
+    DESTINATION ${DATA_INSTALL_DIR}/ksame/pics/ )
 
 kde4_install_icons( ${ICON_INSTALL_DIR} )
 
--- trunk/KDE/kdegames/ksame/board.cpp #1149330:1149331
@@ -3,6 +3,7 @@
  * Copyright (C) 1997,1998  Marcus Kreutzberger <kreutzbe@informatik.mu-luebeck.de>
  * Copyright (C) 2006 Henrique Pinto <henrique.pinto@kdemail.net>
  * Copyright (C) 2006 Stephan Kulow <coolo@kde.org>
+ * Copyright 2010 Stefan Majewsky <majewsky@gmx.net>
  * 
  * This file is part of the KDE project
  *
@@ -31,8 +32,9 @@
 
 
 KSame::Stone::Stone( KSame::Board *board, int x, int y, QGraphicsItem *parent )
-	: QGraphicsPixmapItem( parent, board ), m_x( x ), m_y( y ), m_board( board )
+	: KGameRenderedItem( &board->m_renderer, "stone", parent ), m_x( x ), m_y( y ), \
m_board( board )  {
+	board->addItem(this);
 	setAcceptsHoverEvents( true );
 	setAcceptedMouseButtons( Qt::LeftButton );
 }
@@ -73,22 +75,18 @@
 
 KSame::Board::Board( QObject *parent )
 	: QGraphicsScene( parent ),
-	  m_renderer( KStandardDirs::locate( "appdata", "pics/default_theme.svgz" ), \
QSize(), QSize( 64, 64 ), this ), +	  m_renderer( QLatin1String( \
"pics/default_theme.desktop" ) ),  m_width( 0 ), m_height( 0 ), m_colorCount( 0 ), \
                m_boardNumber( 0 ),
-	  m_score( 0 ), m_changed( false ), m_boardData( 0 )
+	  m_score( 0 ), m_changed( false ),
+	  m_boardData( 0 )
 {
-	m_elementsSize = QSize( 64, 64 );
+	m_renderer.setFrameSuffix(QLatin1String("%1"));
 	m_gameOverOverlay = new QGraphicsPixmapItem;
 	addItem( m_gameOverOverlay );
 	m_gameOverOverlay->setZValue( 20000 );
 	m_gameOverOverlay->hide();
 }
 
-void KSame::Board::drawBackground( QPainter *painter, const QRectF& )
-{
-	painter->drawPixmap( 0, 0, m_renderer.renderBackground() );
-}
-
 void KSame::Board::newGame( quint32 boardNumber, quint8 width, quint8 height, quint8 \
colorCount )  {
 	kDebug() ;
@@ -111,15 +109,14 @@
 {
 	kDebug() << "New Size:" << size;
 
-	setSceneRect( 0, 0, size.width(), size.height() );
-	m_renderer.setBackgroundSize( size );
+	setSceneRect(QRectF(QPointF(), size));
+	setBackgroundBrush(m_renderer.spritePixmap("background", size));
 
 	if ( m_changed && isGameOver() )
 	{
 		generateGameOverPixmap( won() );
 	}
 
-	m_renderer.setElementSize( m_elementsSize );
 	createItems();
 }
 
@@ -153,27 +150,15 @@
 	if ( !m_width || !m_height )
 		return;
 
-	if ( sceneRect().height()/m_height < sceneRect().width()/m_width )
-	{
-		m_elementsSize = QSize( static_cast<int>( sceneRect().height()/m_height ),
-		                        static_cast<int>( sceneRect().height()/m_height ) );
-	}
-	else
-	{
-		m_elementsSize = QSize( static_cast<int>( sceneRect().width()/m_width ),
-		                        static_cast<int>( sceneRect().width()/m_width ) );
-	}
-	m_renderer.setElementSize( m_elementsSize );
+	const int elementsSize1 = sceneRect().width() / m_width;
+	const int elementsSize2 = sceneRect().height() / m_height;
+	const int elementsSize = qMin(elementsSize1, elementsSize2);
 
-
 	/* Remove current items, if any */
-	foreach( KSame::Stone *item, m_stones )
-	{
-		removeItem( item );
-		delete item;
-	}
-
+	qDeleteAll(m_stones);
 	m_stones.resize( m_width * m_height );
+	qDeleteAll(m_highlighters);
+	m_highlighters.resize( m_width * m_height );
 
 	/* Create an item for each stone in the board */
 	for ( int i = 0; i < m_width; ++i )
@@ -181,11 +166,19 @@
 		for ( int j = 0; j < m_height; ++j )
 		{
 			int index = map( i, j );
-			KSame::Stone *item = new KSame::Stone( this, i, j );
-			if ( m_boardData[ index ] )
-				item->setPixmap( m_renderer.renderElement( QString( "stone%1" ).arg( \
                m_boardData[ index ] ) ) );
-			item->setPos( i*m_elementsSize.width(), ( m_height - 1 - j \
                )*m_elementsSize.height() );
-			m_stones[ index ] = item;
+			const QPoint pos(i * elementsSize, (m_height - 1 - j) * elementsSize);
+			KGameRenderedItem *item;
+			//create stone
+			item = m_stones[index] = new KSame::Stone( this, i, j );
+			item->setRenderSize(QSize(elementsSize, elementsSize));
+			item->setFrame(m_boardData[index]);
+			item->setPos(pos);
+			//create highlighter for stone (hidden by default)
+			item = m_highlighters[index] = new KGameRenderedItem(&m_renderer, \
"stone_highlighted"); +			addItem(item);
+			item->setRenderSize(QSize(elementsSize, elementsSize));
+			item->setPos(pos);
+			item->hide();
 		}
 	}
 }
@@ -201,9 +194,7 @@
 		m_markedStones.clear();
 
 	foreach( const KSame::Coordinate &s, m_markedStones )
-	{
-		m_stones[ map( s.first, s.second ) ]->setPixmap( \
                m_renderer.renderHighlightedElement( QString( "stone%1" ).arg( color \
                ) ) );
-	}
+		m_highlighters[map(s.first, s.second)]->show();
 
 	emit newCountOfMarkedStones( m_markedStones.count() );
 }
@@ -233,11 +224,7 @@
 void KSame::Board::unmark()
 {
 	foreach( const KSame::Coordinate &s, m_markedStones )
-	{
-		int index = map( s.first, s.second );
-		QString elementId = QString( "stone%1" ).arg( m_boardData[ index ] == 0? \
                "_removed" : QString::number( m_boardData[ index ] ) );
-		m_stones[ index ]->setPixmap( m_renderer.renderElement( elementId ) );
-	}
+		m_highlighters[map(s.first, s.second)]->hide();
 	m_markedStones.clear();
 	emit newCountOfMarkedStones( m_markedStones.count() );
 }
@@ -257,6 +244,7 @@
 	foreach( const KSame::Coordinate &s, m_markedStones )
 	{
 		m_boardData[ map( s.first, s.second ) ] = 0;
+		m_highlighters[map(s.first, s.second)]->hide();
 	}
 
 	// Gravity
--- trunk/KDE/kdegames/ksame/board.h #1149330:1149331
@@ -2,6 +2,7 @@
  *
  * Copyright (C) 1997,1998  Marcus Kreutzberger <kreutzbe@informatik.mu-luebeck.de>
  * Copyright (C) 2006 Henrique Pinto <henrique.pinto@kdemail.net>
+ * Copyright 2010 Stefan Majewsky <majewsky@gmx.net>
  * 
  * This file is part of the KDE project
  *
@@ -24,22 +25,16 @@
 #ifndef BOARD_H
 #define BOARD_H
 
-#include "renderer.h"
-
-#include <QGraphicsView>
 #include <QGraphicsScene>
-#include <QSize>
-#include <QVector>
-#include <QGraphicsPixmapItem>
 #include <QStack>
-#include <QPair>
+#include <KGameRenderedItem>
+#include <KGameRenderer>
 
-
 namespace KSame
 {
 	class Board;
 
-	class Stone: public QGraphicsPixmapItem
+	class Stone: public KGameRenderedItem
 	{
 		public:
 			Stone( KSame::Board *board, int x, int y, QGraphicsItem *parent = 0 );
@@ -110,8 +105,6 @@
 			void scoreChanged( quint32 newScore );
 
 		protected:
-			virtual void drawBackground( QPainter *painter, const QRectF& rect );
-
 			void mark( int x, int y );
 			void unmark();
 			void removeMarked();
@@ -124,7 +117,7 @@
 			int  map( int x, int y ) const;
 			bool validPosition( int x, int y ) const;
 
-			KSame::Renderer m_renderer;
+			KGameRenderer m_renderer;
 
 			quint8  m_width;
 			quint8  m_height;
@@ -135,7 +128,7 @@
 
 			QVector<quint8>          m_boardData;
 			QVector<KSame::Stone*>   m_stones;
-			QSize                    m_elementsSize;
+			QVector<KGameRenderedItem*> m_highlighters;
 			QList<KSame::Coordinate> m_markedStones;
 			QStack<KSame::GameState> m_undoList;
 
--- trunk/KDE/kdegames/ksame/view.h #1149330:1149331
@@ -23,7 +23,6 @@
 #ifndef VIEW_H
 #define VIEW_H
 
-#include "renderer.h"
 #include "board.h"
 
 #include <QGraphicsView>


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

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