Allow XPM images to have 192 bit color, just like Apache OpenOffice's XPM
parser does.

Patch by: me


git-svn-id: 
https://svn.apache.org/repos/asf/commons/proper/imaging/trunk@1780730 
13f79535-47bb-0310-9956-ffa450edef68


Project: http://git-wip-us.apache.org/repos/asf/commons-imaging/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-imaging/commit/316d61df
Tree: http://git-wip-us.apache.org/repos/asf/commons-imaging/tree/316d61df
Diff: http://git-wip-us.apache.org/repos/asf/commons-imaging/diff/316d61df

Branch: refs/heads/master
Commit: 316d61dfa5c70aa7bca3dffaf5486936f1b4192a
Parents: 7aa7629
Author: Damjan Jovanovic <[email protected]>
Authored: Sat Jan 28 18:31:34 2017 +0000
Committer: Damjan Jovanovic <[email protected]>
Committed: Sat Jan 28 18:31:34 2017 +0000

----------------------------------------------------------------------
 .../org/apache/commons/imaging/formats/xpm/XpmImageParser.java  | 5 +++++
 1 file changed, 5 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-imaging/blob/316d61df/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java 
b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java
index c8b0508..e3b19fd 100644
--- a/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java
+++ b/src/main/java/org/apache/commons/imaging/formats/xpm/XpmImageParser.java
@@ -338,6 +338,11 @@ public class XpmImageParser extends ImageParser {
                 final int green = Integer.parseInt(color.substring(4, 5), 16);
                 final int blue = Integer.parseInt(color.substring(8, 9), 16);
                 return 0xff000000 | (red << 16) | (green << 8) | blue;
+            } else if (color.length() == 24) {
+                final int red = Integer.parseInt(color.substring(0, 1), 16);
+                final int green = Integer.parseInt(color.substring(8, 9), 16);
+                final int blue = Integer.parseInt(color.substring(16, 17), 16);
+                return 0xff000000 | (red << 16) | (green << 8) | blue;
             } else {
                 return 0x00000000;
             }

Reply via email to