touch: clean up some source code for the multi-touch
authorGiWoong Kim <giwoong.kim@samsung.com>
Thu, 25 Jul 2013 02:39:07 +0000 (11:39 +0900)
committerGiWoong Kim <giwoong.kim@samsung.com>
Thu, 25 Jul 2013 02:39:07 +0000 (11:39 +0900)
clean up some source code for the multi-touch of
maru_shm

Change-Id: I36003f2751c7dcc020369fc7c7e9a07b3beb73a9
Signed-off-by: GiWoong Kim <giwoong.kim@samsung.com>
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorFingers.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSdlSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorShmSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkin.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinMain.java
tizen/src/skin/client/src/org/tizen/emulator/skin/EmulatorSkinState.java

index edaa31065855016fa7109cef3de747654b0dcf7f..3fc35c55f38a0d0fd630d537afcf7550c0cc27a5 100644 (file)
@@ -49,6 +49,8 @@ import org.tizen.emulator.skin.log.SkinLogger;
 
 public class EmulatorFingers {
        private static final int MAX_FINGER_CNT = 10;
+       private static final int FINGER_POINT_SIZE = 32;
+
        private static final int RED_MASK = 0x0000FF00;
        private static final int GREEN_MASK = 0x00FF0000;
        private static final int BLUE_MASK = 0xFF000000;
@@ -60,7 +62,6 @@ public class EmulatorFingers {
        private int multiTouchEnable;
        private int maxTouchPoint;
        protected int fingerCnt;
-       private int fingerCntMax;
 
        private int grabFingerID = 0;
        private ArrayList<FingerPoint> FingerPointList;
@@ -79,19 +80,20 @@ public class EmulatorFingers {
        /**
         *  Constructor
         */
-       EmulatorFingers(EmulatorSkinState currentState, SocketCommunicator communicator) {
+       EmulatorFingers(int maximum,
+                       EmulatorSkinState currentState, SocketCommunicator communicator) {
                this.currentState = currentState;
                this.communicator = communicator;
 
-               initMultiTouchState();
+               initMultiTouchState(maximum);
        }
 
        protected class FingerPoint {
-               int id;
-               int originX;
-               int originY;
-               int x;
-               int y;
+               private int id;
+               private int originX;
+               private int originY;
+               private int x;
+               private int y;
 
                FingerPoint(int originX, int originY, int x, int y) {
                        this.originX = originX;
@@ -110,7 +112,7 @@ public class EmulatorFingers {
        }
 
        public FingerPoint getFingerPointFromSlot(int index) {
-               if (index < 0 || index > this.fingerCntMax) {
+               if (index < 0 || index > getMaxTouchPoint()) {
                        return null;
                }
 
@@ -140,16 +142,16 @@ public class EmulatorFingers {
                return null;
        }
 
-       public void initMultiTouchState() {
-               this.multiTouchEnable = 0;
-               this.fingerCntMax = this.currentState.getMaxTouchPoint();
+       public void initMultiTouchState(int maximum) {
+               multiTouchEnable = 0;
 
-               if (this.fingerCntMax > MAX_FINGER_CNT) {
-                       this.fingerCntMax = MAX_FINGER_CNT;
-                       setMaxTouchPoint(this.fingerCntMax);
+               int fingerCntMax = maximum;
+               if (fingerCntMax > MAX_FINGER_CNT) {
+                       fingerCntMax = MAX_FINGER_CNT;
                }
+               setMaxTouchPoint(fingerCntMax);
 
-               logger.info("maxTouchPoint="+ this.fingerCntMax);
+               logger.info("maxTouchPoint : " + getMaxTouchPoint());
                this.fingerCnt = 0;
 
                if (this.fingerSlot != null) {
@@ -157,11 +159,11 @@ public class EmulatorFingers {
                }
 
                FingerPointList = new ArrayList<FingerPoint>();
-               int i;
-               for (i = 0; i <= fingerCntMax; i++) {
+               for (int i = 0; i <= getMaxTouchPoint(); i++) {
                        FingerPointList.add(new FingerPoint(-1, -1, -1, -1));
                } 
-               this.fingerPointSize = 32;
+
+               this.fingerPointSize = FINGER_POINT_SIZE;
                this.fingerPointSizeHalf = this.fingerPointSize / 2;
 
                this.fingerPointOutlineColor = new Color(Display.getCurrent(), 0xDD, 0xDD, 0xDD);
@@ -175,12 +177,12 @@ public class EmulatorFingers {
 
                GC gc = new GC(this.fingerSlotimage);
 
-               gc.setForeground(this.fingerPointOutlineColor);
-               gc.drawOval(0, 0, this.fingerPointSize + 2, this.fingerPointSize + 2);
-
                gc.setBackground(this.fingerPointColor);
                gc.fillOval(2, 2, this.fingerPointSize, this.fingerPointSize);
 
+               gc.setForeground(this.fingerPointOutlineColor);
+               gc.drawOval(0, 0, this.fingerPointSize + 2, this.fingerPointSize + 2);
+
                gc.dispose();
        }
 
@@ -193,18 +195,18 @@ public class EmulatorFingers {
        }
 
        protected int addFingerPoint(int originX, int originY, int x, int y) {
-               if (this.fingerCnt == this.fingerCntMax) {
+               if (this.fingerCnt == getMaxTouchPoint()) {
                        logger.info("support multi-touch up to "
-                                       + this.fingerCntMax + " fingers");
+                                       + getMaxTouchPoint() + " fingers");
                        return -1;
                }
                this.fingerCnt += 1;
 
-               FingerPointList.get(fingerCnt -1).id = this.fingerCnt;
-               FingerPointList.get(fingerCnt -1).originX = originX;
-               FingerPointList.get(fingerCnt -1).originY = originY;
-               FingerPointList.get(fingerCnt -1).x = x;
-               FingerPointList.get(fingerCnt -1).y = y;
+               FingerPointList.get(fingerCnt - 1).id = this.fingerCnt;
+               FingerPointList.get(fingerCnt - 1).originX = originX;
+               FingerPointList.get(fingerCnt - 1).originY = originY;
+               FingerPointList.get(fingerCnt - 1).x = x;
+               FingerPointList.get(fingerCnt - 1).y = y;
                logger.info(this.fingerCnt + " finger touching");
 
                return this.fingerCnt;
@@ -274,13 +276,13 @@ public class EmulatorFingers {
                                this.grabFingerID = finger.id;
                                logger.info(String.format("id %d finger is grabbed\n", this.grabFingerID));
                        }
-                       else if (this.fingerCnt == this.fingerCntMax)
+                       else if (this.fingerCnt == getMaxTouchPoint())
                        { /* Let's assume that this event is last finger touch input */
-                               finger = getFingerPointFromSlot(this.fingerCntMax - 1);
+                               finger = getFingerPointFromSlot(getMaxTouchPoint() - 1);
                                if (finger != null) {
                                mouseEventData = new MouseEventData(
                                                        MouseButtonType.LEFT.value(), MouseEventType.RELEASE.value(),
-                                                       originX, originY, finger.x, finger.y, this.fingerCntMax - 1);
+                                                       originX, originY, finger.x, finger.y, getMaxTouchPoint() - 1);
                                        communicator.sendToQEMU(
                                                        SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
 
@@ -292,7 +294,7 @@ public class EmulatorFingers {
                                        if (finger.id != 0) {
                                                mouseEventData = new MouseEventData(
                                                                MouseButtonType.LEFT.value(), MouseEventType.PRESS.value(),
-                                                               originX, originY, x, y, this.fingerCntMax - 1);
+                                                               originX, originY, x, y, getMaxTouchPoint() - 1);
                                                communicator.sendToQEMU(
                                                                SendCommand.SEND_MOUSE_EVENT, mouseEventData, false);
                                        }
@@ -400,7 +402,7 @@ public class EmulatorFingers {
                                this.grabFingerID = finger.id;
                        logger.info(String.format("id %d finger is grabbed\n", this.grabFingerID));
                        }
-                       else if (this.fingerCnt == this.fingerCntMax)
+                       else if (this.fingerCnt == getMaxTouchPoint())
                        {  /* Let's assume that this event is last finger touch input */
                                /* do nothing */
                        }
index 26f617bff99f725da1764155d4315a08acf40bc6..b1e59a6d02ecf62a26ad863f1c42d5162bb428af 100644 (file)
@@ -49,9 +49,9 @@ public class EmulatorSdlSkin extends EmulatorSkin {
        /**
         *  Constructor
         */
-       public EmulatorSdlSkin(EmulatorSkinState state,
-                       EmulatorConfig config, SkinInformation skinInfo, boolean isOnTop) {
-               super(state, config, skinInfo, SWT.EMBEDDED, isOnTop);
+       public EmulatorSdlSkin(EmulatorConfig config,
+                       SkinInformation skinInfo, boolean isOnTop) {
+               super(config, skinInfo, SWT.EMBEDDED, isOnTop);
        }
 
        public long initLayout() {
index b3980d86728c389b2492fce6d00779ee6e2b5d45..7f58b8ef7a84260a0f58b2b17c66cddd3c9c785a 100644 (file)
@@ -64,17 +64,13 @@ public class EmulatorShmSkin extends EmulatorSkin {
        public static final int BLUE_MASK = 0x000000FF;
        public static final int COLOR_DEPTH = 24; /* no need to Alpha channel */
 
-       private static Logger logger = SkinLogger.getSkinLogger(
-                       EmulatorShmSkin.class).getLogger();
-
-       private EmulatorFingers finger;
-       private int multiTouchKey;
-       private int multiTouchKeySub;
-
        /* touch values */
        protected static int pressingX = -1, pressingY = -1;
        protected static int pressingOriginX = -1, pressingOriginY = -1;
 
+       private static Logger logger = SkinLogger.getSkinLogger(
+                       EmulatorShmSkin.class).getLogger();
+
        static {
                /* load JNI library file */
                try {
@@ -102,6 +98,11 @@ public class EmulatorShmSkin extends EmulatorSkin {
        private PaletteData paletteData;
        private PollFBThread pollThread;
 
+       private int maxTouchPoint;
+       private EmulatorFingers finger;
+       private int multiTouchKey;
+       private int multiTouchKeySub;
+
        class PollFBThread extends Thread {
                private Display display;
                private int widthFB;
@@ -208,11 +209,14 @@ public class EmulatorShmSkin extends EmulatorSkin {
        /**
         *  Constructor
         */
-       public EmulatorShmSkin(EmulatorSkinState state,
-                       EmulatorConfig config, SkinInformation skinInfo, boolean isOnTop) {
-               super(state, config, skinInfo, SWT.NONE, isOnTop);
+       public EmulatorShmSkin(EmulatorConfig config,
+                       SkinInformation skinInfo, boolean isOnTop) {
+               super(config, skinInfo, SWT.NONE, isOnTop);
 
                this.paletteData = new PaletteData(RED_MASK, GREEN_MASK, BLUE_MASK);
+
+               /* get MaxTouchPoint from startup argument */
+               this.maxTouchPoint = config.getArgInt(ArgsConstants.MAX_TOUCHPOINT);
        }
 
        protected void skinFinalize() {
@@ -228,7 +232,7 @@ public class EmulatorShmSkin extends EmulatorSkin {
        public long initLayout() {
                super.initLayout();
 
-               finger = new EmulatorFingers(currentState, communicator);
+               finger = new EmulatorFingers(maxTouchPoint, currentState, communicator);
                if (SwtUtil.isMacPlatform() == true) {
                        multiTouchKey = SWT.COMMAND;
                } else {
index 32c96fd7de90ad8ccccffb64a312dc37ccfe7f5c..8f46fe6ce178f9c27b5d48d448b0434d8c5b5472 100644 (file)
@@ -197,8 +197,7 @@ public class EmulatorSkin {
         * @param config : configuration of emulator skin
         * @param isOnTop : always on top flag
        */
-       protected EmulatorSkin(EmulatorSkinState state,
-                       EmulatorConfig config, SkinInformation skinInfo,
+       protected EmulatorSkin(EmulatorConfig config, SkinInformation skinInfo,
                        int displayCanvasStyle, boolean isOnTop) {
                this.config = config;
                this.skinInfo = skinInfo;
@@ -211,17 +210,17 @@ public class EmulatorSkin {
 
                int style = SWT.NO_TRIM | SWT.DOUBLE_BUFFERED;
                this.shell = new Shell(Display.getDefault(), style);
-
                if (isOnTop == true) {
                        SkinUtil.setTopMost(shell, true);
                }
 
                this.displayCanvasStyle = displayCanvasStyle;
 
+               /* prepare for VM state management */
+               this.currentState = new EmulatorSkinState();
+
                setColorVM(); /* generate a identity color */
                this.keyWindowKeeper = new KeyWindowKeeper(this);
-
-               this.currentState = state;
        }
 
        public void setCommunicator(SocketCommunicator communicator) {
index a43d25eb90e5d7a6a2505a3e8b3e467c96e12f8d..c3375594f9c6b22df1f9c84e2c44891bf117a7a7 100644 (file)
@@ -75,7 +75,6 @@ public class EmulatorSkinMain {
 
        private static Logger logger;
 
-       public EmulatorSkinState currentState;
        private static int useSharedMemory = 0;
 
        static {
@@ -191,7 +190,6 @@ public class EmulatorSkinMain {
                        Properties skinProperties = loadProperties(skinPropFilePath, true);
                        if (null == skinProperties) {
                                logger.severe("Fail to load skin properties file.");
-                               System.exit(-1);
                        }
 
                        /* set emulator window config property */
@@ -236,29 +234,12 @@ public class EmulatorSkinMain {
                                        SkinPropertiesConstants.WINDOW_ONTOP, Boolean.FALSE.toString());
                        boolean isOnTop = Boolean.parseBoolean(onTopVal);
 
-                       /* prepare for VM state management */
-                       EmulatorSkinState currentState = new EmulatorSkinState();
-
-                       /* get MaxTouchPoint from startup argument */
-                       int maxtouchpoint = 0;
-                       if (argsMap.containsKey(ArgsConstants.MAX_TOUCHPOINT)) {
-                               maxtouchpoint = Integer.parseInt(
-                                               argsMap.get(ArgsConstants.MAX_TOUCHPOINT));
-                               logger.info("maximum touch point : " + maxtouchpoint);
-                       } else {
-                               maxtouchpoint = 1;
-                               logger.info(ArgsConstants.MAX_TOUCHPOINT +
-                                               " does not exist set maxtouchpoint info to " + maxtouchpoint);
-                       }
-
-                       currentState.setMaxTouchPoint(maxtouchpoint);
-
                        /* create a skin */
                        EmulatorSkin skin = null;
                        if (useSharedMemory == 1) {
-                               skin = new EmulatorShmSkin(currentState, config, skinInfo, isOnTop);
+                               skin = new EmulatorShmSkin(config, skinInfo, isOnTop);
                        } else { /* linux & windows */
-                               skin = new EmulatorSdlSkin(currentState, config, skinInfo, isOnTop);
+                               skin = new EmulatorSdlSkin(config, skinInfo, isOnTop);
                        }
 
                        /* create a qemu communicator */
index 4f55a8caf99489f60f09fafa70e1388aedaccdd7..4a83ea612f38452377c4198bea31d59f2cde6066 100644 (file)
@@ -40,7 +40,6 @@ public class EmulatorSkinState {
        private int currentScale;
        private short currentRotationId;
        private int currentAngle;
-       private int maxTouchPoint;
 
        private Rectangle displayBounds;
        private boolean updateDisplayBounds;
@@ -57,7 +56,6 @@ public class EmulatorSkinState {
                this.currentScale = 50;
                this.currentRotationId = RotationInfo.PORTRAIT.id();
                this.currentAngle = 0;
-               this.maxTouchPoint = 0;
 
                this.displayBounds = null;
                this.updateDisplayBounds = false;
@@ -186,13 +184,4 @@ public class EmulatorSkinState {
        public synchronized void setCurrentHoveredHWKey(HWKey hwKey) {
                this.currentHoveredHWKey = hwKey;
        }
-
-       /* max touch point */
-       public synchronized void setMaxTouchPoint(int maxTouchPoint) {
-               this.maxTouchPoint = maxTouchPoint;
-       }
-
-       public synchronized int getMaxTouchPoint() {
-               return maxTouchPoint;
-       }
 }