From 033c32c08b2141a9f19ed1dbabdbfe277f1d218c Mon Sep 17 00:00:00 2001 From: "giwoong.kim" Date: Thu, 17 May 2012 22:00:52 +0900 Subject: [PATCH] [Title] trim a emulator window when HW key is pressed [Type] enhancement [Module] [Priority] [Jira#] [Redmine#] [Problem] [Cause] [Solution] re-masking [TestCase] --- .../org/tizen/emulator/skin/EmulatorSkin.java | 4 +++ .../tizen/emulator/skin/util/SkinUtil.java | 29 +++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java index ce8b3c0184..886d1587c8 100755 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java @@ -595,6 +595,8 @@ public class EmulatorSkin { } } + SkinUtil.trimShell( shell, currentImage ); + KeyEventData keyEventData = new KeyEventData( KeyEventType.RELEASED.value(), keyCode, 0 ); communicator.sendToQEMU( SendCommand.SEND_HARD_KEY_EVENT, keyEventData ); } @@ -623,6 +625,8 @@ public class EmulatorSkin { region.height - 1, // src region.x + 1, region.y + 1, region.width - 1, region.height - 1 ); // dst gc.dispose(); + + SkinUtil.trimShell( shell, currentKeyPressedImage, region.x, region.y, region.width, region.height ); } KeyEventData keyEventData = new KeyEventData( KeyEventType.PRESSED.value(), keyCode, 0 ); diff --git a/tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java b/tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java index 047226deaa..48ea756b8b 100644 --- a/tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java +++ b/tizen/src/skin/client/src/org/tizen/emulator/skin/util/SkinUtil.java @@ -265,6 +265,35 @@ public class SkinUtil { } + public static void trimShell( Shell shell, Image image, int left, int top, int width, int height ) { + + if ( null == image ) { + return; + } + + ImageData imageData = image.getImageData(); + + int right = left + width; + int bottom = top + height; + + Region region = shell.getRegion(); + if (region == null) { + return; + } + + for ( int i = left; i < right; i++ ) { + for ( int j = top; j < bottom; j++ ) { + int alpha = imageData.getAlpha( i, j ); + if ( 0 == alpha ) { + region.subtract( i, j, 1, 1 ); + } + } + } + + shell.setRegion( region ); + + } + public static int[] convertMouseGeometry( int originalX, int originalY, int lcdWidth, int lcdHeight, int scale, int angle ) { -- 2.34.1