- Modifications to compile ImageMagick

This commit is contained in:
Santi Noreña 2013-02-19 18:37:48 +01:00
parent 615ec83706
commit 83522c16c3
3442 changed files with 57 additions and 412926 deletions

View file

@ -0,0 +1,108 @@
2011-12-25 6.7.4-2 Cristy <quetzlzacatenango@image...>
* Relax when PerlMagick tosses an image when an exception is thrown.
2011-12-20 6.7.4-1 Cristy <quetzlzacatenango@image...>
* Use PTR2IV() and INT2PTR() macros to avoid int to ptr cast messages.
2011-08-25 6.7.2-0 Cristy <quetzlzacatenango@image...>
* Fix fault for Thumbnail() with GIF animation (problem report and patch
from Shigeki Morimoto).
2011-08-09 6.7.1-4 Cristy <quetzlzacatenango@image...>
* Add a simple "ignore this type" style typemap to get past a xsubpp
exception in recent versions of Perl.
2011-06-06 6.7.0-5 Cristy <quetzlzacatenango@image...>
* Set modulate() colorspace predicated on parameter (e.g. brightness is HSB).
2011-01-25 6.6.7-3 Cristy <quetzlzacatenango@image...>
* Verify color parameter is a Perl array to avoid seg fault (reference
http://www.imagemagick.org/discourse-server/viewtopic.php?f=7&t=17928).
2010-11-11 6.6.5-6 Cristy <quetzlzacatenango@image...>
* Check that image exists before accessing its member (reference
http://www.imagemagick.org/discourse-server/viewtopic.php?f=2&t=17502).
2010-11-01 6.6.5-6 Cristy <quetzlzacatenango@image...>
* The gravity attribute must set the ImageInfo gravity property (reference
http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=17282).
2009-12-08 6.5.8-5 <kmx@volny...>
* A couple of minor changes to Makefile.PL to support Strawberry Perl.
2009-12-06 6.5.8-4 Cristy <quetzlzacatenango@image...>
* Support the crop() gravity option.
2009-11-23 6.5.8-0 Cristy <quetzlzacatenango@image...>
* Add 'dither' option to Remap().
2009-10-18 6.5.7-0 Cristy <quetzlzacatenango@image...>
* Interpret gravity properly for ExtentImage().
* Support the Modulate() method parameter, 'lightness.'
2009-10-08 6.5.6-10 <kmx@volny...>
* Improve PerlMagick.PL to work with Strawberry Perl under Windows.
2009-08-02 6.5.4-8 Cristy <quetzlzacatenango@image...>
* Create a image registry to track which image objects must be cloned
when a Perl thread is created.
2009-06-14 6.5.3-7 Anthony Thyssen <A.Thyssen@griffith...>
* Expand PerlMagick Composite() 'mask' merge for both compose 'displace'
and new 'distort' mapping (absolute lookup)
2009-06-11 6.5.3-5 Anthony Thyssen <A.Thyssen@griffith...>
* Fixed PerlMagick Composite() for correct merging of 'mask' image into
the overlay image for Displacement Mapping Composition.
2009-06-02 6.5.3-2 Cristy <quetzlzacatenango@image...>
* Fix filename parameter in Read() (e.g. $image->Read(filename=>'xc:white')).
2009-04-14 6.5.1-3 Cristy <quetzlzacatenango@image...>
* Support magick parameter for Read() (e.g.
$im->Read( file => $fh, magick +> 'text:' )).
2008-11-16 6.4.4-5 Cristy <quetzlzacatenango@image...>
* Statistics() returns normalized values.
2008-10-16 6.4.4-9 Michael.Kroell <michael.kroell@gmail...>
* Check if Image::Magick::constant is defined in AUTOLOAD() function.
2008-06-07 6.4.1-9 Cristy <quetzlzacatenango@image...>
* Permit settings of the form:
$image->Set("quantum:polarity","min-is-white").
2008-04-07 6.4.0-5 Cristy <quetzlzacatenango@image...>
* X11 regression test passed if the DISPLAY variable is not defined (reference
http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=10979).
* Make regression test, x11/write.t, exit after 8 seconds as stated (reference
http://www.imagemagick.org/discourse-server/viewtopic.php?f=3&t=10979).
2007-11-07 6.3.7-0 Cristy <quetzlzacatenango@image...>
* Added gravity attribute to Transform() method.
2007-09-12 6.3.5-9 Cristy <quetzlzacatenango@image...>
* Added GetPixel()/SetPixel() methods.
2007-06-22 6.3.4-2 grafman <grafman@graphcomp.com>
* Add GetImagePixels to return C pointer for image cache.
* Add SyncImagePixels to sync image cache.
* Add Quantum parameter to Get API to return Quantum-Depth.
2007-06-21 6.3.4-1 Cristy <quetzlzacatenango@image...>
* Add Distort.
2007-03-20 6.3.3-3 Cristy <quetzlzacatenango@image...>
* Add vector-graphics parameter to the Draw() method.
blob length was not being set properly).
2007-03-11 6.3.3-2 Cristy <quetzlzacatenango@image...>
* Read(blob=>$blob) and Ping(blob=>$blob) sometimes failed because the
blob length was not being set properly).
2007-01-23 cristy <cristy@virgi...>
* Add parameters fill-pattern and stroke-pattern to Annotate() and Draw().
2005-01-10 cristy <cristy@virgi...>
* Added normalize parameter to GetPixels(). Use normalize=>'true' to return
normalized pixel values.

View file

@ -0,0 +1,558 @@
Changelog
check.sh.in
demo/annotate.pl
demo/button.pl
demo/compose-specials.pl
demo/composite.pl
demo/demo.pl
demo/dst.png
demo/Generic.ttf
demo/lsys.pl
demo/Makefile
demo/model.gif
demo/piddle.pl
demo/pink-flower.gif
demo/pixel-fx.pl
demo/README
demo/red-flower.gif
demo/shadow-text.pl
demo/shapes.pl
demo/single-pixels.pl
demo/smile.gif
demo/src.png
demo/steganography.pl
demo/tile.gif
demo/tree.pl
demo/Turtle.pm
demo/yellow-flower.gif
Magick.pm
Magick.pm.in
Magick.xs
Makefile.am
Makefile.nt
Makefile.PL
Makefile.PL.in
MANIFEST
MANIFEST.SKIP
README.txt
t/blob.t
t/bzlib/input.miff
t/bzlib/read.t
t/bzlib/write.t
t/cgm/input.cgm
t/cgm/read.t
t/composite.t
t/filter.t
t/fpx/input_256.fpx
t/fpx/input_bw.fpx
t/fpx/input_grayscale.fpx
t/fpx/input_jpeg.fpx
t/fpx/input_truecolor.fpx
t/fpx/read.t
t/fpx/write.t
t/getattribute.t
t/hdf/input_256.hdf
t/hdf/input_truecolor.hdf
t/hdf/read.t
t/hdf/write.t
t/hpgl/input.hpgl
t/hpgl/read.t
t/input_16.miff
t/input_70x46.cmyk
t/input_70x46.gray
t/input_70x46.rgb
t/input_70x46.rgba
t/input_70x46.uyvy
t/input_70x46.yuv
t/input.avs
t/input.bie
t/input.bmp
t/input.bmp24
t/input.dcx
t/input.dib
t/input.fits
t/input.gif
t/input.gif87
t/input_gray_lsb_08bit.mat
t/input_gray_lsb_double.mat
t/input_gray_msb_08bit.mat
t/input.ico
t/input.im1
t/input.im24
t/input.im8
t/input.mat
t/input.miff
t/input.mtv
t/input_p1.pbm
t/input_p2.pgm
t/input_p3.ppm
t/input_p4.pbm
t/input_p5.pgm
t/input_p6.ppm
t/input.p7
t/input_p7.p7
t/input.pcx
t/input.pict
t/input.psd
t/input_rgb_lsb_08bit.mat
t/input.rle
t/input.sgi
t/input.tga
t/input.tim
t/input.viff
t/input.wbmp
t/input.wpg
t/input.xbm
t/input.xpm
t/jbig/input.jbig
t/jbig/read.t
t/jbig/write.t
t/jng/input_gray_idat.jng
t/jng/input_gray_jdaa.jng
t/jng/input_gray.jng
t/jng/input_gray_prog_idat.jng
t/jng/input_gray_prog_jdaa.jng
t/jng/input_gray_prog.jng
t/jng/input_idat.jng
t/jng/input_jdaa.jng
t/jng/input_prog_idat.jng
t/jng/input_prog_jdaa.jng
t/jng/input_prog.jng
t/jng/input_rose.jng
t/jng/read.t
t/jng/write.t
t/jp2/input.jp2
t/jp2/input.jpc
t/jp2/input.pgx
t/jp2/read.t
t/jpeg/input.jpg
t/jpeg/input_plane.jpg
t/jpeg/read.t
t/jpeg/write.t
t/MasterImage_70x46.ppm
t/montage.t
t/mpeg/input.m2v
t/mpeg/input.mpg
t/mpeg/read.t
t/ping.t
t/png/input_16.png
t/png/input_256.png
t/png/input_bw.png
t/png/input.mng
t/png/input_mono.png
t/png/input_truecolor.png
t/png/read-16.t
t/png/read.t
t/png/write-16.t
t/png/write.t
t/ps/input.eps
t/ps/input.miff
t/ps/input.ps
t/ps/read.t
t/ps/write.t
t/rad/input.rad
t/rad/read.t
t/rad/write.t
t/read.t
t/reference/cgm/read.miff
t/reference/composite/Add.miff
t/reference/composite/Atop.miff
t/reference/composite/Bumpmap.miff
t/reference/composite/Clear.miff
t/reference/composite/CopyBlue.miff
t/reference/composite/CopyGreen.miff
t/reference/composite/Copy.miff
t/reference/composite/CopyOpacity.miff
t/reference/composite/CopyRed.miff
t/reference/composite/Difference.miff
t/reference/composite/In.miff
t/reference/composite/Minus.miff
t/reference/composite/Multiply.miff
t/reference/composite/Out.miff
t/reference/composite/Over.miff
t/reference/composite/Plus.miff
t/reference/composite/Rotate.miff
t/reference/composite/Subtract.miff
t/reference/composite/Xor.miff
t/reference/filter/AdaptiveThreshold.miff
t/reference/filter/Annotate.miff
t/reference/filter/Blur.miff
t/reference/filter/Border.miff
t/reference/filter/Channel.miff
t/reference/filter/Charcoal.miff
t/reference/filter/Chop.miff
t/reference/filter/ColorFloodfill.miff
t/reference/filter/Colorize.miff
t/reference/filter/Contrast.miff
t/reference/filter/Convolve.miff
t/reference/filter/Crop.miff
t/reference/filter/Despeckle.miff
t/reference/filter/Draw.miff
t/reference/filter/Edge.miff
t/reference/filter/Emboss.miff
t/reference/filter/Equalize.miff
t/reference/filter/Flip.miff
t/reference/filter/Flop.miff
t/reference/filter/Frame.miff
t/reference/filter/Gamma.miff
t/reference/filter/GaussianBlur.miff
t/reference/filter/Implode.miff
t/reference/filter/Level.miff
t/reference/filter/Magnify.miff
t/reference/filter/MatteFloodfill.miff
t/reference/filter/MedianFilter.miff
t/reference/filter/Minify.miff
t/reference/filter/Modulate.miff
t/reference/filter/MotionBlur.miff
t/reference/filter/Negate.miff
t/reference/filter/Normalize.miff
t/reference/filter/OilPaint.miff
t/reference/filter/Opaque.miff
t/reference/filter/Quantize.miff
t/reference/filter/QuantizeMono.miff
t/reference/filter/RadialBlur.miff
t/reference/filter/Raise.miff
t/reference/filter/ReduceNoise.miff
t/reference/filter/Resize.miff
t/reference/filter/Roll.miff
t/reference/filter/Rotate.miff
t/reference/filter/Sample.miff
t/reference/filter/Scale.miff
t/reference/filter/Segment.miff
t/reference/filter/Set.miff
t/reference/filter/Shade.miff
t/reference/filter/Sharpen.miff
t/reference/filter/Shave.miff
t/reference/filter/Shear.miff
t/reference/filter/SigmoidalContrast.miff
t/reference/filter/Solarize.miff
t/reference/filter/Swirl.miff
t/reference/filter/Threshold.miff
t/reference/filter/Trim.miff
t/reference/filter/UnsharpMask.miff
t/reference/filter/Wave.miff
t/reference/jng/gray_idat_tmp.miff
t/reference/jng/gray_jdaa_tmp.miff
t/reference/jng/gray_prog_idat_tmp.miff
t/reference/jng/gray_prog_jdaa_tmp.miff
t/reference/jng/gray_prog_tmp.miff
t/reference/jng/gray_tmp.miff
t/reference/jng/idat_tmp.miff
t/reference/jng/input_gray_idat.miff
t/reference/jng/input_gray_jdaa.miff
t/reference/jng/input_gray.miff
t/reference/jng/input_gray_prog_idat.miff
t/reference/jng/input_gray_prog_jdaa.miff
t/reference/jng/input_gray_prog.miff
t/reference/jng/input_idat.miff
t/reference/jng/input_jdaa.miff
t/reference/jng/input_prog_idat.miff
t/reference/jng/input_prog_jdaa.miff
t/reference/jng/input_prog.miff
t/reference/jng/input_rose.miff
t/reference/jng/jdaa_tmp.miff
t/reference/jng/prog_idat_tmp.miff
t/reference/jng/prog_jdaa_tmp.miff
t/reference/jng/prog_tmp.miff
t/reference/jng/read_gray_idat.miff
t/reference/jng/read_gray_jdaa.miff
t/reference/jng/read_gray.miff
t/reference/jng/read_gray_prog_idat.miff
t/reference/jng/read_gray_prog_jdaa.miff
t/reference/jng/read_gray_prog.miff
t/reference/jng/read_idat.miff
t/reference/jng/read_jdaa.miff
t/reference/jng/read_prog_idat.miff
t/reference/jng/read_prog_jdaa.miff
t/reference/jng/read_prog.miff
t/reference/jng/write_gray_idat.miff
t/reference/jng/write_gray_jdaa.miff
t/reference/jng/write_gray.miff
t/reference/jng/write_gray_prog_idat.miff
t/reference/jng/write_gray_prog_jdaa.miff
t/reference/jng/write_gray_prog.miff
t/reference/jng/write_idat.miff
t/reference/jng/write_jdaa.miff
t/reference/jng/write_prog_idat.miff
t/reference/jng/write_prog_jdaa.miff
t/reference/jng/write_prog.miff
t/reference/jp2/read_jp2.miff
t/reference/jp2/read_jpc.miff
t/reference/jp2/read_pgx.miff
t/reference/jpeg/read_non_interlaced.miff
t/reference/jpeg/read_plane_interlaced.miff
t/reference/jpeg/write_non_interlaced.miff
t/reference/jpeg/write_plane_interlaced.miff
t/reference/read/gradient.miff
t/reference/read/granite.miff
t/reference/read/input_avs.miff
t/reference/read/input_bmp24.miff
t/reference/read/input_bmp.miff
t/reference/read/input_cmyk.miff
t/reference/read/input_dcx.miff
t/reference/read/input_dib.miff
t/reference/read/input_fits.miff
t/reference/read/input_gif87.miff
t/reference/read/input_gif.miff
t/reference/read/input_gray_lsb_08bit_mat.miff
t/reference/read/input_gray_lsb_double_mat.miff
t/reference/read/input_gray.miff
t/reference/read/input_gray_msb_08bit_mat.miff
t/reference/read/input_ico.miff
t/reference/read/input_im1.miff
t/reference/read/input_im24.miff
t/reference/read/input_im8.miff
t/reference/read/input_mat.miff
t/reference/read/input_miff.miff
t/reference/read/input_mtv.miff
t/reference/read/input_null_black.miff
t/reference/read/input_null_DarkOrange.miff
t/reference/read/input_null_white.miff
t/reference/read/input_p7.miff
t/reference/read/input_pbm_p1.miff
t/reference/read/input_pbm_p4.miff
t/reference/read/input_pcx.miff
t/reference/read/input_pgm_p2.miff
t/reference/read/input_pgm_p5.miff
t/reference/read/input_pict.miff
t/reference/read/input_ppm_p3.miff
t/reference/read/input_ppm_p6.miff
t/reference/read/input_psd.miff
t/reference/read/input_rgba.miff
t/reference/read/input_rgb_lsb_08bit_mat.miff
t/reference/read/input_rgb.miff
t/reference/read/input_rle.miff
t/reference/read/input_sgi.miff
t/reference/read/input_tga.miff
t/reference/read/input_tile.miff
t/reference/read/input_tim.miff
t/reference/read/input_uyvy.miff
t/reference/read/input_viff.miff
t/reference/read/input_wbmp.miff
t/reference/read/input_wpg.miff
t/reference/read/input_xbm.miff
t/reference/read/input_xc_black.miff
t/reference/read/input_xpm.miff
t/reference/read/input_xwd.miff
t/reference/ttf/annotate.miff
t/reference/ttf/label.miff
t/reference/ttf/read.miff
t/reference/wmf/clock.miff
t/reference/wmf/wizard.miff
t/reference/write/cgm/read.miff
t/reference/write/composite/Add.miff
t/reference/write/composite/Atop.miff
t/reference/write/composite/Bumpmap.miff
t/reference/write/composite/Clear.miff
t/reference/write/composite/CopyBlue.miff
t/reference/write/composite/CopyGreen.miff
t/reference/write/composite/Copy.miff
t/reference/write/composite/CopyOpacity.miff
t/reference/write/composite/CopyRed.miff
t/reference/write/composite/Difference.miff
t/reference/write/composite/In.miff
t/reference/write/composite/Minus.miff
t/reference/write/composite/Multiply.miff
t/reference/write/composite/Out.miff
t/reference/write/composite/Over.miff
t/reference/write/composite/Plus.miff
t/reference/write/composite/Rotate.miff
t/reference/write/composite/Subtract.miff
t/reference/write/composite/Xor.miff
t/reference/write/filter/AdaptiveThreshold.miff
t/reference/write/filter/Annotate.miff
t/reference/write/filter/Blur.miff
t/reference/write/filter/Border.miff
t/reference/write/filter/Channel.miff
t/reference/write/filter/Charcoal.miff
t/reference/write/filter/Chop.miff
t/reference/write/filter/ColorFloodfill.miff
t/reference/write/filter/Colorize.miff
t/reference/write/filter/Contrast.miff
t/reference/write/filter/Convolve.miff
t/reference/write/filter/Crop.miff
t/reference/write/filter/Despeckle.miff
t/reference/write/filter/Draw.miff
t/reference/write/filter/Edge.miff
t/reference/write/filter/Emboss.miff
t/reference/write/filter/Equalize.miff
t/reference/write/filter/Flip.miff
t/reference/write/filter/Flop.miff
t/reference/write/filter/Frame.miff
t/reference/write/filter/Gamma.miff
t/reference/write/filter/GaussianBlur.miff
t/reference/write/filter/Implode.miff
t/reference/write/filter/Level.miff
t/reference/write/filter/Magnify.miff
t/reference/write/filter/MatteFloodfill.miff
t/reference/write/filter/MedianFilter.miff
t/reference/write/filter/Minify.miff
t/reference/write/filter/Modulate.miff
t/reference/write/filter/MotionBlur.miff
t/reference/write/filter/Negate.miff
t/reference/write/filter/Normalize.miff
t/reference/write/filter/OilPaint.miff
t/reference/write/filter/Opaque.miff
t/reference/write/filter/Quantize.miff
t/reference/write/filter/RadialBlur.miff
t/reference/write/filter/Raise.miff
t/reference/write/filter/ReduceNoise.miff
t/reference/write/filter/Resize.miff
t/reference/write/filter/Roll.miff
t/reference/write/filter/Rotate.miff
t/reference/write/filter/Sample.miff
t/reference/write/filter/Scale.miff
t/reference/write/filter/Segment.miff
t/reference/write/filter/Set.miff
t/reference/write/filter/Shade.miff
t/reference/write/filter/Sharpen.miff
t/reference/write/filter/Shave.miff
t/reference/write/filter/Shear.miff
t/reference/write/filter/SigmoidalContrast.miff
t/reference/write/filter/Solarize.miff
t/reference/write/filter/Swirl.miff
t/reference/write/filter/Threshold.miff
t/reference/write/filter/Trim.miff
t/reference/write/filter/UnsharpMask.miff
t/reference/write/filter/Wave.miff
t/reference/write/jng/gray_idat_tmp.miff
t/reference/write/jng/gray_jdaa_tmp.miff
t/reference/write/jng/gray_prog_idat_tmp.miff
t/reference/write/jng/gray_prog_jdaa_tmp.miff
t/reference/write/jng/gray_prog_tmp.miff
t/reference/write/jng/gray_tmp.miff
t/reference/write/jng/idat_tmp.miff
t/reference/write/jng/input_gray_idat.miff
t/reference/write/jng/input_gray_jdaa.miff
t/reference/write/jng/input_gray.miff
t/reference/write/jng/input_gray_prog_idat.miff
t/reference/write/jng/input_gray_prog_jdaa.miff
t/reference/write/jng/input_gray_prog.miff
t/reference/write/jng/input_idat.miff
t/reference/write/jng/input_jdaa.miff
t/reference/write/jng/input_prog_idat.miff
t/reference/write/jng/input_prog_jdaa.miff
t/reference/write/jng/input_prog.miff
t/reference/write/jng/input_rose.miff
t/reference/write/jng/jdaa_tmp.miff
t/reference/write/jng/prog_idat_tmp.miff
t/reference/write/jng/prog_jdaa_tmp.miff
t/reference/write/jng/prog_tmp.miff
t/reference/write/jng/read_gray_idat.miff
t/reference/write/jng/read_gray_jdaa.miff
t/reference/write/jng/read_gray.miff
t/reference/write/jng/read_gray_prog_idat.miff
t/reference/write/jng/read_gray_prog_jdaa.miff
t/reference/write/jng/read_gray_prog.miff
t/reference/write/jng/read_idat.miff
t/reference/write/jng/read_jdaa.miff
t/reference/write/jng/read_prog_idat.miff
t/reference/write/jng/read_prog_jdaa.miff
t/reference/write/jng/read_prog.miff
t/reference/write/jng/write_gray_idat.miff
t/reference/write/jng/write_gray_jdaa.miff
t/reference/write/jng/write_gray.miff
t/reference/write/jng/write_gray_prog_idat.miff
t/reference/write/jng/write_gray_prog_jdaa.miff
t/reference/write/jng/write_gray_prog.miff
t/reference/write/jng/write_idat.miff
t/reference/write/jng/write_jdaa.miff
t/reference/write/jng/write_prog_idat.miff
t/reference/write/jng/write_prog_jdaa.miff
t/reference/write/jng/write_prog.miff
t/reference/write/jp2/read_jp2.miff
t/reference/write/jp2/read_jpc.miff
t/reference/write/jp2/read_pgx.miff
t/reference/write/jpeg/read_non_interlaced.miff
t/reference/write/jpeg/read_plane_interlaced.miff
t/reference/write/jpeg/write_non_interlaced.miff
t/reference/write/jpeg/write_plane_interlaced.miff
t/reference/write/read/gradient.miff
t/reference/write/read/granite.miff
t/reference/write/read/input_avs.miff
t/reference/write/read/input_bmp24.miff
t/reference/write/read/input_bmp.miff
t/reference/write/read/input_cmyk.miff
t/reference/write/read/input_dcx.miff
t/reference/write/read/input_dib.miff
t/reference/write/read/input_fits.miff
t/reference/write/read/input_gif87.miff
t/reference/write/read/input_gif.miff
t/reference/write/read/input_gray.miff
t/reference/write/read/input_ico.miff
t/reference/write/read/input_im1.miff
t/reference/write/read/input_im24.miff
t/reference/write/read/input_im8.miff
t/reference/write/read/input_mat.miff
t/reference/write/read/input_miff.miff
t/reference/write/read/input_mtv.miff
t/reference/write/read/input_null_black.miff
t/reference/write/read/input_null_DarkOrange.miff
t/reference/write/read/input_null_white.miff
t/reference/write/read/input_p7.miff
t/reference/write/read/input_pbm_p1.miff
t/reference/write/read/input_pbm_p4.miff
t/reference/write/read/input_pcx.miff
t/reference/write/read/input_pgm_p2.miff
t/reference/write/read/input_pgm_p5.miff
t/reference/write/read/input_pict.miff
t/reference/write/read/input_ppm_p3.miff
t/reference/write/read/input_ppm_p6.miff
t/reference/write/read/input_psd.miff
t/reference/write/read/input_rgba.miff
t/reference/write/read/input_rgb.miff
t/reference/write/read/input_rle.miff
t/reference/write/read/input_sgi.miff
t/reference/write/read/input_tga.miff
t/reference/write/read/input_tile.miff
t/reference/write/read/input_tim.miff
t/reference/write/read/input_uyvy.miff
t/reference/write/read/input_viff.miff
t/reference/write/read/input_wbmp.miff
t/reference/write/read/input_wpg.miff
t/reference/write/read/input_xbm.miff
t/reference/write/read/input_xc_black.miff
t/reference/write/read/input_xpm.miff
t/reference/write/read/input_xwd.miff
t/reference/write/ttf/annotate.miff
t/reference/write/ttf/label.miff
t/reference/write/ttf/read.miff
t/reference/write/wmf/clock.miff
t/reference/write/wmf/wizard.miff
t/setattribute.t
t/subroutines.pl
t/tiff/input_16_matte.tiff
t/tiff/input_16.tiff
t/tiff/input_256_matte.tiff
t/tiff/input_256_planar_contig.tiff
t/tiff/input_256_planar_separate.tiff
t/tiff/input_256.tiff
t/tiff/input_gray_12bit.tiff
t/tiff/input_gray_16bit.tiff
t/tiff/input_gray_4bit_matte.tiff
t/tiff/input_gray_4bit.tiff
t/tiff/input_gray_8bit_matte.tiff
t/tiff/input_gray_8bit.tiff
t/tiff/input_mono.tiff
t/tiff/input_truecolor_16.tiff
t/tiff/input_truecolor_stripped.tiff
t/tiff/input_truecolor.tiff
t/tiff/input_truecolor_tiled32x32.tiff
t/tiff/read.t
t/tiff/write.t
t/ttf/input.ttf
t/ttf/read.t
t/wmf/clock.wmf
t/wmf/read.t
t/wmf/wizard.wmf
t/write.t
t/x11/congrats.fig
t/x11/congrats.miff
t/x11/input.xwd
t/x11/read.t
t/x11/write.t
t/xfig/input.fig
t/xfig/read.t
t/zlib/input.miff
t/zlib/read.t
t/zlib/write.t

View file

@ -0,0 +1,16 @@
.*\.gdbinit$
.*core$
/output.*$
/test_.+_out\..+$
Magick\.bs$
Magick\.c$
Magick\.o$
\.bak$
\.svn$
\.old$
^MANIFEST\.
^MakeMaker-\d
^Makefile$
^blib/
^pm_to_blib$
~$

View file

@ -0,0 +1,69 @@
package Image::Magick;
# Copyright 1999-2013 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.
#
# Initial version, written by Kyle Shorter.
use strict;
use Carp;
use parent qw/Image::Magick::@MAGICK_ABI_SUFFIX@/;
1;
__END__
=head1 NAME
Image::Magick - objected-oriented Perl interface to ImageMagick for default quantum (@MAGICK_ABI_SUFFIX@). Use it to read, manipulate, or write an image or image sequence from within a Perl script.
=head1 SYNOPSIS
use Image::Magick;
$p = new Image::Magick;
$p->Read("imagefile");
$p->Set(attribute => value, ...)
($a, ...) = $p->Get("attribute", ...)
$p->routine(parameter => value, ...)
$p->Mogrify("Routine", parameter => value, ...)
$p->Write("filename");
=head1 DESCRIPTION
This Perl extension allows the reading, manipulation and writing of
a large number of image file formats using the ImageMagick library.
It was originally developed to be used by CGI scripts for Web pages.
A web page has been set up for this extension. See:
file://@DOCUMENTATION_PATH@/www/perl-magick.html
http://www.imagemagick.org/script/perl-magick.php
If you have problems, go to
http://www.imagemagick.org/discourse-server/viewforum.php?f=7
=head1 AUTHOR
Kyle Shorter magick-users@imagemagick.org
=head1 BUGS
Has all the bugs of ImageMagick and much, much more!
=head1 SEE ALSO
perl(1).
=cut

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,271 @@
# Copyright 1999-2013 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.
#
# Exercise all regression tests:
#
# make test
#
# Exersise one regression test:
#
# make TEST_VERBOSE=1 TEST_FILES=t/filter.t test
#
use ExtUtils::MakeMaker;
use Config;
use File::Spec::Functions qw/catfile catdir devnull catpath splitpath/;
use Cwd;
sub AutodetectWin32gcc {
my $wrkdir = getcwd();
my $devnull = devnull();
my @incdir = ();
my @libdir = ($wrkdir);
my @bindir = ();
#try to get configuration info via identify or convert utilities
my $conf = `identify -list Configure 2>$devnull` || `convert -list Configure 2>$devnull`;
foreach my $line (split '\n', $conf) {
if ($line =~ /^Path:\s+(.*)/) {
my ($vol,$dir,$file) = splitpath($1);
next unless $dir;
my $dirpath = catpath( $vol, $dir);
my (@l,@b,@i) = ( (),(),() );
# try to detect 'lib' dir
push @l, catfile($dirpath,'lib');
push @l, catfile($dirpath,'..','lib');
push @l, catfile($dirpath,'..','..','lib');
push @l, catfile($dirpath,'..','..','..','lib');
foreach (@l) { push @libdir, $_ if (-d $_) };
# try to detect 'bin' dir
push @b, catfile($dirpath);
push @b, catfile($dirpath,'bin');
push @b, catfile($dirpath,'..');
push @b, catfile($dirpath,'..','bin');
push @b, catfile($dirpath,'..','..');
push @b, catfile($dirpath,'..','..','bin');
push @b, catfile($dirpath,'..','..','..');
push @b, catfile($dirpath,'..','..','..','bin');
foreach (@b) { push @bindir, $_ if (-e "$_/convert.exe" || -e "$_/identify.exe") };
# try to detect 'include' dir
push @i, catfile($dirpath,'include');
push @i, catfile($dirpath,'include','ImageMagick');
push @i, catfile($dirpath,'..','include');
push @i, catfile($dirpath,'..','include','ImageMagick');
push @i, catfile($dirpath,'..','..','include');
push @i, catfile($dirpath,'..','..','include','ImageMagick');
push @i, catfile($dirpath,'..','..','..','include');
push @i, catfile($dirpath,'..','..','..','include','ImageMagick');
foreach (@i) { push @incdir, $_ if (-e "$_/magick/MagickCore.h") };
}
};
foreach my $bin (@bindir) {
opendir(my $bindir, $bin) or die qq{Cannot opendir $bin: $!};
my @dlls = map {catfile($bin, $_)} grep /^\S*magick[^\+]\S*?\.dll$/i, readdir $bindir;
foreach my $d (@dlls) {
unlink "$wrkdir/libMagickCore.def", "$wrkdir/libMagickCore.a";
system("pexports \"$d\" >\"$wrkdir/libMagickCore.def\" 2>$devnull");
open(DEF, "<$wrkdir/libMagickCore.def");
my @found = grep(/MagickCoreGenesis/, <DEF>); #checking if we have taken the right DLL
close(DEF);
next unless(@found);
print STDERR "Gonna create 'libMagickCore.a' from '$d'\n";
system("dlltool -D \"$d\" -d \"$wrkdir/libMagickCore.def\" -l \"$wrkdir/libMagickCore.a\" 2>$devnull");
last if -s "$wrkdir/libMagickCore.a";
}
last if -s "$wrkdir/libMagickCore.a";
}
unless(@incdir && @libdir && @bindir && (-s "$wrkdir/libMagickCore.a")) {
print STDERR <<EOF
################################### WARNING! ###################################
# It seems that you are trying to install Perl::Magick on a MS Windows box with
# perl + gcc compiler (e.g. strawberry perl), however we cannot find ImageMagick
# binaries installed on your system.
#
# Please check the following prerequisites:
#
# 1) You need to have installed ImageMagick Windows binaries from
# http://www.imagemagick.org/script/binary-releases.php#windows
#
# 2) We only support dynamic (DLL) ImageMagick binaries
# note: it is not possible to mix 32/64-bit binaries of perl and ImageMagick
#
# 3) During installation select that you want to install ImageMagick's
# development files (libraries+headers)
#
# 4) You also need to have ImageMagick's directory in your PATH
# note: we are checking the presence of convert.exe and/or identify.exe tools
#
# 5) You might need Visual C++ Redistributable Package installed on your system
# see instructions on ImageMagick's Binary Release webpage
#
# We are gonna continue, but chances for successful build are very low!
################################################################################
EOF
}
my $inc = join ' ', map "-I\"$_\"", @incdir;
my $lib = join ' ', map "-L\"$_\"", @libdir;
return ($inc, $lib);
}
sub AutodetectDelegates {
#try to get configuration info via identify or convert utilities
my $devnull = devnull();
my $conf = `identify -list Configure 2>$devnull` || `convert -list Configure 2>$devnull`;
my @delegates = ();
foreach my $line (split '\n', $conf) {
next unless $line =~ /^DELEGATES\s+/;
(undef, @delegates) = split /\s+/, $line;
last;
};
return @delegates;
}
# Compute test specification
my $delegate_tests='t/*.t';
my @tested_delegates = qw/bzlib djvu fftw fontconfig freetype jpeg jng jp2 lcms mpeg png rsvg tiff x11 xml wmf zlib/;
my @supported_delegates = AutodetectDelegates();
# find the intersection of tested and supported delegates
my %seen_delegates = ();
$seen_delegates{$_}++ for @supported_delegates;
foreach my $delegate (@tested_delegates) {
if ( $seen_delegates{$delegate} ) {
if ( -d "t/$delegate" ) {
if ( defined($ENV{'DISPLAY'}) && ($^O ne 'MSWin32') ) {
if ( defined $ENV{'DISPLAY'} ) {
$delegate_tests .= " t/$delegate/*.t";
}
next;
}
$delegate_tests .= " t/$delegate/*.t";
}
}
}
# defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile
my $INC_magick = '-I../ -I@top_srcdir@ @CPPFLAGS@ -I"' . $Config{'usrinc'} . '/ImageMagick"';
my $LIBS_magick = '-L../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ -lperl @MATH_LIBS@';
my $CCFLAGS_magick = "$Config{'ccflags'} @CFLAGS@";
my $LDFLAGS_magick = "-L../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'ldflags'} @LDFLAGS@";
my $LDDLFLAGS_magick = "-L../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'lddlflags'} @LDFLAGS@";
if (($^O eq 'MSWin32') && ($Config{cc} =~ /gcc/)) {
my($Ipaths, $Lpaths) = AutodetectWin32gcc();
#
# Setup for strawberry perl.
#
$INC_magick = "$Ipaths";
$LIBS_magick = "-lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@";
$CCFLAGS_magick = "$Config{'ccflags'}";
$LDFLAGS_magick = "$Config{'ldflags'} $Lpaths ";
$LDDLFLAGS_magick = "$Config{'lddlflags'} $Lpaths ";
}
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile
(
# Module description
'ABSTRACT' => 'ImageMagick PERL Extension',
# Perl module name is Image::Magick
'NAME' => 'Image::Magick',
# Module author
'AUTHOR' => 'ImageMagick Studio LLC',
# Module version
'VERSION' => '@PACKAGE_PERL_VERSION@',
# Prerequisite version
'PREREQ_PM' => {'parent' => '0'},
# Preprocessor defines
'DEFINE' => '@LFS_CPPFLAGS@ @DEFS@', # e.g., '-DHAVE_SOMETHING'
# Header search specfication and preprocessor flags
'INC' => $INC_magick,
# C compiler
#'CC' => '@CC@',
# C pre-processor flags (e.g. -I & -D options)
# 'CPPFLAGS' => "$Config{'cppflags'} @CPPFLAGS@",
# C compiler flags (e.g. -O -g)
'CCFLAGS' => $CCFLAGS_magick,
# Linker
#'LD' => $Config{'ld'} == $Config{'cc'} ? '@CC@' : $Config{'ld'},
# Linker flags for building an executable
'LDFLAGS' => $LDFLAGS_magick,
# Linker flags for building a dynamically loadable module
'LDDLFLAGS' => $LDDLFLAGS_magick,
# Install PerlMagick binary into ImageMagick bin directory
'INSTALLBIN' => '@BIN_DIR@',
# Library specification
'LIBS' => [ $LIBS_magick ],
# Perl binary name (if a Perl binary is built)
'MAP_TARGET' => 'PerlMagick',
# Let CFLAGS drive optimization flags by setting OPTIMIZE to empty
# 'OPTIMIZE' => '',
# Use same compiler as ImageMagick
'PERLMAINCC' => '@PERLMAINCC@ @OPENMP_CFLAGS@',
'AR' => '@AR@',
'LD' => '@PERLMAINCC@',
# Set Perl installation prefix to ImageMagick installation prefix
# 'PREFIX' => '@prefix@',
# Include delegate directories in tests
test => { TESTS => $delegate_tests},
($Config{'archname'} =~ /-object$/i ? ('CAPI' => 'TRUE') : ()),
# sane version
depend => { '$(FIRST_MAKEFILE)' => '$(VERSION_FROM)' }
);
#
# Substitutions for "makeaperl" section.
#
sub MY::makeaperl {
package MY; # so that "SUPER" works right
my $inherited = shift->SUPER::makeaperl(@_);
# Stinky ExtUtils::MM_Unix likes to append its own library path to $(CC),
# prior to any user-specified library path so that an installed library is
# used rather than the library just built. This substitution function
# tries to insert our library path first. Also, use the same compiler used
# to build perlmain.c to link so that a C++ compiler may be used if
# necessary.
$inherited =~ s:MAP_LINKCMD\s.*\s*\$\(CC\):MAP_LINKCMD = \$(PERLMAINCC) -L@MAGICKCORE_PATH@: ;
$inherited;
}

View file

@ -0,0 +1,138 @@
# Copyright 1999-2013 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.
#
# Copyright (C) 2003 - 2008 GraphicsMagick Group
#
# Makefile for building PerlMagick.
# If source files missing, see if they can be obtained via VPATH
$(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.xs: $(PERLMAGICK)/quantum/quantum.xs
$(AM_V_GEN) $(LN_S) $(notdir $^) $@
$(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.pm: $(PERLMAGICK)/quantum/quantum.pm
$(AM_V_GEN) $(LN_S) $(notdir $^) $@
perl-quantum-sources: $(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.xs $(PERLMAGICK)/quantum/@MAGICK_ABI_SUFFIX@.pm
perl-sources: perl-quantum-sources
@if test -n "$(VPATH)" ; then \
echo "Linking PerlMagick Sources ..." ; \
imagemagick=`(cd $(VPATH) ; pwd)` && \
( cd $(PERLMAGICK) && \
sh $$imagemagick/config/lndir.sh $$imagemagick/$(PERLMAGICK) ; ) \
fi ; \
touch perl-sources
if WITH_PERL
PERLMAGICK=PerlMagick
PERLMAKEMAKER=$(PERLMAGICK)/Makefile.PL
PERLMAKEFILE=$(PERLMAGICK)/Makefile
PERLMAGICK_ALL_LOCAL_TARGETS = all-perl
PERLMAGICK_INSTALL_EXEC_LOCAL_TARGETS = install-exec-perl
PERLMAGICK_INSTALL_DATA_LOCAL_TARGETS =
PERLMAGICK_UNINSTALL_LOCAL_TARGETS = uninstall-exec-perl
PERLMAGICK_CLEAN_LOCAL_TARGETS = clean-perl
PERLMAGICK_DISTCLEAN_LOCAL_TARGETS = clean-perl
PERLMAGICK_MAINTAINER_CLEAN_LOCAL_TARGETS = distclean-local
PERLMAGICK_TESTS = PerlMagick/check.sh
if WITH_PERL_DYNAMIC
PERLMAGICK_CHECKSCRPTS =
$(PERLMAKEFILE): perl-sources $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(PERLMAKEMAKER)
cd $(PERLMAGICK) && @PERL@ Makefile.PL $(PERL_MAKE_OPTIONS)
install-exec-perl: $(PERLMAKEFILE)
( cd $(PERLMAGICK) && $(MAKE) CC='@CC@' && \
$(MAKE) CC='@CC@' install )
all-perl: perl-sources
uninstall-exec-perl: $(PERLMAKEFILE)
echo "Uninstall not supported for PerlMagick"
check-perl: $(PERLMAKEFILE)
cd $(PERLMAGICK) && $(abs_top_builddir)/magick.sh $(MAKE) CC='@CC@' test
perl-build: $(PERLMAKEFILE)
( cd $(PERLMAGICK) && $(MAKE) CC='@CC@' )
else
if WITH_PERL_STATIC
PERLSTATICNAME=PerlMagick
PERLMAGICK_CHECKSCRPTS = perl-build
$(PERLMAKEFILE): perl-sources $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(PERLMAKEMAKER)
cd $(PERLMAGICK) && @PERL@ Makefile.PL MAP_TARGET=$(PERLSTATICNAME) $(PERL_MAKE_OPTIONS) && $(MAKE) Makefile ; $(MAKE) Makefile
$(PERLMAGICK)/$(PERLSTATICNAME): $(MAGICKCORE_LIBS) $(MAGICKWAND_LIBS) $(PERLMAKEFILE)
( rm -f $(PERLMAGICK)/$(PERLSTATICNAME) ; cd $(PERLMAGICK) && $(MAKE) CC='@CC@' $(PERLSTATICNAME) ; $(MAKE) CC='@CC@' $(PERLSTATICNAME) )
all-perl: $(PERLMAGICK)/$(PERLSTATICNAME)
install-exec-perl: $(PERLMAGICK)/$(PERLSTATICNAME)
rm -f "$(DESTDIR)$(BIN_DIR)/$(PERLSTATICNAME)"
if test "x$(DESTDIR)" = "x" -o "$(PERL_SUPPORTS_DESTDIR)" = 'yes' ; then \
( cd $(PERLMAGICK) && \
$(MAKE) -f Makefile.aperl CC='@CC@' inst_perl MAP_TARGET=$(PERLSTATICNAME) \
INSTALLBIN="$(BIN_DIR)" \
) ; \
else \
( cd $(PERLMAGICK) && \
$(MAKE) -f Makefile.aperl CC='@CC@' inst_perl MAP_TARGET=$(PERLSTATICNAME) \
INSTALLBIN="$(DESTDIR)$(BIN_DIR)" PREFIX="$(DESTDIR)$(prefix)" \
) ; \
fi
uninstall-exec-perl:
rm -f '$(DESTDIR)$(BIN_DIR)/$(PERLSTATICNAME)'
check-perl: $(PERLMAGICK)/$(PERLSTATICNAME)
cd $(PERLMAGICK) && $(abs_top_builddir)/magick.sh $(MAKE) -f Makefile.aperl CC='@CC@' test
perl-build: $(PERLMAGICK)/$(PERLSTATICNAME)
endif # WITH_PERL_STATIC
endif # WTIH_PERL_DYNAMIC
clean-perl:
(cd $(PERLMAGICK) && \
( if test -f Makefile.old ; then $(MAKE) -f Makefile.old CC='@CC@' clean ; fi ) ; \
( if test -f Makefile ; then $(MAKE) CC='@CC@' clean ; fi ) ; \
( if test -f Makefile ; then $(MAKE) CC='@CC@' clean ; fi ) ; \
rm -f Makefile.old PerlMagick ; \
rm -f t/output* t/jng/*_tmp.jng t/*/output* ; \
rm -f quantum/@MAGICK_ABI_SUFFIX@.xs;\
rm -f quantum/@MAGICK_ABI_SUFFIX@.pm;\
rm -f Magick.pm;)
rm -f perl-sources
distclean-perl: clean-perl
else
# Satisfy makefile requirements if not building PERL
all-perl:
install-exec-perl:
uninstall-exec-perl:
check-perl:
clean-perl:
distclean-perl:
endif # WITH_PERL

View file

@ -0,0 +1,169 @@
# Copyright (C) 1999-2013 ImageMagick Studio LLC
#
# This program is covered by multiple licenses, which are described in
# LICENSE. You should have received a copy of LICENSE with this
# package; otherwise see http://www.imagemagick.org/script/license.php.
#
# Makefile for building PerlMagick under Windows
#
#
#
use ExtUtils::MakeMaker;
use Config;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
#
# NOTE: The current ActiveState binary distribution does not completely setup
# the values in C:/Perl/lib/Config.pm. You must manually modify the values of
# libpth to add the VisualC++ library path. It should look similar to one of
# the following examples in order to work properly.
#
# Random developer
# libpth='"C:\Perl\lib\CORE" "D:\DevStudio\VC98\lib"'
#
# Visual Studio 6.0 default install:
# libpth='"C:\Program Files\Microsoft Visual Studio\VC98\lib" "C:\Perl\lib\CORE"'
#
# Visual Studio 7.0 default install:
# libpth='"C:\Program Files\Microsoft Visual Studio .NET\vc7\lib" "C:\Perl\lib\CORE"'
#
# Visual Studio 7.1 default install:
# libpth='"C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7\lib" "C:\Perl\lib\CORE"'
#
# Visual Studio 9.0 default install (C:\Perl\lib\Config.pm):
# libpth='"C:\Program Files\Microsoft Visual Studio 9.0\VC\lib" "C:\Perl\lib\CORE"'
#
WriteMakefile(
'ABSTRACT' => 'ImageMagick PERL Extension',
'AUTHOR' => 'ImageMagick Studio',
'NAME' => 'Image::Magick',
'VERSION_FROM' => 'Magick.pm', # finds $VERSION
'LIBS' => ['-L..\VisualMagick\lib -L..\VisualMagick\bin -lCORE_RL_magick_.lib -lCORE_DB_magick_.lib'],
'DEFINE' => '-D_VISUALC_ -D_WINDOWS', # e.g., '-DHAVE_SOMETHING'
'INC' => '-I.. -I..\xlib\include',
'BINARY_LOCATION' => 'x86/Image-Magick.tar.gz',
'dist' => {ZIP => "zip.exe", ZIPFLAGS=>"-r"},
'clean' => {FILES => "Image-Magick.ppd Image-Magick.tar.gz PerlMagick.zip " },
($Config{'archname'} =~ /-object$/i ? ('CAPI' => 'TRUE') : ()),
);
#
# Add a targets for building ActiveState ppm distribution modules
# Dylan Beattie <dylan@zepler.org>, April 2002
#
# Requires tar, gzip, and zip. This produces PerlMagick.zip
# Get GNU tar and gzip from http://sourceware.cygnus.com/
# Get Win32 command line PKZIP from http://www.pkware.com/
# and rename PKZIP.EXE to ZIP.EXE and PKUNZIP.EXE to UNZIP.EXE
# Make sure tar.exe, gzip.exe and zip.exe are in your system path
#
# 'nmake ppm' will include only the PerlMagick module
# 'nmake ppm-full' also includes all ImageMagick DLLs and MGK files
sub MY::postamble
{
'
Image-Magick.tar.gz: ppd pure_all #htmlifypods manifypods
if exist Image-Magick.tar.gz del Image-Magick.tar.gz
if exist Image-Magick.tar del Image-Magick.tar
$(TAR) $(TARFLAGS) Image-Magick.tar blib
$(COMPRESS) -q Image-Magick.tar
release: Image-Magick.tar.gz
ppm: ppd pure_all htmlifypods manifypods
if exist PerlMagick.zip del PerlMagick.zip
$(TAR) $(TARFLAGS) Image-Magick.tar blib
$(COMPRESS) -q Image-Magick.tar
if exist x86 del x86 /f /q
if exist x86 rd x86
md x86
copy Image-Magick.tar$(SUFFIX) x86
del Image-Magick.tar$(SUFFIX)
if exist ppm-readme.txt copy ppm-readme.txt readme
$(ZIP) $(ZIPFLAGS) PerlMagick.zip readme Image-Magick.ppd x86/Image-Magick.tar$(SUFFIX)
del x86\Image-Magick.tar$(SUFFIX)
rd x86
ppm-full: ppd pure_all htmlifypods manifypods
if exist PerlMagick-full.zip del PerlMagick-full.zip
copy ..\VisualMagick\bin\*.dll blib\arch\auto\Image\Magick
copy ..\VisualMagick\bin\*.xml blib\arch\auto\Image\Magick
$(TAR) $(TARFLAGS) Image-Magick.tar blib
$(COMPRESS) -q Image-Magick.tar
if exist x86 del x86 /f /q
if exist x86 rd x86
md x86
copy Image-Magick.tar$(SUFFIX) x86
del Image-Magick.tar$(SUFFIX)
if exist ppm-readme.txt copy ppm-readme.txt readme
$(ZIP) $(ZIPFLAGS) PerlMagick-full.zip readme Image-Magick.ppd x86/Image-Magick.tar$(SUFFIX)
del x86\Image-Magick.tar$(SUFFIX)
rd x86
'
}
#
# Modify the MakeMaker test fragment
#
sub MY::test
{
#
# List any ImageMagick features derived from add-on libraries
# or programs you would like to test.
#
# Valid choices are:
#
# Feature Formats Tested Prerequisites
# ======= ====================== ======================================
# bzlib BZip compression BZip library
# cgm CGM format 'ralcgm' program
# hdf HDF format HDF library
# jbig JBIG format JBIG library
# jpeg JPEG format JPEG library
# mpeg MPEG format 'ffmpeg' program
# png PNG format PNG and Zlib libraries
# ps Postscript format 'gs' program and/or DPS library
# rad Radiance format 'ra_ppm' program
# tiff TIFF format TIFF library
# ttf TrueType font format FreeType library
# x X11 support X-windows libraries and server
# xfig Xfig format 'transfig' program
# zlib Zip compression Zlib library
#
my @DELEGATES = qw/ bzlib cgm jbig jpeg mpeg png ps tiff wmf x xfig zlib/;
package MY; # so that "SUPER" works right
my $inherited = shift->SUPER::test(@_);
my $delegate_tests=
" t/setattribute.t" .
" t/getattribute.t" .
" t/filter.t" .
" t/read.t" .
" t/ping.t" .
" t/montage.t" .
" t/write.t" .
" t/hpgl/read.t" .
" t/jbig/read.t" .
" t/jbig/write.t" .
" t/jng/read.t" .
" t/jng/write.t" .
" t/jp2/read.t" .
" t/jpeg/read.t" .
" t/jpeg/write.t" .
" t/png/read.t" .
" t/png/write.t" .
" t/ps/read.t" .
" t/ps/write.t" .
" t/tiff/read.t" .
" t/tiff/write.t" .
" t/ttf/read.t" .
" t/wmf/read.t" .
" t/zlib/read.t" .
" t/zlib/write.t";
if ( defined $ENV{'DISPLAY'} ) {
$delegate_tests .= " t/x11/write.t t/x11/read.t";
}
$inherited =~ s:^TEST_FILES =.*:TEST_FILES = ${delegate_tests}:m;
$inherited;
}

View file

@ -0,0 +1,137 @@
Introduction
PerlMagick, is an objected-oriented Perl interface to ImageMagick.
Use the module to read, manipulate, or write an image or image sequence
from within a Perl script. This makes it suitable for Web CGI scripts. You
must have ImageMagick 6.8.3 or above installed on your system for this
module to work properly.
See
http://www.imagemagick.org/script/perl-magick.php
for additional information about PerlMagick. If you have problems, go to
http://www.imagemagick.org/discourse-server/viewforum.php?f=7
for help. For instructions about installing ImageMagick, see
http://www.imagemagick.org/
Installation
Get the PerlMagick distribution and type the following:
gunzip ImageMagick-6.8.3-0.tar.gz
tar xvf ImageMagick-6.8.3
Follow the ImageMagick installation instructions in INSTALL-unix.txt
then type
cd PerlMagick
Next, edit Makefile.PL and change LIBS and INC to include the appropriate
path information to the required libMagick library. You will also need
library search paths (-L) to JPEG, PNG, TIFF, etc. libraries if they were
included with your installed version of ImageMagick. If an extension
library is built as a shared library but not installed in the system's
default library search path, you may need to add run-path information
(often -R or -rpath) corresponding to the equivalent library search
path option so that the library can be located at run-time.
To create and install the dymamically-loaded version of PerlMagick
(the preferred way), execute
perl Makefile.PL
make
make install
To create and install a new 'perl' executable (replacing your existing
PERL interpreter!) with PerlMagick statically linked (but other libraries
linked statically or dynamically according to system linker default),
execute
perl Makefile.PL
make perl
make -f Makefile.aperl inst_perl
or to create and install a new PERL interpreter with a different name
than 'perl' (e.g. 'PerlMagick') and with PerlMagick statically linked
perl Makefile.PL MAP_TARGET=PerlMagick
make PerlMagick
make -f Makefile.aperl inst_perl
See the ExtUtils::MakeMaker(3) manual page for more information on
building PERL extensions (like PerlMagick).
For Windows systems, type
perl Makefile.nt
nmake install
For Unix, you typically need to be root to install the software.
There are ways around this. Consult the Perl manual pages for more
information. You are now ready to utilize the PerlMagick routines from
within your Perl scripts.
Installation - Win32 Strawberry perl
On Win32 Strawberry perl the prefered way of installing PerlMagick is the
following:
1) Download and install ImageMagick Windows binaries from
http://www.imagemagick.org/script/binary-releases.php#windows
2) You HAVE TO choose dynamic (DLL) ImageMagick binaries. Note: it is not
possible to mix 32/64bit binaries of perl and ImageMagick
3) During installation select that you want to install ImageMagick's
development files (libraries+headers)
4) You NEED TO have ImageMagick's directory in your PATH. Note: we are
checking the presence of convert.exe or identify.exe tools
5) You might need Visual C++ Redistributable Package installed on your
system. See instructions on ImageMagick's Binary Release webpage.
6) If you have all prerequisites 1)...5) you can simply install
ImageMagick by running: cpan -i Image::Magick
Testing PerlMagick
Before PerlMagick is installed, you may want to execute
make test
to verify that PERL can load the PerlMagick extension ok. Chances are
some of the tests will fail if you do not have the proper delegates
installed for formats like JPEG, TIFF, etc.
To see a number of PerlMagick demonstration scripts, type
cd demo
make
Example Perl Magick Script
Here is an example script to get you started:
#!/usr/bin/perl
use Image::Magick;
$q = Image::Magick->new;
$x = $q->Read("model.gif", "logo.gif", "rose.gif");
warn "$x" if $x;
$x = $q->Crop(geom=>'100x100+100+100');
warn "$x" if $x;
$x = $q->Write("x.gif");
warn "$x" if $x;
The script reads three images, crops them, and writes a single image
as a GIF animation sequence.

