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; }
