[Scummvm-cvs-logs] SF.net SVN: scummvm:[53462] scummvm/trunk/backends/platform/psp

bluddy at users.sourceforge.net bluddy at users.sourceforge.net
Fri Oct 15 00:33:33 CEST 2010


Revision: 53462
          http://scummvm.svn.sourceforge.net/scummvm/?rev=53462&view=rev
Author:   bluddy
Date:     2010-10-14 22:33:32 +0000 (Thu, 14 Oct 2010)

Log Message:
-----------
PSP: made image in viewer movable by pushing nub continuously

Modified Paths:
--------------
    scummvm/trunk/backends/platform/psp/image_viewer.cpp
    scummvm/trunk/backends/platform/psp/image_viewer.h
    scummvm/trunk/backends/platform/psp/input.cpp

Modified: scummvm/trunk/backends/platform/psp/image_viewer.cpp
===================================================================
--- scummvm/trunk/backends/platform/psp/image_viewer.cpp	2010-10-14 22:27:48 UTC (rev 53461)
+++ scummvm/trunk/backends/platform/psp/image_viewer.cpp	2010-10-14 22:33:32 UTC (rev 53462)
@@ -159,6 +159,7 @@
 		if (!load(_imageNum))		// we failed, so reload the current image
 			setVisible(false);		// just hide
 	}
+	setDirty();
 }
 
 void ImageViewer::loadLastImage() {
@@ -167,6 +168,7 @@
 			if (!load(_imageNum))
 				setVisible(false);	// we can't even show the old image so hide
 	}		
+	setDirty();
 }
 
 void ImageViewer::setFullScreenImageParams() {
@@ -188,7 +190,24 @@
 void ImageViewer::render() {
 	assert(_buffer);
 	assert(_renderer);
-	
+
+	// move the image slightly. Note that we count on the renderer's timing
+	switch (_movement) {
+	case EVENT_MOVE_LEFT:
+		moveImageX(-2);
+		break;
+	case EVENT_MOVE_UP:
+		moveImageY(-2);
+		break;
+	case EVENT_MOVE_RIGHT:
+		moveImageX(2);
+		break;
+	case EVENT_MOVE_DOWN:
+		moveImageY(2);
+		break;
+	default:
+		break;
+	}
 	_renderer->render();
 }
 
@@ -239,6 +258,7 @@
 	int offsetY = _centerY - (int)(_visibleHeight * 0.5f);
 	
 	_renderer->setOffsetOnScreen(offsetX, offsetY);
+	setDirty();
 }
 
 //	Handler events coming in from the inputHandler
@@ -260,16 +280,11 @@
 		modifyZoom(false);
 		break;
 	case EVENT_MOVE_LEFT:
-		moveImageX(-5);
-		break;
 	case EVENT_MOVE_UP:
-		moveImageY(-5);
-		break;
 	case EVENT_MOVE_RIGHT:
-		moveImageX(5);
-		break;
 	case EVENT_MOVE_DOWN:
-		moveImageY(5);
+	case EVENT_MOVE_STOP:
+		_movement = (Event)event;
 		break;
 	case EVENT_NEXT_IMAGE:
 		loadNextImage();

Modified: scummvm/trunk/backends/platform/psp/image_viewer.h
===================================================================
--- scummvm/trunk/backends/platform/psp/image_viewer.h	2010-10-14 22:27:48 UTC (rev 53461)
+++ scummvm/trunk/backends/platform/psp/image_viewer.h	2010-10-14 22:33:32 UTC (rev 53462)
@@ -29,6 +29,22 @@
 class InputHandler;
 
 class ImageViewer : public DisplayClient {
+public:
+	enum Event {
+		EVENT_NONE = -1,
+		EVENT_HIDE = 0,
+		EVENT_SHOW = 1,
+		EVENT_ZOOM_IN,
+		EVENT_ZOOM_OUT,
+		EVENT_MOVE_LEFT,
+		EVENT_MOVE_UP,
+		EVENT_MOVE_RIGHT,
+		EVENT_MOVE_DOWN,
+		EVENT_MOVE_STOP,
+		EVENT_NEXT_IMAGE,
+		EVENT_LAST_IMAGE,
+	};
+
 private:
 	Buffer *_buffer;
 	Palette *_palette;
@@ -40,6 +56,7 @@
 	float _zoomFactor;	// how much we're zooming in/out on the image
 	float _visibleHeight, _visibleWidth;
 	float _centerX, _centerY;
+	Event _movement;
 	
 	InputHandler *_inputHandler;
 	
@@ -59,29 +76,20 @@
 	void setVisible(bool visible);
 	
 public:
-	enum Events {
-		EVENT_HIDE = 0,
-		EVENT_SHOW = 1,
-		EVENT_ZOOM_IN,
-		EVENT_ZOOM_OUT,
-		EVENT_MOVE_LEFT,
-		EVENT_MOVE_UP,
-		EVENT_MOVE_RIGHT,
-		EVENT_MOVE_DOWN,
-		EVENT_NEXT_IMAGE,
-		EVENT_LAST_IMAGE,
-	};
 
-	ImageViewer() : _buffer(0), _palette(0), _visible(false), _dirty(false), _init(false), _imageNum(0),
+	ImageViewer() : _buffer(0), _palette(0), _visible(false), 
+					_dirty(false), _init(false), _imageNum(0), 
 					_zoomFactor(0.0f), _visibleHeight(0.0f), _visibleWidth(0.0f), 
-					_centerX(0.0f), _centerY(0.0f) {}
+					_centerX(0.0f), _centerY(0.0f), _movement(EVENT_MOVE_STOP) {}
 	~ImageViewer() { unload(); }	// deallocate images
 	bool load();
 	void render();
 	bool isVisible() { return _visible; }
 	bool isDirty() { return _dirty; }
 	void setDirty() { _dirty = true; }
-	void setClean() { _dirty = false; }	
+	void setClean() { if (_movement == EVENT_MOVE_STOP) // otherwise we want to keep rendering
+							_dirty = false; 
+	}	
 	void resetOnEngineDone();
 	
 	void handleEvent(uint32 event);

Modified: scummvm/trunk/backends/platform/psp/input.cpp
===================================================================
--- scummvm/trunk/backends/platform/psp/input.cpp	2010-10-14 22:27:48 UTC (rev 53461)
+++ scummvm/trunk/backends/platform/psp/input.cpp	2010-10-14 22:33:32 UTC (rev 53462)
@@ -561,13 +561,13 @@
 	//Nub
 	_nub.getPad().clearButtons();
 	_nub.getPad().getButton(ButtonPad::BTN_UP, UNSHIFTED).setPspEvent(PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_UP, 
-		PSP_EVENT_NONE, false);
+		PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_STOP);
 	_nub.getPad().getButton(ButtonPad::BTN_DOWN, UNSHIFTED).setPspEvent(PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_DOWN, 
-		PSP_EVENT_NONE, false);
+		PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_STOP);
 	_nub.getPad().getButton(ButtonPad::BTN_LEFT, UNSHIFTED).setPspEvent(PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_LEFT, 
-		PSP_EVENT_NONE, false);
+		PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_STOP);
 	_nub.getPad().getButton(ButtonPad::BTN_RIGHT, UNSHIFTED).setPspEvent(PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_RIGHT, 
-		PSP_EVENT_NONE, false);
+		PSP_EVENT_IMAGE_VIEWER, ImageViewer::EVENT_MOVE_STOP);
 }
 
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.




More information about the Scummvm-git-logs mailing list