18#ifndef MAGICKCORE_RESAMPLE_PRIVATE_H
19#define MAGICKCORE_RESAMPLE_PRIVATE_H
22#include "magick/thread-private.h"
24#if defined(__cplusplus) || defined(c_plusplus)
28static inline ResampleFilter **DestroyResampleFilterTLS(ResampleFilter **filter)
33 assert(filter != (ResampleFilter **) NULL);
34 for (i=0; i < (ssize_t) GetMagickResourceLimit(ThreadResource); i++)
35 if (filter[i] != (ResampleFilter *) NULL)
36 filter[i]=DestroyResampleFilter(filter[i]);
37 filter=(ResampleFilter **) RelinquishAlignedMemory(filter);
41static inline ResampleFilter **AcquireResampleFilterTLS(
const Image *image,
42 const VirtualPixelMethod method,
const MagickBooleanType interpolate,
43 ExceptionInfo *exception)
54 number_threads=(size_t) GetMagickResourceLimit(ThreadResource);
55 filter=(ResampleFilter **) AcquireAlignedMemory(number_threads,
57 if (filter == (ResampleFilter **) NULL)
58 ThrowFatalException(ResourceLimitFatalError,
"MemoryAllocationFailed");
59 (void) memset(filter,0,number_threads*
sizeof(*filter));
60 for (i=0; i < (ssize_t) number_threads; i++)
62 filter[i]=AcquireResampleFilter(image,exception);
63 if (method != UndefinedVirtualPixelMethod)
64 (void) SetResampleFilterVirtualPixelMethod(filter[i],method);
65 if (interpolate != MagickFalse)
66 SetResampleFilter(filter[i],PointFilter,1.0);
71#if defined(__cplusplus) || defined(c_plusplus)