View file

@ -0,0 +1,52 @@
#!/bin/sh
# Copyright 1999-2013 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.
#
# Copyright (C) 2003 - 2009 GraphicsMagick Group
#
# Check script for building PerlMagick.
echo "LD_LIBRARY_PATH='${LD_LIBRARY_PATH}'"
echo "MAGICK_CODER_MODULE_PATH='${MAGICK_CODER_MODULE_PATH}'"
echo "MAGICK_CONFIGURE_PATH='${MAGICK_CONFIGURE_PATH}'"
echo "MAGICK_FILTER_MODULE_PATH='${MAGICK_FILTER_MODULE_PATH}'"
echo "MAKE='${MAKE}'"
echo "MAKEFLAGS='${MAKEFLAGS}'"
echo "MEMCHECK='${MEMCHECK}'"
echo "PATH='${PATH}'"
echo "SRCDIR='${SRCDIR}'"
echo "srcdir='${srcdir}'"
set -x
SRCDIR=`dirname $0`
SRCDIR=`cd $SRCDIR && pwd`
TOPSRCDIR=`cd $srcdir && pwd`
cd PerlMagick || exit 1
if test -z "${MAKE}" ; then
MAKE=make
fi
if test -x PerlMagick -a -f Makefile.aperl ; then
# Static build test incantation
${MAKE} -f Makefile.aperl CC='@CC@' TEST_VERBOSE=1 test
elif test -f Makefile -a -f Magick.o; then
# Shared build test incantation
${MAKE} CC='@CC@' TEST_VERBOSE=1 test
else
echo 'PerlMagick has not been built!'
exit 1
fi

