00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_RESAMPLE_PRIVATE_H
00019 #define MAGICKCORE_RESAMPLE_PRIVATE_H
00020
00021 #include "magick/thread-private.h"
00022
00023 #if defined(__cplusplus) || defined(c_plusplus)
00024 extern "C" {
00025 #endif
00026
00027 static inline ResampleFilter **DestroyResampleFilterThreadSet(
00028 ResampleFilter **filter)
00029 {
00030 register ssize_t
00031 i;
00032
00033 assert(filter != (ResampleFilter **) NULL);
00034 for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
00035 if (filter[i] != (ResampleFilter *) NULL)
00036 filter[i]=DestroyResampleFilter(filter[i]);
00037 filter=(ResampleFilter **) RelinquishAlignedMemory(filter);
00038 return(filter);
00039 }
00040
00041 static inline ResampleFilter **AcquireResampleFilterThreadSet(
00042 const Image *image,const VirtualPixelMethod method,
00043 const MagickBooleanType interpolate,ExceptionInfo *exception)
00044 {
00045 register ssize_t
00046 i;
00047
00048 ResampleFilter
00049 **filter;
00050
00051 size_t
00052 number_threads;
00053
00054 number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
00055 filter=(ResampleFilter **) AcquireAlignedMemory(number_threads,
00056 sizeof(*filter));
00057 if (filter == (ResampleFilter **) NULL)
00058 ThrowFatalException(ResourceLimitFatalError,"MemoryAllocationFailed");
00059 (void) memset(filter,0,number_threads*sizeof(*filter));
00060 for (i=0; i < (ssize_t) number_threads; i++)
00061 {
00062 filter[i]=AcquireResampleFilter(image,exception);
00063 if (method != UndefinedVirtualPixelMethod)
00064 (void) SetResampleFilterVirtualPixelMethod(filter[i],method);
00065 if (interpolate != MagickFalse)
00066 SetResampleFilter(filter[i],PointFilter,1.0);
00067 }
00068 return(filter);
00069 }
00070
00071 #if defined(__cplusplus) || defined(c_plusplus)
00072 }
00073 #endif
00074
00075 #endif