]> granicus.if.org Git - imagemagick/commitdiff
(no commit message)
authorcristy <urban-warrior@git.imagemagick.org>
Sat, 26 Jun 2010 15:47:49 +0000 (15:47 +0000)
committercristy <urban-warrior@git.imagemagick.org>
Sat, 26 Jun 2010 15:47:49 +0000 (15:47 +0000)
14 files changed:
Makefile.in
config/configure.xml
magick/MagickCore.h
magick/Make.com
magick/Makefile.am
magick/image-view.c [new file with mode: 0644]
magick/image-view.h [new file with mode: 0644]
magick/log.h
magick/version.h
wand/MagickWand.h
wand/Makefile.am
wand/pixel-view.h [deleted file]
wand/wand-view.c [moved from wand/pixel-view.c with 82% similarity]
wand/wand-view.h [new file with mode: 0644]

index 21f7c1c84262dbc2382f9a711eb90998614d36a9..ab74e0bfa225de12322daf082839424e7988075b 100644 (file)
@@ -1346,16 +1346,17 @@ am__magick_libMagickCore_la_SOURCES_DIST = magick/ImageMagick.h \
        magick/geometry.c magick/geometry.h magick/hashmap.c \
        magick/hashmap.h magick/histogram.c magick/histogram.h \
        magick/identify.c magick/identify.h magick/image.c \
-       magick/image.h magick/image-private.h magick/layer.c \
-       magick/layer.h magick/list.c magick/list.h magick/locale.c \
-       magick/locale_.h magick/log.c magick/log.h magick/mac.h \
-       magick/magic.c magick/magic.h magick/magick.c \
-       magick/magick-config.h magick/magick-type.h magick/magick.h \
-       magick/matrix.c magick/matrix.h magick/memory.c \
-       magick/memory_.h magick/methods.h magick/mime.c magick/mime.h \
-       magick/module.c magick/module.h magick/monitor.c \
-       magick/monitor.h magick/monitor-private.h magick/montage.c \
-       magick/montage.h magick/morphology.c magick/morphology.h \
+       magick/image.h magick/image-private.h magick/image-view.c \
+       magick/image-view.h magick/layer.c magick/layer.h \
+       magick/list.c magick/list.h magick/locale.c magick/locale_.h \
+       magick/log.c magick/log.h magick/mac.h magick/magic.c \
+       magick/magic.h magick/magick.c magick/magick-config.h \
+       magick/magick-type.h magick/magick.h magick/matrix.c \
+       magick/matrix.h magick/memory.c magick/memory_.h \
+       magick/methods.h magick/mime.c magick/mime.h magick/module.c \
+       magick/module.h magick/monitor.c magick/monitor.h \
+       magick/monitor-private.h magick/montage.c magick/montage.h \
+       magick/morphology.c magick/morphology.h \
        magick/morphology-private.h magick/nt-base.h \
        magick/nt-feature.h magick/option.c magick/option.h \
        magick/paint.c magick/paint.h magick/pixel.c magick/pixel.h \
@@ -1452,6 +1453,7 @@ am__objects_2 = magick/magick_libMagickCore_la-accelerate.lo \
        magick/magick_libMagickCore_la-histogram.lo \
        magick/magick_libMagickCore_la-identify.lo \
        magick/magick_libMagickCore_la-image.lo \
+       magick/magick_libMagickCore_la-image-view.lo \
        magick/magick_libMagickCore_la-layer.lo \
        magick/magick_libMagickCore_la-list.lo \
        magick/magick_libMagickCore_la-locale.lo \
@@ -1663,10 +1665,10 @@ am__objects_18 = wand/wand_libMagickWand_la-animate.lo \
        wand/wand_libMagickWand_la-mogrify.lo \
        wand/wand_libMagickWand_la-montage.lo \
        wand/wand_libMagickWand_la-pixel-iterator.lo \
-       wand/wand_libMagickWand_la-pixel-view.lo \
        wand/wand_libMagickWand_la-pixel-wand.lo \
        wand/wand_libMagickWand_la-stream.lo \
-       wand/wand_libMagickWand_la-wand.lo
+       wand/wand_libMagickWand_la-wand.lo \
+       wand/wand_libMagickWand_la-wand-view.lo
 am_wand_libMagickWand_la_OBJECTS = $(am__objects_18)
 wand_libMagickWand_la_OBJECTS = $(am_wand_libMagickWand_la_OBJECTS)
 wand_libMagickWand_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \
@@ -3817,6 +3819,8 @@ MAGICK_BASE_SRCS = \
        magick/image.c \
        magick/image.h \
        magick/image-private.h \
+       magick/image-view.c \
+       magick/image-view.h \
        magick/layer.c \
        magick/layer.h \
        magick/list.c \
@@ -3990,6 +3994,7 @@ MAGICK_INCLUDE_HDRS = \
        magick/histogram.h \
        magick/identify.h \
        magick/image.h \
+       magick/image-view.h \
        magick/layer.h \
        magick/list.h \
        magick/locale_.h \
@@ -4149,8 +4154,6 @@ WAND_SOURCES = \
        wand/montage.h \
        wand/pixel-iterator.c \
        wand/pixel-iterator.h \
-       wand/pixel-view.c \
-       wand/pixel-view.h \
        wand/pixel-wand.c \
        wand/pixel-wand.h \
        wand/pixel-wand-private.h \
@@ -4158,7 +4161,9 @@ WAND_SOURCES = \
        wand/stream.h \
        wand/studio.h \
        wand/wand.c \
-       wand/wand.h
+       wand/wand.h \
+       wand/wand-view.c \
+       wand/wand-view.h 
 
 WAND_INCLUDE_HDRS = \
        wand/MagickWand.h \
@@ -5533,6 +5538,8 @@ magick/magick_libMagickCore_la-identify.lo: magick/$(am__dirstamp) \
        magick/$(DEPDIR)/$(am__dirstamp)
 magick/magick_libMagickCore_la-image.lo: magick/$(am__dirstamp) \
        magick/$(DEPDIR)/$(am__dirstamp)
+magick/magick_libMagickCore_la-image-view.lo: magick/$(am__dirstamp) \
+       magick/$(DEPDIR)/$(am__dirstamp)
 magick/magick_libMagickCore_la-layer.lo: magick/$(am__dirstamp) \
        magick/$(DEPDIR)/$(am__dirstamp)
 magick/magick_libMagickCore_la-list.lo: magick/$(am__dirstamp) \
@@ -5903,14 +5910,14 @@ wand/wand_libMagickWand_la-montage.lo: wand/$(am__dirstamp) \
        wand/$(DEPDIR)/$(am__dirstamp)
 wand/wand_libMagickWand_la-pixel-iterator.lo: wand/$(am__dirstamp) \
        wand/$(DEPDIR)/$(am__dirstamp)
-wand/wand_libMagickWand_la-pixel-view.lo: wand/$(am__dirstamp) \
-       wand/$(DEPDIR)/$(am__dirstamp)
 wand/wand_libMagickWand_la-pixel-wand.lo: wand/$(am__dirstamp) \
        wand/$(DEPDIR)/$(am__dirstamp)
 wand/wand_libMagickWand_la-stream.lo: wand/$(am__dirstamp) \
        wand/$(DEPDIR)/$(am__dirstamp)
 wand/wand_libMagickWand_la-wand.lo: wand/$(am__dirstamp) \
        wand/$(DEPDIR)/$(am__dirstamp)
+wand/wand_libMagickWand_la-wand-view.lo: wand/$(am__dirstamp) \
+       wand/$(DEPDIR)/$(am__dirstamp)
 wand/libMagickWand.la: $(wand_libMagickWand_la_OBJECTS) $(wand_libMagickWand_la_DEPENDENCIES) wand/$(am__dirstamp)
        $(AM_V_CCLD)$(wand_libMagickWand_la_LINK) -rpath $(libdir) $(wand_libMagickWand_la_OBJECTS) $(wand_libMagickWand_la_LIBADD) $(LIBS)
 install-binPROGRAMS: $(bin_PROGRAMS)
@@ -6822,6 +6829,8 @@ mostlyclean-compile:
        -rm -f magick/magick_libMagickCore_la-histogram.lo
        -rm -f magick/magick_libMagickCore_la-identify.$(OBJEXT)
        -rm -f magick/magick_libMagickCore_la-identify.lo
+       -rm -f magick/magick_libMagickCore_la-image-view.$(OBJEXT)
+       -rm -f magick/magick_libMagickCore_la-image-view.lo
        -rm -f magick/magick_libMagickCore_la-image.$(OBJEXT)
        -rm -f magick/magick_libMagickCore_la-image.lo
        -rm -f magick/magick_libMagickCore_la-layer.$(OBJEXT)
@@ -6971,12 +6980,12 @@ mostlyclean-compile:
        -rm -f wand/wand_libMagickWand_la-montage.lo
        -rm -f wand/wand_libMagickWand_la-pixel-iterator.$(OBJEXT)
        -rm -f wand/wand_libMagickWand_la-pixel-iterator.lo
-       -rm -f wand/wand_libMagickWand_la-pixel-view.$(OBJEXT)
-       -rm -f wand/wand_libMagickWand_la-pixel-view.lo
        -rm -f wand/wand_libMagickWand_la-pixel-wand.$(OBJEXT)
        -rm -f wand/wand_libMagickWand_la-pixel-wand.lo
        -rm -f wand/wand_libMagickWand_la-stream.$(OBJEXT)
        -rm -f wand/wand_libMagickWand_la-stream.lo
+       -rm -f wand/wand_libMagickWand_la-wand-view.$(OBJEXT)
+       -rm -f wand/wand_libMagickWand_la-wand-view.lo
        -rm -f wand/wand_libMagickWand_la-wand.$(OBJEXT)
        -rm -f wand/wand_libMagickWand_la-wand.lo
        -rm -f wand/wandtest.$(OBJEXT)
@@ -7302,6 +7311,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-hashmap.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-histogram.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-identify.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-image-view.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-image.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-layer.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@magick/$(DEPDIR)/magick_libMagickCore_la-list.Plo@am__quote@
@@ -7383,9 +7393,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wand_libMagickWand_la-mogrify.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wand_libMagickWand_la-montage.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wand_libMagickWand_la-pixel-iterator.Plo@am__quote@
-@AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wand_libMagickWand_la-pixel-view.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wand_libMagickWand_la-pixel-wand.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wand_libMagickWand_la-stream.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wand_libMagickWand_la-wand-view.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wand_libMagickWand_la-wand.Plo@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@wand/$(DEPDIR)/wandtest.Po@am__quote@
 
@@ -8712,6 +8722,14 @@ magick/magick_libMagickCore_la-image.lo: magick/image.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o magick/magick_libMagickCore_la-image.lo `test -f 'magick/image.c' || echo '$(srcdir)/'`magick/image.c
 
