[Scummvm-cvs-logs] SF.net SVN: scummvm: [30133] scummvm/branches/branch-0-11-0/backends/ platform/iphone

vinterstum at users.sourceforge.net vinterstum at users.sourceforge.net
Wed Jan 2 01:03:17 CET 2008


Revision: 30133
          http://scummvm.svn.sourceforge.net/scummvm/?rev=30133&view=rev
Author:   vinterstum
Date:     2008-01-01 16:03:17 -0800 (Tue, 01 Jan 2008)

Log Message:
-----------
Quick swipes across the screen now triggers arrow key events. Also, some mouse cursor fixes for landscape mode

Modified Paths:
--------------
    scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_common.h
    scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_video.h
    scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_video.m
    scummvm/branches/branch-0-11-0/backends/platform/iphone/osys_iphone.cpp

Modified: scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_common.h
===================================================================
--- scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_common.h	2008-01-01 23:30:29 UTC (rev 30132)
+++ scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_common.h	2008-01-02 00:03:17 UTC (rev 30133)
@@ -32,7 +32,8 @@
 	kInputOrientationChanged,
 	kInputKeyPressed,
 	kInputApplicationSuspended,
-	kInputApplicationResumed
+	kInputApplicationResumed,
+	kInputSwipe
 };
 
 enum ScreenOrientation {
@@ -41,6 +42,14 @@
 	kScreenOrientationFlippedLandscape
 };
 
+typedef enum
+{
+	kUIViewSwipeUp = 1,
+	kUIViewSwipeDown = 2,
+	kUIViewSwipeLeft = 4,
+	kUIViewSwipeRight = 8
+} UIViewSwipeDirection;
+
 // We need this to be able to call functions from/in Objective-C.
 #ifdef  __cplusplus
 extern "C" {

Modified: scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_video.h
===================================================================
--- scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_video.h	2008-01-01 23:30:29 UTC (rev 30132)
+++ scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_video.h	2008-01-02 00:03:17 UTC (rev 30133)
@@ -35,14 +35,6 @@
 
 #import "iphone_keyboard.h"
 
-typedef enum
-{
-	kUIViewSwipeUp = 1,
-	kUIViewSwipeDown = 2,
-	kUIViewSwipeLeft = 4,
-	kUIViewSwipeRight = 8
-} UIViewSwipeDirection;
-
 @interface iPhoneView : UIView
 {
 	CoreSurfaceBufferRef _screenSurface;

Modified: scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_video.m
===================================================================
--- scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_video.m	2008-01-01 23:30:29 UTC (rev 30132)
+++ scummvm/branches/branch-0-11-0/backends/platform/iphone/iphone_video.m	2008-01-02 00:03:17 UTC (rev 30133)
@@ -388,11 +388,20 @@
 }
 
 - (BOOL)canHandleSwipes {
-	return FALSE;
+	return TRUE;
 }
 
 - (int)swipe:(UIViewSwipeDirection)num withEvent:(GSEvent*)event {
 	//printf("swipe: %i\n", num);
+	
+	[self addEvent:
+		[[NSDictionary alloc] initWithObjectsAndKeys:
+		 [NSNumber numberWithInt:kInputSwipe], @"type",
+		 [NSNumber numberWithFloat:(float)num], @"x",
+		 [NSNumber numberWithFloat:0], @"y",
+		 nil
+		]
+	];
 }
 
 - (void)view:(UIView *)view handleTapWithCount:(int)count event:(GSEvent *)event fingerCount:(int)fingerCount{

Modified: scummvm/branches/branch-0-11-0/backends/platform/iphone/osys_iphone.cpp
===================================================================
--- scummvm/branches/branch-0-11-0/backends/platform/iphone/osys_iphone.cpp	2008-01-01 23:30:29 UTC (rev 30132)
+++ scummvm/branches/branch-0-11-0/backends/platform/iphone/osys_iphone.cpp	2008-01-02 00:03:17 UTC (rev 30133)
@@ -403,7 +403,7 @@
 					break;
 				}
 				case kScreenOrientationLandscape: {
-					byte *src = &_mouseBuf[_mouseHeight * _mouseWidth - 1];
+					byte *src = &_mouseBuf[(_mouseHeight - 1 - srcY) * _mouseWidth + srcX];
 					uint16 *dst = &_fullscreen[left * _screenHeight + (_screenHeight - bottom + srcY)];
 					for (int x = displayWidth; x > srcX; x--) {
 						for (int y = displayHeight; y > srcY; y--) {
@@ -413,7 +413,7 @@
 							src -= _mouseWidth;
 						}
 						dst -= -_screenHeight + displayHeight - srcY;
-						src -= 1 - (displayHeight - srcY) * _mouseWidth;
+						src += 1 - (displayHeight - srcY) * -_mouseWidth;
 					}
 					break;
 				}
@@ -933,7 +933,75 @@
 				event.kbd.ascii = _queuedInputEvent.kbd.ascii = ascii;
 				_needEventRestPeriod = true;				
 				break;
-				
+			
+			case kInputSwipe: {
+				Common::KeyCode keycode = Common::KEYCODE_INVALID;
+				switch (_screenOrientation) {
+					case kScreenOrientationPortrait:
+						switch ((UIViewSwipeDirection)xUnit) {
+							case kUIViewSwipeUp:
+								keycode = Common::KEYCODE_UP;
+								break;
+							case kUIViewSwipeDown:
+								keycode = Common::KEYCODE_DOWN;
+								break;
+							case kUIViewSwipeLeft:
+								keycode = Common::KEYCODE_LEFT;
+								break;
+							case kUIViewSwipeRight:
+								keycode = Common::KEYCODE_RIGHT;
+								break;
+							default:
+								return false;
+						}
+						break;
+					case kScreenOrientationLandscape:
+						switch ((UIViewSwipeDirection)xUnit) {
+							case kUIViewSwipeUp:
+								keycode = Common::KEYCODE_LEFT;
+								break;
+							case kUIViewSwipeDown:
+								keycode = Common::KEYCODE_RIGHT;
+								break;
+							case kUIViewSwipeLeft:
+								keycode = Common::KEYCODE_DOWN;
+								break;
+							case kUIViewSwipeRight:
+								keycode = Common::KEYCODE_UP;
+								break;
+							default:
+								return false;
+						}
+						break;
+					case kScreenOrientationFlippedLandscape:
+						switch ((UIViewSwipeDirection)xUnit) {
+							case kUIViewSwipeUp:
+								keycode = Common::KEYCODE_RIGHT;
+								break;
+							case kUIViewSwipeDown:
+								keycode = Common::KEYCODE_LEFT;
+								break;
+							case kUIViewSwipeLeft:
+								keycode = Common::KEYCODE_UP;
+								break;
+							case kUIViewSwipeRight:
+								keycode = Common::KEYCODE_DOWN;
+								break;
+							default:
+								return false;
+						}
+						break;			
+				}
+
+				event.kbd.keycode = _queuedInputEvent.kbd.keycode = keycode;
+				event.kbd.ascii = _queuedInputEvent.kbd.ascii = 0;
+				event.type = Common::EVENT_KEYDOWN;
+				_queuedInputEvent.type = Common::EVENT_KEYUP;
+				event.kbd.flags = _queuedInputEvent.kbd.flags = 0;
+				_needEventRestPeriod = true;					
+				break;
+			}
+			
 			default:
 				break;
 		}


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