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)
36typedef const IndexPacket
37 *(*GetVirtualIndexesFromHandler)(
const Image *);
40 *(*GetAuthenticIndexesFromHandler)(
const Image *);
42typedef MagickBooleanType
43 (*GetOneAuthenticPixelFromHandler)(Image *,
const ssize_t,
const ssize_t,
44 PixelPacket *,ExceptionInfo *),
45 (*GetOneVirtualPixelFromHandler)(
const Image *,
const VirtualPixelMethod,
46 const ssize_t,
const ssize_t,PixelPacket *,ExceptionInfo *),
47 (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
49typedef 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,
56 const size_t,
const size_t,ExceptionInfo *);
59 *(*GetAuthenticPixelsFromHandler)(
const Image *);
62 *(*QueueAuthenticPixelsHandler)(Image *,
const ssize_t,
const ssize_t,
63 const size_t,
const size_t,ExceptionInfo *);
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];
252static inline MagickBooleanType IsValidPixelOffset(
const ssize_t x,
257 if ((x >= (ssize_t) (MAGICK_SSIZE_MAX/(ssize_t) extent)) ||
258 (x <= (ssize_t) (MAGICK_SSIZE_MIN/(ssize_t) extent)))
263extern MagickExport Cache
264 AcquirePixelCache(
const size_t),
265 ClonePixelCache(
const Cache),
266 DestroyPixelCache(Cache),
267 ReferencePixelCache(Cache);
269extern MagickExport CacheType
270 GetPixelCacheType(
const Image *);
272extern MagickExport ClassType
273 GetPixelCacheStorageClass(
const Cache);
275extern MagickExport ColorspaceType
276 GetPixelCacheColorspace(
const Cache);
278extern MagickExport
const IndexPacket
279 *GetVirtualIndexesFromNexus(
const Cache,NexusInfo *);
281extern MagickExport
const PixelPacket
282 *GetVirtualPixelCacheNexus(
const Image *,
const VirtualPixelMethod,
283 const ssize_t,
const ssize_t,
const size_t,
const size_t,NexusInfo *,
284 ExceptionInfo *) magick_hot_spot,
285 *GetVirtualPixelsNexus(
const Cache,NexusInfo *);
287extern MagickExport MagickBooleanType
288 SyncAuthenticPixelCacheNexus(Image *,NexusInfo *magick_restrict,
289 ExceptionInfo *) magick_hot_spot;
291extern MagickExport MagickSizeType
292 GetPixelCacheNexusExtent(
const Cache,NexusInfo *);
294extern MagickExport NexusInfo
295 **AcquirePixelCacheNexus(
const size_t),
296 **DestroyPixelCacheNexus(NexusInfo **,
const size_t);
298extern MagickExport PixelPacket
299 *GetAuthenticPixelCacheNexus(Image *,
const ssize_t,
const ssize_t,
300 const size_t,
const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
301 *QueueAuthenticPixel(Image *,
const ssize_t,
const ssize_t,
const size_t,
302 const size_t,
const MagickBooleanType,NexusInfo *,ExceptionInfo *),
303 *QueueAuthenticPixelCacheNexus(Image *,
const ssize_t,
const ssize_t,
304 const size_t,
const size_t,
const MagickBooleanType,NexusInfo *,
305 ExceptionInfo *) magick_hot_spot;
307extern MagickExport
size_t
308 GetPixelCacheChannels(
const Cache);
310extern MagickExport
void
311 ClonePixelCacheMethods(Cache,
const Cache),
312 GetPixelCacheTileSize(
const Image *,
size_t *,
size_t *),
313 GetPixelCacheMethods(CacheMethods *),
314 SetPixelCacheMethods(Cache,CacheMethods *);
316extern MagickPrivate
void
317 ResetCacheAnonymousMemory(
void),
318 ResetPixelCacheEpoch(
void);
320extern MagickPrivate MagickBooleanType
321 SyncImagePixelCache(Image *,ExceptionInfo *);
323#if defined(MAGICKCORE_OPENCL_SUPPORT)
324extern MagickPrivate cl_event
325 *GetOpenCLEvents(
const Image *,cl_uint *);
327extern MagickPrivate cl_mem
328 GetAuthenticOpenCLBuffer(
const Image *,ExceptionInfo *);
330extern MagickPrivate
void
331 AddOpenCLEvent(
const Image *,cl_event),
332 SyncAuthenticOpenCLBuffer(
const Image *);
335#if defined(__cplusplus) || defined(c_plusplus)