Binary file not shown.

View file

@ -0,0 +1,17 @@
all:
perl demo.pl
perl button.pl
perl shapes.pl
perl piddle.pl
perl tree.pl
perl steganography.pl
perl shadow-text.pl
perl compose-specials.pl
perl pixel-fx.pl
perl single-pixels.pl
perl annotate.pl
perl composite.pl
clean:
/bin/rm -f demo.jpg button.gif model.png shadow.gif tree.gif \
compose-specials.jpg single-pixels.gif pixel-fx.gif

View file

@ -0,0 +1,6 @@
This directory contains a number of PerlMagick demonstration scripts. Just
type
make
to exercise the various examples.

View file

@ -0,0 +1,57 @@
package
Turtle;
# Written by jreed@itis.com, adapted by Cristy.
sub new
{
my $class = shift;
my $self = {};
@{$self}{qw(x y theta mirror)} = @_;
bless $self, $class;
}
sub forward
{
my $self = shift;
my ($r, $what) = @_;
my ($newx, $newy)=($self->{x}+$r* sin($self->{theta}),
$self->{y}+$r*-cos($self->{theta}));
if ($what) {
&$what($self->{x}, $self->{y}, $newx, $newy); # motion
}
# According to the coderef passed in
($self->{x}, $self->{y})=($newx, $newy); # change the old coords
}
sub turn
{
my $self = shift;
my $dtheta = shift;
$self->{theta} += $dtheta*$self->{mirror};
}
sub state
{
my $self = shift;
@{$self}{qw(x y theta mirror)};
}
sub setstate
{
my $self = shift;
@{$self}{qw(x y theta mirror)} = @_;
}
sub mirror
{
my $self = shift;
$self->{mirror} *= -1;
}
"Turtle.pm";

View file

@ -0,0 +1,40 @@
#!/usr/bin/perl
use Image::Magick;
#$font = '-adobe-helvetica-medium-r-normal--25-180-100-100-p-130-iso8729-1';
#$font = 'Times';
$font = 'Generic.ttf';
$image = Image::Magick->new();
$x = 100;
$y = 100;
for ($angle=0; $angle < 360; $angle+=30)
{
my ($label);
print "angle $angle\n";
$label=Image::Magick->new(size=>"600x600",pointsize=>24,font=>$font);
$label->Read("xc:white");
$label->Draw(primitive=>'line',points=>"300,100 300,500",stroke=>'#600');
$label->Draw(primitive=>'line',points=>"100,300 500,300",stroke=>'#600');
$label->Draw(primitive=>'rectangle',points=>"100,100 500,500",fill=>'none',
stroke=>'#600');
$label->Annotate(text=>"North West",gravity=>"NorthWest",x=>$x,y=>$y,
undercolor=>'yellow',rotate=>$angle);
$label->Annotate(text=>"North",gravity=>"North",y=>$y,rotate=>$angle);
$label->Annotate(text=>"North East",gravity=>"NorthEast",x=>$x,y=>$y,
rotate=>$angle);
$label->Annotate(text=>"West",gravity=>"West",x=>$x,rotate=>$angle);
$label->Annotate(text=>"Center",gravity=>"Center",rotate=>$angle);
$label->Annotate(text=>"East",gravity=>"East",x=>$x,rotate=>$angle);
$label->Annotate(text=>"South West",gravity=>"SouthWest",x=>$x,y=>$y,
rotate=>$angle);
$label->Annotate(text=>"South",gravity=>"South",y=>$y,rotate=>$angle);
$label->Annotate(text=>"South East",gravity=>"SouthEast",x=>$x,y=>$y,
rotate=>$angle);
push(@$image,$label);
}
$image->Set(delay=>20);
$image->Write("annotate.miff");
$image->Animate();

