/**
+ * Multi-touch
*
- *
- * Copyright (C) 2011 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact:
* Munkyu Im <munkyu.im@samsung.com>
private int maxTouchPoint;
protected int fingerCnt;
private int fingerCntMax;
+
+ private int grabFingerID = 0;
+ private ArrayList<FingerPoint> FingerPointList;
+ protected FingerPoint fingerSlot;
+
protected int fingerPointSize;
protected int fingerPointSizeHalf;
private Color fingerPointColor;
private Color fingerPointOutlineColor;
- private int grabFingerID = 0;
protected Image fingerSlotimage;
protected ImageData imageData;
- protected FingerPoint fingerSlot;
- protected SocketCommunicator communicator;
- protected EmulatorSkin emulatorSkin;
- ArrayList<FingerPoint> FingerPointList;
- EmulatorSkinState currentState;
+ protected SocketCommunicator communicator;
+ private EmulatorSkinState currentState;
- EmulatorFingers(EmulatorSkinState currentState) {
+ /**
+ * Constructor
+ */
+ EmulatorFingers(EmulatorSkinState currentState, SocketCommunicator communicator) {
this.currentState = currentState;
+ this.communicator = communicator;
+
initMultiTouchState();
}
- protected void setCommunicator(SocketCommunicator communicator) {
- this.communicator = communicator;
- }
-
- //private fingerPointSurface;
protected class FingerPoint {
int id;
int originX;
return null;
}
- protected void setEmulatorSkin(EmulatorSkin emulatorSkin) {
- this.emulatorSkin = emulatorSkin;
- }
-
public void initMultiTouchState() {
this.multiTouchEnable = 0;
this.fingerCntMax = this.currentState.getMaxTouchPoint();
}
public void setMaxTouchPoint(int cnt) {
- if (cnt <=0) {
+ if (cnt <= 0) {
cnt = 1;
}
/**
* Emulator Skin Process
*
- * Copyright (C) 2011 - 2012 Samsung Electronics Co., Ltd. All rights reserved.
+ * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd. All rights reserved.
*
* Contact:
* GiWoong Kim <giwoong.kim@samsung.com>
/**
* Constructor
*/
- public EmulatorSdlSkin(EmulatorSkinState state, EmulatorFingers finger,
+ public EmulatorSdlSkin(EmulatorSkinState state,
EmulatorConfig config, SkinInformation skinInfo, boolean isOnTop) {
- super(state, finger, config, skinInfo, SWT.EMBEDDED, isOnTop);
+ super(state, config, skinInfo, SWT.EMBEDDED, isOnTop);
}
public long initLayout() {
private static Logger logger = SkinLogger.getSkinLogger(
EmulatorShmSkin.class).getLogger();
+ private EmulatorFingers finger;
+ private int multiTouchKey;
+ private int multiTouchKeySub;
+
static {
/* load JNI library file */
try {
/**
* Constructor
*/
- public EmulatorShmSkin(EmulatorSkinState state, EmulatorFingers finger,
+ public EmulatorShmSkin(EmulatorSkinState state,
EmulatorConfig config, SkinInformation skinInfo, boolean isOnTop) {
- super(state, finger, config, skinInfo, SWT.NONE, isOnTop);
+ super(state, config, skinInfo, SWT.NONE, isOnTop);
+
this.paletteData = new PaletteData(RED_MASK, GREEN_MASK, BLUE_MASK);
}
protected void skinFinalize() {
pollThread.stopRequest();
- super.finger.setMultiTouchEnable(0);
- super.finger.clearFingerSlot();
- super.finger.cleanup_multiTouchState();
+ finger.setMultiTouchEnable(0);
+ finger.clearFingerSlot();
+ finger.cleanup_multiTouchState();
super.skinFinalize();
}
public long initLayout() {
super.initLayout();
+ finger = new EmulatorFingers(currentState, communicator);
+ if (SwtUtil.isMacPlatform() == true) {
+ multiTouchKey = SWT.COMMAND;
+ } else {
+ multiTouchKey = SWT.CTRL;
+ }
+ multiTouchKeySub = SWT.SHIFT;
+
/* base + 1 = sdb port */
/* base + 2 = shared memory key */
int shmkey = config.getArgInt(ArgsConstants.NET_BASE_PORT) + 2;
@Override
protected void keyReleasedDelivery(int keyCode, int stateMask, int keyLocation) {
/* check multi-touch */
- if (keyCode == SWT.SHIFT || keyCode == SWT.COMMAND) {
+ if (keyCode == multiTouchKeySub || keyCode == multiTouchKey) {
int tempStateMask = stateMask & ~SWT.BUTTON1;
- if (tempStateMask == (SWT.SHIFT | SWT.COMMAND)) {
+ if (tempStateMask == (multiTouchKeySub | multiTouchKey)) {
finger.setMultiTouchEnable(1);
logger.info("enable multi-touch = mode1");
int tempStateMask = stateMask & ~SWT.BUTTON1;
- if ((keyCode == SWT.SHIFT && (tempStateMask & SWT.COMMAND) != 0) ||
- (keyCode == SWT.COMMAND && (tempStateMask & SWT.SHIFT) != 0))
+ if ((keyCode == multiTouchKeySub && (tempStateMask & multiTouchKey) != 0) ||
+ (keyCode == multiTouchKey && (tempStateMask & multiTouchKeySub) != 0))
{
finger.setMultiTouchEnable(2);
}
logger.info("enable multi-touch = mode2");
- } else if (keyCode == SWT.SHIFT || keyCode == SWT.COMMAND) {
+ } else if (keyCode == multiTouchKeySub || keyCode == multiTouchKey) {
finger.setMultiTouchEnable(1);
/* add a finger before start the multi-touch processing
SkinLogger.getSkinLogger(EmulatorSkin.class).getLogger();
protected EmulatorConfig config;
- protected EmulatorFingers finger;
protected Shell shell;
protected ImageRegistry imageRegistry;
protected Canvas lcdCanvas;
* @param config : configuration of emulator skin
* @param isOnTop : always on top flag
*/
- protected EmulatorSkin(EmulatorSkinState state, EmulatorFingers finger,
+ protected EmulatorSkin(EmulatorSkinState state,
EmulatorConfig config, SkinInformation skinInfo,
int displayCanvasStyle, boolean isOnTop) {
- this.finger = finger;
this.config = config;
this.skinInfo = skinInfo;
public void setCommunicator(SocketCommunicator communicator) {
this.communicator = communicator;
- this.finger.setCommunicator(this.communicator);
}
private void setColorVM() {
String skinPath = ImageRegistry.getSkinPath(
(String) argsMap.get(ArgsConstants.SKIN_PATH));
- /* get maxtouchpoint from startup argument */
- int maxtouchpoint;
- if(argsMap.containsKey(ArgsConstants.MAX_TOUCHPOINT)) {
- maxtouchpoint = Integer.parseInt(
- argsMap.get(ArgsConstants.MAX_TOUCHPOINT));
- logger.info("maxtouchpoint info:" + maxtouchpoint);
- }
- else {
- maxtouchpoint = 1;
- logger.info(ArgsConstants.MAX_TOUCHPOINT +
- " does not exist set maxtouchpoint info to " + maxtouchpoint);
- }
-
/* set skin information */
String skinInfoFilePath = skinPath + File.separator + SKIN_INFO_FILE_NAME;
Properties skinInfoProperties = loadProperties(skinInfoFilePath, false);
SkinPropertiesConstants.WINDOW_ONTOP, Boolean.FALSE.toString());
boolean isOnTop = Boolean.parseBoolean(onTopVal);
- /* create a skin */
- EmulatorSkin skin;
+ /* 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);
- EmulatorFingers finger = new EmulatorFingers(currentState);
+ /* create a skin */
+ EmulatorSkin skin = null;
if (useSharedMemory == 1) {
- skin = new EmulatorShmSkin(currentState, finger, config, skinInfo, isOnTop);
- } else { // linux & windows
- skin = new EmulatorSdlSkin(currentState, finger, config, skinInfo, isOnTop);
+ skin = new EmulatorShmSkin(currentState, config, skinInfo, isOnTop);
+ } else { /* linux & windows */
+ skin = new EmulatorSdlSkin(currentState, config, skinInfo, isOnTop);
}
/* create a qemu communicator */
int uid = config.getArgInt(ArgsConstants.UID);
communicator = new SocketCommunicator(config, uid, skin);
skin.setCommunicator(communicator);
- finger.setEmulatorSkin(skin);
/* initialize a skin layout */
long windowHandleId = skin.initLayout();