[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