View file

@ -0,0 +1,71 @@
#!/usr/bin/perl
#
# annotate_words.pl
#
# Take the internal string, split it into words and try to annotate each
# individual word correctly, so as to control spacing between the words
# under program control.
#
# A demonstration of using QueryFontMetrics(), by passing it exactly the same
# arguments as you would for Annotate(), to determine the location of the
# text that is/was drawn.
#
# Example script from Zentara
# http://zentara.net/Remember_How_Lucky_You_Are.html
#
use warnings;
use strict;
use Image::Magick;
my $image = Image::Magick->new;
$image->Set(size=>'500x200');
my $rc = $image->Read("xc:white");
my $str = 'Just Another Perl Hacker';
my (@words) = split ' ',$str;
#print join "\n",@words,"\n";
my ($x,$y) = (50,50);
foreach my $word (@words){
$image->Annotate(
pointsize => 24,
fill => '#000000ff', #last 2 digits transparency in hex ff=max
text => $word,
gravity => 'NorthWest',
align => 'left',
x => $x,
y => $y,
);
my ( $character_width,$character_height,$ascender,$descender,$text_width,
$text_height,$maximum_horizontal_advance, $boundsx1, $boundsy1,
$boundsx2, $boundsy2,$originx,$originy) =
$image->QueryFontMetrics(
pointsize => 24,
text => $word,
gravity => 'NorthWest',
align => 'left',
x => $x,
y => $y,
);
print "$word ( $character_width, $character_height,
$ascender,$descender,
$text_width, $text_height,
$maximum_horizontal_advance,
$boundsx1, $boundsy1,
$boundsx2, $boundsy2,
$originx,$originy)\n";
my $n = $x + $originx + $character_width/3; # add a space
print "Next word at: $x + $originx + $character_width/3 => $n\n";
$x = $n;
}
$image->Write("show:");
exit;

View file

@ -0,0 +1,15 @@
#!/usr/bin/perl
#
# Make simple beveled button.
#
use Image::Magick;
$q=Image::Magick->new;
$q->Set(size=>'30x106');
$q->Read('gradient:#00f685-#0083f8');
$q->Rotate(-90);
$q->Raise('6x6');
$q->Annotate(text=>'Push Me',font=>'Generic.ttf',fill=>'black',
gravity=>'Center',pointsize=>18);
$q->Write('button.gif');
$q->Write('win:');

View file

