From 987feef6c1e3d08da3d9458fa5c464a32fc30191 Mon Sep 17 00:00:00 2001 From: cristy Date: Thu, 17 Nov 2011 12:24:56 +0000 Subject: [PATCH] --- MagickCore/distort.c | 136 +++++++++++++++++++++++++++++++++++ MagickCore/distort.h | 2 + MagickCore/magick-config.h | 50 ++++--------- MagickCore/shear.c | 140 +------------------------------------ MagickCore/shear.h | 3 +- MagickCore/version.h | 4 +- config/configure.xml | 4 +- configure | 2 +- libtool | 4 +- 9 files changed, 163 insertions(+), 182 deletions(-) diff --git a/MagickCore/distort.c b/MagickCore/distort.c index 326e3c6da..3993beda2 100644 --- a/MagickCore/distort.c +++ b/MagickCore/distort.c @@ -272,6 +272,64 @@ static double poly_basis_dy(ssize_t n, double x, double y) % % % % % % +% A f f i n e T r a n s f o r m I m a g e % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% AffineTransformImage() transforms an image as dictated by the affine matrix. +% It allocates the memory necessary for the new Image structure and returns +% a pointer to the new image. +% +% The format of the AffineTransformImage method is: +% +% Image *AffineTransformImage(const Image *image, +% AffineMatrix *affine_matrix,ExceptionInfo *exception) +% +% A description of each parameter follows: +% +% o image: the image. +% +% o affine_matrix: the affine matrix. +% +% o exception: return any errors or warnings in this structure. +% +*/ +MagickExport Image *AffineTransformImage(const Image *image, + const AffineMatrix *affine_matrix,ExceptionInfo *exception) +{ + double + distort[6]; + + Image + *deskew_image; + + /* + Affine transform image. + */ + assert(image->signature == MagickSignature); + if (image->debug != MagickFalse) + (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); + assert(affine_matrix != (AffineMatrix *) NULL); + assert(exception != (ExceptionInfo *) NULL); + assert(exception->signature == MagickSignature); + distort[0]=affine_matrix->sx; + distort[1]=affine_matrix->rx; + distort[2]=affine_matrix->ry; + distort[3]=affine_matrix->sy; + distort[4]=affine_matrix->tx; + distort[5]=affine_matrix->ty; + deskew_image=DistortImage(image,AffineProjectionDistortion,6,distort, + MagickTrue,exception); + return(deskew_image); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % + G e n e r a t e C o e f f i c i e n t s % % % % % @@ -2704,6 +2762,84 @@ if ( d.x == 0.5 && d.y == 0.5 ) { % % % % % % +% R o t a t e I m a g e % +% % +% % +% % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% RotateImage() creates a new image that is a rotated copy of an existing +% one. Positive angles rotate counter-clockwise (right-hand rule), while +% negative angles rotate clockwise. Rotated images are usually larger than +% the originals and have 'empty' triangular corners. X axis. Empty +% triangles left over from shearing the image are filled with the background +% color defined by member 'background_color' of the image. RotateImage +% allocates the memory necessary for the new Image structure and returns a +% pointer to the new image. +% +% The format of the RotateImage method is: +% +% Image *RotateImage(const Image *image,const double degrees, +% ExceptionInfo *exception) +% +% A description of each parameter follows. +% +% o image: the image. +% +% o degrees: Specifies the number of degrees to rotate the image. +% +% o exception: return any errors or warnings in this structure. +% +*/ +MagickExport Image *RotateImage(const Image *image,const double degrees, + ExceptionInfo *exception) +{ + Image + *rotate_image; + + MagickRealType + angle; + + PointInfo + shear; + + size_t + rotations; + + VirtualPixelMethod + method; + + /* + Adjust rotation angle. + */ + assert(image != (Image *) NULL); + assert(image->signature == MagickSignature); + if (image->debug != MagickFalse) + (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); + assert(exception != (ExceptionInfo *) NULL); + assert(exception->signature == MagickSignature); + angle=degrees; + while (angle < -45.0) + angle+=360.0; + for (rotations=0; angle > 45.0; rotations++) + angle-=90.0; + rotations%=4; + shear.x=(-tan((double) DegreesToRadians(angle)/2.0)); + shear.y=sin((double) DegreesToRadians(angle)); + if ((fabs(shear.x) < MagickEpsilon) && (fabs(shear.y) < MagickEpsilon)) + return(IntegralRotateImage(image,rotations,exception)); + method=SetImageVirtualPixelMethod(image,BackgroundVirtualPixelMethod); + rotate_image=DistortImage(image,ScaleRotateTranslateDistortion,1,°rees, + MagickTrue,exception); + method=SetImageVirtualPixelMethod(image,method); + return(rotate_image); +} + +/* +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% % +% % +% % % S p a r s e C o l o r I m a g e % % % % % diff --git a/MagickCore/distort.h b/MagickCore/distort.h index 90722a978..7386d4050 100644 --- a/MagickCore/distort.h +++ b/MagickCore/distort.h @@ -70,9 +70,11 @@ typedef enum } SparseColorMethod; extern MagickExport Image + *AffineTransformImage(const Image *,const AffineMatrix *,ExceptionInfo *), *DistortImage(const Image *,const DistortImageMethod,const size_t, const double *,MagickBooleanType,ExceptionInfo *exception), *DistortResizeImage(const Image *,const size_t,const size_t,ExceptionInfo *), + *RotateImage(const Image *,const double,ExceptionInfo *), *SparseColorImage(const Image *,const SparseColorMethod,const size_t, const double *,ExceptionInfo *); diff --git a/MagickCore/magick-config.h b/MagickCore/magick-config.h index 1d5e0df2d..f140ac3d2 100644 --- a/MagickCore/magick-config.h +++ b/MagickCore/magick-config.h @@ -12,9 +12,7 @@ /* #undef AUTOTRACE_DELEGATE */ /* Define if coders and filters are to be built as modules. */ -#ifndef MAGICKCORE_BUILD_MODULES -#define MAGICKCORE_BUILD_MODULES 1 -#endif +/* #undef BUILD_MODULES */ /* Define if you have the bzip2 library */ #ifndef MAGICKCORE_BZLIB_DELEGATE @@ -77,9 +75,7 @@ #endif /* Define if you have FFTW library */ -#ifndef MAGICKCORE_FFTW_DELEGATE -#define MAGICKCORE_FFTW_DELEGATE 1 -#endif +/* #undef FFTW_DELEGATE */ /* Location of filter modules */ #ifndef MAGICKCORE_FILTER_PATH @@ -221,9 +217,7 @@ #endif /* Define to 1 if you have the header file. */ -#ifndef MAGICKCORE_HAVE_CL_CL_H -#define MAGICKCORE_HAVE_CL_CL_H 1 -#endif +/* #undef HAVE_CL_CL_H */ /* Define to 1 if you have the header file. */ #ifndef MAGICKCORE_HAVE_COMPLEX_H @@ -446,15 +440,15 @@ #endif /* Define if you have the header file. */ -/* #undef HAVE_LCMS2_H */ +#ifndef MAGICKCORE_HAVE_LCMS2_H +#define MAGICKCORE_HAVE_LCMS2_H 1 +#endif /* Define if you have the header file. */ /* #undef HAVE_LCMS2_LCMS2_H */ /* Define if you have the header file. */ -#ifndef MAGICKCORE_HAVE_LCMS_H -#define MAGICKCORE_HAVE_LCMS_H 1 -#endif +/* #undef HAVE_LCMS_H */ /* Define if you have the header file. */ /* #undef HAVE_LCMS_LCMS_H */ @@ -1192,9 +1186,7 @@ #endif /* Define if you have JBIG library */ -#ifndef MAGICKCORE_JBIG_DELEGATE -#define MAGICKCORE_JBIG_DELEGATE 1 -#endif +/* #undef JBIG_DELEGATE */ /* Define if you have JPEG version 2 "Jasper" library */ #ifndef MAGICKCORE_JP2_DELEGATE @@ -1223,9 +1215,7 @@ #endif /* Define if you have LQR library */ -#ifndef MAGICKCORE_LQR_DELEGATE -#define MAGICKCORE_LQR_DELEGATE 1 -#endif +/* #undef LQR_DELEGATE */ /* Define if using libltdl to support dynamically loadable modules */ #ifndef MAGICKCORE_LTDL_DELEGATE @@ -1237,7 +1227,7 @@ /* Define to the system default library search path. */ #ifndef MAGICKCORE_LT_DLSEARCH_PATH -#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/R/lib:/usr/lib64/atlas:/opt/modules/pkg/intel/f77/10.0.025/lib:/opt/intel/lib/intel64:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/nvidia:/usr/lib64/octave/3.4.2:/usr/lib64/qt-3.3/lib:/usr/lib64/tracker-0.12:/usr/lib64/xulrunner-2" +#define MAGICKCORE_LT_DLSEARCH_PATH "/lib64:/usr/lib64:/lib:/usr/lib:/usr/lib64/atlas:/usr/lib/llvm:/usr/lib64/llvm:/usr/local/lib:/usr/lib64/mysql:/usr/lib64/qt-3.3/lib:/usr/lib64/tcl8.5/tclx8.4:/usr/lib64/tcl8.5:/usr/lib64/tracker-0.12:/usr/lib/wine/:/usr/lib64/wine/:/usr/lib64/xulrunner-2" #endif /* The archive extension */ @@ -1288,9 +1278,7 @@ /* #undef NO_MINUS_C_MINUS_O */ /* Define if you have OPENEXR library */ -#ifndef MAGICKCORE_OPENEXR_DELEGATE -#define MAGICKCORE_OPENEXR_DELEGATE 1 -#endif +/* #undef OPENEXR_DELEGATE */ /* Name of package */ #ifndef MAGICKCORE_PACKAGE @@ -1360,9 +1348,7 @@ #endif /* Define if you have RSVG library */ -#ifndef MAGICKCORE_RSVG_DELEGATE -#define MAGICKCORE_RSVG_DELEGATE 1 -#endif +/* #undef RSVG_DELEGATE */ /* Define to the type of arg 1 for `select'. */ #ifndef MAGICKCORE_SELECT_TYPE_ARG1 @@ -1520,9 +1506,7 @@ #endif /* Define if you have WEBP library */ -#ifndef MAGICKCORE_WEBP_DELEGATE -#define MAGICKCORE_WEBP_DELEGATE 1 -#endif +/* #undef WEBP_DELEGATE */ /* Define to use the Windows GDI32 library */ /* #undef WINGDI32_DELEGATE */ @@ -1531,9 +1515,7 @@ /* #undef WITH_DMALLOC */ /* Define if you have WMF library */ -#ifndef MAGICKCORE_WMF_DELEGATE -#define MAGICKCORE_WMF_DELEGATE 1 -#endif +/* #undef WMF_DELEGATE */ /* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most significant byte first (like Motorola and SPARC, unlike Intel). */ @@ -1589,9 +1571,7 @@ /* #undef _MINIX */ /* Define this for the OpenCL Accelerator */ -#ifndef MAGICKCORE__OPENCL -#define MAGICKCORE__OPENCL 1 -#endif +/* #undef _OPENCL */ /* Define to 2 if the system does not provide POSIX.1 features except with this defined. */ diff --git a/MagickCore/shear.c b/MagickCore/shear.c index 423b08fc0..e039b2180 100644 --- a/MagickCore/shear.c +++ b/MagickCore/shear.c @@ -83,64 +83,6 @@ % % % % % % -% A f f i n e T r a n s f o r m I m a g e % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% AffineTransformImage() transforms an image as dictated by the affine matrix. -% It allocates the memory necessary for the new Image structure and returns -% a pointer to the new image. -% -% The format of the AffineTransformImage method is: -% -% Image *AffineTransformImage(const Image *image, -% AffineMatrix *affine_matrix,ExceptionInfo *exception) -% -% A description of each parameter follows: -% -% o image: the image. -% -% o affine_matrix: the affine matrix. -% -% o exception: return any errors or warnings in this structure. -% -*/ -MagickExport Image *AffineTransformImage(const Image *image, - const AffineMatrix *affine_matrix,ExceptionInfo *exception) -{ - double - distort[6]; - - Image - *deskew_image; - - /* - Affine transform image. - */ - assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) - (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); - assert(affine_matrix != (AffineMatrix *) NULL); - assert(exception != (ExceptionInfo *) NULL); - assert(exception->signature == MagickSignature); - distort[0]=affine_matrix->sx; - distort[1]=affine_matrix->rx; - distort[2]=affine_matrix->ry; - distort[3]=affine_matrix->sy; - distort[4]=affine_matrix->tx; - distort[5]=affine_matrix->ty; - deskew_image=DistortImage(image,AffineProjectionDistortion,6,distort, - MagickTrue,exception); - return(deskew_image); -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % + C r o p T o F i t I m a g e % % % % % @@ -988,7 +930,7 @@ MagickExport Image *DeskewImage(const Image *image,const double threshold, % % % % % % -+ I n t e g r a l R o t a t e I m a g e % +% I n t e g r a l R o t a t e I m a g e % % % % % % % @@ -1010,7 +952,7 @@ MagickExport Image *DeskewImage(const Image *image,const double threshold, % o rotations: Specifies the number of 90 degree rotations. % */ -static Image *IntegralRotateImage(const Image *image,size_t rotations, +MagickExport Image *IntegralRotateImage(const Image *image,size_t rotations, ExceptionInfo *exception) { #define RotateImageTag "Rotate/Image" @@ -1849,84 +1791,6 @@ static MagickBooleanType YShearImage(Image *image,const MagickRealType degrees, % % % % % % -% R o t a t e I m a g e % -% % -% % -% % -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% -% RotateImage() creates a new image that is a rotated copy of an existing -% one. Positive angles rotate counter-clockwise (right-hand rule), while -% negative angles rotate clockwise. Rotated images are usually larger than -% the originals and have 'empty' triangular corners. X axis. Empty -% triangles left over from shearing the image are filled with the background -% color defined by member 'background_color' of the image. RotateImage -% allocates the memory necessary for the new Image structure and returns a -% pointer to the new image. -% -% The format of the RotateImage method is: -% -% Image *RotateImage(const Image *image,const double degrees, -% ExceptionInfo *exception) -% -% A description of each parameter follows. -% -% o image: the image. -% -% o degrees: Specifies the number of degrees to rotate the image. -% -% o exception: return any errors or warnings in this structure. -% -*/ -MagickExport Image *RotateImage(const Image *image,const double degrees, - ExceptionInfo *exception) -{ - Image - *rotate_image; - - MagickRealType - angle; - - PointInfo - shear; - - size_t - rotations; - - VirtualPixelMethod - method; - - /* - Adjust rotation angle. - */ - assert(image != (Image *) NULL); - assert(image->signature == MagickSignature); - if (image->debug != MagickFalse) - (void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename); - assert(exception != (ExceptionInfo *) NULL); - assert(exception->signature == MagickSignature); - angle=degrees; - while (angle < -45.0) - angle+=360.0; - for (rotations=0; angle > 45.0; rotations++) - angle-=90.0; - rotations%=4; - shear.x=(-tan((double) DegreesToRadians(angle)/2.0)); - shear.y=sin((double) DegreesToRadians(angle)); - if ((fabs(shear.x) < MagickEpsilon) && (fabs(shear.y) < MagickEpsilon)) - return(IntegralRotateImage(image,rotations,exception)); - method=SetImageVirtualPixelMethod(image,BackgroundVirtualPixelMethod); - rotate_image=DistortImage(image,ScaleRotateTranslateDistortion,1,°rees, - MagickTrue,exception); - method=SetImageVirtualPixelMethod(image,method); - return(rotate_image); -} - -/* -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% % -% % -% % % S h e a r I m a g e % % % % % diff --git a/MagickCore/shear.h b/MagickCore/shear.h index f1871c1b9..aa4baec3e 100644 --- a/MagickCore/shear.h +++ b/MagickCore/shear.h @@ -23,9 +23,8 @@ extern "C" { #endif extern MagickExport Image - *AffineTransformImage(const Image *,const AffineMatrix *,ExceptionInfo *), *DeskewImage(const Image *,const double,ExceptionInfo *), - *RotateImage(const Image *,const double,ExceptionInfo *), + *IntegralRotateImage(const Image *,size_t,ExceptionInfo *), *ShearImage(const Image *,const double,const double,ExceptionInfo *), *ShearRotateImage(const Image *,const double,ExceptionInfo *); diff --git a/MagickCore/version.h b/MagickCore/version.h index 1057efb56..e6afdfd66 100644 --- a/MagickCore/version.h +++ b/MagickCore/version.h @@ -27,14 +27,14 @@ extern "C" { */ #define MagickPackageName "ImageMagick" #define MagickCopyright "Copyright (C) 1999-2011 ImageMagick Studio LLC" -#define MagickSVNRevision "exported" +#define MagickSVNRevision "5993" #define MagickLibVersion 0x700 #define MagickLibVersionText "7.0.0" #define MagickLibVersionNumber 7,0,0 #define MagickLibAddendum "-0" #define MagickLibInterface 7 #define MagickLibMinInterface 7 -#define MagickReleaseDate "2011-11-16" +#define MagickReleaseDate "2011-11-17" #define MagickChangeDate "20110801" #define MagickAuthoritativeURL "http://www.imagemagick.org" #if defined(MAGICKCORE_OPENMP_SUPPORT) diff --git a/config/configure.xml b/config/configure.xml index c16e39e6f..f8058f0f0 100644 --- a/config/configure.xml +++ b/config/configure.xml @@ -10,8 +10,8 @@ - - + + diff --git a/configure b/configure index de970a92c..47d476a11 100755 --- a/configure +++ b/configure @@ -3609,7 +3609,7 @@ MAGICK_LIBRARY_CURRENT_MIN=`expr $MAGICK_LIBRARY_CURRENT - $MAGICK_LIBRARY_AGE` MAGICK_LIBRARY_VERSION_INFO=$MAGICK_LIBRARY_CURRENT:$MAGICK_LIBRARY_REVISION:$MAGICK_LIBRARY_AGE -MAGICK_SVN_REVISION=5982 +MAGICK_SVN_REVISION=5993 diff --git a/libtool b/libtool index 010107dee..d96d9c5e8 100755 --- a/libtool +++ b/libtool @@ -275,7 +275,7 @@ hardcode_into_libs=yes sys_lib_search_path_spec="/usr/lib/gcc/x86_64-redhat-linux/4.6.2 /usr/lib64 /lib64 " # Run-time system search path for libraries. -sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /usr/lib64/atlas /usr/lib/llvm /usr/lib64/llvm /usr/lib64/mysql /usr/lib64/qt-3.3/lib /usr/lib64/tcl8.5/tclx8.4 /usr/lib64/tcl8.5 /usr/lib64/tracker-0.12 /usr/lib/wine/ /usr/lib64/wine/ /usr/lib64/xulrunner-2 " +sys_lib_dlsearch_path_spec="/lib64 /usr/lib64 /lib /usr/lib /usr/lib64/atlas /usr/lib/llvm /usr/lib64/llvm /usr/local/lib /usr/lib64/mysql /usr/lib64/qt-3.3/lib /usr/lib64/tcl8.5/tclx8.4 /usr/lib64/tcl8.5 /usr/lib64/tracker-0.12 /usr/lib/wine/ /usr/lib64/wine/ /usr/lib64/xulrunner-2 " # Whether dlopen is supported. dlopen_support=yes @@ -8490,7 +8490,7 @@ EOF elif test -n "$runpath_var"; then case "$perm_rpath " in *" $libdir "*) ;; - *) func_apped perm_rpath " $libdir" ;; + *) perm_rpath+=" $libdir" ;; esac fi done -- 2.40.0