changeset 167:8072e38f637b

Add ImageMagick++ support to imread
author tpikonen
date Mon, 31 Oct 2005 15:20:27 +0000
parents 1da10331dd30
children d756a7b6d533
files Makeconf.add Makefile configure.add imread.m
diffstat 4 files changed, 30 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/Makeconf.add
+++ b/Makeconf.add
@@ -1,2 +1,3 @@
 @DEFHAVE_JPEG@
 @DEFHAVE_PNG@
+@DEFHAVE_MAGICKXX@
--- a/Makefile
+++ b/Makefile
@@ -8,9 +8,13 @@
 	PNG=pngread.oct pngwrite.oct
 endif
 
+ifdef HAVE_MAGICKXX
+	IMAGEMAGICK=__imagemagick__.oct __magick_read__.oct
+endif
+
 all: conv2.oct cordflt2.oct bwlabel.oct bwfill.oct rotate_scale.oct \
 	houghtf.oct graycomatrix.oct \
-	$(JPEG) $(PNG)
+	$(JPEG) $(PNG) $(IMAGEMAGICK)
 
 jpgread.oct: jpgread.cc
 	$(MKOCTFILE) $< -ljpeg
@@ -23,5 +27,11 @@
 
 pngwrite.oct: pngwrite.cc
 	$(MKOCTFILE) $< -lpng
+	
+__imagemagick__.oct: __imagemagick__.cc
+	$(MKOCTFILE) $< -lMagick++ -lMagick
+	
+__magick_read__.oct: __imagemagick__.oct
+	$(LN_S) __imagemagick__.oct $@
 
 clean: ; -$(RM) *.o octave-core core *.oct *~
--- a/configure.add
+++ b/configure.add
@@ -1,7 +1,7 @@
 
 if test -e main/image/NOINSTALL ; then
 
-	dnl Not installing so don't test for libjpeg/libpng.
+	dnl Not installing so don't test for libjpeg/libpng/libMagick++.
 	STATUS=none
 
 else
@@ -36,6 +36,16 @@
 	    STATUS="$STATUS, png.h not found"
 	fi
 
+	AC_CHECK_PROG(HAVE_MAGICKXX, Magick++-config, yes)
+	if test $HAVE_MAGICKXX ; then
+		STATUS="$STATUS, ImageMagick++"
+		AC_SUBST(DEFHAVE_MAGICKXX)		
+		DEFHAVE_MAGICKXX="HAVE_MAGICKXX=1"	
+	else
+	    STATUS="$STATUS, ImageMagick++ not found"
+	fi
+
+
 fi
 
 dnl Append the status message to the global status message.  This will
--- a/imread.m
+++ b/imread.m
@@ -29,7 +29,7 @@
 ## Modified: Stefan van der Walt <stefan@sun.ac.za>
 ## Date: 24 January 2005
 
-function varargout = imread(filename, options)
+function varargout = imread(filename, varargin)
     if (nargin != 1)
 	usage("I = imread(filename)")
     endif
@@ -43,9 +43,14 @@
 	error("imread: cannot find %s", filename);
     endif
 
-    ## divert jpegs and pngs to "jpgread" and "pngread"
+
     [ig, ig, ext] = fileparts(fn);
     ext = upper(ext);
+    if ( file_in_loadpath("__magick_read__.oct") )
+        varargout{:} = __magick_read__(fn, varargin{:});
+        break
+    endif
+    ## divert jpegs and pngs to "jpgread" and "pngread"
     if ( file_in_loadpath("jpgread.oct") &&
 	(strcmp(ext, ".JPG") || strcmp(ext, ".JPEG")) )
 	varargout{1} = jpgread(fn);