From 33002baf4ee9f34bd8675d4aa06bcac0eec5f817 Mon Sep 17 00:00:00 2001 From: adam Date: Sun, 9 Jan 2005 09:08:11 +0000 Subject: [PATCH] added support for 4,5,7,9-char hex colors darcs-hash:20050109090811-5007d-c482d3bca6ba9978b2e4b1f04fbafcd3740669bd.gz --- src/org/ibex/graphics/Color.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/org/ibex/graphics/Color.java b/src/org/ibex/graphics/Color.java index dce2a8d..e3b30c5 100644 --- a/src/org/ibex/graphics/Color.java +++ b/src/org/ibex/graphics/Color.java @@ -9,15 +9,20 @@ import org.ibex.util.*; public class Color { public static int stringToColor(String s) { - // FIXME support three-char strings by doubling digits if (s == null) return 0x00000000; else if (standard.get(s) != null) return 0xFF000000 | ((Integer)standard.get(s)).intValue(); - else if (s.length() == 7 && s.charAt(0) == '#') try { - // FEATURE alpha - return 0xFF000000 | - (Integer.parseInt(s.substring(1, 3), 16) << 16) | - (Integer.parseInt(s.substring(3, 5), 16) << 8) | - Integer.parseInt(s.substring(5, 7), 16); + else if ((s.length() == 4 || s.length() == 7 || s.length() == 5 || s.length() == 9) && s.charAt(0) == '#') try { + s = s.substring(1); + switch(s.length()) { + case 3: s = "ff"+s.charAt(0)+s.charAt(0)+s.charAt(1)+s.charAt(1)+s.charAt(2)+s.charAt(2); break; + case 6: s = "ff"+s; break; + case 4: s = ""+s.charAt(0)+s.charAt(0)+s.charAt(1)+s.charAt(1)+s.charAt(2)+s.charAt(2)+s.charAt(3)+s.charAt(3); + } + return + (Integer.parseInt(s.substring(0, 2), 16) << 24) | + (Integer.parseInt(s.substring(2, 4), 16) << 16) | + (Integer.parseInt(s.substring(4, 6), 16) << 8) | + Integer.parseInt(s.substring(6, 8), 16); } catch (NumberFormatException e) { Log.info(Color.class, "invalid color " + s); return 0; -- 1.7.10.4