+magick/magick_libMagickCore_la-image-view.lo: magick/image-view.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT magick/magick_libMagickCore_la-image-view.lo -MD -MP -MF magick/$(DEPDIR)/magick_libMagickCore_la-image-view.Tpo -c -o magick/magick_libMagickCore_la-image-view.lo `test -f 'magick/image-view.c' || echo '$(srcdir)/'`magick/image-view.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) magick/$(DEPDIR)/magick_libMagickCore_la-image-view.Tpo magick/$(DEPDIR)/magick_libMagickCore_la-image-view.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='magick/image-view.c' object='magick/magick_libMagickCore_la-image-view.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o magick/magick_libMagickCore_la-image-view.lo `test -f 'magick/image-view.c' || echo '$(srcdir)/'`magick/image-view.c
+
 magick/magick_libMagickCore_la-layer.lo: magick/layer.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(magick_libMagickCore_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT magick/magick_libMagickCore_la-layer.lo -MD -MP -MF magick/$(DEPDIR)/magick_libMagickCore_la-layer.Tpo -c -o magick/magick_libMagickCore_la-layer.lo `test -f 'magick/layer.c' || echo '$(srcdir)/'`magick/layer.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) magick/$(DEPDIR)/magick_libMagickCore_la-layer.Tpo magick/$(DEPDIR)/magick_libMagickCore_la-layer.Plo
@@ -10160,14 +10178,6 @@ wand/wand_libMagickWand_la-pixel-iterator.lo: wand/pixel-iterator.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wand_libMagickWand_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wand/wand_libMagickWand_la-pixel-iterator.lo `test -f 'wand/pixel-iterator.c' || echo '$(srcdir)/'`wand/pixel-iterator.c
 
-wand/wand_libMagickWand_la-pixel-view.lo: wand/pixel-view.c
-@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wand_libMagickWand_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wand/wand_libMagickWand_la-pixel-view.lo -MD -MP -MF wand/$(DEPDIR)/wand_libMagickWand_la-pixel-view.Tpo -c -o wand/wand_libMagickWand_la-pixel-view.lo `test -f 'wand/pixel-view.c' || echo '$(srcdir)/'`wand/pixel-view.c
-@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) wand/$(DEPDIR)/wand_libMagickWand_la-pixel-view.Tpo wand/$(DEPDIR)/wand_libMagickWand_la-pixel-view.Plo
-@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='wand/pixel-view.c' object='wand/wand_libMagickWand_la-pixel-view.lo' libtool=yes @AMDEPBACKSLASH@
-@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
-@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wand_libMagickWand_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wand/wand_libMagickWand_la-pixel-view.lo `test -f 'wand/pixel-view.c' || echo '$(srcdir)/'`wand/pixel-view.c
-
 wand/wand_libMagickWand_la-pixel-wand.lo: wand/pixel-wand.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wand_libMagickWand_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wand/wand_libMagickWand_la-pixel-wand.lo -MD -MP -MF wand/$(DEPDIR)/wand_libMagickWand_la-pixel-wand.Tpo -c -o wand/wand_libMagickWand_la-pixel-wand.lo `test -f 'wand/pixel-wand.c' || echo '$(srcdir)/'`wand/pixel-wand.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) wand/$(DEPDIR)/wand_libMagickWand_la-pixel-wand.Tpo wand/$(DEPDIR)/wand_libMagickWand_la-pixel-wand.Plo
@@ -10192,6 +10202,14 @@ wand/wand_libMagickWand_la-wand.lo: wand/wand.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wand_libMagickWand_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wand/wand_libMagickWand_la-wand.lo `test -f 'wand/wand.c' || echo '$(srcdir)/'`wand/wand.c
 
+wand/wand_libMagickWand_la-wand-view.lo: wand/wand-view.c
+@am__fastdepCC_TRUE@   $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wand_libMagickWand_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT wand/wand_libMagickWand_la-wand-view.lo -MD -MP -MF wand/$(DEPDIR)/wand_libMagickWand_la-wand-view.Tpo -c -o wand/wand_libMagickWand_la-wand-view.lo `test -f 'wand/wand-view.c' || echo '$(srcdir)/'`wand/wand-view.c
+@am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) wand/$(DEPDIR)/wand_libMagickWand_la-wand-view.Tpo wand/$(DEPDIR)/wand_libMagickWand_la-wand-view.Plo
+@am__fastdepCC_FALSE@  $(AM_V_CC) @AM_BACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      source='wand/wand-view.c' object='wand/wand_libMagickWand_la-wand-view.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@  $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(wand_libMagickWand_la_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o wand/wand_libMagickWand_la-wand-view.lo `test -f 'wand/wand-view.c' || echo '$(srcdir)/'`wand/wand-view.c
+
 tests/tests_validate-validate.o: tests/validate.c
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(tests_validate_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT tests/tests_validate-validate.o -MD -MP -MF tests/$(DEPDIR)/tests_validate-validate.Tpo -c -o tests/tests_validate-validate.o `test -f 'tests/validate.c' || echo '$(srcdir)/'`tests/validate.c
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) tests/$(DEPDIR)/tests_validate-validate.Tpo tests/$(DEPDIR)/tests_validate-validate.Po
index 902c168da876464e1318af82c53427a5d45011f8..85b7fcadc119b6d985be152dd1da8007d59e0c6a 100644 (file)
@@ -9,7 +9,7 @@
   <configure name="NAME" value="ImageMagick"/>
   <configure name="LIB_VERSION" value="0x662"/>
   <configure name="LIB_VERSION_NUMBER" value="6,6,2,9"/>
-  <configure name="RELEASE_DATE" value="2010-06-25"/>
+  <configure name="RELEASE_DATE" value="2010-06-26"/>
   <configure name="CONFIGURE" value="./configure "/>
   <configure name="PREFIX" value="/usr/local"/>
   <configure name="EXEC-PREFIX" value="/usr/local"/>
