changes: now Inference engine works fine with the EyeTracking benchmark.
[IRC.git] / Robust / src / Benchmarks / SSJava / EyeTracking / DeviationScanner.java
index 052c7f4bdc25a45dd654612530a1f786be97078f..c635d89a9508558c793ec5fd7301cf5a0379046b 100644 (file)
 public class DeviationScanner {\r
 \r
   @LOC("DEV")\r
 public class DeviationScanner {\r
 \r
   @LOC("DEV")\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
+  private int x[];\r
+  @LOC("DEV")\r
+  private int y[];\r
 \r
   public static final int LEFT_UP = 0;\r
   public static final int UP = 1;\r
 \r
   public static final int LEFT_UP = 0;\r
   public static final int UP = 1;\r
@@ -43,81 +41,65 @@ public class DeviationScanner {
   public static final int DOWN = 7;\r
   public static final int RIGHT_DOWN = 8;\r
 \r
   public static final int DOWN = 7;\r
   public static final int RIGHT_DOWN = 8;\r
 \r
-  @LOC("DEV")\r
-  private int size;\r
-\r
   public DeviationScanner() {\r
   public DeviationScanner() {\r
-    eyePositions = new EyePosition[3];\r
-    size = 0;\r
-  }\r
-\r
-  @LATTICE("THIS<C,C<IN,THISLOC=THIS")\r
-  public void addEyePosition(@LOC("IN") EyePosition eyePosition) {\r
-\r
-    // for (@LOC("THIS,DeviationScanner.C") int i = 1; i < 3; i++) {\r
-    // eyePositions[i - 1] = eyePositions[i];\r
-    // eyePositions[i] = null;\r
-    // }\r
-    // eyePositions[eyePositions.length - 1] = eyePosition;\r
-\r
-    SSJAVA.append(eyePositions, eyePosition);\r
-\r
-    if (size < eyePositions.length) {\r
-      size++;\r
-    }\r
-\r
+    x = new int[3];\r
+    y = new int[3];\r
+    SSJAVA.arrayinit(x, -1);\r
+    SSJAVA.arrayinit(y, -1);\r
   }\r
 \r
   }\r
 \r
-  @RETURNLOC("THIS,DeviationScanner.DEV")\r
-  public int getEyePositionsSize() {\r
-    return size;\r
+  @LATTICE("THIS<IN,THISLOC=THIS")\r
+  public void addEyePosition(@LOC("IN") int inx, @LOC("IN") int iny) {\r
+    SSJAVA.append(x, inx);\r
+    SSJAVA.append(y, iny);\r
   }\r
 \r
   }\r
 \r
-  // @LATTICE("OUT<DEV,DEV<C,C<THIS,THIS<IN,C*,DEV*,OUT*,THISLOC=THIS,RETURNLOC=OUT")\r
-  @LATTICE("THIS<IN,THISLOC=THIS")\r
+  @LATTICE("THIS<C,THIS<IN,THISLOC=THIS,C*")\r
   @RETURNLOC("THIS,DeviationScanner.DEV")\r
   public int scanForDeviation(@LOC("IN") Rectangle2D faceRect) {\r
   @RETURNLOC("THIS,DeviationScanner.DEV")\r
   public int scanForDeviation(@LOC("IN") Rectangle2D faceRect) {\r
+\r
     @LOC("THIS,DeviationScanner.DEV") int deviation = NONE;\r
     @LOC("THIS,DeviationScanner.DEV") int deviation = NONE;\r
-    if (getEyePositionsSize() >= 3) {\r
-      @LOC("THIS,DeviationScanner.DEV") double deviationX = 0;\r
-      @LOC("THIS,DeviationScanner.DEV") double deviationY = 0;\r
-\r
-      @LOC("THIS,DeviationScanner.DEV") int lastIdx = -1;\r
-      for (@LOC("THIS,DeviationScanner.DEV") 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
-        lastIdx = i;\r
+\r
+    for (@LOC("C") int i = 0; i < 3; i++) {\r
+      if (x[i] == -1) {\r
+        return deviation;\r
       }\r
       }\r
+    }\r
 \r
 \r
-      @LOC("THIS,DeviationScanner.DEV") final double deviationPercentX = 0.04;\r
-      @LOC("THIS,DeviationScanner.DEV") final double deviationPercentY = 0.04;\r
+    @LOC("THIS,DeviationScanner.DEV") double deviationX = 0;\r
+    @LOC("THIS,DeviationScanner.DEV") double deviationY = 0;\r
 \r
 \r
-      deviationX /= faceRect.getWidth();\r
-      deviationY /= faceRect.getWidth();\r
+    @LOC("THIS,DeviationScanner.DEV") int lastIdx = -1;\r
+    for (@LOC("THIS,DeviationScanner.DEV") int i = 0; i < 3; ++i) {\r
+      if (lastIdx != -1) {\r
+        deviationX += (x[i] - x[lastIdx]);\r
+        deviationY += (y[i] - y[lastIdx]);\r
+      }\r
+      lastIdx = i;\r
+    }\r
 \r
 \r
-      @LOC("THIS,DeviationScanner.DEV") int deviationAbsoluteX = 0;\r
-      @LOC("THIS,DeviationScanner.DEV") int deviationAbsoluteY = 0;\r
-      if (deviationX > deviationPercentX)\r
-        deviationAbsoluteX = 1;\r
-      if (deviationX < -deviationPercentX)\r
-        deviationAbsoluteX = -1;\r
-      if (deviationY > deviationPercentY)\r
-        deviationAbsoluteY = 1;\r
-      if (deviationY < -deviationPercentY)\r
-        deviationAbsoluteY = -1;\r
+    @LOC("THIS,DeviationScanner.DEV") final double deviationPercentX = 0.04;\r
+    @LOC("THIS,DeviationScanner.DEV") final double deviationPercentY = 0.04;\r
 \r
 \r
-      deviation = getDirectionFor(deviationAbsoluteX, deviationAbsoluteY);\r
+    deviationX /= faceRect.getWidth();\r
+    deviationY /= faceRect.getWidth();\r
 \r
 \r
-      if (deviation != NONE) {\r
-        eyePositions = new EyePosition[3];\r
-        size = 0;\r
-      }\r
-      // System.out.println(String.format("%.2f%% | %.2f%% => %d and %d >>> %s",\r
-      // deviationX*100, deviationY*100, deviationAbsoluteX, deviationAbsoluteY,\r
-      // deviation.toString()));\r
+    @LOC("THIS,DeviationScanner.DEV") int deviationAbsoluteX = 0;\r
+    @LOC("THIS,DeviationScanner.DEV") int deviationAbsoluteY = 0;\r
+    if (deviationX > deviationPercentX)\r
+      deviationAbsoluteX = 1;\r
+    if (deviationX < -deviationPercentX)\r
+      deviationAbsoluteX = -1;\r
+    if (deviationY > deviationPercentY)\r
+      deviationAbsoluteY = 1;\r
+    if (deviationY < -deviationPercentY)\r
+      deviationAbsoluteY = -1;\r
+\r
+    deviation = getDirectionFor(deviationAbsoluteX, deviationAbsoluteY);\r
 \r
 \r
+    if (deviation != NONE) {\r
+      SSJAVA.arrayinit(x, -1);\r
+      SSJAVA.arrayinit(y, -1);\r
     }\r
 \r
     return deviation;\r
     }\r
 \r
     return deviation;\r
@@ -149,12 +131,6 @@ public class DeviationScanner {
     return -1;\r
   }\r
 \r
     return -1;\r
   }\r
 \r
-  public void clear() {\r
-    System.out.println("CLEAR");\r
-    eyePositions = new EyePosition[3];\r
-    size = 0;\r
-  }\r
-\r
   public String toStringDeviation(@LOC("IN") int dev) {\r
     if (dev == LEFT_UP) {\r
       return "LEFT_UP";\r
   public String toStringDeviation(@LOC("IN") int dev) {\r
     if (dev == LEFT_UP) {\r
       return "LEFT_UP";\r