1) it passes the linear type checking 2) start annotations 3) removes unnecessary...
[IRC.git] / Robust / src / Benchmarks / SSJava / EyeTracking / DeviationScanner.java
index dfabadeef9697f3729db5f8c0b5a7271ae3317fb..b5308f50da3a7b6aba25f82240b2831a52b0ef49 100644 (file)
  * \r
  * @author Florian Frankenberger\r
  */\r
+@LATTICE("SIZE<POS,SIZE*")\r
+@METHODDEFAULT("OUT<THIS,THIS<IN,THISLOC=THIS,RETURNLOC=OUT")\r
 public class DeviationScanner {\r
 \r
+  @LOC("POS")\r
   private EyePosition eyePositions[];\r
 \r
   // LEFT_UP(+1, -1), UP(0, -1), RIGHT_UP(-1, -1), LEFT(+1, 0), NONE(0, 0),\r
   // RIGHT(-1, 0), LEFT_DOWN(\r
   // +1, +1), DOWN(0, +1), RIGHT_DOWN(-1, +1);\r
 \r
-  private static final Deviation LEFT_UP = new Deviation("LEFT_UP", +1, -1);\r
-  private static final Deviation UP = new Deviation("UP", 0, -1);\r
-  private static final Deviation RIGHT_UP = new Deviation("RIGHT_UP", -1, -1);\r
-  private static final Deviation LEFT = new Deviation("LEFT", +1, 0);\r
-  private static final Deviation NONE = new Deviation("NONE", 0, 0);\r
-  private static final Deviation RIGHT = new Deviation("RIGHT", -1, 0);\r
-  private static final Deviation LEFT_DOWN = new Deviation("LEFT_DOWN", +1, +1);\r
-  private static final Deviation DOWN = new Deviation("DOWN", 0, +1);\r
-  private static final Deviation RIGHT_DOWN = new Deviation("RIGHT_DOWN", -1, +1);\r
-\r
+  public static final int LEFT_UP = 0;\r
+  public static final int UP = 1;\r
+  public static final int RIGHT_UP = 2;\r
+  public static final int LEFT = 3;\r
+  public static final int NONE = 4;\r
+  public static final int RIGHT = 5;\r
+  public static final int LEFT_DOWN = 6;\r
+  public static final int DOWN = 7;\r
+  public static final int RIGHT_DOWN = 8;\r
+\r
+  @LOC("SIZE")\r
   private int size;\r
 \r
   public DeviationScanner() {\r
@@ -47,10 +51,12 @@ public class DeviationScanner {
     size = 0;\r
   }\r
 \r
-  public void addEyePosition(EyePosition eyePosition) {\r
+  @LATTICE("THIS<C,C<IN,THISLOC=THIS")\r
+  public void addEyePosition(@LOC("IN") EyePosition eyePosition) {\r
 \r
-    for (int i = 1; i < eyePositions.length; i++) {\r
+    for (@LOC("C") int i = 1; i < eyePositions.length; i++) {\r
       eyePositions[i - 1] = eyePositions[i];\r
+      eyePositions[i] = null;\r
     }\r
     eyePositions[eyePositions.length - 1] = eyePosition;\r
 \r
@@ -63,30 +69,30 @@ public class DeviationScanner {
     return size;\r
   }\r
 \r
-  public Deviation scanForDeviation(Rectangle2D faceRect) {\r
-    Deviation deviation = NONE;\r
+  @LATTICE("OUT<DEV,DEV<THIS,THIS<C,C<IN,C*,DEV*,OUT*,THISLOC=THIS,RETURNLOC=OUT")\r
+  public int scanForDeviation(@LOC("IN") Rectangle2D faceRect) {\r
+    @LOC("OUT") int deviation = NONE;\r
     if (getEyePositionsSize() >= 3) {\r
-      double deviationX = 0;\r
-      double deviationY = 0;\r
-\r
-      EyePosition lastEyePosition = null;\r
-      for (int i = 0; i < 3; ++i) {\r
-        EyePosition eyePosition = this.eyePositions[i];\r
-        if (lastEyePosition != null) {\r
-          deviationX += (eyePosition.getX() - lastEyePosition.getX());\r
-          deviationY += (eyePosition.getY() - lastEyePosition.getY());\r
+      @LOC("DEV") double deviationX = 0;\r
+      @LOC("DEV") double deviationY = 0;\r
+\r
+      @LOC("DEV") int lastIdx = -1;\r
+      for (@LOC("C") int i = 0; i < 3; ++i) {\r
+        if (lastIdx != -1) {\r
+          deviationX += (eyePositions[i].getX() - eyePositions[lastIdx].getX());\r
+          deviationY += (eyePositions[i].getY() - eyePositions[lastIdx].getY());\r
         }\r
-        lastEyePosition = eyePosition;\r
+        lastIdx = i;\r
       }\r
 \r
-      final double deviationPercentX = 0.04;\r
-      final double deviationPercentY = 0.04;\r
+      @LOC("DEV") final double deviationPercentX = 0.04;\r
+      @LOC("DEV") final double deviationPercentY = 0.04;\r
 \r
       deviationX /= faceRect.getWidth();\r
       deviationY /= faceRect.getWidth();\r
 \r
-      int deviationAbsoluteX = 0;\r
-      int deviationAbsoluteY = 0;\r
+      @LOC("DEV") int deviationAbsoluteX = 0;\r
+      @LOC("DEV") int deviationAbsoluteY = 0;\r
       if (deviationX > deviationPercentX)\r
         deviationAbsoluteX = 1;\r
       if (deviationX < -deviationPercentX)\r
@@ -111,28 +117,29 @@ public class DeviationScanner {
     return deviation;\r
   }\r
 \r
-  public static Deviation getDirectionFor(int directionX, int directionY) {\r
+  public int getDirectionFor(@LOC("IN") int directionX, @LOC("IN") int directionY) {\r
 \r
-    if (LEFT_UP.concurs(directionX, directionY)) {\r
+    if (directionX == +1 && directionY == -1) {\r
       return LEFT_UP;\r
-    } else if (UP.concurs(directionX, directionY)) {\r
+    } else if (directionX == 0 && directionY == -1) {\r
       return UP;\r
-    } else if (RIGHT_UP.concurs(directionX, directionY)) {\r
+    } else if (directionX == -1 && directionY == -1) {\r
       return RIGHT_UP;\r
-    } else if (LEFT.concurs(directionX, directionY)) {\r
+    } else if (directionX == +1 && directionY == 0) {\r
       return LEFT;\r
-    } else if (NONE.concurs(directionX, directionY)) {\r
+    } else if (directionX == 0 && directionY == 0) {\r
       return NONE;\r
-    } else if (RIGHT.concurs(directionX, directionY)) {\r
+    } else if (directionX == -1 && directionY == 0) {\r
       return RIGHT;\r
-    } else if (LEFT_DOWN.concurs(directionX, directionY)) {\r
+    } else if (directionX == +1 && directionY == +1) {\r
       return LEFT_DOWN;\r
-    } else if (DOWN.concurs(directionX, directionY)) {\r
+    } else if (directionX == 0 && directionY == +1) {\r
       return DOWN;\r
-    } else if (RIGHT_DOWN.concurs(directionX, directionY)) {\r
+    } else if (directionX == -1 && directionY == +1) {\r
       return RIGHT_DOWN;\r
     }\r
-    return null;\r
+\r
+    return -1;\r
   }\r
 \r
   public void clear() {\r
@@ -141,4 +148,27 @@ public class DeviationScanner {
     size = 0;\r
   }\r
 \r
+  public String toStringDeviation(@LOC("IN") int dev) {\r
+    if (dev == LEFT_UP) {\r
+      return "LEFT_UP";\r
+    } else if (dev == UP) {\r
+      return "UP";\r
+    } else if (dev == RIGHT_UP) {\r
+      return "RIGHT_UP";\r
+    } else if (dev == LEFT) {\r
+      return "LEFT";\r
+    } else if (dev == NONE) {\r
+      return "NONE";\r
+    } else if (dev == RIGHT) {\r
+      return "RIGHT";\r
+    } else if (dev == LEFT_DOWN) {\r
+      return "LEFT_DOWN";\r
+    } else if (dev == DOWN) {\r
+      return "DOWN";\r
+    } else if (dev == RIGHT_DOWN) {\r
+      return "RIGHT_DOWN";\r
+    }\r
+    return "ERROR";\r
+  }\r
+\r
 }\r