]> gitweb.fperrin.net Git - GpsPrune.git/blobdiff - src/tim/prune/config/ColourUtils.java
Moved source into separate src directory due to popular request
[GpsPrune.git] / src / tim / prune / config / ColourUtils.java
diff --git a/src/tim/prune/config/ColourUtils.java b/src/tim/prune/config/ColourUtils.java
new file mode 100644 (file)
index 0000000..a3c1188
--- /dev/null
@@ -0,0 +1,65 @@
+package tim.prune.config;
+
+import java.awt.Color;
+
+/**
+ * Class to hold static methods for handling colours
+ * including converting to and from hex code Strings
+ */
+public abstract class ColourUtils
+{
+       /**
+        * Convert a string into a Color object
+        * @param inValue 6-character hex code
+        * @return corresponding colour
+        */
+       public static Color colourFromHex(String inValue)
+       {
+               Color retVal = null;
+               if (inValue != null && inValue.length() == 6)
+               {
+                       try
+                       {
+                               final int redness = convertToInt(inValue.substring(0, 2));
+                               final int greenness = convertToInt(inValue.substring(2, 4));
+                               final int blueness = convertToInt(inValue.substring(4, 6));
+                               retVal = new Color(redness, greenness, blueness);
+                       }
+                       catch (NumberFormatException nfe) {} // colour stays null
+               }
+               return retVal;
+       }
+
+       /**
+        * @param inPair two-digit String representing hex code
+        * @return corresponding integer (0 to 255)
+        */
+       private static int convertToInt(String inPair)
+       {
+               int val = Integer.parseInt(inPair, 16);
+               if (val < 0) val = 0;
+               return val;
+       }
+
+       /**
+        * Make a hex code string for the given colour
+        * @param inColour colour
+        * @return 6-character hex code
+        */
+       public static String makeHexCode(Color inColour)
+       {
+               return convertToHex(inColour.getRed()) + convertToHex(inColour.getGreen()) + convertToHex(inColour.getBlue());
+       }
+
+       /**
+        * @param inValue integer value from 0 to 255
+        * @return two-character hex code
+        */
+       private static String convertToHex(int inValue)
+       {
+               // Uses lower case a-f
+               String code = Integer.toHexString(inValue);
+               // Pad with leading 0 if necessary
+               return (inValue < 16 ? "0" + code : code);
+       }
+}