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,
45 (*GetOneVirtualPixelFromHandler)(
const Image *,
const VirtualPixelMethod,
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];
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 *);
282 *GetVirtualPixelCacheNexus(
const Image *,
const VirtualPixelMethod,
283 const ssize_t,
const ssize_t,
const size_t,
const size_t,
NexusInfo *,
285 *GetVirtualPixelsNexus(
const Cache,
NexusInfo *);
287extern MagickExport MagickBooleanType
291extern MagickExport MagickSizeType
292 GetPixelCacheNexusExtent(
const Cache,
NexusInfo *);
295 **AcquirePixelCacheNexus(
const size_t),
296 **DestroyPixelCacheNexus(
NexusInfo **,
const size_t);
299 *GetAuthenticPixelCacheNexus(
Image *,
const ssize_t,
const ssize_t,
301 *QueueAuthenticPixel(
Image *,
const ssize_t,
const ssize_t,
const size_t,
303 *QueueAuthenticPixelCacheNexus(
Image *,
const ssize_t,
const ssize_t,
304 const size_t,
const size_t,
const MagickBooleanType,
NexusInfo *,
307extern MagickExport
size_t
308 GetPixelCacheChannels(
const Cache);
310extern MagickExport
void
311 ClonePixelCacheMethods(Cache,
const Cache),
312 GetPixelCacheTileSize(
const Image *,
size_t *,
size_t *),
316extern MagickPrivate
void
317 ResetCacheAnonymousMemory(
void),
318 ResetPixelCacheEpoch(
void);
320extern MagickPrivate MagickBooleanType
323#if defined(MAGICKCORE_OPENCL_SUPPORT)
324extern MagickPrivate cl_event
325 *GetOpenCLEvents(
const Image *,cl_uint *);
327extern MagickPrivate cl_mem
330extern MagickPrivate
void
331 AddOpenCLEvent(
const Image *,cl_event),
332 SyncAuthenticOpenCLBuffer(
const Image *);
335#if defined(__cplusplus) || defined(c_plusplus)