[sikuli] 346/385: Added option to change highlight colour

Gilles Filippini pini at moszumanska.debian.org
Sun Jun 29 19:26:35 UTC 2014


This is an automated email from the git hooks/post-receive script.

pini pushed a commit to tag upstream/1.1.0_beta1
in repository sikuli.

commit c73ad8886a7f20c7a4e5ca226ff41d5ab9cae0dc
Author: Johan Sjöblom <sjoblomj at student.chalmers.se>
Date:   Sat Apr 5 13:44:50 2014 +0200

    Added option to change highlight colour
---
 .../org/sikuli/script/OverlayCapturePrompt.java    |  1 -
 API/src/main/java/org/sikuli/script/Region.java    | 75 ++++++++++++++++------
 API/src/main/java/org/sikuli/script/Screen.java    |  2 +-
 .../java/org/sikuli/script/ScreenHighlighter.java  | 17 ++++-
 4 files changed, 71 insertions(+), 24 deletions(-)

diff --git a/API/src/main/java/org/sikuli/script/OverlayCapturePrompt.java b/API/src/main/java/org/sikuli/script/OverlayCapturePrompt.java
old mode 100755
new mode 100644
index 86c97e7..1de858d
--- a/API/src/main/java/org/sikuli/script/OverlayCapturePrompt.java
+++ b/API/src/main/java/org/sikuli/script/OverlayCapturePrompt.java
@@ -19,7 +19,6 @@ import org.sikuli.natives.SysUtil;
  */
 public class OverlayCapturePrompt extends OverlayTransparentWindow implements EventSubject {
 
-  static Color _overlayColor = new Color(0F, 0F, 0F, 0.6F);
   final static float MIN_DARKER_FACTOR = 0.6f;
   final static long MSG_DISPLAY_TIME = 2000;
   final static long WIN_FADE_IN_TIME = 200;
diff --git a/API/src/main/java/org/sikuli/script/Region.java b/API/src/main/java/org/sikuli/script/Region.java
old mode 100755
new mode 100644
index 3c64c4e..c236cc4
--- a/API/src/main/java/org/sikuli/script/Region.java
+++ b/API/src/main/java/org/sikuli/script/Region.java
@@ -1714,22 +1714,31 @@ public class Region {
   //<editor-fold defaultstate="collapsed" desc="highlight">
   protected void updateSelf() {
     if (overlay != null) {
-      highlight(false);
-      highlight(true);
+      highlight(false, null);
+      highlight(true, null);
     }
   }
 
   /**
-   * Toggle the regions Highlight visibility (currently red frame)
+   * Toggle the regions Highlight visibility (red frame)
    *
    * @return the region itself
    */
   public Region highlight() {
-    if (overlay == null) {
-      highlight(true);
-    } else {
-      highlight(false);
-    }
+    // Pass true if overlay is null, false otherwise
+    highlight(overlay == null, null);
+    return this;
+  }
+
+  /**
+   * Toggle the regions Highlight visibility (frame of specified color)
+   *
+   * @param color Color of frame
+   * @return the region itself
+   */
+  public Region highlight(String color) {
+    // Pass true if overlay is null, false otherwise
+    highlight(overlay == null, color);
     return this;
   }
 
@@ -1737,14 +1746,16 @@ public class Region {
    * Sets the regions Highlighting border
    *
    * @param toEnable set overlay enabled or disabled
+   * @param color Color of frame
    */
-  private Region highlight(boolean toEnable) {
+  private Region highlight(boolean toEnable, String color) {
     if (isOtherScreen()) {
       return this;
     }
-    Debug.action("toggle highlight " + toString() + ": " + toEnable);
+    Debug.action("toggle highlight " + toString() + ": " + toEnable +
+    		(color != null ? " color: " + color : ""));
     if (toEnable) {
-      overlay = new ScreenHighlighter(getScreen());
+      overlay = new ScreenHighlighter(getScreen(), color);
       overlay.highlight(this);
     } else {
       if (overlay != null) {
@@ -1755,22 +1766,36 @@ public class Region {
     return this;
   }
 
+
   /**
-   * show the regions Highlight for the given time in seconds (currently red frame) if 0 - use the global
-   * Settings.SlowMotionDelay
+   * show the regions Highlight for the given time in seconds (red frame)
+   * if 0 - use the global Settings.SlowMotionDelay
    *
    * @param secs time in seconds
    * @return the region itself
    */
   public Region highlight(float secs) {
+    return highlight(secs, null);
+  }
+
+  /**
+   * show the regions Highlight for the given time in seconds (frame of specified color)
+   * if 0 - use the global Settings.SlowMotionDelay
+   *
+   * @param secs time in seconds
+   * @param color Color of frame
+   * @return the region itself
+   */
+  public Region highlight(float secs, String color) {
     if (isOtherScreen()) {
       return this;
     }
     if (secs < 0.1) {
-      return highlight((int) secs);
+      return highlight((int) secs, color);
     }
-    Debug.action("highlight " + toString() + " for " + secs + " secs");
-    ScreenHighlighter _overlay = new ScreenHighlighter(getScreen());
+    Debug.action("highlight " + toString() + " for " + secs + " secs" +
+          (color != null ? " color: " + color : ""));
+    ScreenHighlighter _overlay = new ScreenHighlighter(getScreen(), color);
     _overlay.highlight(this, secs);
     return this;
   }
@@ -1783,17 +1808,29 @@ public class Region {
    * @return this region
    */
   public Region highlight(int secs) {
+	return highlight(secs, null);
+  }
+
+
+  /**
+   * Show highlight in selected color
+   * 
+   * @param secs time in seconds
+   * @param color Color of frame
+   * @return this region
+   */
+  public Region highlight(int secs, String color) {
     if (isOtherScreen()) {
       return this;
     }
     if (secs > 0) {
-      return highlight((float) secs);
+      return highlight((float) secs, color);
     }
     if (lastMatch != null) {
       if (secs < 0) {
-        return lastMatch.highlight((float) -secs);
+        return lastMatch.highlight((float) -secs, color);
       }
-      return lastMatch.highlight(Settings.DefaultHighlightTime);
+      return lastMatch.highlight(Settings.DefaultHighlightTime, color);
     }
     return this;
   }
diff --git a/API/src/main/java/org/sikuli/script/Screen.java b/API/src/main/java/org/sikuli/script/Screen.java
old mode 100755
new mode 100644
index c65282b..54a26c3
--- a/API/src/main/java/org/sikuli/script/Screen.java
+++ b/API/src/main/java/org/sikuli/script/Screen.java
@@ -508,7 +508,7 @@ public class Screen extends Region implements EventObserver, IScreen {
 
   protected void showTarget(Location loc, double secs) {
     if (Settings.isShowActions()) {
-      ScreenHighlighter overlay = new ScreenHighlighter(this);
+      ScreenHighlighter overlay = new ScreenHighlighter(this, null);
       overlay.showTarget(loc, (float) secs);
     }
   }
diff --git a/API/src/main/java/org/sikuli/script/ScreenHighlighter.java b/API/src/main/java/org/sikuli/script/ScreenHighlighter.java
old mode 100755
new mode 100644
index 1faa7ca..5691e34
--- a/API/src/main/java/org/sikuli/script/ScreenHighlighter.java
+++ b/API/src/main/java/org/sikuli/script/ScreenHighlighter.java
@@ -13,6 +13,7 @@ import java.awt.event.*;
 import java.awt.image.*;
 import java.util.HashSet;
 import java.util.Set;
+import java.lang.reflect.Field;
 
 /**
  * INTERNAL USE
@@ -20,9 +21,8 @@ import java.util.Set;
  */
 public class ScreenHighlighter extends OverlayTransparentWindow implements MouseListener {
 
-  static Color _overlayColor = new Color(0F, 0F, 0F, 0.6F);
   static Color _transparentColor = new Color(0F, 0F, 0F, 0.5F);
-  static Color _targetColor = new Color(1F, 0F, 0F, 0.7F);
+  Color _targetColor;
   final static int TARGET_SIZE = 50;
   final static int DRAGGING_TIME = 200;
   static int MARGIN = 20;
@@ -42,11 +42,22 @@ public class ScreenHighlighter extends OverlayTransparentWindow implements Mouse
   BasicStroke _StrokeBorder = new BasicStroke(3);
   OverlayAnimator _aniX, _aniY;
 
-  public ScreenHighlighter(Screen scr) {
+  public ScreenHighlighter(Screen scr, String color) {
     _scr = scr;
     init();
     setVisible(false);
     setAlwaysOnTop(true);
+
+    // Attempt to set the color of the frame to what the user provided.
+    // If it fails, set to red. Valid colors are the ones defined in the Color class:
+    // http://docs.oracle.com/javase/7/docs/api/java/awt/Color.html#field_summary
+    try {
+      Field field = Class.forName("java.awt.Color").getField(color);
+      _targetColor = (Color)field.get(null);
+    } catch (Exception e) {
+      // Set to standard red color
+	  _targetColor = new Color(1F, 0F, 0F, 0.7F);
+    }
   }
 
   private void init() {

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-java/sikuli.git



More information about the pkg-java-commits mailing list