index a8450824cc0ec799615bbe02f5bc26f9d67f8dbe..2d695fd8c2217ecda78748c4317aae1eb2f89865 100644 (file)
@@ -159,6 +159,7 @@ extern "C" {
 #include "magick/histogram.h"
 #include "magick/identify.h"
 #include "magick/image.h"
+#include "magick/image-view.h"
 #include "magick/layer.h"
 #include "magick/list.h"
 #include "magick/locale_.h"
index 9fbc0f46d126c64063923579ae91bc7a2e8252d2..446c66702d9a1f0a031c6ac73817ff0a4b1512af 100644 (file)
@@ -59,6 +59,7 @@ $call Make hashmap.c
 $call Make histogram.c
 $call Make identify.c
 $call Make image.c
+$call Make image-view.c
 $call Make layer.c
 $call Make list.c
 $call Make locale.c
@@ -140,9 +141,9 @@ $library/create libMagick.olb -
   cipher, client, coder, color, colormap, colorspace, compare, composite, -
   compress, configure, constitute, decorate, delegate, deprecate, display, -
   distort, draw, effect, enhance, exception, feature, fourier, fx, gem, -
-  geometry, hashmap, histogram, identify, image, layer, list, locale, log, -
-  magic, magick, matrix, memory, mime, module, monitor, montage, morphology, -
-  option, paint, pixel, PreRvIcccm, profile, quantize, quantum, -
+  geometry, hashmap, histogram, identify, image, image-view, layer, list, -
+  locale, log, magic, magick, matrix, memory, mime, module, monitor, montage, -
+  morphology, option, paint, pixel, PreRvIcccm, profile, quantize, quantum, -
   quantum-export, quantum-import,random, registry, resample, resize, resource, -
   segment, semaphore, shear, signature, splay-tree, static, stream, string, -
   thread, timer, token, transform, threshold, type, utility, version, vms, -
index 07092c246f2ce0eb7701bdfe42cf72e7083b326a..91cd8fe655eac4af03c56592cb94378e2e4c81c5 100644 (file)
@@ -142,6 +142,8 @@ MAGICK_BASE_SRCS = \
        magick/image.c \
        magick/image.h \
        magick/image-private.h \
+       magick/image-view.c \
+       magick/image-view.h \
        magick/layer.c \
        magick/layer.h \
        magick/list.c \
@@ -320,6 +322,7 @@ MAGICK_INCLUDE_HDRS = \
        magick/histogram.h \
        magick/identify.h \
        magick/image.h \
+       magick/image-view.h \
        magick/layer.h \
        magick/list.h \
        magick/locale_.h \
diff --git a/magick/image-view.c b/magick/image-view.c
new file mode 100644 (file)
index 0000000..ed94b04
--- /dev/null
@@ -0,0 +1,1251 @@
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                     IIIII  M   M   AAA    GGGG  EEEEE                       %
+%                       I    MM MM  A   A  G      E                           %
+%                       I    M M M  AAAAA  G  GG  EEE                         %
+%                       I    M   M  A   A  G   G  E                           %
+%                     IIIII  M   M  A   A   GGGG  EEEEE                       %
+%                                                                             %
+%                        V   V  IIIII  EEEEE  W   W                           %
+%                        V   V    I    E      W   W                           %
+%                        V   V    I    EEE    W W W                           %
+%                         V V     I    E      WW WW                           %
+%                          V    IIIII  EEEEE  W   W                           %
+%                                                                             %
+%                                                                             %
+%                       MagickCore Image View Methods                         %
+%                                                                             %
+%                              Software Design                                %
+%                                John Cristy                                  %
+%                                March 2003                                   %
+%                                                                             %
+%                                                                             %
+%  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization      %
+%  dedicated to making software imaging solutions freely available.           %
+%                                                                             %
+%  You may not use this file except in compliance with the License.  You may  %
+%  obtain a copy of the License at                                            %
+%                                                                             %
+%    http://www.imagemagick.org/script/license.php                            %
+%                                                                             %
+%  Unless required by applicable law or agreed to in writing, software        %
+%  distributed under the License is distributed on an "AS IS" BASIS,          %
+%  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.   %
+%  See the License for the specific language governing permissions and        %
+%  limitations under the License.                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%
+%
+*/
+\f
+/*
+  Include declarations.
+*/
+#include "magick/studio.h"
+#include "magick/MagickCore.h"
+#include "magick/exception-private.h"
+#include "magick/monitor-private.h"
+#include "magick/thread-private.h"
+\f
+/*
+  Typedef declarations.
+*/
+struct _ImageView
+{
+  ExceptionInfo
+    *exception;
+
+  Image
+    *image;
+
+  CacheView
+    *view;
+
+  RectangleInfo
+    region;
+
+  size_t
+    number_threads;
+
+  MagickBooleanType
+    debug;
+
+  size_t
+    signature;
+};
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   C l o n e I m a g e V i e w                                               %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  CloneImageView() makes a copy of the specified pixel view.
+%
+%  The format of the CloneImageView method is:
+%
+%      ImageView *CloneImageView(const ImageView *pixel_view)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+*/
+MagickExport ImageView *CloneImageView(const ImageView *pixel_view)
+{
+  ImageView
+    *clone_view;
+
+  assert(pixel_view != (ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  clone_view=(ImageView *) AcquireAlignedMemory(1,sizeof(*clone_view));
+  if (clone_view == (ImageView *) NULL)
+    ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
+  (void) ResetMagickMemory(clone_view,0,sizeof(*clone_view));
+  clone_view->exception=AcquireExceptionInfo();
+  InheritException(clone_view->exception,pixel_view->exception);
+  clone_view->view=CloneCacheView(pixel_view->view);
+  clone_view->region=pixel_view->region;
+  clone_view->number_threads=pixel_view->number_threads;
+  clone_view->debug=pixel_view->debug;
+  clone_view->signature=MagickSignature;
+  return(clone_view);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   D e s t r o y I m a g e V i e w                                           %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  DestroyImageView() deallocates memory associated with a pixel view.
+%
+%  The format of the DestroyImageView method is:
+%
+%      ImageView *DestroyImageView(ImageView *pixel_view,
+%        const size_t number_wands,const size_t number_threads)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+%    o number_wand: the number of pixel wands.
+%
+%    o number_threads: number of threads.
+%
+*/
+MagickExport ImageView *DestroyImageView(ImageView *pixel_view)
+{
+  assert(pixel_view != (ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  pixel_view->view=DestroyCacheView(pixel_view->view);
+  pixel_view->exception=DestroyExceptionInfo(pixel_view->exception);
+  pixel_view->signature=(~MagickSignature);
+  pixel_view=(ImageView *) RelinquishMagickMemory(pixel_view);
+  return(pixel_view);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   D u p l e x T r a n s f e r I m a g e V i e w I t e r a t o r             %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  DuplexTransferImageViewIterator() iterates over three pixel views in
+%  parallel and calls your transfer method for each scanline of the view.  The
+%  source and duplex pixel region is not confined to the image canvas-- that is
+%  you can include negative offsets or widths or heights that exceed the image
+%  dimension.  However, the destination pixel view is confined to the image
+%  canvas-- that is no negative offsets or widths or heights that exceed the
+%  image dimension are permitted.
+%
+%  Use this pragma:
+%
+%    #pragma omp critical
+%
+%  to define a section of code in your callback transfer method that must be
+%  executed by a single thread at a time.
+%
+%  The format of the DuplexTransferImageViewIterator method is:
+%
+%      MagickBooleanType DuplexTransferImageViewIterator(ImageView *source,
+%        ImageView *duplex,ImageView *destination,
+%        DuplexTransferImageViewMethod transfer,void *context)
+%
+%  A description of each parameter follows:
+%
+%    o source: the source pixel view.
+%
+%    o duplex: the duplex pixel view.
+%
+%    o destination: the destination pixel view.
+%
+%    o transfer: the transfer callback method.
+%
+%    o context: the user defined context.
+%
+*/
+MagickExport MagickBooleanType DuplexTransferImageViewIterator(
+  ImageView *source,ImageView *duplex,ImageView *destination,
+  DuplexTransferImageViewMethod transfer,void *context)
+{
+#define DuplexTransferImageViewTag  "ImageView/DuplexTransfer"
+
+  ExceptionInfo
+    *exception;
+
+  Image
+    *destination_image,
+    *duplex_image,
+    *source_image;
+
+  MagickBooleanType
+    status;
+
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(source != (ImageView *) NULL);
+  assert(source->signature == MagickSignature);
+  if (transfer == (DuplexTransferImageViewMethod) NULL)
+    return(MagickFalse);
+  source_image=source->image;
+  duplex_image=duplex->image;
+  destination_image=destination->image;
+  if (SetImageStorageClass(destination_image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  status=MagickTrue;
+  progress=0;
+  exception=destination->exception;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=source->region.y; y < (ssize_t) source->region.height; y++)
+  {
+    MagickBooleanType
+      sync;
+
+    register const IndexPacket
+      *restrict duplex_indexes,
+      *restrict indexes;
+
+    register const PixelPacket
+      *restrict duplex_pixels,
+      *restrict pixels;
+
+    register IndexPacket
+      *restrict destination_indexes;
+
+    register ssize_t
+      id,
+      x;
+
+    register PixelPacket
+      *restrict destination_pixels;
+
+    if (status == MagickFalse)
+      continue;
+    id=GetOpenMPThreadId();
+    pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
+      source->region.width,1,source->exception);
+    if (pixels == (const PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewVirtualIndexQueue(source->view);
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      ;
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        ;
+    if (source_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        ;
+    duplex_pixels=GetCacheViewVirtualPixels(duplex->view,duplex->region.x,y,
+      duplex->region.width,1,duplex->exception);
+    if (duplex_pixels == (const PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    duplex_indexes=GetCacheViewVirtualIndexQueue(duplex->view);
+    for (x=0; x < (ssize_t) duplex->region.width; x++)
+      ;
+    if (duplex_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) duplex->region.width; x++)
+        ;
+    if (duplex_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) duplex->region.width; x++)
+        ;
+    destination_pixels=GetCacheViewAuthenticPixels(destination->view,
+      destination->region.x,y,destination->region.width,1,exception);
+    if (destination_pixels == (PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    destination_indexes=GetCacheViewAuthenticIndexQueue(destination->view);
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      ;
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        ;
+    if (destination_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        ;
+    if (transfer(source,duplex,destination,context) == MagickFalse)
+      status=MagickFalse;
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      ;
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        ;
+    sync=SyncCacheViewAuthenticPixels(destination->view,exception);
+    if (sync == MagickFalse)
+      {
+        InheritException(destination->exception,GetCacheViewException(
+          source->view));
+        status=MagickFalse;
+      }
+    if (source_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickCore_DuplexTransferImageViewIterator)
+#endif
+        proceed=SetImageProgress(source_image,DuplexTransferImageViewTag,
+          progress++,source->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
+  return(status);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   G e t I m a g e V i e w E x c e p t i o n                                 %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageViewException() returns the severity, reason, and description of any
+%  error that occurs when utilizing a pixel view.
+%
+%  The format of the GetImageViewException method is:
+%
+%      char *GetImageViewException(const PixelImage *pixel_view,
+%        ExceptionType *severity)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel pixel_view.
+%
+%    o severity: the severity of the error is returned here.
+%
+*/
+MagickExport char *GetImageViewException(const ImageView *pixel_view,
+  ExceptionType *severity)
+{
+  char
+    *description;
+
+  assert(pixel_view != (const ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  assert(severity != (ExceptionType *) NULL);
+  *severity=pixel_view->exception->severity;
+  description=(char *) AcquireQuantumMemory(2UL*MaxTextExtent,
+    sizeof(*description));
+  if (description == (char *) NULL)
+    ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
+  *description='\0';
+  if (pixel_view->exception->reason != (char *) NULL)
+    (void) CopyMagickString(description,GetLocaleExceptionMessage(
+      pixel_view->exception->severity,pixel_view->exception->reason),
+        MaxTextExtent);
+  if (pixel_view->exception->description != (char *) NULL)
+    {
+      (void) ConcatenateMagickString(description," (",MaxTextExtent);
+      (void) ConcatenateMagickString(description,GetLocaleExceptionMessage(
+        pixel_view->exception->severity,pixel_view->exception->description),
+        MaxTextExtent);
+      (void) ConcatenateMagickString(description,")",MaxTextExtent);
+    }
+  return(description);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   G e t I m a g e V i e w H e i g h t                                       %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageViewHeight() returns the pixel view height.
+%
+%  The format of the GetImageViewHeight method is:
+%
+%      size_t GetImageViewHeight(const ImageView *pixel_view)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+*/
+MagickExport size_t GetImageViewHeight(const ImageView *pixel_view)
+{
+  assert(pixel_view != (ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  return(pixel_view->region.height);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   G e t I m a g e V i e w I t e r a t o r                                   %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageViewIterator() iterates over the pixel view in parallel and calls
+%  your get method for each scanline of the view.  The pixel region is
+%  not confined to the image canvas-- that is you can include negative offsets
+%  or widths or heights that exceed the image dimension.  Any updates to
+%  the pixels in your callback are ignored.
+%
+%  Use this pragma:
+%
+%    #pragma omp critical
+%
+%  to define a section of code in your callback get method that must be
+%  executed by a single thread at a time.
+%
+%  The format of the GetImageViewIterator method is:
+%
+%      MagickBooleanType GetImageViewIterator(ImageView *source,
+%        GetImageViewMethod get,void *context)
+%
+%  A description of each parameter follows:
+%
+%    o source: the source pixel view.
+%
+%    o get: the get callback method.
+%
+%    o context: the user defined context.
+%
+*/
+MagickExport MagickBooleanType GetImageViewIterator(ImageView *source,
+  GetImageViewMethod get,void *context)
+{
+#define GetImageViewTag  "ImageView/Get"
+
+  Image
+    *source_image;
+
+  MagickBooleanType
+    status;
+
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(source != (ImageView *) NULL);
+  assert(source->signature == MagickSignature);
+  if (get == (GetImageViewMethod) NULL)
+    return(MagickFalse);
+  source_image=source->image;
+  status=MagickTrue;
+  progress=0;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=source->region.y; y < (ssize_t) source->region.height; y++)
+  {
+    register const IndexPacket
+      *indexes;
+
+    register const PixelPacket
+      *pixels;
+
+    register ssize_t
+      id,
+      x;
+
+    if (status == MagickFalse)
+      continue;
+    id=GetOpenMPThreadId();
+    pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
+      source->region.width,1,source->exception);
+    if (pixels == (const PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewVirtualIndexQueue(source->view);
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      ;
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        ;
+    if (source_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        ;
+    if (get(source,context) == MagickFalse)
+      status=MagickFalse;
+    if (source_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickCore_GetImageViewIterator)
+#endif
+        proceed=SetImageProgress(source_image,GetImageViewTag,progress++,
+          source->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
+  return(status);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   G e t I m a g e V i e w P i x e l s                                       %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageViewPixels() returns the pixel view pixel_wands.
+%
+%  The format of the GetImageViewPixels method is:
+%
+%      PixelImage *GetImageViewPixels(const ImageView *pixel_view)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+*/
+MagickExport PixelPacket **GetImageViewPixels(const ImageView *pixel_view)
+{
+  ssize_t
+    id;
+
+  assert(pixel_view != (ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  id=GetOpenMPThreadId();
+  return((PixelPacket **) NULL);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   G e t I m a g e V i e w W a n d                                           %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageViewImage() returns the magick wand associated with the pixel view.
+%
+%  The format of the GetImageViewImage method is:
+%
+%      MagickCore *GetImageViewImage(const ImageView *pixel_view)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+*/
+MagickExport Image *GetImageViewImage(const ImageView *pixel_view)
+{
+  assert(pixel_view != (ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  return(pixel_view->image);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   G e t I m a g e V i e w W i d t h                                         %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageViewWidth() returns the pixel view width.
+%
+%  The format of the GetImageViewWidth method is:
+%
+%      size_t GetImageViewWidth(const ImageView *pixel_view)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+*/
+MagickExport size_t GetImageViewWidth(const ImageView *pixel_view)
+{
+  assert(pixel_view != (ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  return(pixel_view->region.width);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   G e t I m a g e V i e w X                                                 %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageViewX() returns the pixel view x offset.
+%
+%  The format of the GetImageViewX method is:
+%
+%      ssize_t GetImageViewX(const ImageView *pixel_view)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+*/
+MagickExport ssize_t GetImageViewX(const ImageView *pixel_view)
+{
+  assert(pixel_view != (ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  return(pixel_view->region.x);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   G e t I m a g e V i e w Y                                                 %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  GetImageViewY() returns the pixel view y offset.
+%
+%  The format of the GetImageViewY method is:
+%
+%      ssize_t GetImageViewY(const ImageView *pixel_view)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+*/
+MagickExport ssize_t GetImageViewY(const ImageView *pixel_view)
+{
+  assert(pixel_view != (ImageView *) NULL);
+  assert(pixel_view->signature == MagickSignature);
+  return(pixel_view->region.y);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   I s I m a g e V i e w                                                     %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  IsImageView() returns MagickTrue if the the parameter is verified as a pixel
+%  view container.
+%
+%  The format of the IsImageView method is:
+%
+%      MagickBooleanType IsImageView(const ImageView *pixel_view)
+%
+%  A description of each parameter follows:
+%
+%    o pixel_view: the pixel view.
+%
+*/
+MagickExport MagickBooleanType IsImageView(const ImageView *pixel_view)
+{
+  if (pixel_view == (const ImageView *) NULL)
+    return(MagickFalse);
+  if (pixel_view->signature != MagickSignature)
+    return(MagickFalse);
+  return(MagickTrue);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   N e w I m a g e V i e w                                                   %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  NewImageView() returns a pixel view required for all other methods in the
+%  Pixel View API.
+%
+%  The format of the NewImageView method is:
+%
+%      ImageView *NewImageView(MagickCore *wand)
+%
+%  A description of each parameter follows:
+%
+%    o wand: the wand.
+%
+*/
+MagickExport ImageView *NewImageView(Image *image)
+{
+  ImageView
+    *pixel_view;
+
+  assert(image != (Image *) NULL);
+  assert(image->signature == MagickSignature);
+  pixel_view=(ImageView *) AcquireAlignedMemory(1,sizeof(*pixel_view));
+  if (pixel_view == (ImageView *) NULL)
+    ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
+  (void) ResetMagickMemory(pixel_view,0,sizeof(*pixel_view));
+  pixel_view->exception=AcquireExceptionInfo();
+  pixel_view->image=image;
+  pixel_view->view=AcquireCacheView(pixel_view->image);
+  pixel_view->region.width=image->columns;
+  pixel_view->region.height=image->rows;
+  pixel_view->number_threads=GetOpenMPMaximumThreads();
+  pixel_view->debug=IsEventLogging();
+  pixel_view->signature=MagickSignature;
+  return(pixel_view);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   N e w I m a g e V i e w R e g i o n                                       %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  NewImageViewRegion() returns a pixel view required for all other methods
+%  in the Pixel View API.
+%
+%  The format of the NewImageViewRegion method is:
+%
+%      ImageView *NewImageViewRegion(MagickCore *wand,const ssize_t x,
+%        const ssize_t y,const size_t width,const size_t height)
+%
+%  A description of each parameter follows:
+%
+%    o wand: the magick wand.
+%
+%    o x,y,columns,rows:  These values define the perimeter of a region of
+%      pixel_wands view.
+%
+*/
+MagickExport ImageView *NewImageViewRegion(Image *image,const ssize_t x,
+  const ssize_t y,const size_t width,const size_t height)
+{
+  ImageView
+    *pixel_view;
+
+  assert(image != (Image *) NULL);
+  assert(image->signature == MagickSignature);
+  pixel_view=(ImageView *) AcquireAlignedMemory(1,sizeof(*pixel_view));
+  if (pixel_view == (ImageView *) NULL)
+    ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
+  (void) ResetMagickMemory(pixel_view,0,sizeof(*pixel_view));
+  pixel_view->exception=AcquireExceptionInfo();
+  pixel_view->view=AcquireCacheView(pixel_view->image);
+  pixel_view->image=image;
+  pixel_view->region.width=width;
+  pixel_view->region.height=height;
+  pixel_view->region.x=x;
+  pixel_view->region.y=y;
+  pixel_view->number_threads=GetOpenMPMaximumThreads();
+  pixel_view->debug=IsEventLogging();
+  pixel_view->signature=MagickSignature;
+  return(pixel_view);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   S e t I m a g e V i e w I t e r a t o r                                   %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  SetImageViewIterator() iterates over the pixel view in parallel and calls
+%  your set method for each scanline of the view.  The pixel region is
+%  confined to the image canvas-- that is no negative offsets or widths or
+%  heights that exceed the image dimension.  The pixels are initiallly
+%  undefined and any settings you make in the callback method are automagically
+%  synced back to your image.
+%
+%  Use this pragma:
+%
+%    #pragma omp critical
+%
+%  to define a section of code in your callback set method that must be
+%  executed by a single thread at a time.
+%
+%  The format of the SetImageViewIterator method is:
+%
+%      MagickBooleanType SetImageViewIterator(ImageView *destination,
+%        SetImageViewMethod set,void *context)
+%
+%  A description of each parameter follows:
+%
+%    o destination: the pixel view.
+%
+%    o set: the set callback method.
+%
+%    o context: the user defined context.
+%
+*/
+MagickExport MagickBooleanType SetImageViewIterator(ImageView *destination,
+  SetImageViewMethod set,void *context)
+{
+#define SetImageViewTag  "ImageView/Set"
+
+  ExceptionInfo
+    *exception;
+
+  Image
+    *destination_image;
+
+  MagickBooleanType
+    status;
+
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(destination != (ImageView *) NULL);
+  assert(destination->signature == MagickSignature);
+  if (set == (SetImageViewMethod) NULL)
+    return(MagickFalse);
+  destination_image=destination->image;
+  if (SetImageStorageClass(destination_image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  status=MagickTrue;
+  progress=0;
+  exception=destination->exception;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=destination->region.y; y < (ssize_t) destination->region.height; y++)
+  {
+    MagickBooleanType
+      sync;
+
+    register IndexPacket
+      *restrict indexes;
+
+    register ssize_t
+      id,
+      x;
+
+    register PixelPacket
+      *restrict pixels;
+
+    if (status == MagickFalse)
+      continue;
+    id=GetOpenMPThreadId();
+    pixels=GetCacheViewAuthenticPixels(destination->view,destination->region.x,
+      y,destination->region.width,1,exception);
+    if (pixels == (PixelPacket *) NULL)
+      {
+        InheritException(destination->exception,GetCacheViewException(
+          destination->view));
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewAuthenticIndexQueue(destination->view);
+    if (set(destination,context) == MagickFalse)
+      status=MagickFalse;
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      ;
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        ;
+    sync=SyncCacheViewAuthenticPixels(destination->view,exception);
+    if (sync == MagickFalse)
+      {
+        InheritException(destination->exception,GetCacheViewException(
+          destination->view));
+        status=MagickFalse;
+      }
+    if (destination_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickCore_SetImageViewIterator)
+#endif
+        proceed=SetImageProgress(destination_image,SetImageViewTag,progress++,
+          destination->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
+  return(status);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   T r a n s f e r I m a g e V i e w I t e r a t o r                         %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  TransferImageViewIterator() iterates over two pixel views in parallel and
+%  calls your transfer method for each scanline of the view.  The source pixel
+%  region is not confined to the image canvas-- that is you can include
+%  negative offsets or widths or heights that exceed the image dimension.
+%  However, the destination pixel view is confined to the image canvas-- that
+%  is no negative offsets or widths or heights that exceed the image dimension
+%  are permitted.
+%
+%  Use this pragma:
+%
+%    #pragma omp critical
+%
+%  to define a section of code in your callback transfer method that must be
+%  executed by a single thread at a time.
+%
+%  The format of the TransferImageViewIterator method is:
+%
+%      MagickBooleanType TransferImageViewIterator(ImageView *source,
+%        ImageView *destination,TransferImageViewMethod transfer,void *context)
+%
+%  A description of each parameter follows:
+%
+%    o source: the source pixel view.
+%
+%    o destination: the destination pixel view.
+%
+%    o transfer: the transfer callback method.
+%
+%    o context: the user defined context.
+%
+*/
+MagickExport MagickBooleanType TransferImageViewIterator(ImageView *source,
+  ImageView *destination,TransferImageViewMethod transfer,void *context)
+{
+#define TransferImageViewTag  "ImageView/Transfer"
+
+  ExceptionInfo
+    *exception;
+
+  Image
+    *destination_image,
+    *source_image;
+
+  MagickBooleanType
+    status;
+
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(source != (ImageView *) NULL);
+  assert(source->signature == MagickSignature);
+  if (transfer == (TransferImageViewMethod) NULL)
+    return(MagickFalse);
+  source_image=source->image;
+  destination_image=destination->image;
+  if (SetImageStorageClass(destination_image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  status=MagickTrue;
+  progress=0;
+  exception=destination->exception;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=source->region.y; y < (ssize_t) source->region.height; y++)
+  {
+    MagickBooleanType
+      sync;
+
+    register const IndexPacket
+      *restrict indexes;
+
+    register const PixelPacket
+      *restrict pixels;
+
+    register IndexPacket
+      *restrict destination_indexes;
+
+    register ssize_t
+      id,
+      x;
+
+    register PixelPacket
+      *restrict destination_pixels;
+
+    if (status == MagickFalse)
+      continue;
+    id=GetOpenMPThreadId();
+    pixels=GetCacheViewVirtualPixels(source->view,source->region.x,y,
+      source->region.width,1,source->exception);
+    if (pixels == (const PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewVirtualIndexQueue(source->view);
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      ;
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        ;
+    if (source_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        ;
+    destination_pixels=GetCacheViewAuthenticPixels(destination->view,
+      destination->region.x,y,destination->region.width,1,exception);
+    if (destination_pixels == (PixelPacket *) NULL)
+      {
+        status=MagickFalse;
+        continue;
+      }
+    destination_indexes=GetCacheViewAuthenticIndexQueue(destination->view);
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      ;
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        ;
+    if (destination_image->storage_class == PseudoClass)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        ;
+    if (transfer(source,destination,context) == MagickFalse)
+      status=MagickFalse;
+    for (x=0; x < (ssize_t) destination->region.width; x++)
+      ;
+    if (destination_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) destination->region.width; x++)
+        ;
+    sync=SyncCacheViewAuthenticPixels(destination->view,exception);
+    if (sync == MagickFalse)
+      {
+        InheritException(destination->exception,GetCacheViewException(
+          source->view));
+        status=MagickFalse;
+      }
+    if (source_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickCore_TransferImageViewIterator)
+#endif
+        proceed=SetImageProgress(source_image,TransferImageViewTag,progress++,
+          source->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
+  return(status);
+}
+\f
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%   U p d a t e I m a g e V i e w I t e r a t o r                             %
+%                                                                             %
+%                                                                             %
+%                                                                             %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+%  UpdateImageViewIterator() iterates over the pixel view in parallel and calls
+%  your update method for each scanline of the view.  The pixel region is
+%  confined to the image canvas-- that is no negative offsets or widths or
+%  heights that exceed the image dimension are permitted.  Updates to pixels
+%  in your callback are automagically synced back to the image.
+%
+%  Use this pragma:
+%
+%    #pragma omp critical
+%
+%  to define a section of code in your callback update method that must be
+%  executed by a single thread at a time.
+%
+%  The format of the UpdateImageViewIterator method is:
+%
+%      MagickBooleanType UpdateImageViewIterator(ImageView *source,
+%        UpdateImageViewMethod update,void *context)
+%
+%  A description of each parameter follows:
+%
+%    o source: the source pixel view.
+%
+%    o update: the update callback method.
+%
+%    o context: the user defined context.
+%
+*/
+MagickExport MagickBooleanType UpdateImageViewIterator(ImageView *source,
+  UpdateImageViewMethod update,void *context)
+{
+#define UpdateImageViewTag  "ImageView/Update"
+
+  ExceptionInfo
+    *exception;
+
+  Image
+    *source_image;
+
+  MagickBooleanType
+    status;
+
+  MagickOffsetType
+    progress;
+
+  ssize_t
+    y;
+
+  assert(source != (ImageView *) NULL);
+  assert(source->signature == MagickSignature);
+  if (update == (UpdateImageViewMethod) NULL)
+    return(MagickFalse);
+  source_image=source->image;
+  if (SetImageStorageClass(source_image,DirectClass) == MagickFalse)
+    return(MagickFalse);
+  status=MagickTrue;
+  progress=0;
+  exception=source->exception;
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp parallel for schedule(static,1) shared(progress,status)
+#endif
+  for (y=source->region.y; y < (ssize_t) source->region.height; y++)
+  {
+    register IndexPacket
+      *restrict indexes;
+
+    register ssize_t
+      id,
+      x;
+
+    register PixelPacket
+      *restrict pixels;
+
+    if (status == MagickFalse)
+      continue;
+    id=GetOpenMPThreadId();
+    pixels=GetCacheViewAuthenticPixels(source->view,source->region.x,y,
+      source->region.width,1,exception);
+    if (pixels == (PixelPacket *) NULL)
+      {
+        InheritException(source->exception,GetCacheViewException(
+          source->view));
+        status=MagickFalse;
+        continue;
+      }
+    indexes=GetCacheViewAuthenticIndexQueue(source->view);
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      ;
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        ;
+    if (update(source,context) == MagickFalse)
+      status=MagickFalse;
+    for (x=0; x < (ssize_t) source->region.width; x++)
+      ;
+    if (source_image->colorspace == CMYKColorspace)
+      for (x=0; x < (ssize_t) source->region.width; x++)
+        ;
+    if (SyncCacheViewAuthenticPixels(source->view,exception) == MagickFalse)
+      {
+        InheritException(source->exception,GetCacheViewException(source->view));
+        status=MagickFalse;
+      }
+    if (source_image->progress_monitor != (MagickProgressMonitor) NULL)
+      {
+        MagickBooleanType
+          proceed;
+
+#if defined(MAGICKCORE_OPENMP_SUPPORT)
+  #pragma omp critical (MagickCore_UpdateImageViewIterator)
+#endif
+        proceed=SetImageProgress(source_image,UpdateImageViewTag,progress++,
+          source->region.height);
+        if (proceed == MagickFalse)
+          status=MagickFalse;
+      }
+  }
+  return(status);
+}
diff --git a/magick/image-view.h b/magick/image-view.h
new file mode 100644 (file)
index 0000000..a0e696c
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization
+  dedicated to making software imaging solutions freely available.
+  
+  You may not use this file except in compliance with the License.
+  obtain a copy of the License at
+  
+    http://www.imagemagick.org/script/license.php
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITTransferNS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  MagickCore image view methods.
+*/
+#ifndef _MAGICKIMAGE_IMAGE_VIEW_H
+#define _MAGICKIMAGE_IMAGE_VIEW_H
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+typedef struct _ImageView
+  ImageView;
+
+typedef MagickBooleanType
+  (*DuplexTransferImageViewMethod)(const ImageView *,const ImageView *,
+    ImageView *,void *),
+  (*GetImageViewMethod)(const ImageView *,void *),
+  (*SetImageViewMethod)(ImageView *,void *),
+  (*TransferImageViewMethod)(const ImageView *,ImageView *,void *),
+  (*UpdateImageViewMethod)(ImageView *,void *);
+
+extern MagickExport char
+  *GetImageViewException(const ImageView *,ExceptionType *);
+
+extern MagickExport Image
+  *GetImageViewImage(const ImageView *);
+
+extern MagickExport ImageView
+  *CloneImageView(const ImageView *),
+  *DestroyImageView(ImageView *),
+  *NewImageView(Image *),
+  *NewImageViewRegion(Image *,const ssize_t,const ssize_t,const size_t,
+    const size_t);
+
+extern MagickExport MagickBooleanType
+  DuplexTransferImageViewIterator(ImageView *,ImageView *,ImageView *,
+    DuplexTransferImageViewMethod,void *),
+  GetImageViewIterator(ImageView *,GetImageViewMethod,void *),
+  IsImageView(const ImageView *),
+  SetImageViewIterator(ImageView *,SetImageViewMethod,void *),
+  TransferImageViewIterator(ImageView *,ImageView *,TransferImageViewMethod,
+    void *),
+  UpdateImageViewIterator(ImageView *,UpdateImageViewMethod,void *);
+
+extern MagickExport PixelPacket
+  **GetImageViewPixels(const ImageView *);
+
+extern MagickExport size_t
+  GetImageViewHeight(const ImageView *),
+  GetImageViewWidth(const ImageView *);
+
+extern MagickExport ssize_t
+  GetImageViewX(const ImageView *),
+  GetImageViewY(const ImageView *);
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif
index a47c55f2e4f4108eb0539f1890bedf0bf8ef4a41..8e6abae6b32c1c885733110757eac57052436a53 100644 (file)
@@ -44,14 +44,15 @@ typedef enum
   DeprecateEvent = 0x00040,
   DrawEvent = 0x00080,
   ExceptionEvent = 0x00100,
-  LocaleEvent = 0x00200,
-  ModuleEvent = 0x00400,
-  PolicyEvent = 0x00800,
-  ResourceEvent = 0x01000,
-  TransformEvent = 0x02000,
-  UserEvent = 0x04000,
-  WandEvent = 0x08000,
-  X11Event = 0x10000,
+  ImageEvent = 0x00200,
+  LocaleEvent = 0x00400,
+  ModuleEvent = 0x00800,
+  PolicyEvent = 0x01000,
+  ResourceEvent = 0x02000,
+  TransformEvent = 0x04000,
+  UserEvent = 0x09000,
+  WandEvent = 0x10000,
+  X11Event = 0x20000,
   AllEvents = 0x7fffffff
 } LogEventType;
 
index 55721b8c4943316e906a5f09cd69a4896f75242b..1bbed7d31eafb22c4e4532e49ec42585f49ccbc5 100644 (file)
@@ -33,7 +33,7 @@ extern "C" {
 #define MagickLibAddendum  "-9"
 #define MagickLibInterface  3
 #define MagickLibMinInterface  3
-#define MagickReleaseDate  "2010-06-25"
+#define MagickReleaseDate  "2010-06-26"
 #define MagickChangeDate   "20100622"
 #define MagickAuthoritativeURL  "http://www.imagemagick.org"
 #define MagickHomeURL  "file:///usr/local/share/doc/ImageMagick-6.6.2/index.html"
index ddfebaf624c06878c3ddd90725dda268be8c849c..4760738a90272129cf65e9a57e78c9f8a212072d 100644 (file)
@@ -137,9 +137,9 @@ typedef struct _MagickWand
 #include "wand/mogrify.h"
 #include "wand/montage.h"
 #include "wand/pixel-iterator.h"
-#include "wand/pixel-view.h"
 #include "wand/pixel-wand.h"
 #include "wand/stream.h"
+#include "wand/wand-view.h"
 
 extern WandExport char
   *MagickGetException(const MagickWand *,ExceptionType *);
index 650dd469bd0f917122051c5ff7a9bb17057b2c3e..480746c01c9ea1ed8a5b29acfe9c92a2b1f3f24c 100644 (file)
@@ -53,8 +53,6 @@ WAND_SOURCES = \
        wand/montage.h \
        wand/pixel-iterator.c \
        wand/pixel-iterator.h \
-       wand/pixel-view.c \
-       wand/pixel-view.h \
        wand/pixel-wand.c \
        wand/pixel-wand.h \
        wand/pixel-wand-private.h \
@@ -62,7 +60,9 @@ WAND_SOURCES = \
        wand/stream.h \
        wand/studio.h \
        wand/wand.c \
-       wand/wand.h
+       wand/wand.h \
+       wand/wand-view.c \
+       wand/wand-view.h 
 
 WAND_INCLUDE_HDRS = \
        wand/MagickWand.h \
diff --git a/wand/pixel-view.h b/wand/pixel-view.h
deleted file mode 100644 (file)
index cf67859..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
-  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization
-  dedicated to making software imaging solutions freely available.
-  
-  You may not use this file except in compliance with the License.
-  obtain a copy of the License at
-  
-    http://www.imagemagick.org/script/license.php
-  
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITTransferNS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
-
-  MagickWand pixel view methods.
-*/
-#ifndef _MAGICKWAND_PIXEL_VIEW_H
-#define _MAGICKWAND_PIXEL_VIEW_H
-
-#if defined(__cplusplus) || defined(c_plusplus)
-extern "C" {
-#endif
-
-typedef struct _PixelView
-  PixelView;
-
-typedef MagickBooleanType
-  (*DuplexTransferPixelViewMethod)(const PixelView *,const PixelView *,
-    PixelView *,void *),
-  (*GetPixelViewMethod)(const PixelView *,void *),
-  (*SetPixelViewMethod)(PixelView *,void *),
-  (*TransferPixelViewMethod)(const PixelView *,PixelView *,void *),
-  (*UpdatePixelViewMethod)(PixelView *,void *);
-
-extern WandExport char
-  *GetPixelViewException(const PixelView *,ExceptionType *);
-
-extern WandExport MagickBooleanType
-  DuplexTransferPixelViewIterator(PixelView *,PixelView *,PixelView *,
-    DuplexTransferPixelViewMethod,void *),
-  GetPixelViewIterator(PixelView *,GetPixelViewMethod,void *),
-  IsPixelView(const PixelView *),
-  SetPixelViewIterator(PixelView *,SetPixelViewMethod,void *),
-  TransferPixelViewIterator(PixelView *,PixelView *,TransferPixelViewMethod,
-    void *),
-  UpdatePixelViewIterator(PixelView *,UpdatePixelViewMethod,void *);
-
-extern WandExport MagickWand
-  *GetPixelViewWand(const PixelView *);
-
-extern WandExport PixelView
-  *ClonePixelView(const PixelView *),
-  *DestroyPixelView(PixelView *),
-  *NewPixelView(MagickWand *),
-  *NewPixelViewRegion(MagickWand *,const ssize_t,const ssize_t,const size_t,
-    const size_t);
-
-extern WandExport PixelWand
-  **GetPixelViewPixels(const PixelView *);
-
-extern WandExport size_t
-  GetPixelViewHeight(const PixelView *),
-  GetPixelViewWidth(const PixelView *);
-
-extern WandExport ssize_t
-  GetPixelViewX(const PixelView *),
-  GetPixelViewY(const PixelView *);
-
-#if defined(__cplusplus) || defined(c_plusplus)
-}
-#endif
-
-#endif
similarity index 82%
rename from wand/pixel-view.c
rename to wand/wand-view.c
index 85ee6d7edc85d86ffe640fd05abecdbeee2cee04..a9ff9c3b6bdba8747eb0b066641a43b2eeaa9d00 100644 (file)
@@ -2,12 +2,11 @@
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %                                                                             %
 %                                                                             %
-%                                                                             %
-%                      PPPP   IIIII  X   X  EEEEE  L                          %
-%                      P   P    I     X X   E      L                          %
-%                      PPPP     I      X    EEE    L                          %
-%                      P        I     X X   E      L                          %
-%                      P      IIIII  X   X  EEEEE  LLLLL                      %
+%                         W   W   AAA   N   N  DDDD                           %
+%                         W   W  A   A  NN  N  D   D                          %
+%                         W W W  AAAAA  N N N  D   D                          %
+%                         WW WW  A   A  N  NN  D   D                          %
+%                         W   W  A   A  N   N  DDDD                           %
 %                                                                             %
 %                        V   V  IIIII  EEEEE  W   W                           %
 %                        V   V    I    E      W   W                           %
@@ -16,7 +15,7 @@
 %                          V    IIIII  EEEEE  W   W                           %
 %                                                                             %
 %                                                                             %
-%                       MagickWand Pixel View Methods                         %
+%                        MagickWand Wand View Methods                         %
 %                                                                             %
 %                              Software Design                                %
 %                                John Cristy                                  %
 /*
  Define declarations.
 */
-#define PixelViewId  "PixelView"
+#define WandViewId  "WandView"
 \f
 /*
   Typedef declarations.
 */
-struct _PixelView
+struct _WandView
 {
   size_t
     id;
@@ -98,43 +97,43 @@ struct _PixelView
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   C l o n e P i x e l V i e w                                               %
+%   C l o n e W a n d V i e w                                                 %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  ClonePixelView() makes a copy of the specified pixel view.
+%  CloneWandView() makes a copy of the specified pixel view.
 %
-%  The format of the ClonePixelView method is:
+%  The format of the CloneWandView method is:
 %
-%      PixelView *ClonePixelView(const PixelView *pixel_view)
+%      WandView *CloneWandView(const WandView *pixel_view)
 %
 %  A description of each parameter follows:
 %
 %    o pixel_view: the pixel view.
 %
 */
-WandExport PixelView *ClonePixelView(const PixelView *pixel_view)
+WandExport WandView *CloneWandView(const WandView *pixel_view)
 {
-  PixelView
+  WandView
     *clone_view;
 
   register ssize_t
     i;
 
-  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view != (WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   if (pixel_view->debug != MagickFalse)
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",pixel_view->name);
-  clone_view=(PixelView *) AcquireAlignedMemory(1,sizeof(*clone_view));
-  if (clone_view == (PixelView *) NULL)
+  clone_view=(WandView *) AcquireAlignedMemory(1,sizeof(*clone_view));
+  if (clone_view == (WandView *) NULL)
     ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
       pixel_view->name);
   (void) ResetMagickMemory(clone_view,0,sizeof(*clone_view));
   clone_view->id=AcquireWandId();
   (void) FormatMagickString(clone_view->name,MaxTextExtent,"%s-%.20g",
-    PixelViewId,(double) clone_view->id);
+    WandViewId,(double) clone_view->id);
   clone_view->exception=AcquireExceptionInfo();
   InheritException(clone_view->exception,pixel_view->exception);
   clone_view->view=CloneCacheView(pixel_view->view);
@@ -155,17 +154,17 @@ WandExport PixelView *ClonePixelView(const PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D e s t r o y P i x e l V i e w                                           %
+%   D e s t r o y W a n d V i e w                                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DestroyPixelView() deallocates memory associated with a pixel view.
+%  DestroyWandView() deallocates memory associated with a pixel view.
 %
-%  The format of the DestroyPixelView method is:
+%  The format of the DestroyWandView method is:
 %
-%      PixelView *DestroyPixelView(PixelView *pixel_view,
+%      WandView *DestroyWandView(WandView *pixel_view,
 %        const size_t number_wands,const size_t number_threads)
 %
 %  A description of each parameter follows:
@@ -192,9 +191,9 @@ static PixelWand ***DestroyPixelsThreadSet(PixelWand ***pixel_wands,
   return(pixel_wands);
 }
 
-WandExport PixelView *DestroyPixelView(PixelView *pixel_view)
+WandExport WandView *DestroyWandView(WandView *pixel_view)
 {
-  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view != (WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   pixel_view->pixel_wands=DestroyPixelsThreadSet(pixel_view->pixel_wands,
     pixel_view->region.width,pixel_view->number_threads);
@@ -202,7 +201,7 @@ WandExport PixelView *DestroyPixelView(PixelView *pixel_view)
   pixel_view->exception=DestroyExceptionInfo(pixel_view->exception);
   pixel_view->signature=(~WandSignature);
   RelinquishWandId(pixel_view->id);
-  pixel_view=(PixelView *) RelinquishMagickMemory(pixel_view);
+  pixel_view=(WandView *) RelinquishMagickMemory(pixel_view);
   return(pixel_view);
 }
 \f
@@ -211,13 +210,13 @@ WandExport PixelView *DestroyPixelView(PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   D u p l e x T r a n s f e r P i x e l V i e w I t e r a t o r             %
+%   D u p l e x T r a n s f e r W a n d V i e w I t e r a t o r               %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  DuplexTransferPixelViewIterator() iterates over three pixel views in
+%  DuplexTransferWandViewIterator() iterates over three pixel views in
 %  parallel and calls your transfer method for each scanline of the view.  The
 %  source and duplex pixel region is not confined to the image canvas-- that is
 %  you can include negative offsets or widths or heights that exceed the image
@@ -232,11 +231,11 @@ WandExport PixelView *DestroyPixelView(PixelView *pixel_view)
 %  to define a section of code in your callback transfer method that must be
 %  executed by a single thread at a time.
 %
-%  The format of the DuplexTransferPixelViewIterator method is:
+%  The format of the DuplexTransferWandViewIterator method is:
 %
-%      MagickBooleanType DuplexTransferPixelViewIterator(PixelView *source,
-%        PixelView *duplex,PixelView *destination,
-%        DuplexTransferPixelViewMethod transfer,void *context)
+%      MagickBooleanType DuplexTransferWandViewIterator(WandView *source,
+%        WandView *duplex,WandView *destination,
+%        DuplexTransferWandViewMethod transfer,void *context)
 %
 %  A description of each parameter follows:
 %
@@ -251,11 +250,11 @@ WandExport PixelView *DestroyPixelView(PixelView *pixel_view)
 %    o context: the user defined context.
 %
 */
-WandExport MagickBooleanType DuplexTransferPixelViewIterator(
-  PixelView *source,PixelView *duplex,PixelView *destination,
-  DuplexTransferPixelViewMethod transfer,void *context)
+WandExport MagickBooleanType DuplexTransferWandViewIterator(
+  WandView *source,WandView *duplex,WandView *destination,
+  DuplexTransferWandViewMethod transfer,void *context)
 {
-#define DuplexTransferPixelViewTag  "PixelView/DuplexTransfer"
+#define DuplexTransferWandViewTag  "WandView/DuplexTransfer"
 
   ExceptionInfo
     *exception;
@@ -274,9 +273,9 @@ WandExport MagickBooleanType DuplexTransferPixelViewIterator(
   ssize_t
     y;
 
-  assert(source != (PixelView *) NULL);
+  assert(source != (WandView *) NULL);
   assert(source->signature == WandSignature);
-  if (transfer == (DuplexTransferPixelViewMethod) NULL)
+  if (transfer == (DuplexTransferWandViewMethod) NULL)
     return(MagickFalse);
   source_image=source->wand->images;
   duplex_image=duplex->wand->images;
@@ -387,9 +386,9 @@ WandExport MagickBooleanType DuplexTransferPixelViewIterator(
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickWand_DuplexTransferPixelViewIterator)
+  #pragma omp critical (MagickWand_DuplexTransferWandViewIterator)
 #endif
-        proceed=SetImageProgress(source_image,DuplexTransferPixelViewTag,
+        proceed=SetImageProgress(source_image,DuplexTransferWandViewTag,
           progress++,source->region.height);
         if (proceed == MagickFalse)
           status=MagickFalse;
@@ -403,18 +402,18 @@ WandExport MagickBooleanType DuplexTransferPixelViewIterator(
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t P i x e l V i e w E x c e p t i o n                                 %
+%   G e t W a n d V i e w E x c e p t i o n                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetPixelViewException() returns the severity, reason, and description of any
+%  GetWandViewException() returns the severity, reason, and description of any
 %  error that occurs when utilizing a pixel view.
 %
-%  The format of the GetPixelViewException method is:
+%  The format of the GetWandViewException method is:
 %
-%      char *GetPixelViewException(const PixelWand *pixel_view,
+%      char *GetWandViewException(const PixelWand *pixel_view,
 %        ExceptionType *severity)
 %
 %  A description of each parameter follows:
@@ -424,13 +423,13 @@ WandExport MagickBooleanType DuplexTransferPixelViewIterator(
 %    o severity: the severity of the error is returned here.
 %
 */
-WandExport char *GetPixelViewException(const PixelView *pixel_view,
+WandExport char *GetWandViewException(const WandView *pixel_view,
   ExceptionType *severity)
 {
   char
     *description;
 
-  assert(pixel_view != (const PixelView *) NULL);
+  assert(pixel_view != (const WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   if (pixel_view->debug != MagickFalse)
     (void) LogMagickEvent(WandEvent,GetMagickModule(),"%s",pixel_view->name);
@@ -462,26 +461,26 @@ WandExport char *GetPixelViewException(const PixelView *pixel_view,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t P i x e l V i e w H e i g h t                                       %
+%   G e t W a n d V i e w H e i g h t                                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetPixelViewHeight() returns the pixel view height.
+%  GetWandViewHeight() returns the pixel view height.
 %
-%  The format of the GetPixelViewHeight method is:
+%  The format of the GetWandViewHeight method is:
 %
-%      size_t GetPixelViewHeight(const PixelView *pixel_view)
+%      size_t GetWandViewHeight(const WandView *pixel_view)
 %
 %  A description of each parameter follows:
 %
 %    o pixel_view: the pixel view.
 %
 */
-WandExport size_t GetPixelViewHeight(const PixelView *pixel_view)
+WandExport size_t GetWandViewHeight(const WandView *pixel_view)
 {
-  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view != (WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   return(pixel_view->region.height);
 }
@@ -491,13 +490,13 @@ WandExport size_t GetPixelViewHeight(const PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t P i x e l V i e w I t e r a t o r                                   %
+%   G e t W a n d V i e w I t e r a t o r                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetPixelViewIterator() iterates over the pixel view in parallel and calls
+%  GetWandViewIterator() iterates over the pixel view in parallel and calls
 %  your get method for each scanline of the view.  The pixel region is
 %  not confined to the image canvas-- that is you can include negative offsets
 %  or widths or heights that exceed the image dimension.  Any updates to
@@ -510,10 +509,10 @@ WandExport size_t GetPixelViewHeight(const PixelView *pixel_view)
 %  to define a section of code in your callback get method that must be
 %  executed by a single thread at a time.
 %
-%  The format of the GetPixelViewIterator method is:
+%  The format of the GetWandViewIterator method is:
 %
-%      MagickBooleanType GetPixelViewIterator(PixelView *source,
-%        GetPixelViewMethod get,void *context)
+%      MagickBooleanType GetWandViewIterator(WandView *source,
+%        GetWandViewMethod get,void *context)
 %
 %  A description of each parameter follows:
 %
@@ -524,10 +523,10 @@ WandExport size_t GetPixelViewHeight(const PixelView *pixel_view)
 %    o context: the user defined context.
 %
 */
-WandExport MagickBooleanType GetPixelViewIterator(PixelView *source,
-  GetPixelViewMethod get,void *context)
+WandExport MagickBooleanType GetWandViewIterator(WandView *source,
+  GetWandViewMethod get,void *context)
 {
-#define GetPixelViewTag  "PixelView/Get"
+#define GetWandViewTag  "WandView/Get"
 
   Image
     *source_image;
@@ -541,9 +540,9 @@ WandExport MagickBooleanType GetPixelViewIterator(PixelView *source,
   ssize_t
     y;
 
-  assert(source != (PixelView *) NULL);
+  assert(source != (WandView *) NULL);
   assert(source->signature == WandSignature);
-  if (get == (GetPixelViewMethod) NULL)
+  if (get == (GetWandViewMethod) NULL)
     return(MagickFalse);
   source_image=source->wand->images;
   status=MagickTrue;
@@ -590,9 +589,9 @@ WandExport MagickBooleanType GetPixelViewIterator(PixelView *source,
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickWand_GetPixelViewIterator)
+  #pragma omp critical (MagickWand_GetWandViewIterator)
 #endif
-        proceed=SetImageProgress(source_image,GetPixelViewTag,progress++,
+        proceed=SetImageProgress(source_image,GetWandViewTag,progress++,
           source->region.height);
         if (proceed == MagickFalse)
           status=MagickFalse;
@@ -606,29 +605,29 @@ WandExport MagickBooleanType GetPixelViewIterator(PixelView *source,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t P i x e l V i e w P i x e l s                                       %
+%   G e t W a n d V i e w P i x e l s                                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetPixelViewPixels() returns the pixel view pixel_wands.
+%  GetWandViewPixels() returns the pixel view pixel_wands.
 %
-%  The format of the GetPixelViewPixels method is:
+%  The format of the GetWandViewPixels method is:
 %
-%      PixelWand *GetPixelViewPixels(const PixelView *pixel_view)
+%      PixelWand *GetWandViewPixels(const WandView *pixel_view)
 %
 %  A description of each parameter follows:
 %
 %    o pixel_view: the pixel view.
 %
 */
-WandExport PixelWand **GetPixelViewPixels(const PixelView *pixel_view)
+WandExport PixelWand **GetWandViewPixels(const WandView *pixel_view)
 {
   ssize_t
     id;
 
-  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view != (WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   id=GetOpenMPThreadId();
   return(pixel_view->pixel_wands[id]);
@@ -639,26 +638,26 @@ WandExport PixelWand **GetPixelViewPixels(const PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t P i x e l V i e w W a n d                                           %
+%   G e t W a n d V i e w W a n d                                             %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetPixelViewWand() returns the magick wand associated with the pixel view.
+%  GetWandViewWand() returns the magick wand associated with the pixel view.
 %
-%  The format of the GetPixelViewWand method is:
+%  The format of the GetWandViewWand method is:
 %
-%      MagickWand *GetPixelViewWand(const PixelView *pixel_view)
+%      MagickWand *GetWandViewWand(const WandView *pixel_view)
 %
 %  A description of each parameter follows:
 %
 %    o pixel_view: the pixel view.
 %
 */
-WandExport MagickWand *GetPixelViewWand(const PixelView *pixel_view)
+WandExport MagickWand *GetWandViewWand(const WandView *pixel_view)
 {
-  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view != (WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   return(pixel_view->wand);
 }
@@ -668,26 +667,26 @@ WandExport MagickWand *GetPixelViewWand(const PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t P i x e l V i e w W i d t h                                         %
+%   G e t W a n d V i e w W i d t h                                           %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetPixelViewWidth() returns the pixel view width.
+%  GetWandViewWidth() returns the pixel view width.
 %
-%  The format of the GetPixelViewWidth method is:
+%  The format of the GetWandViewWidth method is:
 %
-%      size_t GetPixelViewWidth(const PixelView *pixel_view)
+%      size_t GetWandViewWidth(const WandView *pixel_view)
 %
 %  A description of each parameter follows:
 %
 %    o pixel_view: the pixel view.
 %
 */
-WandExport size_t GetPixelViewWidth(const PixelView *pixel_view)
+WandExport size_t GetWandViewWidth(const WandView *pixel_view)
 {
-  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view != (WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   return(pixel_view->region.width);
 }
@@ -697,26 +696,26 @@ WandExport size_t GetPixelViewWidth(const PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t P i x e l V i e w X                                                 %
+%   G e t W a n d V i e w X                                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetPixelViewX() returns the pixel view x offset.
+%  GetWandViewX() returns the pixel view x offset.
 %
-%  The format of the GetPixelViewX method is:
+%  The format of the GetWandViewX method is:
 %
-%      ssize_t GetPixelViewX(const PixelView *pixel_view)
+%      ssize_t GetWandViewX(const WandView *pixel_view)
 %
 %  A description of each parameter follows:
 %
 %    o pixel_view: the pixel view.
 %
 */
-WandExport ssize_t GetPixelViewX(const PixelView *pixel_view)
+WandExport ssize_t GetWandViewX(const WandView *pixel_view)
 {
-  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view != (WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   return(pixel_view->region.x);
 }
@@ -726,26 +725,26 @@ WandExport ssize_t GetPixelViewX(const PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   G e t P i x e l V i e w Y                                                 %
+%   G e t W a n d V i e w Y                                                   %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  GetPixelViewY() returns the pixel view y offset.
+%  GetWandViewY() returns the pixel view y offset.
 %
-%  The format of the GetPixelViewY method is:
+%  The format of the GetWandViewY method is:
 %
-%      ssize_t GetPixelViewY(const PixelView *pixel_view)
+%      ssize_t GetWandViewY(const WandView *pixel_view)
 %
 %  A description of each parameter follows:
 %
 %    o pixel_view: the pixel view.
 %
 */
-WandExport ssize_t GetPixelViewY(const PixelView *pixel_view)
+WandExport ssize_t GetWandViewY(const WandView *pixel_view)
 {
-  assert(pixel_view != (PixelView *) NULL);
+  assert(pixel_view != (WandView *) NULL);
   assert(pixel_view->signature == WandSignature);
   return(pixel_view->region.y);
 }
@@ -755,35 +754,35 @@ WandExport ssize_t GetPixelViewY(const PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   I s P i x e l V i e w                                                     %
+%   I s W a n d V i e w                                                       %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  IsPixelView() returns MagickTrue if the the parameter is verified as a pixel
+%  IsWandView() returns MagickTrue if the the parameter is verified as a pixel
 %  view container.
 %
-%  The format of the IsPixelView method is:
+%  The format of the IsWandView method is:
 %
-%      MagickBooleanType IsPixelView(const PixelView *pixel_view)
+%      MagickBooleanType IsWandView(const WandView *pixel_view)
 %
 %  A description of each parameter follows:
 %
 %    o pixel_view: the pixel view.
 %
 */
-WandExport MagickBooleanType IsPixelView(const PixelView *pixel_view)
+WandExport MagickBooleanType IsWandView(const WandView *pixel_view)
 {
   size_t
     length;
 
-  if (pixel_view == (const PixelView *) NULL)
+  if (pixel_view == (const WandView *) NULL)
     return(MagickFalse);
   if (pixel_view->signature != WandSignature)
     return(MagickFalse);
-  length=strlen(PixelViewId);
-  if (LocaleNCompare(pixel_view->name,PixelViewId,length) != 0)
+  length=strlen(WandViewId);
+  if (LocaleNCompare(pixel_view->name,WandViewId,length) != 0)
     return(MagickFalse);
   return(MagickTrue);
 }
@@ -793,18 +792,18 @@ WandExport MagickBooleanType IsPixelView(const PixelView *pixel_view)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   N e w P i x e l V i e w                                                   %
+%   N e w W a n d V i e w                                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  NewPixelView() returns a pixel view required for all other methods in the
+%  NewWandView() returns a pixel view required for all other methods in the
 %  Pixel View API.
 %
-%  The format of the NewPixelView method is:
+%  The format of the NewWandView method is:
 %
-%      PixelView *NewPixelView(MagickWand *wand)
+%      WandView *NewWandView(MagickWand *wand)
 %
 %  A description of each parameter follows:
 %
@@ -835,21 +834,21 @@ static PixelWand ***AcquirePixelsThreadSet(const size_t number_wands,
   return(pixel_wands);
 }
 
-WandExport PixelView *NewPixelView(MagickWand *wand)
+WandExport WandView *NewWandView(MagickWand *wand)
 {
-  PixelView
+  WandView
     *pixel_view;
 
   assert(wand != (MagickWand *) NULL);
   assert(wand->signature == MagickSignature);
-  pixel_view=(PixelView *) AcquireAlignedMemory(1,sizeof(*pixel_view));
-  if (pixel_view == (PixelView *) NULL)
+  pixel_view=(WandView *) AcquireAlignedMemory(1,sizeof(*pixel_view));
+  if (pixel_view == (WandView *) NULL)
     ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
       GetExceptionMessage(errno));
   (void) ResetMagickMemory(pixel_view,0,sizeof(*pixel_view));
   pixel_view->id=AcquireWandId();
   (void) FormatMagickString(pixel_view->name,MaxTextExtent,"%s-%.20g",
-    PixelViewId,(double) pixel_view->id);
+    WandViewId,(double) pixel_view->id);
   pixel_view->exception=AcquireExceptionInfo();
   pixel_view->wand=wand;
   pixel_view->view=AcquireCacheView(pixel_view->wand->images);
@@ -871,18 +870,18 @@ WandExport PixelView *NewPixelView(MagickWand *wand)
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   N e w P i x e l V i e w R e g i o n                                       %
+%   N e w W a n d V i e w R e g i o n                                         %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  NewPixelViewRegion() returns a pixel view required for all other methods
+%  NewWandViewRegion() returns a pixel view required for all other methods
 %  in the Pixel View API.
 %
-%  The format of the NewPixelViewRegion method is:
+%  The format of the NewWandViewRegion method is:
 %
-%      PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
+%      WandView *NewWandViewRegion(MagickWand *wand,const ssize_t x,
 %        const ssize_t y,const size_t width,const size_t height)
 %
 %  A description of each parameter follows:
@@ -893,22 +892,22 @@ WandExport PixelView *NewPixelView(MagickWand *wand)
 %      pixel_wands view.
 %
 */
-WandExport PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
+WandExport WandView *NewWandViewRegion(MagickWand *wand,const ssize_t x,
   const ssize_t y,const size_t width,const size_t height)
 {
-  PixelView
+  WandView
     *pixel_view;
 
   assert(wand != (MagickWand *) NULL);
   assert(wand->signature == MagickSignature);
-  pixel_view=(PixelView *) AcquireAlignedMemory(1,sizeof(*pixel_view));
-  if (pixel_view == (PixelView *) NULL)
+  pixel_view=(WandView *) AcquireAlignedMemory(1,sizeof(*pixel_view));
+  if (pixel_view == (WandView *) NULL)
     ThrowWandFatalException(ResourceLimitFatalError,"MemoryAllocationFailed",
       GetExceptionMessage(errno));
   (void) ResetMagickMemory(pixel_view,0,sizeof(*pixel_view));
   pixel_view->id=AcquireWandId();
   (void) FormatMagickString(pixel_view->name,MaxTextExtent,"%s-%.20g",
-    PixelViewId,(double) pixel_view->id);
+    WandViewId,(double) pixel_view->id);
   pixel_view->exception=AcquireExceptionInfo();
   pixel_view->view=AcquireCacheView(pixel_view->wand->images);
   pixel_view->wand=wand;
@@ -932,13 +931,13 @@ WandExport PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   S e t P i x e l V i e w I t e r a t o r                                   %
+%   S e t W a n d V i e w I t e r a t o r                                     %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  SetPixelViewIterator() iterates over the pixel view in parallel and calls
+%  SetWandViewIterator() iterates over the pixel view in parallel and calls
 %  your set method for each scanline of the view.  The pixel region is
 %  confined to the image canvas-- that is no negative offsets or widths or
 %  heights that exceed the image dimension.  The pixels are initiallly
@@ -952,10 +951,10 @@ WandExport PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
 %  to define a section of code in your callback set method that must be
 %  executed by a single thread at a time.
 %
-%  The format of the SetPixelViewIterator method is:
+%  The format of the SetWandViewIterator method is:
 %
-%      MagickBooleanType SetPixelViewIterator(PixelView *destination,
-%        SetPixelViewMethod set,void *context)
+%      MagickBooleanType SetWandViewIterator(WandView *destination,
+%        SetWandViewMethod set,void *context)
 %
 %  A description of each parameter follows:
 %
@@ -966,10 +965,10 @@ WandExport PixelView *NewPixelViewRegion(MagickWand *wand,const ssize_t x,
 %    o context: the user defined context.
 %
 */
-WandExport MagickBooleanType SetPixelViewIterator(PixelView *destination,
-  SetPixelViewMethod set,void *context)
+WandExport MagickBooleanType SetWandViewIterator(WandView *destination,
+  SetWandViewMethod set,void *context)
 {
-#define SetPixelViewTag  "PixelView/Set"
+#define SetWandViewTag  "WandView/Set"
 
   ExceptionInfo
     *exception;
@@ -986,9 +985,9 @@ WandExport MagickBooleanType SetPixelViewIterator(PixelView *destination,
   ssize_t
     y;
 
-  assert(destination != (PixelView *) NULL);
+  assert(destination != (WandView *) NULL);
   assert(destination->signature == WandSignature);
-  if (set == (SetPixelViewMethod) NULL)
+  if (set == (SetWandViewMethod) NULL)
     return(MagickFalse);
   destination_image=destination->wand->images;
   if (SetImageStorageClass(destination_image,DirectClass) == MagickFalse)
@@ -1047,9 +1046,9 @@ WandExport MagickBooleanType SetPixelViewIterator(PixelView *destination,
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickWand_SetPixelViewIterator)
+  #pragma omp critical (MagickWand_SetWandViewIterator)
 #endif
-        proceed=SetImageProgress(destination_image,SetPixelViewTag,progress++,
+        proceed=SetImageProgress(destination_image,SetWandViewTag,progress++,
           destination->region.height);
         if (proceed == MagickFalse)
           status=MagickFalse;
@@ -1063,13 +1062,13 @@ WandExport MagickBooleanType SetPixelViewIterator(PixelView *destination,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   T r a n s f e r P i x e l V i e w I t e r a t o r                         %
+%   T r a n s f e r W a n d V i e w I t e r a t o r                           %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  TransferPixelViewIterator() iterates over two pixel views in parallel and
+%  TransferWandViewIterator() iterates over two pixel views in parallel and
 %  calls your transfer method for each scanline of the view.  The source pixel
 %  region is not confined to the image canvas-- that is you can include
 %  negative offsets or widths or heights that exceed the image dimension.
@@ -1084,10 +1083,10 @@ WandExport MagickBooleanType SetPixelViewIterator(PixelView *destination,
 %  to define a section of code in your callback transfer method that must be
 %  executed by a single thread at a time.
 %
-%  The format of the TransferPixelViewIterator method is:
+%  The format of the TransferWandViewIterator method is:
 %
-%      MagickBooleanType TransferPixelViewIterator(PixelView *source,
-%        PixelView *destination,TransferPixelViewMethod transfer,void *context)
+%      MagickBooleanType TransferWandViewIterator(WandView *source,
+%        WandView *destination,TransferWandViewMethod transfer,void *context)
 %
 %  A description of each parameter follows:
 %
@@ -1100,10 +1099,10 @@ WandExport MagickBooleanType SetPixelViewIterator(PixelView *destination,
 %    o context: the user defined context.
 %
 */
-WandExport MagickBooleanType TransferPixelViewIterator(PixelView *source,
-  PixelView *destination,TransferPixelViewMethod transfer,void *context)
+WandExport MagickBooleanType TransferWandViewIterator(WandView *source,
+  WandView *destination,TransferWandViewMethod transfer,void *context)
 {
-#define TransferPixelViewTag  "PixelView/Transfer"
+#define TransferWandViewTag  "WandView/Transfer"
 
   ExceptionInfo
     *exception;
@@ -1121,9 +1120,9 @@ WandExport MagickBooleanType TransferPixelViewIterator(PixelView *source,
   ssize_t
     y;
 
-  assert(source != (PixelView *) NULL);
+  assert(source != (WandView *) NULL);
   assert(source->signature == WandSignature);
-  if (transfer == (TransferPixelViewMethod) NULL)
+  if (transfer == (TransferWandViewMethod) NULL)
     return(MagickFalse);
   source_image=source->wand->images;
   destination_image=destination->wand->images;
@@ -1213,9 +1212,9 @@ WandExport MagickBooleanType TransferPixelViewIterator(PixelView *source,
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickWand_TransferPixelViewIterator)
+  #pragma omp critical (MagickWand_TransferWandViewIterator)
 #endif
-        proceed=SetImageProgress(source_image,TransferPixelViewTag,progress++,
+        proceed=SetImageProgress(source_image,TransferWandViewTag,progress++,
           source->region.height);
         if (proceed == MagickFalse)
           status=MagickFalse;
@@ -1229,13 +1228,13 @@ WandExport MagickBooleanType TransferPixelViewIterator(PixelView *source,
 %                                                                             %
 %                                                                             %
 %                                                                             %
-%   U p d a t e P i x e l V i e w I t e r a t o r                             %
+%   U p d a t e W a n d V i e w I t e r a t o r                               %
 %                                                                             %
 %                                                                             %
 %                                                                             %
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
-%  UpdatePixelViewIterator() iterates over the pixel view in parallel and calls
+%  UpdateWandViewIterator() iterates over the pixel view in parallel and calls
 %  your update method for each scanline of the view.  The pixel region is
 %  confined to the image canvas-- that is no negative offsets or widths or
 %  heights that exceed the image dimension are permitted.  Updates to pixels
@@ -1248,10 +1247,10 @@ WandExport MagickBooleanType TransferPixelViewIterator(PixelView *source,
 %  to define a section of code in your callback update method that must be
 %  executed by a single thread at a time.
 %
-%  The format of the UpdatePixelViewIterator method is:
+%  The format of the UpdateWandViewIterator method is:
 %
-%      MagickBooleanType UpdatePixelViewIterator(PixelView *source,
-%        UpdatePixelViewMethod update,void *context)
+%      MagickBooleanType UpdateWandViewIterator(WandView *source,
+%        UpdateWandViewMethod update,void *context)
 %
 %  A description of each parameter follows:
 %
@@ -1262,10 +1261,10 @@ WandExport MagickBooleanType TransferPixelViewIterator(PixelView *source,
 %    o context: the user defined context.
 %
 */
-WandExport MagickBooleanType UpdatePixelViewIterator(PixelView *source,
-  UpdatePixelViewMethod update,void *context)
+WandExport MagickBooleanType UpdateWandViewIterator(WandView *source,
+  UpdateWandViewMethod update,void *context)
 {
-#define UpdatePixelViewTag  "PixelView/Update"
+#define UpdateWandViewTag  "WandView/Update"
 
   ExceptionInfo
     *exception;
@@ -1282,9 +1281,9 @@ WandExport MagickBooleanType UpdatePixelViewIterator(PixelView *source,
   ssize_t
     y;
 
-  assert(source != (PixelView *) NULL);
+  assert(source != (WandView *) NULL);
   assert(source->signature == WandSignature);
-  if (update == (UpdatePixelViewMethod) NULL)
+  if (update == (UpdateWandViewMethod) NULL)
     return(MagickFalse);
   source_image=source->wand->images;
   if (SetImageStorageClass(source_image,DirectClass) == MagickFalse)
@@ -1343,9 +1342,9 @@ WandExport MagickBooleanType UpdatePixelViewIterator(PixelView *source,
           proceed;
 
 #if defined(MAGICKCORE_OPENMP_SUPPORT)
-  #pragma omp critical (MagickWand_UpdatePixelViewIterator)
+  #pragma omp critical (MagickWand_UpdateWandViewIterator)
 #endif
-        proceed=SetImageProgress(source_image,UpdatePixelViewTag,progress++,
+        proceed=SetImageProgress(source_image,UpdateWandViewTag,progress++,
           source->region.height);
         if (proceed == MagickFalse)
           status=MagickFalse;
diff --git a/wand/wand-view.h b/wand/wand-view.h
new file mode 100644 (file)
index 0000000..2c6dc23
--- /dev/null
@@ -0,0 +1,73 @@
+/*
+  Copyright 1999-2010 ImageMagick Studio LLC, a non-profit organization
+  dedicated to making software imaging solutions freely available.
+  
+  You may not use this file except in compliance with the License.
+  obtain a copy of the License at
+  
+    http://www.imagemagick.org/script/license.php
+  
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITTransferNS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+
+  MagickWand wand view methods.
+*/
+#ifndef _MAGICKWAND_WAND_VIEW_H
+#define _MAGICKWAND_WAND_VIEW_H
+
+#if defined(__cplusplus) || defined(c_plusplus)
+extern "C" {
+#endif
+
+typedef struct _WandView
+  WandView;
+
+typedef MagickBooleanType
+  (*DuplexTransferWandViewMethod)(const WandView *,const WandView *,WandView *,
+    void *),
+  (*GetWandViewMethod)(const WandView *,void *),
+  (*SetWandViewMethod)(WandView *,void *),
+  (*TransferWandViewMethod)(const WandView *,WandView *,void *),
+  (*UpdateWandViewMethod)(WandView *,void *);
+
+extern WandExport char
+  *GetWandViewException(const WandView *,ExceptionType *);
+
+extern WandExport MagickBooleanType
+  DuplexTransferWandViewIterator(WandView *,WandView *,WandView *,
+    DuplexTransferWandViewMethod,void *),
+  GetWandViewIterator(WandView *,GetWandViewMethod,void *),
+  IsWandView(const WandView *),
+  SetWandViewIterator(WandView *,SetWandViewMethod,void *),
+  TransferWandViewIterator(WandView *,WandView *,TransferWandViewMethod,void *),
+  UpdateWandViewIterator(WandView *,UpdateWandViewMethod,void *);
+
+extern WandExport MagickWand
+  *GetWandViewWand(const WandView *);
+
+extern WandExport WandView
+  *CloneWandView(const WandView *),
+  *DestroyWandView(WandView *),
+  *NewWandView(MagickWand *),
+  *NewWandViewRegion(MagickWand *,const ssize_t,const ssize_t,const size_t,
+    const size_t);
+
+extern WandExport PixelWand
+  **GetWandViewPixels(const WandView *);
+
+extern WandExport size_t
+  GetWandViewHeight(const WandView *),
+  GetWandViewWidth(const WandView *);
+
+extern WandExport ssize_t
+  GetWandViewX(const WandView *),
+  GetWandViewY(const WandView *);
+
+#if defined(__cplusplus) || defined(c_plusplus)
+}
+#endif
+
+#endif