From: <js...@us...> - 2011-06-25 23:58:52
|
Revision: 6978 http://exult.svn.sourceforge.net/exult/?rev=6978&view=rev Author: jsf Date: 2011-06-25 23:58:46 +0000 (Sat, 25 Jun 2011) Log Message: ----------- Zoom around correct point. Zoom/pan working decently. Modified Paths: -------------- ExultAndroid/src/com/exult/android/ExultActivity.java ExultAndroid/src/com/exult/android/ImageBuf.java ExultAndroid/src/com/exult/android/Shortcuts.java ExultAndroid/src/com/exult/android/UsecodeIntrinsics.java Modified: ExultAndroid/src/com/exult/android/ExultActivity.java =================================================================== --- ExultAndroid/src/com/exult/android/ExultActivity.java 2011-06-25 08:18:16 UTC (rev 6977) +++ ExultAndroid/src/com/exult/android/ExultActivity.java 2011-06-25 23:58:46 UTC (rev 6978) @@ -427,12 +427,16 @@ return true; case MotionEvent.ACTION_UP: boolean clickHandled = false; - zoomX = -1; + if (!targeting) mouse.hide(); gwin.stopActor(); avatarMotion = null; movingAvatar = false; + if (zoomX >= 0) { + zoomX = -1; + return true; + } if (clickPoint != null) { if (targeting || clickTrack != null || (leftDownX - 1 <= x && x <= leftDownX + 1 && @@ -470,6 +474,7 @@ showItemsX = x; showItemsY = y; showItemsTime = GameTime + 500; } + zoomX = -1; dragging = dragged = false; return true; case MotionEvent.ACTION_MOVE: @@ -540,7 +545,7 @@ case MotionEvent.ACTION_POINTER_DOWN: oldZoomDist = spacing(event); System.out.printf("oldZoomDist = %1$f\n", oldZoomDist); - if (oldZoomDist > 10f) { + if (!dragging && oldZoomDist > 10f) { zoomX = (event.getX(0) + event.getX(1))/2; zoomY = (event.getY(0) + event.getY(1))/2; oldZoomFactor = Shortcuts.getZoomFactor(); @@ -550,7 +555,7 @@ } return true; case MotionEvent.ACTION_POINTER_UP: - zoomX = -1; + //zoomX = -1; return true; case MotionEvent.ACTION_CANCEL: return true; Modified: ExultAndroid/src/com/exult/android/ImageBuf.java =================================================================== --- ExultAndroid/src/com/exult/android/ImageBuf.java 2011-06-25 08:18:16 UTC (rev 6977) +++ ExultAndroid/src/com/exult/android/ImageBuf.java 2011-06-25 23:58:46 UTC (rev 6978) @@ -70,7 +70,7 @@ y = height - y; if (w < 20 || h < 20) return false; - System.out.printf("setZoom: %1$d,%2$d,%3$d,%4$d\n", x, y, w, h); + //System.out.printf("setZoom: %1$d,%2$d,%3$d,%4$d\n", x, y, w, h); scaleSrc.set(x, y, x+w-1, y+h-1); return true; } @@ -92,11 +92,17 @@ y = height - zh; } dy = y - scaleSrc.top; - System.out.printf("ImageBuf.pan.current: %1$d, %2$d\n", scaleSrc.left, scaleSrc.top); + //System.out.printf("ImageBuf.pan.current: %1$d, %2$d\n", scaleSrc.left, scaleSrc.top); scaleSrc.left += dx; scaleSrc.right += dx; scaleSrc.top += dy; scaleSrc.bottom += dy; - System.out.printf("ImageBuf.pan: %1$d, %2$d\n", dx, dy); + //System.out.printf("ImageBuf.pan: %1$d, %2$d\n", dx, dy); } + public final int getZoomX() { + return scaleSrc.left; + } + public final int getZoomY() { + return scaleSrc.top; + } public final int getZoomWidth() { return scaleSrc.right - scaleSrc.left + 1; } Modified: ExultAndroid/src/com/exult/android/Shortcuts.java =================================================================== --- ExultAndroid/src/com/exult/android/Shortcuts.java 2011-06-25 08:18:16 UTC (rev 6977) +++ ExultAndroid/src/com/exult/android/Shortcuts.java 2011-06-25 23:58:46 UTC (rev 6978) @@ -82,6 +82,10 @@ private static float zoomFactor = 1.0f; // Cycle through zooms. public static void zoom() { + if (zoomFactor > 1.0f) { + clearZoom(); + return; + } synchronized(win) { zoomCount = (zoomCount + 1)%4; int w = EConst.c_game_w/(zoomCount + 1), h = EConst.c_game_h/(zoomCount + 1); @@ -96,15 +100,16 @@ } // Zoom to given factor. Returns true if size changed. public static boolean zoom(float f) { - int oldw = win.getZoomWidth(), oldh = win.getZoomHeight(); + if (f <= 1) { clearZoom(); return true; } else { + int oldw = win.getZoomWidth(), oldh = win.getZoomHeight(); int w = (int) (EConst.c_game_w/f), h = (int) (EConst.c_game_h/f); if (Math.abs(w - oldw) > 10 || Math.abs(h - oldh) > 10) { synchronized(win) { - int x = (EConst.c_game_w - w)/2, y = (EConst.c_game_h - h)/2; + int x = win.getZoomX() + (oldw - w)/2, y = win.getZoomY() + (oldh - h)/2; zoomCount = 0; if (win.setZoom(x, y, w, h)) zoomFactor = f; @@ -118,19 +123,16 @@ public static void pan(float dx, float dy) { int deltax = (int)(dx*win.getZoomWidth()/win.getWidth()); int deltay = (int)(dy*win.getZoomHeight()/win.getHeight()); - System.out.printf("pan: %1$d,%2$d\n", deltax, deltay); win.pan(deltax, deltay); gwin.setPainted(); } - public static void clearZoom() { - if (zoomCount > 0) { + private static void clearZoom() { synchronized(win) { - System.out.println("clearZoom"); + //System.out.println("clearZoom"); zoomCount = 0; zoomFactor = 1.0f; win.setZoom(0, 0, EConst.c_game_w, EConst.c_game_h); gwin.setPainted(); - } } } public static void save() { Modified: ExultAndroid/src/com/exult/android/UsecodeIntrinsics.java =================================================================== --- ExultAndroid/src/com/exult/android/UsecodeIntrinsics.java 2011-06-25 08:18:16 UTC (rev 6977) +++ ExultAndroid/src/com/exult/android/UsecodeIntrinsics.java 2011-06-25 23:58:46 UTC (rev 6978) @@ -138,9 +138,6 @@ gwin.setAllDirty(); ucmachine.initConversation(); // jsf-Added 4/20/01 for SI-Lydia. } - synchronized(gwin.getWin()) { - Shortcuts.clearZoom(); - } gwin.paintDirty(); conv.showFace(shape, frame, slot); // user_choice = 0; // Seems like a good idea. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |