18 #ifndef MAGICKCORE_CACHE_PRIVATE_H
19 #define MAGICKCORE_CACHE_PRIVATE_H
22 #include "magick/cache.h"
23 #include "magick/distribute-cache.h"
24 #include "magick/opencl-private.h"
25 #include "magick/random_.h"
26 #include "magick/thread-private.h"
27 #include "magick/semaphore.h"
29 #if defined(__cplusplus) || defined(c_plusplus)
36 typedef const IndexPacket
37 *(*GetVirtualIndexesFromHandler)(
const Image *);
40 *(*GetAuthenticIndexesFromHandler)(
const Image *);
42 typedef MagickBooleanType
43 (*GetOneAuthenticPixelFromHandler)(
Image *,
const ssize_t,
const ssize_t,
45 (*GetOneVirtualPixelFromHandler)(
const Image *,
const VirtualPixelMethod,
49 typedef const PixelPacket
50 *(*GetVirtualPixelHandler)(
const Image *,
const VirtualPixelMethod,
51 const ssize_t,
const ssize_t,
const size_t,
const size_t,
ExceptionInfo *),
52 *(*GetVirtualPixelsHandler)(
const Image *);
55 *(*GetAuthenticPixelsHandler)(Image *,
const ssize_t,
const ssize_t,
59 *(*GetAuthenticPixelsFromHandler)(
const Image *);
62 *(*QueueAuthenticPixelsHandler)(Image *,
const ssize_t,
const ssize_t,
66 (*DestroyPixelHandler)(Image *);
70 GetVirtualPixelHandler
71 get_virtual_pixel_handler;
73 GetVirtualPixelsHandler
74 get_virtual_pixels_handler;
76 GetVirtualIndexesFromHandler
77 get_virtual_indexes_from_handler;
79 GetOneVirtualPixelFromHandler
80 get_one_virtual_pixel_from_handler;
82 GetAuthenticPixelsHandler
83 get_authentic_pixels_handler;
85 GetAuthenticIndexesFromHandler
86 get_authentic_indexes_from_handler;
88 GetOneAuthenticPixelFromHandler
89 get_one_authentic_pixel_from_handler;
91 GetAuthenticPixelsFromHandler
92 get_authentic_pixels_from_handler;
94 QueueAuthenticPixelsHandler
95 queue_authentic_pixels_handler;
97 SyncAuthenticPixelsHandler
98 sync_authentic_pixels_handler;
101 destroy_pixel_handler;
120 authentic_pixel_cache;
185 virtual_pixel_method;
203 active_index_channel;
209 filename[MaxTextExtent],
210 cache_filename[MaxTextExtent];
252 extern MagickExport Cache
253 AcquirePixelCache(
const size_t),
254 ClonePixelCache(
const Cache),
255 DestroyPixelCache(Cache),
256 ReferencePixelCache(Cache);
258 extern MagickExport CacheType
259 GetPixelCacheType(
const Image *);
261 extern MagickExport ClassType
262 GetPixelCacheStorageClass(
const Cache);
264 extern MagickExport ColorspaceType
265 GetPixelCacheColorspace(
const Cache);
267 extern MagickExport
const IndexPacket
268 *GetVirtualIndexesFromNexus(
const Cache,
NexusInfo *);
270 extern MagickExport
const PixelPacket
271 *GetVirtualPixelCacheNexus(
const Image *,
const VirtualPixelMethod,
272 const ssize_t,
const ssize_t,
const size_t,
const size_t,
NexusInfo *,
274 *GetVirtualPixelsNexus(const Cache,
NexusInfo *);
276 extern MagickExport MagickBooleanType
277 SyncAuthenticPixelCacheNexus(Image *,NexusInfo *magick_restrict,
280 extern MagickExport MagickSizeType
281 GetPixelCacheNexusExtent(const Cache,NexusInfo *);
283 extern MagickExport NexusInfo
284 **AcquirePixelCacheNexus(const
size_t),
285 **DestroyPixelCacheNexus(NexusInfo **,const
size_t);
287 extern MagickExport PixelPacket
288 *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
289 const
size_t,const
size_t,NexusInfo *,
ExceptionInfo *) magick_hot_spot,
290 *QueueAuthenticPixel(Image *,const ssize_t,const ssize_t,const
size_t,
291 const
size_t,const MagickBooleanType,NexusInfo *,
ExceptionInfo *),
292 *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
293 const
size_t,const
size_t,const MagickBooleanType,NexusInfo *,
294 ExceptionInfo *) magick_hot_spot;
296 extern MagickExport
size_t
297 GetPixelCacheChannels(const Cache);
299 extern MagickExport
void
300 ClonePixelCacheMethods(Cache,const Cache),
301 GetPixelCacheTileSize(const Image *,
size_t *,
size_t *),
303 SetPixelCacheMethods(Cache,CacheMethods *);
305 extern MagickPrivate
void
306 ResetPixelCacheEpoch(
void);
308 extern MagickPrivate MagickBooleanType
309 SyncImagePixelCache(Image *,ExceptionInfo *);
311 #if defined(MAGICKCORE_OPENCL_SUPPORT)
312 extern MagickPrivate cl_event
313 *GetOpenCLEvents(
const Image *,cl_uint *);
315 extern MagickPrivate cl_mem
316 GetAuthenticOpenCLBuffer(
const Image *,ExceptionInfo *);
318 extern MagickPrivate
void
319 AddOpenCLEvent(
const Image *,cl_event),
320 SyncAuthenticOpenCLBuffer(
const Image *);
323 #if defined(__cplusplus) || defined(c_plusplus)