From 585ac4140e92206c7a45a17d10ab2d42ca47ac14 Mon Sep 17 00:00:00 2001 From: pelya Date: Mon, 31 Oct 2011 14:49:07 +0300 Subject: [PATCH] Added system mouse cursor support --- ChangeAppSettings.sh | 18 + project/java/Globals.java | 1 + project/java/Settings.java | 6 +- .../milkytracker/AndroidAppSettings.cfg | 17 +- project/jni/application/src | 2 +- .../src/video/android/SDL_androidvideo-1.2.c | 30 +- .../jni/sdl-1.3/include/SDL_config_android.h | 2 +- .../src/video/android/SDL_androidinput.c | 4 +- .../src/video/android/SDL_androidvideo.c | 2 +- .../src/video/android/SDL_androidvideo.h | 4 + .../video/android/SDL_touchscreenkeyboard.c | 21 +- project/project.properties | 11 + project/res/raw/simpletheme.raw | Bin 26213 -> 26662 bytes project/res/raw/ultimatedroid.raw | Bin 6848 -> 7388 bytes project/themes/SimpleTheme/mouse_pointer.png | Bin 0 -> 1309 bytes .../UltimateDroidmouse_pointer.png | Bin 0 -> 1309 bytes project/themes/converter/convert.sh | 2 + project/themes/touchscreentheme.h | 1594 +++++++++-------- readme.txt | 2 +- 19 files changed, 932 insertions(+), 784 deletions(-) create mode 100644 project/project.properties create mode 100644 project/themes/SimpleTheme/mouse_pointer.png create mode 100644 project/themes/UltimateDroid/UltimateDroidmouse_pointer.png diff --git a/ChangeAppSettings.sh b/ChangeAppSettings.sh index 25502caef..c3fcc5641 100755 --- a/ChangeAppSettings.sh +++ b/ChangeAppSettings.sh @@ -224,6 +224,16 @@ if [ -n "$var" ] ; then fi fi +if [ -z "$ShowMouseCursor" -o -z "$AUTO" ]; then +echo +echo -n "Show SDL mouse cursor, for applicaitons that do not draw it (y) or (n) ($ShowMouseCursor): " +read var +if [ -n "$var" ] ; then + ShowMouseCursor="$var" + CHANGED=1 +fi +fi + if [ -z "$AppNeedsArrowKeys" -o -z "$AUTO" ]; then echo echo "Application needs arrow keys (y) or (n), if (y) the accelerometer or touchscreen keyboard" @@ -536,6 +546,7 @@ echo SdlVideoResizeKeepAspect=$SdlVideoResizeKeepAspect >> AndroidAppSettings.cf echo CompatibilityHacks=$CompatibilityHacks >> AndroidAppSettings.cfg echo AppUsesMouse=$AppUsesMouse >> AndroidAppSettings.cfg echo AppNeedsTwoButtonMouse=$AppNeedsTwoButtonMouse >> AndroidAppSettings.cfg +echo ShowMouseCursor=$ShowMouseCursor >> AndroidAppSettings.cfg echo ForceRelativeMouseMode=$ForceRelativeMouseMode >> AndroidAppSettings.cfg echo AppNeedsArrowKeys=$AppNeedsArrowKeys >> AndroidAppSettings.cfg echo AppNeedsTextInput=$AppNeedsTextInput >> AndroidAppSettings.cfg @@ -647,6 +658,12 @@ else ForceRelativeMouseMode=false fi +if [ "$ShowMouseCursor" = "y" ] ; then + ShowMouseCursor=true +else + ShowMouseCursor=false +fi + if [ "$AppNeedsArrowKeys" = "y" ] ; then AppNeedsArrowKeys=true else @@ -761,6 +778,7 @@ cat project/src/Globals.java | \ sed "s/public static boolean AppUsesMouse = .*;/public static boolean AppUsesMouse = $AppUsesMouse;/" | \ sed "s/public static boolean AppNeedsTwoButtonMouse = .*;/public static boolean AppNeedsTwoButtonMouse = $AppNeedsTwoButtonMouse;/" | \ sed "s/public static boolean ForceRelativeMouseMode = .*;/public static boolean ForceRelativeMouseMode = $ForceRelativeMouseMode;/" | \ + sed "s/public static boolean ShowMouseCursor = .*;/public static boolean ShowMouseCursor = $ShowMouseCursor;/" | \ sed "s/public static boolean AppNeedsArrowKeys = .*;/public static boolean AppNeedsArrowKeys = $AppNeedsArrowKeys;/" | \ sed "s/public static boolean AppNeedsTextInput = .*;/public static boolean AppNeedsTextInput = $AppNeedsTextInput;/" | \ sed "s/public static boolean AppUsesJoystick = .*;/public static boolean AppUsesJoystick = $AppUsesJoystick;/" | \ diff --git a/project/java/Globals.java b/project/java/Globals.java index 4fc2b6a87..3537a26a8 100644 --- a/project/java/Globals.java +++ b/project/java/Globals.java @@ -45,6 +45,7 @@ class Globals { public static boolean AppUsesMouse = false; public static boolean AppNeedsTwoButtonMouse = false; public static boolean ForceRelativeMouseMode = false; // If both on-screen keyboard and mouse are needed, this will only set the default setting, user may override it later + public static boolean ShowMouseCursor = false; public static boolean AppNeedsArrowKeys = true; public static boolean AppNeedsTextInput = true; public static boolean AppUsesJoystick = false; diff --git a/project/java/Settings.java b/project/java/Settings.java index 6ac646ae7..801a80eb2 100644 --- a/project/java/Settings.java +++ b/project/java/Settings.java @@ -2385,7 +2385,8 @@ class Settings Globals.RightClickTimeout, Globals.RelativeMouseMovement ? 1 : 0, Globals.RelativeMouseMovementSpeed, - Globals.RelativeMouseMovementAccel ); + Globals.RelativeMouseMovementAccel, + Globals.ShowMouseCursor ? 1 : 0 ); if( Globals.AppUsesJoystick && (Globals.UseAccelerometerAsArrowKeys || Globals.UseTouchscreenKeyboard) ) nativeSetJoystickUsed(); if( Globals.AppUsesMultitouch ) @@ -2484,7 +2485,8 @@ class Settings int MoveMouseWithJoystickSpeed, int MoveMouseWithJoystickAccel, int leftClickKeycode, int rightClickKeycode, int leftClickTimeout, int rightClickTimeout, - int relativeMovement, int relativeMovementSpeed, int relativeMovementAccel); + int relativeMovement, int relativeMovementSpeed, + int relativeMovementAccel, int showMouseCursor); private static native void nativeSetJoystickUsed(); private static native void nativeSetMultitouchUsed(); private static native void nativeSetTouchscreenKeyboardUsed(); diff --git a/project/jni/application/milkytracker/AndroidAppSettings.cfg b/project/jni/application/milkytracker/AndroidAppSettings.cfg index 79e4ff6f6..8d2212624 100644 --- a/project/jni/application/milkytracker/AndroidAppSettings.cfg +++ b/project/jni/application/milkytracker/AndroidAppSettings.cfg @@ -6,15 +6,20 @@ AppFullName=org.milkytracker.sdl ScreenOrientation=h InhibitSuspend=y AppDataDownloadUrl="!Example songs|MilkyTracker-ExampleSongs.zip" +VideoDepthBpp=16 +NeedDepthBuffer=n +NeedStencilBuffer=n +NeedGles2=n +SwVideoMode=y SdlVideoResize=y SdlVideoResizeKeepAspect=n -NeedDepthBuffer=n -SwVideoMode=y CompatibilityHacks=y AppUsesMouse=y AppNeedsTwoButtonMouse=y +ShowMouseCursor=y +ForceRelativeMouseMode=n AppNeedsArrowKeys=n -AppNeedsTextInput=n +AppNeedsTextInput=y AppUsesJoystick=n AppHandlesJoystickSensitivity=y AppUsesMultitouch=n @@ -25,10 +30,10 @@ AppTouchscreenKeyboardKeysAmountAutoFire=0 RedefinedKeysScreenKb="SPACE TAB PLUS MINUS RETURN ESCAPE DELETE" StartupMenuButtonTimeout=3000 HiddenMenuOptions='OptionalDownloadConfig' -FirstStartMenuOptions='new Settings.CalibrateTouchscreenMenu()' +FirstStartMenuOptions='new Settings.CalibrateTouchscreenMenu(), new Settings.DisplaySizeConfig(true)' MultiABI=n -AppVersionCode=0908502 -AppVersionName="0.90.85.02" +AppVersionCode=0908503 +AppVersionName="0.90.85.03" CompiledLibraries="jpeg png" CustomBuildScript=y AppCflags='' diff --git a/project/jni/application/src b/project/jni/application/src index 550b7b622..9cdf4a8cf 120000 --- a/project/jni/application/src +++ b/project/jni/application/src @@ -1 +1 @@ -openttd \ No newline at end of file +milkytracker \ No newline at end of file diff --git a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c index 30070d6f6..0a387cabf 100644 --- a/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c +++ b/project/jni/sdl-1.2/src/video/android/SDL_androidvideo-1.2.c @@ -855,6 +855,17 @@ static void ANDROID_FlipHWSurfaceInternal() rect.h = SDL_CurrentVideoSurface->h; SDL_UpdateTexture((struct SDL_Texture *)SDL_CurrentVideoSurface->hwdata, &rect, SDL_CurrentVideoSurface->pixels, SDL_CurrentVideoSurface->pitch); SDL_RenderCopy((struct SDL_Texture *)SDL_CurrentVideoSurface->hwdata, &rect, &rect); + static int MousePointerAlpha = 255; + if(SDL_ANDROID_ShowMouseCursor) + { + int x, y; + SDL_GetMouseState(&x, &y); + x = x * SDL_ANDROID_sRealWindowWidth / SDL_ANDROID_sFakeWindowWidth; + y = y * SDL_ANDROID_sRealWindowHeight / SDL_ANDROID_sFakeWindowHeight; + SDL_ANDROID_DrawMouseCursor( x, y, 0, MousePointerAlpha ); + if( MousePointerAlpha > 64 ) + MousePointerAlpha -= 10 ; + } if( SDL_ANDROID_ShowScreenUnderFinger && SDL_ANDROID_ShowScreenUnderFingerRect.w > 0 ) { SDL_RenderCopy((struct SDL_Texture *)SDL_CurrentVideoSurface->hwdata, &SDL_ANDROID_ShowScreenUnderFingerRectSrc, &SDL_ANDROID_ShowScreenUnderFingerRect); @@ -883,7 +894,22 @@ static void ANDROID_FlipHWSurfaceInternal() glDrawArrays(GL_LINE_LOOP, 0, 4); glDisableClientState(GL_VERTEX_ARRAY); glPopMatrix(); - glFlush(); + if(SDL_ANDROID_ShowMouseCursor) + { + MousePointerAlpha = 255; + int x, y; + SDL_GetMouseState(&x, &y); + x = SDL_ANDROID_ShowScreenUnderFingerRect.x + + ( x - SDL_ANDROID_ShowScreenUnderFingerRectSrc.x ) * + SDL_ANDROID_ShowScreenUnderFingerRect.w / SDL_ANDROID_ShowScreenUnderFingerRectSrc.w; + y = SDL_ANDROID_ShowScreenUnderFingerRect.y + + ( y - SDL_ANDROID_ShowScreenUnderFingerRectSrc.y ) * + SDL_ANDROID_ShowScreenUnderFingerRect.h / SDL_ANDROID_ShowScreenUnderFingerRectSrc.h; + x = x * SDL_ANDROID_sRealWindowWidth / SDL_ANDROID_sFakeWindowWidth; + y = y * SDL_ANDROID_sRealWindowHeight / SDL_ANDROID_sFakeWindowHeight; + SDL_ANDROID_DrawMouseCursor( x, y, 16, 255 ); + } + //glFlush(); } } }; @@ -1053,7 +1079,7 @@ void SDL_ANDROID_MultiThreadedVideoLoop() SDL_mutexP(videoThread.mutex); videoThread.threadReady = 1; SDL_CondSignal(videoThread.cond2); - ret = SDL_CondWaitTimeout(videoThread.cond, videoThread.mutex, SDL_ANDROID_CompatibilityHacks ? 400 : 1000); + ret = SDL_CondWaitTimeout(videoThread.cond, videoThread.mutex, SDL_ANDROID_CompatibilityHacks ? 100 : 1000); if( videoThread.execute ) { videoThread.threadReady = 0; diff --git a/project/jni/sdl-1.3/include/SDL_config_android.h b/project/jni/sdl-1.3/include/SDL_config_android.h index f1c875a88..10f4d522e 100644 --- a/project/jni/sdl-1.3/include/SDL_config_android.h +++ b/project/jni/sdl-1.3/include/SDL_config_android.h @@ -37,7 +37,7 @@ #define SDL_VIDEO_RENDER_OGL_ES 1 #define SDL_VIDEO_RENDER_OGL_ES_GL_CONTEXT_LOSING_IMMUNE 1 /* SDL uses some OpenGL textures for drawing in-screen keyboard, so application should allocate OpenGL texture ID-s starting from this value */ -#define SDL_GL_FIRST_SAFE_TEXTURE_ID 25 +#define SDL_GL_FIRST_SAFE_TEXTURE_ID 26 #define SDL_AUDIO_DRIVER_ANDROID 1 diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c index 17f8e5787..9b7c97e55 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidinput.c @@ -789,7 +789,8 @@ JAVA_EXPORT_NAME(Settings_nativeSetMouseUsed) ( JNIEnv* env, jobject thiz, jint MoveMouseWithJoystickSpeed, jint MoveMouseWithJoystickAccel, jint LeftClickKeycode, jint RightClickKeycode, jint LeftClickTimeout, jint RightClickTimeout, - jint RelativeMovement, jint RelativeMovementSpeed, jint RelativeMovementAccel) + jint RelativeMovement, jint RelativeMovementSpeed, jint RelativeMovementAccel, + jint ShowMouseCursor) { isMouseUsed = 1; rightClickMethod = RightClickMethod; @@ -808,6 +809,7 @@ JAVA_EXPORT_NAME(Settings_nativeSetMouseUsed) ( JNIEnv* env, jobject thiz, relativeMovement = RelativeMovement; relativeMovementSpeed = RelativeMovementSpeed; relativeMovementAccel = RelativeMovementAccel; + SDL_ANDROID_ShowMouseCursor = ShowMouseCursor; //__android_log_print(ANDROID_LOG_INFO, "libSDL", "relativeMovementSpeed %d relativeMovementAccel %d", relativeMovementSpeed, relativeMovementAccel); } diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.c b/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.c index c4f3d1927..ed6cbdb83 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.c +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.c @@ -71,7 +71,7 @@ int SDL_ANDROID_CompatibilityHacks = 0; int SDL_ANDROID_BYTESPERPIXEL = 2; int SDL_ANDROID_BITSPERPIXEL = 16; int SDL_ANDROID_UseGles2 = 0; - +int SDL_ANDROID_ShowMouseCursor = 0; static void appPutToBackgroundCallbackDefault(void) { diff --git a/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.h b/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.h index a443c9e0b..b413cab06 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.h +++ b/project/jni/sdl-1.3/src/video/android/SDL_androidvideo.h @@ -41,6 +41,7 @@ extern int SDL_ANDROID_TouchscreenCalibrationY; extern int SDL_ANDROID_SmoothVideo; extern int SDL_ANDROID_VideoMultithreaded; extern int SDL_ANDROID_CompatibilityHacks; +extern int SDL_ANDROID_ShowMouseCursor; extern int SDL_ANDROID_UseGles2; extern int SDL_ANDROID_BYTESPERPIXEL; extern int SDL_ANDROID_BITSPERPIXEL; @@ -62,6 +63,9 @@ extern void SDL_ANDROID_initFakeStdout(); extern SDL_VideoDevice *ANDROID_CreateDevice_1_3(int devindex); extern void SDL_ANDROID_ProcessDeferredEvents(); extern void SDL_ANDROID_WarpMouse(int x, int y); +extern void SDL_ANDROID_DrawMouseCursor(int x, int y, int size, int alpha); +extern void SDL_ANDROID_DrawMouseCursorIfNeeded(); + #if SDL_VERSION_ATLEAST(1,3,0) extern SDL_Window * ANDROID_CurrentWindow; diff --git a/project/jni/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c b/project/jni/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c index 8a15957bf..81a185cf9 100644 --- a/project/jni/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c +++ b/project/jni/sdl-1.3/src/video/android/SDL_touchscreenkeyboard.c @@ -87,7 +87,8 @@ typedef struct static GLTexture_t arrowImages[5] = { {0, 0, 0}, }; static GLTexture_t buttonAutoFireImages[MAX_BUTTONS_AUTOFIRE*2] = { {0, 0, 0}, }; static GLTexture_t buttonImages[MAX_BUTTONS*2] = { {0, 0, 0}, }; - +static GLTexture_t mousePointer; +enum { MOUSE_POINTER_W = 32, MOUSE_POINTER_H = 32, MOUSE_POINTER_X = 5, MOUSE_POINTER_Y = 7 }; // X and Y are offsets of the pointer tip static inline int InsideRect(const SDL_Rect * r, int x, int y) { @@ -643,13 +644,25 @@ JAVA_EXPORT_NAME(Settings_nativeSetupScreenKeyboard) ( JNIEnv* env, jobject thi } }; - JNIEXPORT void JNICALL JAVA_EXPORT_NAME(Settings_nativeSetTouchscreenKeyboardUsed) ( JNIEnv* env, jobject thiz) { SDL_ANDROID_isTouchscreenKeyboardUsed = 1; } +void SDL_ANDROID_DrawMouseCursor(int x, int y, int size, int alpha) +{ + SDL_Rect r; + // I've failed with size calcualtions, so leaving it as-is + r.x = x - MOUSE_POINTER_X; + r.y = y - MOUSE_POINTER_Y; + r.w = MOUSE_POINTER_W; + r.h = MOUSE_POINTER_H; + beginDrawingTex(); + drawCharTex( &mousePointer, NULL, &r, 255, 255, 255, alpha ); + endDrawingTex(); +} + static int power_of_2(int input) { @@ -676,7 +689,9 @@ static int setupScreenKeyboardButton( int buttonID, Uint8 * charBuf ) else data = &(buttonImages[buttonID-9]); - if( buttonID > 22 ) // Error, array too big + if( buttonID == 23 ) + data = &mousePointer; + else if( buttonID > 22 ) // Error, array too big return 12; // Return value bigger than zero to iterate it memcpy(&w, charBuf, sizeof(int)); diff --git a/project/project.properties b/project/project.properties new file mode 100644 index 000000000..2cc58faf4 --- /dev/null +++ b/project/project.properties @@ -0,0 +1,11 @@ +# This file is automatically generated by Android Tools. +# Do not modify this file -- YOUR CHANGES WILL BE ERASED! +# +# This file must be checked in Version Control Systems. +# +# To customize properties used by the Ant build system use, +# "ant.properties", and override values to adapt the script to your +# project structure. + +# Project target. +target=android-12 diff --git a/project/res/raw/simpletheme.raw b/project/res/raw/simpletheme.raw index eea575092aad1d76c37a6ec3cdbbefff270d951c..80e18839c6467e1b5185952fa8983175a105a790 100644 GIT binary patch delta 5882 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 diff --git a/project/res/raw/ultimatedroid.raw b/project/res/raw/ultimatedroid.raw index 35a565cf2a3e8d4f15a932b56a8f5034c01e89e5..aca8cad178858c19e09748c67a13378e1184c85f 100644 GIT binary patch literal 7388 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