@ -0,0 +1,252 @@
#!/usr/bin/perl
#
# Demonstration of some of the fancier Image Composition Methods
# including the 'rotate' parameter specific to PerlMagick Composite()
#
# NOTE: versions of IM older than IM v6.5.3-4 will need to rename the
# parameter "args=>" to the mis-named "blend=>" parameter.
#
# Also not that "composite -watermark" is actually known as the compose
# method "Modulate".
#
# Essentually each image is equivelent to
# convert logo: -crop 80x80+140+60 +repage \
# -size 60x60 gradient:black-white \
# -alpha set miff:- |\
# composite - -geometry +10+10 -virtual-pixel gray \
# -dissolve 70x30 show:
# for various composition methods.
#
use strict;
use Image::Magick;
# Background or Destination image
my $dest=Image::Magick->new();
$dest->Read('logo:');
$dest->Crop('100x100+400+100'); # wizards hat
$dest->Set(page=>'0x0+0+0');
$dest->Set(alpha=>'Set');
# Source, Composite or Overlay image
my $src=Image::Magick->new();
$src->Set(size=>'80x80');
$src->Read('gradient:black-white');
$src->Set(alpha=>'Set');
my $offset="+10+10";
# Circle Mask Image (same size as Destination)
my $circle=Image::Magick->new();
$circle->Set(size=>'100x100');
$circle->Read('xc:black');
$circle->Draw(fill=>'white',primitive=>'circle',points=>'49.5,49.5 10,49.5');
my $texture=Image::Magick->new();
$texture->Read('pattern:checkerboard');
# List of images generated
my $results=Image::Magick->new();
# Working copy of Destination Image
my $clone;
# ----------------------------------------
# Normal Composition Methods
$clone=$dest->Clone();
$clone->Label('Over\n(normal compose)');
$clone->Composite(
image=>$src,
compose=>'over',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Multiply\n(add black)');
$clone->Composite(
image=>$src,
compose=>'multiply',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Screen\n(add white)');
$clone->Composite(
image=>$src,
compose=>'screen',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('HardLight\n(light effects)');
$clone->Composite(
image=>$src,
compose=>'hardlight',
geometry=>$offset,
);
push(@$results, $clone);
# ---------------
# Masked and Blending Demonstartion
$clone=$dest->Clone();
$clone->Label('Circle Masked\n(three image)');
$clone->Composite(
image=>$src,
mask=>$circle,
compose=>'over',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Blend 50x50\n(50% plus 50%)');
$clone->Composite(
image=>$src,
compose=>'blend',
args=>'50x50',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Dissolve 50x50\n(50% over 50%)');
$clone->Composite(
image=>$src,
compose=>'dissolve',
args=>'50x50',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Dissolve 50\n(50% over 100%)');
$clone->Composite(
image=>$src,
compose=>'dissolve',
args=>'50',
geometry=>$offset,
);
push(@$results, $clone);
# ---------------
# Displacement Demonstartion
$clone=$dest->Clone();
$clone->Label('Displace 50x0\n(displace horiz)');
$clone->Set('virtual-pixel'=>'gray');
$clone->Composite(
image=>$src,
compose=>'displace',
args=>'50x0',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Displace 0x50\n(compress vert)');
$clone->Set('virtual-pixel'=>'gray');
$clone->Composite(
image=>$src,
compose=>'displace',
args=>'0x50',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Displace 50x50\n(diagonal)');
$clone->Set('virtual-pixel'=>'gray');
$clone->Composite(
image=>$src,
compose=>'displace',
args=>'50x50',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Displace 0,-80\n(displace flip)');
$clone->Set('virtual-pixel'=>'gray');
$clone->Composite(
image=>$src,
compose=>'displace',
args=>'0,-80',
geometry=>$offset,
);
push(@$results, $clone);
# ---------------
# Demonstrate rotation
# note that offset is automatically adjusted to keep rotated image
# centered relative to its '0' rotation position
$clone=$dest->Clone();
$clone->Label('Rotate 0\n');
$clone->Composite(
image=>$src,
compose=>'over',
rotate=>0,
background=>'none',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Rotate 10\n');
$clone->Composite(
image=>$src,
compose=>'over',
rotate=>10,
background=>'none',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Rotate 45\n');
$clone->Composite(
image=>$src,
compose=>'over',
rotate=>45,
background=>'none',
geometry=>$offset,
);
push(@$results, $clone);
$clone=$dest->Clone();
$clone->Label('Rotate 90\n');
$clone->Composite(
image=>$src,
compose=>'over',
rotate=>90,
background=>'none',
geometry=>$offset,
);
push(@$results, $clone);
# ----------------------------------------
# Output the changed pixels
# to every image underlay a checkboard pattern
# so as to show if any transparency is present
for my $image ( @$results ) {
$image->Composite(
image=>$texture,
tile=>'True',
compose=>'DstOver',
);
}
my $montage=$results->Montage(
geometry=>'+10+10',
tile=>'4x',
frame=>'6x6+2+2',
shadow=>'True',
);
$montage->Write('show:');
$montage->Write('compose_specials.jpg');

View file

@ -0,0 +1,44 @@
#!/usr/bin/perl
use Image::Magick;
#$font = '-adobe-helvetica-medium-r-normal--25-180-100-100-p-130-iso8729-1';
#$font = 'Times';
$font = 'Generic.ttf';
$image = Image::Magick->new();
$smile = Image::Magick->new();
$smile->Read('smile.gif');
$smile->Set(background=>'none');
$x = 100;
$y = 100;
for ($angle=0; $angle < 360; $angle+=30)
{
my ($thumbnail);
print "angle $angle\n";
$thumbnail=Image::Magick->new(size=>"600x600",pointsize=>24,font=>$font,
fill=>'black');
$thumbnail->Read("xc:white");
$thumbnail->Draw(primitive=>'line',points=>"300,100 300,500",stroke=>'#600');
$thumbnail->Draw(primitive=>'line',points=>"100,300 500,300",stroke=>'#600');
$thumbnail->Draw(primitive=>'rectangle',points=>"100,100 500,500",
fill=>'none',stroke=>'#600');
$thumbnail->Composite(image=>$smile,gravity=>"NorthWest",x=>$x,y=>$y,
rotate=>$angle);
$thumbnail->Composite(image=>$smile,gravity=>"North",y=>$y,rotate=>$angle);
$thumbnail->Composite(image=>$smile,gravity=>"NorthEast",x=>$x,y=>$y,
rotate=>$angle);
$thumbnail->Composite(image=>$smile,gravity=>"West",x=>$x,rotate=>$angle);
$thumbnail->Composite(image=>$smile,gravity=>"Center",rotate=>$angle);
$thumbnail->Composite(image=>$smile,gravity=>"East",x=>$x,rotate=>$angle);
$thumbnail->Composite(image=>$smile,gravity=>"SouthWest",x=>$x,y=>$y,
rotate=>$angle);
$thumbnail->Composite(image=>$smile,gravity=>"South",y=>$y,rotate=>$angle);
$thumbnail->Composite(image=>$smile,gravity=>"SouthEast",x=>$x,y=>$y,
rotate=>$angle);
push(@$image,$thumbnail);
}
$image->Set(delay=>20);
$image->Write("composite.miff");
$image->Animate();

View file

@ -0,0 +1,483 @@
#!/usr/bin/perl
#
# Overall demo of the major PerlMagick methods.
#
use Image::Magick;
#
# Read model & smile image.
#
print "Read...\n";
$null=Image::Magick->new;
$null->Set(size=>'70x70');
$x=$null->ReadImage('NULL:black');
warn "$x" if "$x";
$model=Image::Magick->new();
$x=$model->ReadImage('model.gif');
warn "$x" if "$x";
$model->Label('Magick');
$model->Set(background=>'white');
$smile=Image::Magick->new;
$x=$smile->ReadImage('smile.gif');
warn "$x" if "$x";
$smile->Label('Smile');
$smile->Set(background=>'white');
#
# Create image stack.
#
print "Transform image...\n";
$images=Image::Magick->new();
print "Adaptive Blur...\n";
$example=$model->Clone();
$example->Label('Adaptive Blur');
$example->AdaptiveBlur('0x1');
push(@$images,$example);
print "Adaptive Resize...\n";
$example=$model->Clone();
$example->Label('Adaptive Resize');
$example->AdaptiveResize('60%');
push(@$images,$example);
print "Adaptive Sharpen...\n";
$example=$model->Clone();
$example->Label('Adaptive Sharpen');
$example->AdaptiveSharpen('0x1');
push(@$images,$example);
print "Adaptive Threshold...\n";
$example=$model->Clone();
$example->Label('Adaptive Threshold');
$example->AdaptiveThreshold('5x5+5%');
push(@$images,$example);
print "Add Noise...\n";
$example=$model->Clone();
$example->Label('Add Noise');
$example->AddNoise("Laplacian");
push(@$images,$example);
print "Annotate...\n";
$example=$model->Clone();
$example->Label('Annotate');
$example->Annotate(text=>'Magick',geometry=>'+0+20',font=>'Generic.ttf',
fill=>'gold',gravity=>'North',pointsize=>14);
push(@$images,$example);
print "Auto-gamma...\n";
$example=$model->Clone();
$example->Label('Auto Gamma');
$example->AutoGamma();
push(@$images,$example);
print "Auto-level...\n";
$example=$model->Clone();
$example->Label('Auto Level');
$example->AutoLevel();
push(@$images,$example);
print "Blur...\n";
$example=$model->Clone();
$example->Label('Blur');
$example->Blur('0.0x1.0');
push(@$images,$example);
print "Border...\n";
$example=$model->Clone();
$example->Label('Border');
$example->Border(geometry=>'6x6',color=>'gold');
push(@$images,$example);
print "Channel...\n";
$example=$model->Clone();
$example->Label('Channel');
$example->Channel(channel=>'red');
push(@$images,$example);
print "Charcoal...\n";
$example=$model->Clone();
$example->Label('Charcoal');
$example->Charcoal('0x1');
push(@$images,$example);
print "ColorMatrix...\n";
$example=$model->Clone();
$example->Label('ColorMatrix');
$example->ColorMatrix([1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0.5, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1]);
push(@$images,$example);
print "Composite...\n";
$example=$model->Clone();
$example->Label('Composite');
$example->Composite(image=>$smile,compose=>'over',geometry=>'+35+65');
$example->Clamp();
push(@$images,$example);
print "Contrast...\n";
$example=$model->Clone();
$example->Label('Contrast');
$example->Contrast();
push(@$images,$example);
print "Contrast Stretch...\n";
$example=$model->Clone();
$example->Label('Contrast Stretch');
$example->ContrastStretch('5%');
push(@$images,$example);
print "Convolve...\n";
$example=$model->Clone();
$example->Label('Convolve');
$example->Convolve([1, 1, 1, 1, 4, 1, 1, 1, 1]);
push(@$images,$example);
print "Crop...\n";
$example=$model->Clone();
$example->Label('Crop');
$example->Crop(geometry=>'80x80+25+50');
$example->Set(page=>'0x0+0+0');
push(@$images,$example);
print "Despeckle...\n";
$example=$model->Clone();
$example->Label('Despeckle');
$example->Despeckle();
push(@$images,$example);
print "Distort...\n";
$example=$model->Clone();
$example->Label('Distort');
$example->Distort(method=>'arc',points=>[60],'virtual-pixel'=>'white');
push(@$images,$example);
print "Draw...\n";
$example=$model->Clone();
$example->Label('Draw');
$example->Draw(fill=>'none',stroke=>'gold',primitive=>'circle',
points=>'60,90 60,120',strokewidth=>2);
push(@$images,$example);
print "Detect Edges...\n";
$example=$model->Clone();
$example->Label('Detect Edges');
$example->Edge();
$example->Clamp();
push(@$images,$example);
print "Emboss...\n";
$example=$model->Clone();
$example->Label('Emboss');
$example->Emboss('0x1');
push(@$images,$example);
print "Encipher...\n";
$example=$model->Clone();
$example->Label('Encipher');
$example->Encipher('Magick');
push(@$images,$example);
print "Equalize...\n";
$example=$model->Clone();
$example->Label('Equalize');
$example->Equalize();
push(@$images,$example);
print "Implode...\n";
$example=$model->Clone();
$example->Label('Explode');
$example->Implode(-1);
push(@$images,$example);
print "Flip...\n";
$example=$model->Clone();
$example->Label('Flip');
$example->Flip();
push(@$images,$example);
print "Flop...\n";
$example=$model->Clone();
$example->Label('Flop');
$example->Flop();
push(@$images,$example);
print "Frame...\n";
$example=$model->Clone();
$example->Label('Frame');
$example->Frame('15x15+3+3');
push(@$images,$example);
print "Fx...\n";
$example=$model->Clone();
$example->Label('Fx');
push(@$images,$example->Fx(expression=>'0.5*u'));
print "Gamma...\n";
$example=$model->Clone();
$example->Label('Gamma');
$example->Gamma(1.6);
push(@$images,$example);
print "Gaussian Blur...\n";
$example=$model->Clone();
$example->Label('Gaussian Blur');
$example->GaussianBlur('0.0x1.5');
push(@$images,$example);
print "Gradient...\n";
$gradient=Image::Magick->new;
$gradient->Set(size=>'130x194');
$x=$gradient->ReadImage('gradient:#20a0ff-#ffff00');
warn "$x" if "$x";
$gradient->Label('Gradient');
push(@$images,$gradient);
print "Grayscale...\n";
$example=$model->Clone();
$example->Label('Grayscale');
$example->Set(type=>'grayscale');
push(@$images,$example);
print "Implode...\n";
$example=$model->Clone();
$example->Label('Implode');
$example->Implode(0.5);
push(@$images,$example);
print "Level...\n";
$example=$model->Clone();
$example->Label('Level');
$example->Level('20%x');
$example->Clamp();
push(@$images,$example);
print "Median Filter...\n";
$example=$model->Clone();
$example->Label('Median Filter');
$example->MedianFilter();
push(@$images,$example);
print "Mode...\n";
$example=$model->Clone();
$example->Label('Mode');
$example->Mode();
push(@$images,$example);
print "Modulate...\n";
$example=$model->Clone();
$example->Label('Modulate');
$example->Modulate(brightness=>110,saturation=>110,hue=>110);
push(@$images,$example);
$example=$model->Clone();
print "Monochrome...\n";
$example=$model->Clone();
$example->Label('Monochrome');
$example->Quantize(colorspace=>'gray',colors=>2,dither=>'false');
push(@$images,$example);
print "Morphology...\n";
$example=$model->Clone();
$example->Label('Morphology');
$example->Morphology(method=>'Dilate',kernel=>'Diamond',iterations=>2);
push(@$images,$example);
print "Motion Blur...\n";
$example=$model->Clone();
$example->Label('Motion Blur');
$example->MotionBlur('0x13+10-10');
push(@$images,$example);
print "Negate...\n";
$example=$model->Clone();
$example->Label('Negate');
$example->Negate();
push(@$images,$example);
print "Normalize...\n";
$example=$model->Clone();
$example->Label('Normalize');
$example->Normalize();
push(@$images,$example);
print "Oil Paint...\n";
$example=$model->Clone();
$example->Label('Oil Paint');
$example->OilPaint();
push(@$images,$example);
print "Plasma...\n";
$plasma=Image::Magick->new;
$plasma->Set(size=>'130x194');
$x=$plasma->ReadImage('plasma:fractal');
warn "$x" if "$x";
$plasma->Label('Plasma');
push(@$images,$plasma);
print "Polaroid...\n";
$example=$model->Clone();
$example->Label('Polaroid');
$example->Polaroid(caption=>'Magick',angle=>-5.0,gravity=>'center');
push(@$images,$example);
print "Posterize...\n";
$example=$model->Clone();
$example->Label('Posterize');
$example->Posterize(5);
push(@$images,$example);
print "Quantize...\n";
$example=$model->Clone();
$example->Label('Quantize');
$example->Quantize();
push(@$images,$example);
print "Radial Blur...\n";
$example=$model->Clone();
$example->Label('Radial Blur');
$example->RadialBlur(10);
push(@$images,$example);
print "Raise...\n";
$example=$model->Clone();
$example->Label('Raise');
$example->Raise('10x10');
push(@$images,$example);
print "Reduce Noise...\n";
$example=$model->Clone();
$example->Label('Reduce Noise');
$example->ReduceNoise();
push(@$images,$example);
print "Resize...\n";
$example=$model->Clone();
$example->Label('Resize');
$example->Resize('60%');
push(@$images,$example);
print "Roll...\n";
$example=$model->Clone();
$example->Label('Roll');
$example->Roll(geometry=>'+20+10');
push(@$images,$example);
print "Rotate...\n";
$example=$model->Clone();
$example->Label('Rotate');
$example->Rotate(45);
push(@$images,$example);
print "Sample...\n";
$example=$model->Clone();
$example->Label('Sample');
$example->Sample('60%');
push(@$images,$example);
print "Scale...\n";
$example=$model->Clone();
$example->Label('Scale');
$example->Scale('60%');
push(@$images,$example);
print "Segment...\n";
$example=$model->Clone();
$example->Label('Segment');
$example->Segment();
push(@$images,$example);
print "Shade...\n";
$example=$model->Clone();
$example->Label('Shade');
$example->Shade(geometry=>'30x30',gray=>'true');
push(@$images,$example);
print "Sharpen...\n";
$example=$model->Clone();
$example->Label('Sharpen');
$example->Sharpen('0.0x1.0');
$example->Clamp();
push(@$images,$example);
print "Shave...\n";
$example=$model->Clone();
$example->Label('Shave');
$example->Shave('10x10');
push(@$images,$example);
print "Shear...\n";
$example=$model->Clone();
$example->Label('Shear');
$example->Shear('-20x20');
push(@$images,$example);
print "Sketch...\n";
$example=$model->Clone();
$example->Label('Sketch');
$example->Set(colorspace=>'Gray');
$example->Sketch('0x20+120');
push(@$images,$example);
print "Sigmoidal Contrast...\n";
$example=$model->Clone();
$example->Label('Sigmoidal Contrast');
$example->SigmoidalContrast("3x50%");
push(@$images,$example);
print "Spread...\n";
$example=$model->Clone();
$example->Label('Spread');
$example->Spread();
push(@$images,$example);
print "Solarize...\n";
$example=$model->Clone();
$example->Label('Solarize');
$example->Solarize();
push(@$images,$example);
print "Swirl...\n";
$example=$model->Clone();
$example->Label('Swirl');
$example->Swirl(90);
push(@$images,$example);
print "Unsharp Mask...\n";
$example=$model->Clone();
$example->Label('Unsharp Mask');
$example->UnsharpMask('0.0x1.0');
$example->Clamp();
push(@$images,$example);
print "Vignette...\n";
$example=$model->Clone();
$example->Label('Vignette');
$example->Vignette('0x20');
push(@$images,$example);
print "Wave...\n";
$example=$model->Clone();
$example->Label('Wave');
$example->Wave('25x150');
push(@$images,$example);
#
# Create image montage.
#
print "Montage...\n";
$montage=$images->Montage(geometry=>'128x160+8+4>',gravity=>'Center',
tile=>'5x+10+200',compose=>'over',background=>'#ffffff',
font=>'Generic.ttf',pointsize=>18,fill=>'#600',stroke=>'none',
shadow=>'true');
$logo=Image::Magick->new();
$logo->Read('logo:');
$logo->Zoom('40%');
$montage->Composite(image=>$logo,gravity=>'North');
print "Write...\n";
$montage->Set(matte=>'false');
$montage->Write('demo.jpg');
print "Display...\n";
$montage->Write('win:');

Binary file not shown.

After

Width:  |  Height:  |  Size: 437 B

View file

@ -0,0 +1,83 @@
#!/usr/bin/perl
# Written by jreed@itis.com, adapted by John Cristy.
use Image::Magick;
use Turtle;
sub flower
{
my $flower = shift;
my ($width, $height) = $flower->Get('width', 'height');
my ($x, $y) = $turtle->state();
my ($geometry);
$geometry = '+' . int($x-$width/2) . '+' . int($y-$height/2);
$im->Composite(image=>$flower, compose=>'over', geometry=>$geometry);
}
sub lsys_init
{
my ($imagesize) = @_;
%translate =
(
'S' => sub{ # Step forward
$turtle->forward($changes->{"distance"},
$changes->{"motionsub"});
},
'-' => sub{ $turtle->turn(-$changes->{"dtheta"}); }, # counter-clockwise
'+' => sub{ $turtle->turn($changes->{"dtheta"}); }, # Turn clockwise
'M' => sub{ $turtle->mirror(); }, # Mirror
'[' => sub{ push(@statestack, [$turtle->state()]); }, # Begin branch
']' => sub{ $turtle->setstate(@{pop(@statestack)}); }, # End branch
'{' => sub{ @poly = (); $changes=\%polychanges; }, # Begin polygon
'}' => sub{ # End polygon
$im->Draw (primitive=>'Polygon', points=>join(' ',@poly),
fill=>'light green');
$changes = \%stemchanges;
},
'f' => sub{ flower($pink_flower); }, # Flower
'g' => sub{ flower($red_flower); }, # Flower
'h' => sub{ flower($yellow_flower); } # Flower
);
# Create the main image
$im = new Image::Magick;
$im->Set(size=>$imagesize . 'x' . $imagesize);
$im->Read('xc:white');
# Create the flower images
$pink_flower = new Image::Magick;
$pink_flower->Read('pink-flower.gif');
$red_flower = new Image::Magick;
$red_flower->Read('red-flower.gif');
$yellow_flower = new Image::Magick;
$yellow_flower->Read('yellow-flower.gif');
# Turtle: the midpoint of the bottom edge of the image, pointing up.
$turtle=new Turtle($imagesize/2, $imagesize, 0, 1);
}
sub lsys_execute
{
my ($string, $repetitions, $filename, %rule) = @_;
my ($command);
# Apply the %rule to $string, $repetitions times.
for (1..$repetitions)
{
$string =~ s/./defined ($rule{$&}) ? $rule{$&} : $&/eg;
}
foreach $command (split(//, $string))
{
if ($translate{$command}) { &{$translate{$command}}(); }
}
$im->Write($filename);
$im->Write('win:');
}
1;

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -0,0 +1,66 @@
#!/usr/bin/perl
# Piddle example using PerlMagick methods.
use Image::Magick;
#
# Create white canvas.
#
$image=Image::Magick->new(size=>'300x300');
$image->Read('xc:white');
#
# Draw blue grid
#
for ($i=0; $i < 300; $i+=10)
{
$image->Draw(primitive=>'line',points=>"$i,0 $i,300",stroke=>"#ccf");
$image->Draw(primitive=>'line',points=>"0,$i 300,$i",stroke=>"#ccf");
}
#
# Draw rounded rectangle.
#
$image->Draw(primitive=>'RoundRectangle',fill=>'blue',stroke=>'maroon',
strokewidth=>4,points=>'30,30 100,100 10,10');
#
# Draw curve.
#
$image->Draw(primitive=>'bezier',points=>'20,20, 100,50, 50,100, 160,160',
fill=>'none',stroke=>'black',strokewidth=>4);
#
# Draw line.
#
$image->Draw(primitive=>'line',points=>"10,200 20,190",stroke=>red);
#
# Draw arc within a circle.
#
$image->Draw(primitive=>'circle',stroke=>'none',fill=>'yellow',,
points=>"170,70 200,70");
$image->Draw(primitive=>'Path',stroke=>'none',fill=>'blue',strokewidth=>4,
points=>'M170,70 v-30 a30,30 0 0,0 -30,30 z');
$image->Draw(primitive=>'circle',stroke=>'black',fill=>'none',strokewidth=>4,
points=>"170,70 200,70");
#
# Draw pentogram.
#
$image->Draw(primitive=>'polygon',
points=>"160,120 130,190 210,145 110,145 190,190 160,120",stroke=>red,
fill=>LimeGreen,strokewidth=>3);
#
# Draw rectangle.
#
$image->Draw(primitive=>'line',points=>'200,260 200,200',stroke=>yellow,
strokewidth=>5);
$image->Draw(primitive=>'line',points=>'200,200 260,200',stroke=>yellow,
strokewidth=>5);
$image->Draw(primitive=>'line',points=>'260,200 260,260',stroke=>red,
strokewidth=>5);
$image->Draw(primitive=>'line',points=>'200,260 260,260',stroke=>green,
strokewidth=>5);
#
# Draw text.
#
$image->Annotate(text=>'This is a test!',geometry=>'+30+140',
font=>'Generic.ttf',fill=>'green',pointsize=>24,rotate=>45.0);
$image->Write('piddle.gif');
$image->Write('piddle.mvg');
$image->Write('win:');

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

View file

@ -0,0 +1,53 @@
#!/usr/bin/perl
#
# Example of modifying all the pixels in an image (like -fx).
#
# Currently this is slow as each pixel is being lokedup one pixel at a time.
# The better technique of extracting and modifing a whole row of pixels at
# a time has not been figured out, though perl functions have been provided
# for this.
#
# Also access and controls for Area Re-sampling (EWA), beyond single pixel
# lookup (interpolated unscaled lookup), is also not available at this time.
#
# Anthony Thyssen 5 October 2007
#
use strict;
use Image::Magick;
# read original image
my $orig = Image::Magick->new();
my $w = $orig->Read('rose:');
warn("$w") if $w;
exit if $w =~ /^Exception/;
# make a clone of the image (preserve input, modify output)
my $dest = $orig->Clone();
# You could enlarge destination image here if you like.
# And it is posible to modify the existing image directly
# rather than modifying a clone as FX does.
# Iterate over destination image...
my ($width, $height) = $dest->Get('width', 'height');
for( my $j = 0; $j < $height; $j++ ) {
for( my $i = 0; $i < $width; $i++ ) {
# read original image color
my @pixel = $orig->GetPixel( x=>$i, y=>$j );
# modify the pixel values (as normalized floats)
$pixel[0] = $pixel[0]/2; # darken red
# write pixel to destination
# (quantization and clipping happens here)
$dest->SetPixel(x=>$i,y=>$j,color=>\@pixel);
}
}
# display the result (or you could save it)
$dest->Write('win:');
$dest->Write('pixel-fx.gif');

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

View file

@ -0,0 +1,32 @@
#!/usr/bin/perl
#
# An example of applying many settings in preparation for image creation.
#
# Extracted from PerlMagick Discussion forums..
# Gravity center, caption and wrapped text
# http://www.imagemagick.org/discourse-server/viewtopic.php?f=7&t=17282
#
use strict;
use warnings;
use Image::Magick;
my $im = new Image::Magick;
my $e = $im->Set(
background => 'none',
fill => 'white',
stroke => 'black',
strokewidth => 2,
Gravity => 'East',
pointsize => 48,
size => '200x300',
);
die $e if $e;
$e = $im->Read("caption:Lorem ipsum etc etc");
die $e if $e;
$e = $im->Trim();
die $e if $e;
$e = $im->Write('settings.png');
die $e if $e;

View file

@ -0,0 +1,15 @@
#!/usr/bin/perl
#
# Make simple text with a shadow.
#
use Image::Magick;
$image=Image::Magick->new(size=>'500x120');
$image->Read('xc:white');
$image->Annotate(font=>'Generic.ttf',fill=>'rgba(100,100,100,0.8)',
pointsize=>60, text=>'Works like magick!',geometry=>'+30+90');
$image->Blur('0x1');
$image->Annotate(font=>'Generic.ttf',fill=>'red',stroke=>'blue',pointsize=>60,
text=>'Works like magick!',geometry=>'+26+86');
$image->Write('shadow.gif');
$image->Write('win:');

View file

@ -0,0 +1,40 @@
#!/usr/bin/perl
# GD example using PerlMagick methods.
use Image::Magick;
#
# Create a 300x300 white canvas.
#
$image=Image::Magick->new;
$image->Set(size=>'300x300');
$image->Read('xc:white');
#
# Draw shapes.
#
$tile=Image::Magick->new;
$tile->Read('tile.gif');
$image->Draw(primitive=>'Polygon',tile=>$tile,fill=>'none',
points=>'30,30 100,10 190,290 30,290');
$image->Draw(stroke=>'red',primitive=>'Ellipse',stroke=>'black',fill=>'red',
strokewidth=>5,points=>'100,100 50,75 0,360');
$image->Draw(primitive=>'Polygon',fill=>'none',stroke=>'black',strokewidth=>5,
points=>'30,30 100,10 190,290 30,290');
$image->FloodfillPaint(geometry=>'+132+62',fill=>'blue',bordercolor=>'black',
invert=>'true');
#
# Draw text.
#
$image->Annotate(fill=>'red',geometry=>'+150+20',font=>'Generic.ttf',
pointsize=>18,text=>'Hello world!');
$image->Annotate(fill=>'blue',geometry=>'+150+38',font=>'Generic.ttf',
pointsize=>14,text=>'Goodbye cruel world!');
$image->Annotate(fill=>'black',geometry=>'+280+120',font=>'Generic.ttf',
pointsize=>14,text=>"I'm climbing the wall!",rotate=>90.0);
#
# Write image.
#
print "Write image...\n";
$image->Write('shapes.gif');
print "Display image...\n";
$image->Write('win:');

View file

@ -0,0 +1,48 @@
#!/usr/bin/perl
#
# Methods for to Get and Set single pixels in images using PerlMagick
#
use strict;
use Image::Magick;
# read image
my $im=Image::Magick->new();
$im->Read('logo:');
# ---
# Get/Set a single pixel as a string
my $skin=$im->Get('pixel[400,200]');
print "Get('pixel[x,y]') = ", $skin, "\n";
$im->Set('pixel[1,1]'=>'0,0,0,0');
$im->Set('pixel[2,1]'=>$skin);
$im->Set('pixel[3,1]'=>'green');
$im->Set('pixel[4,1]'=>'rgb(255,0,255)');
# ---
# More direct single pixel access
my @pixel = $im->GetPixel( x=>400, y=>200 );
print "GetPixel() = ", "@pixel", "\n";
# modify the pixel values (as normalized floats)
$pixel[0] = $pixel[0]/2; # darken red value
$pixel[1] = 0.0; # junk green value
$pixel[2] = 0.0; # junk blue value
# write pixel to destination
# (quantization and clipping happens here)
$im->SetPixel(x=>5,y=>1,color=>\@pixel);
# ---
# crop, scale, display the changed pixels
$im->Crop(geometry=>'7x3+0+0');
$im->Set(page=>'0x0+0+0');
$im->Scale('1000%');
# Output the changed pixels
$im->Write('win:');
$im->Write('single-pixels.gif');

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

View file

@ -0,0 +1,26 @@
#!/usr/bin/perl
use Image::Magick;
#
# Hide an image within an image
#
$watermark=Image::Magick->new;
$watermark->ReadImage('smile.gif');
($width, $height)=$watermark->Get('width','height');
#
# Hide image in image.
#
$image=Image::Magick->new;
$image->ReadImage('model.gif');
$image->SteganoImage(image=>$watermark,offset=>91);
$image->Write('model.png');
$image->Write('win:');
#
# Extract image from image.
#
$size="$width" . "x" . "$height" . "+91";
$stegano=Image::Magick->new(size=>$size);
$stegano->ReadImage('stegano:model.png');
$stegano->Write('stegano.gif');
$stegano->Write('win:');

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,33 @@
#!/usr/bin/perl
#
# Example of using a lsys fractal,
# which in turm used Turtle Graphics
#
require "lsys.pl";
%rule = (
'A' => 'S[---LMA][++++B]',
'B' => 'S[++LBg][--Cg]',
'C' => 'S[-----LB]GS[+MC]',
'g' => '',
'L' => '[{S+S+S+S+S+S}]'
);
%stemchanges = (
distance => 18.5,
dtheta => 0.1,
motionsub => sub{
$im->Draw ( primitive=>'line', points=>join(' ',@_),
stroke=>'dark green', strokewidth=>1 );
}
);
%polychanges = (
distance => 3,
dtheta => 0.4,
motionsub => sub{ push( @poly, @_[0..1] ); }
);
$changes = \%stemchanges;
lsys_init(400);
lsys_execute('A', 10, "tree.gif", %rule);

Binary file not shown.

After

Width:  |  Height:  |  Size: 565 B

View file

@ -0,0 +1,270 @@
# Copyright 1999-2013 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.
#
# Exercise all regression tests:
#
# make test
#
# Exersise one regression test:
#
# make TEST_VERBOSE=1 TEST_FILES=t/filter.t test
#
use ExtUtils::MakeMaker;
use Config;
use File::Spec::Functions qw/catfile catdir devnull catpath splitpath/;
use Cwd;
sub AutodetectWin32gcc {
my $wrkdir = getcwd();
my $devnull = devnull();
my @incdir = ();
my @libdir = ($wrkdir);
my @bindir = ();
#try to get configuration info via identify or convert utilities
my $conf = `identify -list Configure 2>$devnull` || `convert -list Configure 2>$devnull`;
foreach my $line (split '\n', $conf) {
if ($line =~ /^Path:\s+(.*)/) {
my ($vol,$dir,$file) = splitpath($1);
next unless $dir;
my $dirpath = catpath( $vol, $dir);
my (@l,@b,@i) = ( (),(),() );
# try to detect 'lib' dir
push @l, catfile($dirpath,'lib');
push @l, catfile($dirpath,'..','lib');
push @l, catfile($dirpath,'..','..','lib');
push @l, catfile($dirpath,'..','..','..','lib');
foreach (@l) { push @libdir, $_ if (-d $_) };
# try to detect 'bin' dir
push @b, catfile($dirpath);
push @b, catfile($dirpath,'bin');
push @b, catfile($dirpath,'..');
push @b, catfile($dirpath,'..','bin');
push @b, catfile($dirpath,'..','..');
push @b, catfile($dirpath,'..','..','bin');
push @b, catfile($dirpath,'..','..','..');
push @b, catfile($dirpath,'..','..','..','bin');
foreach (@b) { push @bindir, $_ if (-e "$_/convert.exe" || -e "$_/identify.exe") };
# try to detect 'include' dir
push @i, catfile($dirpath,'include');
push @i, catfile($dirpath,'include','ImageMagick');
push @i, catfile($dirpath,'..','include');
push @i, catfile($dirpath,'..','include','ImageMagick');
push @i, catfile($dirpath,'..','..','include');
push @i, catfile($dirpath,'..','..','include','ImageMagick');
push @i, catfile($dirpath,'..','..','..','include');
push @i, catfile($dirpath,'..','..','..','include','ImageMagick');
foreach (@i) { push @incdir, $_ if (-e "$_/magick/MagickCore.h") };
}
};
foreach my $bin (@bindir) {
opendir(my $bindir, $bin) or die qq{Cannot opendir $bin: $!};
my @dlls = map {catfile($bin, $_)} grep /^\S*magick[^\+]\S*?\.dll$/i, readdir $bindir;
foreach my $d (@dlls) {
unlink "$wrkdir/libMagickCore.def", "$wrkdir/libMagickCore.a";
system("pexports \"$d\" >\"$wrkdir/libMagickCore.def\" 2>$devnull");
open(DEF, "<$wrkdir/libMagickCore.def");
my @found = grep(/MagickCoreGenesis/, <DEF>); #checking if we have taken the right DLL
close(DEF);
next unless(@found);
print STDERR "Gonna create 'libMagickCore.a' from '$d'\n";
system("dlltool -D \"$d\" -d \"$wrkdir/libMagickCore.def\" -l \"$wrkdir/libMagickCore.a\" 2>$devnull");
last if -s "$wrkdir/libMagickCore.a";
}
last if -s "$wrkdir/libMagickCore.a";
}
unless(@incdir && @libdir && @bindir && (-s "$wrkdir/libMagickCore.a")) {
print STDERR <<EOF
################################### WARNING! ###################################
# It seems that you are trying to install Perl::Magick on a MS Windows box with
# perl + gcc compiler (e.g. strawberry perl), however we cannot find ImageMagick
# binaries installed on your system.
#
# Please check the following prerequisites:
#
# 1) You need to have installed ImageMagick Windows binaries from
# http://www.imagemagick.org/script/binary-releases.php#windows
#
# 2) We only support dynamic (DLL) ImageMagick binaries
# note: it is not possible to mix 32/64-bit binaries of perl and ImageMagick
#
# 3) During installation select that you want to install ImageMagick's
# development files (libraries+headers)
#
# 4) You also need to have ImageMagick's directory in your PATH
# note: we are checking the presence of convert.exe and/or identify.exe tools
#
# 5) You might need Visual C++ Redistributable Package installed on your system
# see instructions on ImageMagick's Binary Release webpage
#
# We are gonna continue, but chances for successful build are very low!
################################################################################
EOF
}
my $inc = join ' ', map "-I\"$_\"", @incdir;
my $lib = join ' ', map "-L\"$_\"", @libdir;
return ($inc, $lib);
}
sub AutodetectDelegates {
#try to get configuration info via identify or convert utilities
my $devnull = devnull();
my $conf = `identify -list Configure 2>$devnull` || `convert -list Configure 2>$devnull`;
my @delegates = ();
foreach my $line (split '\n', $conf) {
next unless $line =~ /^DELEGATES\s+/;
(undef, @delegates) = split /\s+/, $line;
last;
};
return @delegates;
}
# Compute test specification
my $delegate_tests='t/*.t';
my @tested_delegates = qw/bzlib djvu fftw fontconfig freetype jpeg jng jp2 lcms mpeg png rsvg tiff x11 xml wmf zlib/;
my @supported_delegates = AutodetectDelegates();
# find the intersection of tested and supported delegates
my %seen_delegates = ();
$seen_delegates{$_}++ for @supported_delegates;
foreach my $delegate (@tested_delegates) {
if ( $seen_delegates{$delegate} ) {
if ( -d "t/$delegate" ) {
if ( defined($ENV{'DISPLAY'}) && ($^O ne 'MSWin32') ) {
if ( defined $ENV{'DISPLAY'} ) {
$delegate_tests .= " t/$delegate/*.t";
}
next;
}
$delegate_tests .= " t/$delegate/*.t";
}
}
}
# defaults for LIBS & INC & CCFLAGS params that we later pass to Writemakefile
my $INC_magick = '-I../ -I@top_srcdir@ @CPPFLAGS@ -I"' . $Config{'usrinc'} . '/ImageMagick"';
my $LIBS_magick = '-L../../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ -lperl @MATH_LIBS@';
my $CCFLAGS_magick = "$Config{'ccflags'} @CFLAGS@";
my $LDFLAGS_magick = "-L../../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'ldflags'} @LDFLAGS@";
my $LDDLFLAGS_magick = "-L../../magick/.libs -lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@ $Config{'lddlflags'} @LDFLAGS@";
if (($^O eq 'MSWin32') && ($Config{cc} =~ /gcc/)) {
my($Ipaths, $Lpaths) = AutodetectWin32gcc();
#
# Setup for strawberry perl.
#
$INC_magick = "$Ipaths";
$LIBS_magick = "-lMagickCore-@MAGICK_MAJOR_VERSION@.@MAGICK_ABI_SUFFIX@";
$CCFLAGS_magick = "$Config{'ccflags'}";
$LDFLAGS_magick = "$Config{'ldflags'} $Lpaths ";
$LDDLFLAGS_magick = "$Config{'lddlflags'} $Lpaths ";
}
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile
(
# Module description
'ABSTRACT' => 'ImageMagick PERL Extension (@MAGICK_ABI_SUFFIX@)',
# Perl module name is Image::Magick
'NAME' => 'Image::Magick::@MAGICK_ABI_SUFFIX@',
# Module author
'AUTHOR' => 'ImageMagick Studio LLC',
# Module version
'VERSION' => '@PACKAGE_PERL_VERSION@',
# Preprocessor defines
'DEFINE' => '@LFS_CPPFLAGS@ @DEFS@', # e.g., '-DHAVE_SOMETHING'
# Header search specfication and preprocessor flags
'INC' => $INC_magick,
# C compiler
#'CC' => '@CC@',
# C pre-processor flags (e.g. -I & -D options)
# 'CPPFLAGS' => "$Config{'cppflags'} @CPPFLAGS@",
# C compiler flags (e.g. -O -g)
'CCFLAGS' => $CCFLAGS_magick,
# Linker
#'LD' => $Config{'ld'} == $Config{'cc'} ? '@CC@' : $Config{'ld'},
# Linker flags for building an executable
'LDFLAGS' => $LDFLAGS_magick,
# Linker flags for building a dynamically loadable module
'LDDLFLAGS' => $LDDLFLAGS_magick,
# Install PerlMagick binary into ImageMagick bin directory
'INSTALLBIN' => '@BIN_DIR@',
# Library specification
'LIBS' => [ $LIBS_magick ],
# Perl binary name (if a Perl binary is built)
'MAP_TARGET' => 'PerlMagick',
# Let CFLAGS drive optimization flags by setting OPTIMIZE to empty
# 'OPTIMIZE' => '',
# Use same compiler as ImageMagick
'PERLMAINCC' => '@PERLMAINCC@ @OPENMP_CFLAGS@',
'PM' => { '@MAGICK_ABI_SUFFIX@.pm' => '$(INST_LIBDIR)/@MAGICK_ABI_SUFFIX@.pm' },
'XS' => { '@MAGICK_ABI_SUFFIX@.xs' => '@MAGICK_ABI_SUFFIX@.xs' },
'AR' => '@AR@',
'LD' => '@PERLMAINCC@',
# Set Perl installation prefix to ImageMagick installation prefix
# 'PREFIX' => '@prefix@',
# Include delegate directories in tests
test => { TESTS => $delegate_tests},
($Config{'archname'} =~ /-object$/i ? ('CAPI' => 'TRUE') : ()),
# sane vesion
depend => { '$(FIRST_MAKEFILE)' => '$(VERSION_FROM)' }
);
#
# Substitutions for "makeaperl" section.
#
sub MY::makeaperl {
package MY; # so that "SUPER" works right
my $inherited = shift->SUPER::makeaperl(@_);
# Stinky ExtUtils::MM_Unix likes to append its own library path to $(CC),
# prior to any user-specified library path so that an installed library is
# used rather than the library just built. This substitution function
# tries to insert our library path first. Also, use the same compiler used
# to build perlmain.c to link so that a C++ compiler may be used if
# necessary.
$inherited =~ s:MAP_LINKCMD\s.*\s*\$\(CC\):MAP_LINKCMD = \$(PERLMAINCC) -L@MAGICKCORE_PATH@: ;
$inherited;
}

View file

@ -0,0 +1,144 @@
package Image::Magick::@MAGICK_ABI_SUFFIX@;
# Copyright 1999-2013 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.
#
# Initial version, written by Kyle Shorter.
use strict;
use Carp;
use vars qw($VERSION @ISA @EXPORT $AUTOLOAD);
require 5.002;
require Exporter;
require DynaLoader;
require AutoLoader;
@ISA = qw(Exporter DynaLoader);
# Items to export into callers namespace by default. Note: do not export
# names by default without a very good reason. Use EXPORT_OK instead.
# Do not simply export all your public functions/methods/constants.
@EXPORT =
qw(
Success Transparent Opaque QuantumDepth QuantumRange MaxRGB
WarningException ResourceLimitWarning TypeWarning OptionWarning
DelegateWarning MissingDelegateWarning CorruptImageWarning
FileOpenWarning BlobWarning StreamWarning CacheWarning CoderWarning
ModuleWarning DrawWarning ImageWarning XServerWarning RegistryWarning
ConfigureWarning ErrorException ResourceLimitError TypeError
OptionError DelegateError MissingDelegateError CorruptImageError
FileOpenError BlobError StreamError CacheError CoderError
ModuleError DrawError ImageError XServerError RegistryError
ConfigureError FatalErrorException
);
$VERSION = '@PACKAGE_PERL_VERSION@';
sub AUTOLOAD {
# This AUTOLOAD is used to 'autoload' constants from the constant()
# XS function. If a constant is not found then control is passed
# to the AUTOLOAD in AutoLoader.
my $constname;
($constname = $AUTOLOAD) =~ s/.*:://;
die "&${AUTOLOAD} not defined. The required ImageMagick libraries are not installed or not installed properly.\n" if $constname eq 'constant';
my $val = constant($constname, @_ ? $_[0] : 0);
if ($! != 0) {
if ($! =~ /Invalid/) {
$AutoLoader::AUTOLOAD = $AUTOLOAD;
goto &AutoLoader::AUTOLOAD;
}
else {
my($pack,$file,$line) = caller;
die "Your vendor has not defined PerlMagick macro $pack\:\:$constname, used at $file line $line.\n";
}
}
eval "sub $AUTOLOAD { $val }";
goto &$AUTOLOAD;
}
bootstrap Image::Magick::@MAGICK_ABI_SUFFIX@ $VERSION;
# Preloaded methods go here.
sub new
{
my $this = shift;
my $class = ref($this) || $this || "Image::Magick::@MAGICK_ABI_SUFFIX@";
my $self = [ ];
bless $self, $class;
$self->set(@_) if @_;
return $self;
}
sub New
{
my $this = shift;
my $class = ref($this) || $this || "Image::Magick::@MAGICK_ABI_SUFFIX@";
my $self = [ ];
bless $self, $class;
$self->set(@_) if @_;
return $self;
}
# Autoload methods go after =cut, and are processed by the autosplit program.
END { UNLOAD () };
1;
__END__
=head1 NAME
Image::Magick::@MAGICK_ABI_SUFFIX@ - objected-oriented Perl interface to ImageMagick (@MAGICK_ABI_SUFFIX@). Use it to read, manipulate, or write an image or image sequence from within a Perl script.
=head1 SYNOPSIS
use Image::Magick::@MAGICK_ABI_SUFFIX@;
$p = new Image::Magick::@MAGICK_ABI_SUFFIX@;
$p->Read("imagefile");
$p->Set(attribute => value, ...)
($a, ...) = $p->Get("attribute", ...)
$p->routine(parameter => value, ...)
$p->Mogrify("Routine", parameter => value, ...)
$p->Write("filename");
=head1 DESCRIPTION
This Perl extension allows the reading, manipulation and writing of
a large number of image file formats using the ImageMagick library.
It was originally developed to be used by CGI scripts for Web pages.
A web page has been set up for this extension. See:
file://@DOCUMENTATION_PATH@/www/perl-magick.html
http://www.imagemagick.org/script/perl-magick.php
If you have problems, go to
http://www.imagemagick.org/discourse-server/viewforum.php?f=7
=head1 AUTHOR
Kyle Shorter magick-users@imagemagick.org
=head1 BUGS
Has all the bugs of ImageMagick and much, much more!
=head1 SEE ALSO
perl(1).
=cut

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1 @@
Image::Magick::@MAGICK_ABI_SUFFIX@ T_PTROBJ

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,39 @@
#!/usr/bin/perl
# Copyright 1999-2013 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.
#
# Test image blobs.
#
BEGIN { $| = 1; $test=1, print "1..1\n"; }
END {print "not ok 1\n" unless $loaded;}
use Image::Magick;
$loaded=1;
chdir 't' || die 'Cd failed';
$image = new Image::Magick;
$image->Read( 'input.miff' );
@blob = $image->ImageToBlob();
undef $image;
$image=Image::Magick->new( magick=>'MIFF' );
$image->BlobToImage( @blob );
if ($image->Get('signature') ne
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7')
{ print "not ok $test\n"; }
else
{ print "ok $test\n"; }
1;

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -0,0 +1,30 @@
#!/usr/bin/perl
#
# Test reading an image which uses BZip compression
#
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
#
BEGIN { $| = 1; $test=1; print "1..2\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't/bzlib' || die 'Cd failed';
#
# Test reading BZip compressed MIFF
#
testRead( 'input.miff',
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );
#
# 2) Test reading BZip stream-compressed MIFF (.bz2 extension)
#
print("Reading BZip stream-compressed MIFF (.bz2 extension) ...\n");
++$test;
testRead( 'input.miff.bz2',
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );

View file

@ -0,0 +1,27 @@
#!/usr/bin/perl
#
# Test writing files using bzlib-based compression
#
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
#
BEGIN { $| = 1; $test=1; print "1..1\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't/bzlib' || die 'Cd failed';
#
# Test writing BZip-compressed MIFF
#
testReadWrite( 'input.miff',
'output.miff',
q/compression=>'BZip'/,
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );
$test = 0; # Quench PERL compliaint

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,20 @@
#!/usr/bin/perl
#
# Test reading CGM files
#
# Written by Bob Friesenhahn
#
# Whenever a new test is added/removed, be sure to update the
# 1..n ouput.
#
BEGIN { $| = 1; $test=1; print "1..1\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't/cgm' || die 'Cd failed';
testReadCompare('CGM:input.cgm', '../reference/cgm/read.miff', q//, 0.0 0.0);

View file

@ -0,0 +1,167 @@
#!/usr/bin/perl
# Copyright 1999-2013 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.
#
BEGIN { $| = 1; $test=1; print "1..18\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't' || die 'Cd failed';
#
# Add
#
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Add'/,
'reference/composite/Add.miff', 0.2, 1.03);
#
# Atop
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Atop'/,
'reference/composite/Atop.miff', 0.1, 1.03);
#
# Bumpmap
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//,q/, gravity=>'Center', compose=>'Bumpmap'/,
'reference/composite/Bumpmap.miff', 0.1, 1.03);
#
# Clear
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Clear'/,
'reference/composite/Clear.miff', 0.3, 1.03);
#
# Copy
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Copy'/,
'reference/composite/Copy.miff', 0.1, 1.03);
#
# CopyBlue
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'CopyBlue'/,
'reference/composite/CopyBlue.miff', 0.1, 1.03);
#
# CopyGreen
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'CopyGreen'/,
'reference/composite/CopyGreen.miff', 0.1, 1.03);
#
# CopyRed
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'CopyRed'/,
'reference/composite/CopyRed.miff', 0.1, 1.03);
#
# CopyOpacity
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'CopyOpacity'/,
'reference/composite/CopyOpacity.miff', 0.1, 1.03);
#
# Difference
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Difference'/,
'reference/composite/Difference.miff', 0.1, 1.03);
#
# In
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'In'/,
'reference/composite/In.miff', 0.1, 1.03);
#
# Minus
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Minus'/,
'reference/composite/Minus.miff', 0.3, 1.03);
#
# Multiply
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Multiply'/,
'reference/composite/Multiply.miff', 0.1, 1.03);
#
# Out
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Out'/,
'reference/composite/Out.miff', 0.3, 1.03);
#
# Over
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Over'/,
'reference/composite/Over.miff', 0.1, 1.03);
#
# Plus
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Plus'/,
'reference/composite/Plus.miff', 0.1, 1.03);
#
# Subtract
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Subtract'/,
'reference/composite/Subtract.miff', 0.1, 1.03);
#
# Xor
#
++$test;
testCompositeCompare('gradient:white-black',q/size=>"100x80"/,
'input.miff', q//, q/, gravity=>'Center', compose=>'Xor'/,
'reference/composite/Xor.miff', 0.3, 1.03);
1;

View file

@ -0,0 +1,207 @@
#!/usr/bin/perl
#
# Copyright 1999-2013 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.
#
# Test image filters.
#
BEGIN { $| = 1; $test=1, print "1..58\n"; }
END {print "not ok 1\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't' || die 'Cd failed';
use FileHandle;
autoflush STDOUT 1;
autoflush STDERR 1;
$fuzz=int(0.05*(Image::Magick->new()->QuantumRange));
testFilterCompare('input.miff', q//, 'reference/filter/AdaptiveThreshold.miff', 'AdaptiveThreshold', q/'5x5+5%'/, 0.30, 1.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Annotate.miff', 'Annotate', q/text=>'Magick',geometry=>'+0+20',font=>'Generic.ttf',fill=>'gold',gravity=>'North',pointsize=>14/, 0.02, 1.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Blur.miff', 'Blur', q/'0.0x1.0'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Border.miff', 'Border', q/geometry=>'6x6',color=>'gold'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Channel.miff', 'Channel', q/channel=>'red'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Chop.miff', 'Chop', q/geometry=>'80x80+5+10'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Charcoal.miff', 'Charcoal', q/'0x1'/, 0.2, 1.02);
++$test;
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/ColorFloodfill.miff', 'ColorFloodfill', q/geometry=>"+25+45"/, 0.03, 1.02);
++$test;
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/Colorize.miff', 'Colorize', q/fill=>"red", opacity=>"50%"/, 0.02, 0.5 );
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Contrast.miff', 'Contrast', q//, 0.06, 0.6);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Convolve.miff', 'Convolve', q/[1, 1, 1, 1, 4, 1, 1, 1, 1]/, 0.09, 0.9);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Crop.miff', 'Crop', q/geometry=>'80x80+5+10'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Set.miff', 'Set', q/page=>'0x0+0+0'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Despeckle.miff', 'Despeckle', q//, 0.08, 1.08);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Draw.miff', 'Draw', q/fill=>'none',stroke=>'gold',primitive=>'circle',points=>'60,90 60,120',strokewidth=>2/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Edge.miff', 'Edge', q//, 0.3, 1.03);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Emboss.miff', 'Emboss', q/'0x1'/, 0.2, 1.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Equalize.miff', 'Equalize', q//, 0.2, 1.03);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Implode.miff', 'Implode', q/0.5/, 0.002, 0.2);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Flip.miff', 'Flip', q//, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Flop.miff', 'Flop', q//, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Frame.miff', 'Frame', q/'15x15+3+3'/, 0.4, 1.04);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Gamma.miff', 'Gamma', q/1.6/, 0.02, 0.2);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/GaussianBlur.miff', 'GaussianBlur', q/'0.0x1.5'/, 0.004, 0.4);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Implode.miff', 'Implode', q/0.5/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Level.miff', 'Level', q/'20%x'/, 0.2, 1.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Magnify.miff', 'Magnify', q//, 0.05, 0.5);
++$test;
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/MatteFloodfill.miff', 'MatteFloodfill', q/geometry=>"+25+45"/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/MedianFilter.miff', 'MedianFilter', q//, 0.5, 0.9);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Minify.miff', 'Minify', q//, 0.05, 0.5);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Modulate.miff', 'Modulate', q/brightness=>110,saturation=>110,hue=>110/, 0.08, 1.08);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/QuantizeMono.miff', 'Quantize', q/colorspace=>'gray',colors=>2,dither=>'false'/, 0.9, 1.03);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/MotionBlur.miff', 'MotionBlur', q/'0x13+10-10'/, 0.003, 0.03);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Negate.miff', 'Negate', q//, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Normalize.miff', 'Normalize', q//, 0.04, 1.04);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/OilPaint.miff', 'OilPaint', q//, 0.03, 1.03);
++$test;
testFilterCompare('input.miff', "fuzz=>$fuzz", 'reference/filter/Opaque.miff', 'Opaque', q/color=>"#e23834", fill=>"green"/, 0.03, 1.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Quantize.miff', 'Quantize', q//, 0.2, 1.03);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/RadialBlur.miff', 'RadialBlur', q/10/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Raise.miff', 'Raise', q/'10x10'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/ReduceNoise.miff', 'ReduceNoise', q//, 0.5, 0.9);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Resize.miff', 'Resize', q/'60%'/, 0.02, 1.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Roll.miff', 'Roll', q/geometry=>'+20+10'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Rotate.miff', 'Rotate', q/45/, 0.4, 1.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Sample.miff', 'Sample', q/'60%'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Scale.miff', 'Scale', q/'60%'/, 0.008, 1.0);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Segment.miff', 'Segment', q//, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Shade.miff', 'Shade', q/geometry=>'30x30',gray=>'true'/, 0.08, 0.3);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Sharpen.miff', 'Sharpen', q/'0.0x1.0'/, 0.05, 1.05);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Shave.miff', 'Shave', q/'10x10'/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Shear.miff', 'Shear', q/'-20x20'/, 0.4, 1.04);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/SigmoidalContrast.miff', 'SigmoidalContrast', q/"3x50%"/, 0.06, 0.6);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Solarize.miff', 'Solarize', q//, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Swirl.miff', 'Swirl', q/90/, 0.002, 0.2);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Threshold.miff', 'Threshold', q/90%/, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Trim.miff', 'Trim', q//, 0.002, 0.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/UnsharpMask.miff', 'UnsharpMask', q/'0.0x1.0'/, 0.02, 1.02);
++$test;
testFilterCompare('input.miff', q//, 'reference/filter/Wave.miff', 'Wave', q/'25x150'/, 0.6, 1.06);
++$test;
1;

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,55 @@
#!/usr/bin/perl
#
# Test reading FPX images
#
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
#
BEGIN { $| = 1; $test=1; print "1..5\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't/fpx' || die 'Cd failed';
#
# 1) Test Black-and-white, bit_depth=1 FPX
#
print( "1-bit grayscale FPX ...\n" );
testRead( 'input_bw.fpx',
'164b30b0e46fab4b60ea891a0f13c1ec2e3c9558e647c75021f7bd2935fe1e46' );
#
# 2) Test grayscale FPX
#
++$test;
print( "8-bit grayscale FPX ...\n" );
testRead( 'input_grayscale.fpx',
'74416d622acf60c213b8dd0a4ba9ab4a46581daa8b7b4a084658fb5ae2ad1e4b' );
#
# 3) Test 256 color pseudocolor FPX
#
++$test;
print( "8-bit indexed-color FPX ...\n" );
testRead( 'input_256.fpx',
'772ef079906aa47951a09cd4ce6d62b740a391935710e7076a6716423a92db4f' );
#
# 4) Test TrueColor FPX
#
++$test;
print( "24-bit Truecolor FPX ...\n" );
testRead( 'input_truecolor.fpx',
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );
#
# 5) Test JPEG FPX
#
++$test;
print( "24-bit JPEG FPX ...\n" );
testRead( 'input_jpeg.fpx',
'8c02bf8e953893cbd65b8a0a1fb574de50ac4cdeb2a88dbf702c8b65d82aa41b' );

View file

@ -0,0 +1,49 @@
#!/usr/bin/perl
#
# Test writing FPX images
#
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
#
BEGIN { $| = 1; $test=1; print "1..4\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't/fpx' || die 'Cd failed';
#
# 1) Test Black-and-white, bit_depth=1 FPX
#
print( "1-bit grayscale FPX ...\n" );
testReadWrite( 'input_bw.fpx', 'output_bw.fpx', q/quality=>95/,
'164b30b0e46fab4b60ea891a0f13c1ec2e3c9558e647c75021f7bd2935fe1e46');
#
# 2) Test grayscale image
#
++$test;
print( "8-bit grayscale FPX ...\n" );
testReadWrite( 'input_grayscale.fpx',
'output_grayscale.fpx', '',
'74416d622acf60c213b8dd0a4ba9ab4a46581daa8b7b4a084658fb5ae2ad1e4b');
#
# 3) Test pseudocolor image
#
++$test;
print( "8-bit indexed-color FPX ...\n" );
testReadWrite( 'input_256.fpx',
'output_256.fpx',
q/quality=>54/,
'772ef079906aa47951a09cd4ce6d62b740a391935710e7076a6716423a92db4f' );
#
# 4) Test truecolor image
#
++$test;
print( "24-bit Truecolor FPX ...\n" );
testReadWrite( 'input_truecolor.fpx',
'output_truecolor.fpx',
q/quality=>55/,
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7' );

View file

@ -0,0 +1,103 @@
#!/usr/bin/perl
# Copyright 1999-2013 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.
#
# Test getting attributes.
#
BEGIN { $| = 1; $test=1, print "1..25\n"; }
END {print "not ok 1\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't' || die 'Cd failed';
testGetAttribute('input.miff','base-columns','70');
++$test;
testGetAttribute('input.miff','base-filename','input.miff');
++$test;
testGetAttribute('input.miff','base-rows','46');
++$test;
testGetAttribute('input.miff','class','DirectClass');
++$test;
testGetAttribute('input.miff','colors','3019');
++$test;
testGetAttribute('input.miff','columns','70');
++$test;
testGetAttribute('input.miff','directory',undef);
++$test;
testGetAttribute('input.miff','gamma','0.454545');
++$test;
testGetAttribute('input.miff','geometry',undef);
++$test;
testGetAttribute('input.miff','height','46');
++$test;
# Returns undef
testGetAttribute('input.miff','label',undef);
++$test;
testGetAttribute('input.miff','matte','0');
++$test;
testGetAttribute('input.miff','error','0');
++$test;
testGetAttribute('input.miff','montage',undef);
++$test;
testGetAttribute('input.miff','maximum-error','0');
++$test;
testGetAttribute('input.miff','mean-error','0');
++$test;
testGetAttribute('input.miff','rows','46');
++$test;
testGetAttribute('input.miff','signature',
'a698f2fe0c6c31f83d19554a6ec02bac79c961dd9a87e7ed217752e75eb615d7');
++$test;
testGetAttribute('input.miff','texture',undef);
++$test;
testGetAttribute('input.miff','type','TrueColor');
++$test;
testGetAttribute('input.miff','units','undefined units');
++$test;
testGetAttribute('input.miff','view',undef);
++$test;
testGetAttribute('input.miff','width','70');
++$test;
testGetAttribute('input.miff','x-resolution','72');
++$test;
testGetAttribute('input.miff','y-resolution','72');
1;

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,28 @@
#!/usr/bin/perl
#
# Test reading HDF images
#
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
#
BEGIN { $| = 1; $test=1; print "1..2\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't/hdf' || die 'Cd failed';
#
# 1) Test 256 color pseudocolor HDF
#
testRead( 'input_256.hdf',
'975cdb03f0fa923936f1cecf7b8a49a917493393a0eb098828ab710295195584' );
#
# 2) Test TrueColor HDF
#
++$test;
testRead( 'input_truecolor.hdf',
'975cdb03f0fa923936f1cecf7b8a49a917493393a0eb098828ab710295195584' );

View file

@ -0,0 +1,32 @@
#!/usr/bin/perl
#
# Test writing HDF images
#
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
#
BEGIN { $| = 1; $test=1; print "1..2\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't/hdf' || die 'Cd failed';
#
# 1) Test pseudocolor image
#
testReadWrite( 'input_256.hdf',
'output_256.hdf',
q/quality=>54/,
'975cdb03f0fa923936f1cecf7b8a49a917493393a0eb098828ab710295195584' );
#
# 2) Test truecolor image
#
++$test;
testReadWrite( 'input_truecolor.hdf',
'output_truecolor.hdf',
q/quality=>55/,
'975cdb03f0fa923936f1cecf7b8a49a917493393a0eb098828ab710295195584' );

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,29 @@
#!/usr/bin/perl
#
# Test Reading HP GL images
#
# Contributed by Bob Friesenhahn <bfriesen@simple.dallas.tx.us>
#
BEGIN { $| = 1; $test=1; print "1..1\n"; }
END {print "not ok $test\n" unless $loaded;}
use Image::Magick;
$loaded=1;
require 't/subroutines.pl';
chdir 't/hpgl' || die 'Cd failed';
#
# 1) Test reading HP GL
#
$image=Image::Magick->new;
$x=$image->ReadImage('input.hpgl');
if( "$x" ) {
print "ReadImage: $x\n";
print "not ok $test\n";
} else {
print "ok $test\n";
}
undef $image;

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 280 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 766 B

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.5 KiB

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -0,0 +1,38 @@
#define input_width 70
#define input_height 46
static char input_bits[] = {
0xfe, 0xfe, 0xee, 0xae, 0xea, 0xaa, 0xfe, 0xae, 0x2a, 0xff, 0xff, 0xff,
0xff, 0xfd, 0xff, 0xff, 0xff, 0x3f, 0xff, 0xff, 0xff, 0xbb, 0xaa, 0xaa,
0xfe, 0xbf, 0x3e, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xff, 0x7f, 0x37,
0xff, 0xff, 0xef, 0xee, 0xee, 0xae, 0xee, 0xbf, 0x2a, 0xff, 0xff, 0xff,
0xff, 0xff, 0x5f, 0xfc, 0x7f, 0x34, 0xff, 0xff, 0xff, 0xbf, 0xaa, 0xab,
0xea, 0xbf, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0xf5, 0x7f, 0x35,
0xee, 0xee, 0xee, 0xaa, 0xea, 0xaa, 0xaa, 0xae, 0x2a, 0xff, 0xff, 0xff,
0xff, 0xdf, 0xdd, 0xdd, 0x5d, 0x30, 0xbf, 0xfb, 0xfb, 0xab, 0xaa, 0xaa,
0xaa, 0x2a, 0x28, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xf7, 0x77, 0x0f, 0x00,
0xee, 0xea, 0xee, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x08, 0xff, 0xc5, 0xdf,
0xdf, 0xdf, 0xff, 0xdd, 0x1d, 0x00, 0xbb, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0x2a, 0x00, 0xff, 0x11, 0xfd, 0xff, 0xff, 0xff, 0x5f, 0x15, 0x00,
0xee, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0x0a, 0x00, 0xff, 0xdd, 0xfd,
0xff, 0xfd, 0xff, 0x5f, 0x14, 0x04, 0xba, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0x2a, 0xff, 0xdf, 0xf7, 0xff, 0xf7, 0xfd, 0x7f, 0x7d, 0x15,
0xee, 0xae, 0xaa, 0xaa, 0xea, 0xaa, 0xaa, 0xaa, 0x2a, 0xff, 0xdf, 0xdd,
0xdf, 0xff, 0xdd, 0x5d, 0xdd, 0x05, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaa, 0x2a, 0x7f, 0x07, 0x7d, 0x7f, 0x7d, 0xff, 0x7f, 0x5f, 0x35,
0xae, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xae, 0x2a, 0xdf, 0xc5, 0xc7,
0xfd, 0xfd, 0xfd, 0xdd, 0xdf, 0x1d, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xaf, 0x2a, 0x7f, 0xd5, 0xf7, 0xff, 0xff, 0xff, 0xff, 0x67, 0x37,
0xaf, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0x2a, 0xff, 0xfd, 0xdf,
0xff, 0xdd, 0xdd, 0xdf, 0xfd, 0x1d, 0xab, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa,
0xaa, 0xba, 0x2a, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x7f, 0x7f, 0x35,
0xaa, 0xea, 0xaa, 0xae, 0xea, 0xea, 0xaa, 0xae, 0x2a, 0xff, 0xfd, 0xfd,
0xdd, 0xff, 0xfd, 0xff, 0xfd, 0x1d, 0xaa, 0xea, 0xaa, 0xaa, 0xba, 0xba,
0xab, 0xba, 0x2a, 0xff, 0xff, 0xf7, 0xf7, 0xff, 0xff, 0xff, 0x7f, 0x35,
0xaa, 0xaa, 0xae, 0xaa, 0xee, 0xee, 0xea, 0xee, 0x2a, 0xff, 0x0f, 0xff,
0xdd, 0xff, 0xff, 0xff, 0xff, 0x1f, 0xaa, 0x0a, 0x3a, 0xaa, 0xaa, 0xbb,
0xfb, 0xbf, 0x2a, 0xff, 0x07, 0x1c, 0xfc, 0xff, 0xff, 0xff, 0x7f, 0x3f,
0xaa, 0x8a, 0x08, 0xa8, 0xee, 0xee, 0xfe, 0xee, 0x2a, 0xfd, 0x01, 0x04,
0xe0, 0xff, 0xff, 0xff, 0xff, 0x3f, 0xaa, 0x02, 0x02, 0xa0, 0xba, 0xba,
0xfe, 0xff, 0x2b, 0xff, 0x03, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0x3f,
0xaa, 0x82, 0x00, 0x00, 0xe8, 0xee, 0xee, 0xee, 0x2f, 0xdf, 0x01, 0x00,
0x00, 0xf0, 0xff, 0xff, 0xff, 0x3f, };

View file

@ -0,0 +1,308 @@
/* XPM */
static char *magick[] = {
/* columns rows colors chars-per-pixel */
"70 46 256 2",
" c #2b2f1e",
". c #2d2b2b",
"X c #2a2927",
"o c #2d2e31",
"O c #2d322c",
"+ c #2d362a",
"@ c #2e3430",
"# c #332d2b",
"$ c #372c2a",
"% c #312a30",
"& c #33332d",
"* c #333c2c",
"= c #3a332d",
"- c #3a3929",
"; c #363b33",
": c #3b3532",
"> c #3b3b33",
", c #363733",
"< c #38354c",
"1 c #38422b",
"2 c #394435",
"3 c #3c464c",
"4 c #592b1f",
"5 c #44392d",
"6 c #453b33",
"7 c #553b2e",
"8 c #583b36",
"9 c #4c2c29",
"0 c #69362c",
"q c #6a3a33",
"w c #7c3a2d",
"e c #75372c",
"r c #793b32",
"t c #602e24",
"y c #433f4e",
"u c #493e75",
"i c #45472c",
"p c #484637",
"a c #485738",
"s c #53442e",
"d c #5c4d3c",
"f c #574a38",
"g c #58543b",
"h c #43572d",
"j c #4a6539",
"k c #556a3c",
"l c #654638",
"z c #63553b",
"x c #764337",
"c c #79412d",
"v c #607c3c",
"b c #4d4b48",
"n c #4b5844",
"m c #594d45",
"M c #5a5746",
"N c #555155",
"B c #5c5869",
"V c #4e4d69",
"C c #596847",
"Z c #5a6853",
"A c #597845",
"S c #597350",
"D c #655b48",
"F c #685e55",
"G c #77584a",
"H c #73544d",
"J c #6b5a6b",
"K c #68654b",
"L c #6a6354",
"P c #696657",
"I c #647b47",
"U c #677857",
"Y c #716655",
"T c #757456",
"R c #76634c",
"E c #6a6667",
"W c #7b7969",
"Q c #6d6f73",
"! c #58588f",
"~ c #5c5ea3",
"^ c #5d66af",
"/ c #665c9e",
"( c #727196",
") c #7977a6",
"_ c #6e73b2",
"` c #7478cd",
"' c #5d843e",
"] c #5e8447",
"[ c #65884a",
"{ c #6b944b",
"} c #6d9554",
"| c #719b4d",
" . c #739957",
".. c #6e8759",
"X. c #748967",
"o. c #778575",
"O. c #7b9b68",
"+. c #779877",
"@. c #6b8e68",
"#. c #78a658",
"$. c #7ca567",
"%. c #7ea675",
"&. c #7eb065",
"*. c #7c8d84",
"=. c #7f83b0",
"-. c #7baf88",
";. c #7d87cb",
":. c #91341d",
">. c #873b2b",
",. c #853b34",
"<. c #953c2b",
"1. c #983d34",
"2. c #a83a29",
"3. c #aa3c31",
"4. c #b83a2a",
"5. c #b73b33",
"6. c #b63d45",
"7. c #884336",
"8. c #9b402b",
"9. c #984537",
"0. c #8c402e",
"q. c #a7412b",
"w. c #a74435",
"e. c #b94437",
"r. c #864a44",
"t. c #87574a",
"y. c #994447",
"u. c #95544c",
"i. c #975855",
"p. c #8a5956",
"a. c #936b5a",
"s. c #876652",
"d. c #946c67",
"f. c #a94845",
"g. c #b3524c",
"h. c #ba5d7b",
"j. c #b16d59",
"k. c #b0746d",
"l. c #c43a2b",
"z. c #cb3a2b",
"x. c #c93727",
"c. c #c73c33",
"v. c #d7372a",
"b. c #d83a35",
"n. c #da2e27",
"m. c #ff1b38",
"M. c #e72d29",
"N. c #ec2c37",
"B. c #e5342b",
"V. c #ec363a",
"C. c #e73936",
"Z. c #f7292b",
"A. c #f92a37",
"S. c #f3312d",
"D. c #f63439",
"F. c #da3d43",
"G. c #c03e40",
"H. c #e93d45",
"J. c #fc2b48",
"K. c #f83b43",
"L. c #fa3b58",
"P. c #f03654",
"I. c #ff3b66",
"U. c #fb3e71",
"Y. c #c84239",
"T. c #d6443c",
"R. c #e4423b",
"E. c #c64b47",
"W. c #c94a57",
"Q. c #d84644",
"!. c #d54954",
"~. c #d75348",
"^. c #cc5754",
"/. c #cc5969",
"(. c #d6655b",
"). c #d56f71",
"_. c #e74546",
"`. c #e95657",
"'. c #f6454a",
"]. c #f94956",
"[. c #ec5055",
"{. c #fb4667",
"}. c #fe4877",
"|. c #fb5668",
" X c #fd5776",
".X c #e75a64",
"XX c #e8645c",
"oX c #f8686b",
"OX c #fa6774",
"+X c #f9737a",
"@X c #e96f6f",
"#X c #847597",
"$X c #8c7dae",
"%X c #b37498",
"&X c #837ec8",
"*X c #fd7985",
"=X c #e97b84",
"-X c #c56995",
";X c #82865e",
":X c #879172",
">X c #8aa877",
",X c #97a57c",
"<X c #89b06e",
"1X c #a2917c",
"2X c #a5b979",
"3X c #f9827c",
"4X c #989c95",
"5X c #869188",
"6X c #8785bc",
"7X c #8483a9",
"8X c #89a889",
"9X c #93af92",
"0X c #8fa5a3",
"qX c #af84aa",
"wX c #acad91",
"eX c #b0b1b0",
"rX c #8988c8",
"tX c #8886d8",
"yX c #969bdb",
"uX c #9691cc",
"iX c #8d8feb",
"pX c #9ca2ea",
"aX c #a09bd6",
"sX c #a9a7d9",
"dX c #a6abfa",
"fX c #b4b9ff",
"gX c #a8aff3",
"hX c #9dc393",
"jX c #aace93",
"kX c #a8c9af",
"lX c #bbc5c9",
"zX c #c2879b",
"xX c #cfae96",
"cX c #c4bcb8",
"vX c #c9b9a7",
"bX c #ff858c",
"nX c #ff9193",
"mX c #e1aaa4",
"MX c #d1ceb3",
"NX c #ede9ac",
"BX c #e8d4bc",
"VX c #d8cac4",
"CX c #d1d1ce",
"ZX c #c1c4e7",
"AX c #d2e5c6",
"SX c #d9e2e8",
"DX c #ebd9d0",
"FX c #e9ebd9",
"GX c #f1ead5",
"HX c #e7e4e6",
"JX c #f4e7e8",
"KX c #fafae9",
"LX c #fefefd",
"PX c #fcfaf5",
"IX c #f1f2f2",
"UX c #e6d6f0",
/* pixels */
"# & & = = = $ $ = $ $ # # # # # # & & = - 6 s 6 p s x 8.5.E.Q.'.K.V.T.4.4.q.q.8.0.<.<.<.0.1.e.e.9.7 , % $ = # . O # $ 8 H d.$X/ V V Q 4XW N ",
". O # # $ # # = & : $ # # # # # # & & = - 6 6 5 7 p l >.2.e.Q.H.K.K.T.q.q.4.8.8.>.<.<.<.<.1.5.c.9.5 , : & & & . @ % % 5 r i.$X^ u V B *.U N ",
". . # # # # . . # # # # # # # # # # # & = 5 5 5 5 p f 0 >.9.e.Q.D.V.e.q.q.q.<.<.<.>.>.>.7.9.c.g.p.> : = & & O O @ @ # # 9 H 6X` u < < 3 n M ",
"o o . . . . X X . . . . . # . # # # # # = = : 5 6 6 8 7 e <.w.e.Q.Q.q.8.1.1.<.>.>.>.>.,.7.9.e.j.:XZ 6 & O O . . # @ @ % # E uX;.( B Q *.*.Z ",
"o o o . . . X X X . X X X . . . # . . . = : : = 5 5 6 6 0 ,.1.9.w.e.8.<.<.<.<.>.>.>.w r r.9.g.1X8XQ n 2 O . # # . . . % X K 4X0XkXkX9XhX8XZ ",
"O O . & & # # . . . . . X X . . . . $ # = : = = $ = , % 9 0 7.0.<.9.1.<.>.0.>.>.e e w 7.r.u.:X9X9X+.U n : # X . % % % % X g >X>XhXhX%.8XX.M ",
"O & & : , : # # % o % % # # # . % # $ 5 5 5 = $ : 9 9 9 $ 9 0 ,.,.r 7.7.0.>.>.e e e r 7.r.p.o.8X8X+.@.@.Z * X X X X . X X M O.O.%.%.%.+.@.n ",
", , , > > 6 6 : : : = $ # & & , : 5 6 6 6 6 5 = 5 : 6 5 = 9 0 ,.r.7.,.c w w e e g.j.x H R T j.k.4X>X:X%.@.Z - X X X $ $ f P ..} .@.+.+.@.n ",
"> > 2 < 6 6 p p 6 6 6 6 6 : = & : 6 6 s 6 6 6 > : 6 r.y.7.f.9.3.3.9.3.6.w.x w 6._.^.D C s.`.J.J.L.{..X@X)././.g.y.9 $ i z ......X.+.4X*.U n ",
", : > 6 b 6 b p 6 6 6 6 6 5 : = - 6 7 s 7 6 5 > : x ].x.<.Y.3.5.e.2.5.c.D.R.T.C.n.Y.s.s.XXK._.'.J.J.J.L.U.U.}.}. X/.8 2 W 4X4X4XeXVXCXeXU Z ",
"@ , , > p b p p p b 6 6 5 - > : > 6 p p i 5 6 ; 6 f.2.2.q.2.2.3.3.3.e.z.M.Z.S.B.n.l.E.~.'.H.4.Y._.K.L.L.I.U.}.{. X X/.d.VXUXUXJXPXPXIXCX5Xo.",
"& . @ , > 6 p p N 7X) B y : $ & - 5 6 8 5 = & 9 ,.2.2.<.4.l.5.2.4.c.x.v.v.S.M.x.n.v.T.R.T.l.2.2.Q.'.'.].I.}.}.}. X{.=Xs.DXLXLXLXLXLXLXJXeXeX",
": & # & > p f f B pXfXpXuX( b < > i p > 3 V n d 9.2.3.2.4.v.b.z.b.b.R.M.Z.Z.M.v.x.v.T.~.Y.4.4.Y.Q.Q._.{.{.{.}. X X|.OX!.mXLXLXLXPXLXPXDXGXHX",
"p > - $ : 6 f f B yXfXfXfXgX&X/ V > > b ) qXh.W.4.2.4.l.b.C.v.C.C.v.R.S.Z.Z.B.x.x.x.v.~.T.4.4.Y.~.e.~.`..X|.}. X|.|.|.W.d.JXLXLXPXPXJXVXJXPX",
"p p p = = > p s N rXdXdXfXdXpXtX_ ! p.W.[.!.b.C.c.4.c.b.b.v.b.v.v.x.x.v.D.S.v.C.S.B.T.R.T.v.l.4.Y.4.Y.E..XOX|. X+X X=Xd.d VXLXLXLXLXPXGXKXKX",
"m f f p 5 6 p s N 6XpXdXdXgXgXdXpX%XF.H.C.c.T.H.C.Y.Y.4.x.v.B.B.x.x.x.x.v.B.S.N.S.B.x.T.Q.~.l.l.4.4.5.e.XXoXoX@X@XOX*X:Xi VXLXLXLXKXPXKXKXKX",
"m d m f f p f f N $XyXiXpXyXrX6X-XH.C.H.F.c.Q.H.T.Y.4.4.x.B.B.B.v.4.c.V.x.x.x.v.z.x.z.b.V.[.T.l.4.2.2.4.~.@X.XoXOXoX|.X.C GXLXLXFXAXAXKXFXFX",
"d d d d f f f f b J ( $XtX_ ^ J F.K._.'.Q.5.Y.c.Y.e.4.x.v.B.S.Z.A.N.A.Z.x.x.B.C.Y.x.x.B.B.v.v.T.4.2.2.2.e.@X+X+X+X|.I.,XO.MXAXkX9XhXjXAXFXVX",
"d d d f f d m d m m B / rXqX%X6.z.C.K._.c.2.c.b.Y.4.Y.x.v.S.B.M.Z.A.m.N.H.N.A.N.B._.b.b.v.l.l.~.c.c.z.4.4..XbX*X+X{.].;X[ ..I ..$.<X<X>XeXcX",
"d f f f d d d d z z m B ( zXOXP.H.Q._.Q.3.2.c.H.R.T.x.v.B.B.S.S.N.J.J.|.|.P.n.4.Y.[.T.x.4.2.2.Q.C.S.Z.C.4.(.bX*XOX{.L.k I X.O.%.<X<X<X<XwXMX",
"f f f f d d d d d z l J 6XqXoX].P.H.b.c.2.4.b.n.v.R.T.v.V.D.m.Z.Z.N.P. X].c.<.:.3.c.Q.l.l.4.5.T.B.Z.Z.S.x.E.nX*X XI.F.h .>X>X$.$.$.&.<X9X4X",
"z l l d d l d d B J E _ iXuXk.XX].K.b.Y.2.g.c.x.v.B.R.v.S.'.'.M.n.n.H.F.b.l.Q.!.E.[.T.T.b.K.J.C.n.S.A.S.x.e.nX+X{.I.f.j .O.O. .O.$.#.<X<XU ",
"l d d d d z f B $X$X_ rXuXeXxXj.Y.'.V.b.5.e.(.5.n.M.b.B.Z.S.[.[.[.`.F.V.N.].+XOX_.b.b.T.B.A.D.B.v.S.A.S.v.5.bX XI.{.7 j .O.} .#.#.| <X<XU ",
"d d d D z m F ( _ _ ` sXNXNXNXwXd.).].V.b.4.g.~.x.R.R.M.M.n.z.[.|.OX|.N.A.'.|.|.B.C.b.b.C.C.V.v.B.S.D.S.v.5.*X XI.g.- 2 U .{ { #.| { [ j h ",
"f d m D d F ) _ ^ ` yXZXDXVXcX5XW a.@XoXR.R.l.Y.x._._.v.B.x.4.Y.c.|.`.b.'.H.V.D.S.S.B.b.V.V.C.v.v.S.S.S.n.Q.OXI.I.r.f i a [ [ { } [ ] ] A A ",
"p p d d F ( ) ~ _ tXyXyXaXuXrXQ M G j.@X3XXXx.x.x.v.z.v.v.Y.Y.l.5.~.T.x.S.A.A.m.A.N.b.C.C.N.B.v.v.B.B.B.v.`.{.I.W.$ i - a I ' ' { { ] ] I A ",
"& > p d E ( ! ~ ` tXrXrXtXrX6Xp.M G ^.@X3X3Xl.4.x.v.z.x.v.x.l.z.c.c.z.n.A.A.J.A.A.D.b.b.C.D.B.v.v.n.v.v.b.|.I.I.q X + g 2XX.' { } { { ] [ [ ",
"O . , p B ! ~ ` iX` rXtXtXrX( H K D g.`.oXT.x.x.v.n.Y.l.T.z.x.x.v.b.b.V.J.N.N.D.V.C.b.C.V.D.C.x.x.x.x.l.[.{.I.f., % i 2XjX .' | } [ ] ] [ { ",
"+ X O > b B / iXiX&XrXrXrX#XF D D D t.`.C.n.v.v.v.x.q.x.T.x.l.x.x.v.C.D.N._.`.R.B.b.C.V.C.V.b.l.4.4.4.4.|.L.W.i 9 :XjX,Xj v { ] ] { { { } ",
"> > : 1 p n E 6XtX$X) ) Q F D D K G w.v.B.B.v.x.v.4.4.v.R.4.4.l.b.C.C.C.'.`.Y.b.b.C.V.V.V.C.T.2.2.2.:.Y.|.!.t.- h #.<X:Xa 1 I { ] { { } { #.",
"d g b g M D D E ( J N N D D G K t.f.4.x.b.v.v.v.v.4.2.l.T.T.T.b.C.V.C.c.4.4.b.V.V.C.C.C.C.C.Y.2.8.:.:.^.g.i.t.v 2X| a > # i [ { { } { | #.} ",
"D D D D D D D D F D D d p d M Z a.!.v.4.z.v.v.v.v.e.:.2.x.x.B.C.V.V.v.2.2.4.T.V.V.C.C.C.b.Y.2.:.0.:.c u.u.u.a.>Xj , = : 1 [ | | | | #.#.] ",
"F F F F F F K F D K K D p 2 2 p g g._.l.l.v.z.v.v.4.:.<.4.b._.b.5.5.2.<.8.2.4.b.C.C.R.Y.3.<.>.>.w e >.9.u.i.t.h + ; p - - 1 [ .| | #.&.] ] ",
"F K G F F F F F L F F F M p 2 1 1 u.`.'.z.z.z.c.T.Y.3.e.Q._.Q.3.0.7.w >.>.<.<.<.4.5.4.2.<.>.>.w e e 9.7.u.i.a.I a Z a - - 1 [ | } | &.[ ] ] ",
"D K F K L Y L K K Y L L L g i - 7.E.!.oX~.T.Q.Q.Q._._._.'.R.b.1.0.,.,.r w w e w >.>.<.>.>.w e e 0 r 7.t.u.p.M j A h 1 > = - I .} #.} ] { ] ",
"F L Y L F F L F L F L L F K D i x y.f.E.E.T.Y.Y.Q._.Q._.C.T.c.1.>.r ,.>.>.w w w r w e r e e e 0 0 x t.u.u.R C C a 1 - > * - k .#.} ] ] { ] ",
"K F L K L L L K Y K R F Q 4XeXW 1 1 1 > l f.F.T.T.Q.Q.Q.Q.T.T.3.>.w >.>.w w w w e e e e e e 0 0 t r u.i.R D a * 2 2 2 * , = a } #.] ] ] ] ] ",
"F K L F K L F L L F F d.CXLXLXDX1X2 1 - . 8 ).^.b.H.Q.H.Q.Y.T.c.>.w w w w w w w r e e e 0 e 0 0 t 0 u.G p 2 + @ + 1 2 1 O & i .} A A ] ] A ",
"L L L L P L L L L P E lXLXLXLXKXFX,Xi - b 4XJXGX).5.c.F.F.T.b.E.<.,.w >.r w r r q 0 0 0 0 0 0 t 4 0 H 6 + * , , * + 2 2 & X i O.] j A A ] C ",
"L K L K K L L L L P B eXIXLXKXKXKXDXT p 4XJXLXLXPXmXf.5.Y.Y.Q.5.,.w w ,.r w r r 0 0 0 0 0 0 0 0 q H , & * & * + + + + 1 2 + p @.A j j A ] 3 ",
"L L P P P L P P K E 0XHXLXLXKXIXKXMXT Q CXLXLXLXLXLXDXj.2.c.Y.w.,.,.,.r e e e 0 0 0 0 0 0 0 0 l s.P O @ + + O O + + O O 2 2 2 n 2 A j S S 2 ",
"L L Z L P L P F Z *.SXLXLXLXFXFXGXMXwXVXIXLXLXLXLXLXLXLXxXw.4.5.1.,.H q x q q 0 e q 0 q q l l g o.n O + * + O O O O O O O + 1 + 2 j j S S + ",
"P L L P P P E P P Q lXLXLXPXFXFXGXVXJXLXLXLXLXLXLXPXLXLXLXBXj.1.<.w q r r x l c e 0 8 8 s g g g U 1 ; * ; + @ o O O O . O O + 2 2 1 2 S n + ",
"Z L P P P P F P S Q lXLXLXPXKXAXAXFXPXLXLXPXLXLXLXLXLXLXLXLXKXvXa.x t 0 0 l 0 l l l f D i 1 i T C * ; ; ; ; ; @ , , O O X X O O 2 2 1 2 3 @ ",
"L L P P P P E P P Q lXLXLXPXKXMXcXJXLXLXPXLXLXLXLXLXLXPXLXLXLXLXLXKXDXvXz s s z f p p C i 1 i K D i ; > ; 2 ; 3 ; 2 2 @ @ O o o + 2 2 2 2 + ",
"Z P P P P P P P P *.CXLXKXFXAXvXcXHXPXLXLXLXLXLXPXLXLXLXPXJXLXLXLXLXKXDXR s s g f a a i a k K g g f p p ; 2 2 2 2 2 2 3 2 2 @ 1 j j 2 2 n * "
};

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -0,0 +1 @@
/0234323221/.//-.146:?BBCEP[bjrvtrla_^[WUTTTVXae\?63320./..>Yu<59>NPv遥V./122102220..00/01358>@?ADMTYhqtutk_^]ZWTSSRTWcj\964220//0,7PjаFF^ネW,,..-.-------../1025477:=CGIM]jqsqb[\ZXTSRQPSZfkd<54321111/.4V支G96CNX,,--++**+++,--.-...03567;@ABIS\grr^XXWURPPPOU_g}雲A4//../00.-d。茎]k紫`...-+*)'***)(+-,-+,-354369;;DRVYbhZUTTRPNMMQY\o到zU=/)--,-.-*i悚シケヲャ評/.000/.++))))*,-++.0463235635FRUSYVTRSRMLJMX\e<>梔mV:*))*+-,'^李オイ惧サ2236632/0-*++./0/037::63465218FOOPTTQOOLIHPY^l∩沁x\8&'***'%X<>駐湯}P778:=<:88621223478:>@?:8899868BRYURRMLLGnrSXcw}込酪推`:+(,,0Mju<75>窮yR89=??AA@@><;;8547<?CC?<;;:Z`Vg`\_^^_^QLdsu]cs€klyч鰍~t^85?[zz{剄rX66<@BCCDD?=><:769=ACA>;;9T}`Td[_dWaiomnm`gok㏄q{nnquzz|FBv恙惷フマーr_247;BEGHDIA<:9989=BB?<:9=cWS\XS\__dbghigcau~zo[itw{y||≠月€tハ矍鴕<E79F8D>マ閲/.27=CJHW<48>YB5118<AB;425O\XV_d_Y\d]cgigbceipoeZ]ozz}}ф㈱{嬲レ<E5ACB2><EFBE9A><EFBFBD><EFBFBD>隯セキ7303:BKIcェクィ敏K@9;@=CQNM[Z_[]efdfhmggihbbbo}a[^gqrxミラ糾<E383A9>uケ<75><EFBDB9><EFBFBD><EFBFBD>鉈?=615?HIY楙ツテッ<EFBE83>R:9L}竹p]W\ahkfonhrsghf_cedxm]_evjy~ш<>牛液€<E6B6B2><C280><EFBFBD><E6B484>IG@97=EEP清コサウァ媒g`t~uhphaeigdfhc`aksldglhj{rg_`fals<6C><EFBFBD>掉Pヒ<50><EFBE8B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NIC=@FGP鹿ョウアオウョ繋qmgnrkij\^ejga^_acjifge_tsxa`^^^c<>酎吏」秋ヒ<E7A78B><EFBE8B><EFBFBD><EFBFBD><EFBFBD><EFBFBD>PNKIGJKS<4B>洫「伯衛oqpeqqkcc^dkfgd_coa_`ccadkra]\[[y投侍悼~b<><62><EFBFBD>顆韜POONNMMMNc{㍽〈`lquwpbibg_^_dglkkjif_blol]`jdcaq`WYVi麿屎厭刹ネレセィィクマ睹NNNLMNPQPOXm煙<6D>equtbWhkl\aadmfeee_eqjngiwfjc_`yedf^[制「揆y€w}p{滋、涕ケMMMKMNNQQPP]|囃sqmvo]Vinzv^aiiklhjoьqa[j}nc^XXoiklk[€ォ」<EFBDAB>vYrヮ吏擒亟タMMMNNOPQQPNb於宦vpkeY_eegzjfmnddacv<63>dSE[asda[_ufkjj^oー」鋼mOヵ卵数<E58DB5>ゥ朧OOOOOPNZeh{白滑hfYih`fgqji}xeaenmh_uvo〈lklppckjj`hウ怐z]Wы糾資喋噎QQQQQQN\€л粥ウキ€ozlg]iテcelifl<66>ネnf}尓~enqfkrjejkib^ャ捜zCUユ去歯術ORTTTQ\z┫ワ<E294AB><EFBDB1>f`m{_pocdde≧棟kg|劫hjhflnkdhilkg]<5D>越o9Drマ∞<E3839E>v[TINTWT`}~k{」ヌラモコ<EFBE93>w<EFBFBD>xkbgfuvhic]fg延ixrkoljjkklkfgiljdm布}[N@Uwy|<7C>skbfAEOT_ywer彫ァ」梺lW^t嗇<74>[cgchhbed_xr`ghiegijllkhfghkjcョxl4?5Rmqw}ytrqo49FMfoWdヲ梼件<E6A2BC>Y\x墾・b^bdd`gabcchcalljgimikklhdfdffj仇~D*/Vァ€o<6F>ytsw--7B\aa<61>結去施^\]p<>t`cead_qcb`bhimnhinnihlnojcccaaz~wb4/Fォナ€pпwwvw}/,0:MYr囿<72>博}cZ]]d~qbfcg_aco_ab`bmohwピiijmmmj^``ZZ<5A>rA/8言弩nxu||z<>=<;@JRd<52>€sb\]_fdddfedf^Zjw[^bilnl{<7B>iijlnlmk]YXPl益f4G汚舟Ap~wz~庚NNOSWZfohYUV[`cfk[`hgdef_T`iolkommd\`imkkkllnhYTOK{slhiヲ<69>:1>q<>€~≡瓜\\[\^_^^\YLGNX]orc_dgedfaO\^ejkmmeXW\jonmmmlhXSPJLjfjx忙,657=s<>ャ緒v_```_cb`aaaYHACFMswb^deed_NQ]itj]^WXZY[hpqqi[SOOLETeijeE-;J97;s<><73>努u```aabbbbbbbUC?<>i<>ebfhii_dsxnYYTONQRRX_c^TPOMLHF\`gkwlMdL76<t<>鞄zvu``_cbdccdccdaO@;Zew度lnruvxxtriXUPNNMLLKMPQONKGHDL^bfhTYiL::7;j援逗qzs`acaabbbccdd_`X=V^bpqmikpprsqqjUOOOONMLLKKKKJIFDBObdfhcaU<7;76[ь<>synabcbbbbbccc\p浣y97;:Hcmlqrrrooo^PONNMMMMKJJJIFCC?KehgZL8?E<776Oヰqlsskabcbbbbccb^<5E><>笂E97-F奔jpponmofQNNMKLLLKHFGFECA;GgcL;2209D703Eャdkpqhbbbbbccddcjチ<6A><EFBE81><EFBFBD><EFBFBD><EFBFBD>J6I夲謠dhlkmmhSOMMKLMMIEDEEED=7J]@378753=A3+D虐`djr^bbbbbbdddadー<64><EFBDB0><EFBFBD>lE暮<45><E69AAE>シi\jjnaSPNLKLKIEECCCDECGU724444433<>/H~Z\[fqMdddddddfdl・<6C><EFBDA5><EFBFBD><EFBFBD>ユnuヒ<75><EFBE8B><EFBFBD><EFBFBD><EFBFBD>縲Zfl`UQOLJHGEEDBCEFHMtj.4332111/29:FPLZUek=dddddceed~゚<><EFBE9F>鐱褊マッヒ<EFBDAF><EFBE8B><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>__`VROMLLHFGEEEINOO|T-3431/0/.0/388<MSgc3dddeeddgeqハ<71><EFBE8A><EFBFBD>鱧ユ蕈<EFBE95><E89588><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ラ~YOKMLMOLJIHGF?NVYp94564200.,-/01<>8CbW0cdeeedeggqテ<71><EFBE83><EFBFBD><EFBFBD>ユ碾<EFBE95><E7A2BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>TA@FKIIJJJ\C<Dl[4:::::9840.+,.0AD8IK4bceddefgfpヘ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ソ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>タVGMNNLKaE?EdXD<;;<<><=;93.-+.ACAD5`cgffffeg<65><67><EFBFBD>タタ脯<EFBE80><E884AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>臚IMMKKIGL^`SRPH@<<>==>?A@<9=SUDIR;

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show more