Author: michiel
Date: 2010-02-08 18:43:37 +0100 (Mon, 08 Feb 2010)
New Revision: 40913

Modified:
   
mmbase/trunk/applications/resources/src/main/java/org/mmbase/util/images/ImageMagickImageConverter.java
   
mmbase/trunk/applications/resources/src/test/java/org/mmbase/util/images/ImageMagickImageConverterTest.java
Log:
  MMB-1906

Modified: 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/util/images/ImageMagickImageConverter.java
===================================================================
--- 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/util/images/ImageMagickImageConverter.java
     2010-02-08 17:30:21 UTC (rev 40912)
+++ 
mmbase/trunk/applications/resources/src/main/java/org/mmbase/util/images/ImageMagickImageConverter.java
     2010-02-08 17:43:37 UTC (rev 40913)
@@ -30,9 +30,11 @@
 public class ImageMagickImageConverter extends AbstractImageConverter 
implements ImageConverter {
     private static final Logger log = 
Logging.getLoggerInstance(ImageMagickImageConverter.class);
 
-    static final Pattern IM_VERSION_PATTERN = 
Pattern.compile("(?is).*?\\s(\\d+)\\.(\\d+)\\.(\\d+)(-[0-9]+)?\\s.*");
+    static final Pattern IM_VERSION_PATTERN = 
Pattern.compile("(?is)(.*)\\s(\\d+)\\.(\\d+)\\.(\\d+)(-[0-9]+)?\\s.*");
     private static final Pattern IM_FORMAT_PATTERN  = 
Pattern.compile("(?is)\\s*([A-Z0-9]+)\\*?\\s+[A-Z0-9]*\\s*[r\\-]w[\\+\\-]\\s+.*");
 
+
+    private String program = "ImageMagick";
     private int imVersionMajor = 5;
     private int imVersionMinor = 5;
     private int imVersionPatch = 0;
@@ -217,10 +219,19 @@
             String imOutput = getOutput("-version").toString();
             Matcher m = IM_VERSION_PATTERN.matcher(imOutput);
             if (m.matches()) {
-                imVersionMajor = Integer.parseInt(m.group(1));
-                imVersionMinor = Integer.parseInt(m.group(2));
-                imVersionPatch = Integer.parseInt(m.group(3));
-                log.service("Found ImageMagick version " + imVersionMajor + 
"." + imVersionMinor + "." + imVersionPatch);
+                String program = m.group(1);
+                imVersionMajor = Integer.parseInt(m.group(2));
+                imVersionMinor = Integer.parseInt(m.group(3));
+                imVersionPatch = Integer.parseInt(m.group(4));
+                if (program.indexOf("GraphicsMagick") >= 0) {
+                    log.service("Found GraphicsMagick version " + 
imVersionMajor + "." + imVersionMinor + "." + imVersionPatch);
+                    imVersionMajor += 5; // I have no freaking idea
+                    log.service("Supposing that that is equivalent to 
ImageMagick version " + imVersionMajor + "." + imVersionMinor + "." + 
imVersionPatch);
+                    program = "GraphicsMagick";
+                } else {
+                    log.service("Found ImageMagick version " + imVersionMajor 
+ "." + imVersionMinor + "." + imVersionPatch);
+                }
+
             } else {
                 log.error( "converter from location " + converterPath + ", 
gave strange result: " + imOutput
                            + "conv.root='" + converterRoot + "' 
conv.command='" + converterCommand + "'. (Doesn't match " + IM_VERSION_PATTERN 
+ ")");
@@ -262,7 +273,7 @@
         } else {
             log.debug("ModulateScaleBase property not found, ignoring the 
modulateScaleBase.");
         }
-        log.info("Found ImageMagick supported formats " + validFormats + ". 
Using " + this);
+        log.info("Found " + program + " supported formats " + validFormats + 
". Using " + this);
     }
 
     private static class ParseResult {
@@ -282,11 +293,11 @@
      */
     public boolean isMinimumVersion(int major, int minor, int patch) {
         return (imVersionMajor > major) ||
-               ((imVersionMajor == major) && 
-                ((imVersionMinor > minor) || 
+               ((imVersionMajor == major) &&
+                ((imVersionMinor > minor) ||
                   ((imVersionMinor == minor) && (imVersionPatch >= patch))
                 )
-               ); 
+               );
     }
 
     /**
@@ -499,11 +510,11 @@
                         new File( 
org.mmbase.module.core.MMBaseContext.getConfigPath(),"fonts");
                         if (fontDir.isDirectory()) {
                             if (log.isDebugEnabled()) {
-                                log.debug("Using " + fontDir + " as working 
dir for conversion. A 'type.mgk' (see ImageMagick documentation) can be in this 
dir to define fonts");
+                                log.debug("Using " + fontDir + " as working 
dir for conversion. A 'type.mgk' (see " + program + " documentation) can be in 
this dir to define fonts");
                             }
                             result.cwd = fontDir;
                         } else {
-                            log.debug("Using named font without MMBase 'fonts' 
directory, using ImageMagick defaults only");
+                            log.debug("Using named font without MMBase 'fonts' 
directory, using " + program + " defaults only");
                         }
                     }
 

Modified: 
mmbase/trunk/applications/resources/src/test/java/org/mmbase/util/images/ImageMagickImageConverterTest.java
===================================================================
--- 
mmbase/trunk/applications/resources/src/test/java/org/mmbase/util/images/ImageMagickImageConverterTest.java
 2010-02-08 17:30:21 UTC (rev 40912)
+++ 
mmbase/trunk/applications/resources/src/test/java/org/mmbase/util/images/ImageMagickImageConverterTest.java
 2010-02-08 17:43:37 UTC (rev 40913)
@@ -31,15 +31,16 @@
     public void imageMagickVersion(String version, int major, int minor, int 
patch) {
        Matcher m = 
ImageMagickImageConverter.IM_VERSION_PATTERN.matcher(version);
        assert(m.matches());
-       assertEquals(major, Integer.parseInt(m.group(1)));
-       assertEquals(minor, Integer.parseInt(m.group(2)));
-       assertEquals(patch, Integer.parseInt(m.group(3)));
+       assertEquals(major, Integer.parseInt(m.group(2)));
+       assertEquals(minor, Integer.parseInt(m.group(3)));
+       assertEquals(patch, Integer.parseInt(m.group(4)));
     }
 
     @Test
     public void imageMagickVersion() throws IOException {
         imageMagickVersion("Version: ImageMagick 6.3.7 03/20/08 Q16 
http://www.imagemagick.org";, 6, 3, 7);
         imageMagickVersion("Version: ImageMagick 6.5.1-0 2009-08-27 Q16 OpenMP 
http://www.imagemagick.org";, 6, 5, 1);
+        imageMagickVersion("GraphicsMagick 1.1.11 2008-02-23 Q8 
http://www.GraphicsMagick.org/";, 1, 1, 11); // will be supposed to be like 
6.1.11 (See MMB-1906)
     }
 
 }

_______________________________________________
Cvs mailing list
Cvs@lists.mmbase.org
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to