2 Copyright 1999-2013 ImageMagick Studio LLC, a non-profit organization
3 dedicated to making software imaging solutions freely available.
5 You may not use this file except in compliance with the License.
6 obtain a copy of the License at
8 http://www.imagemagick.org/script/license.php
10 Unless required by applicable law or agreed to in writing, software
11 distributed under the License is distributed on an "AS IS" BASIS,
12 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 See the License for the specific language governing permissions and
14 limitations under the License.
16 MagickCore cache private methods.
18 #ifndef _MAGICKCORE_CACHE_PRIVATE_H
19 #define _MAGICKCORE_CACHE_PRIVATE_H
21 #if defined(__cplusplus) || defined(c_plusplus)
26 #include "MagickCore/cache.h"
27 #include "MagickCore/distribute-cache.h"
28 #include "MagickCore/distribute-cache-private.h"
29 #include "MagickCore/pixel.h"
30 #include "MagickCore/random_.h"
31 #include "MagickCore/thread-private.h"
32 #include "MagickCore/semaphore.h"
37 typedef MagickBooleanType
38 (*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
39 Quantum *,ExceptionInfo *),
40 (*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod,
41 const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
42 (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
45 *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,
46 const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *),
47 *(*GetVirtualPixelsHandler)(const Image *);
50 *(*GetVirtualMetacontentFromHandler)(const Image *);
53 *(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
54 const size_t,const size_t,ExceptionInfo *);
57 *(*GetAuthenticPixelsFromHandler)(const Image *);
60 *(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
61 const size_t,const size_t,ExceptionInfo *);
64 (*DestroyPixelHandler)(Image *);
67 *(*GetAuthenticMetacontentFromHandler)(const Image *);
69 typedef struct _CacheMethods
71 GetVirtualPixelHandler
72 get_virtual_pixel_handler;
74 GetVirtualPixelsHandler
75 get_virtual_pixels_handler;
77 GetVirtualMetacontentFromHandler
78 get_virtual_metacontent_from_handler;
80 GetOneVirtualPixelFromHandler
81 get_one_virtual_pixel_from_handler;
83 GetAuthenticPixelsHandler
84 get_authentic_pixels_handler;
86 GetAuthenticMetacontentFromHandler
87 get_authentic_metacontent_from_handler;
89 GetOneAuthenticPixelFromHandler
90 get_one_authentic_pixel_from_handler;
92 GetAuthenticPixelsFromHandler
93 get_authentic_pixels_from_handler;
95 QueueAuthenticPixelsHandler
96 queue_authentic_pixels_handler;
98 SyncAuthenticPixelsHandler
99 sync_authentic_pixels_handler;
102 destroy_pixel_handler;
105 typedef struct _NexusInfo
108 typedef struct _CacheInfo
131 channel_map[MaxPixelChannels];
149 virtual_pixel_method;
170 filename[MaxTextExtent],
171 cache_filename[MaxTextExtent];
183 connection[MaxNumberDistributedCacheClients];
206 extern MagickPrivate Cache
207 AcquirePixelCache(const size_t),
208 ClonePixelCache(const Cache),
209 DestroyPixelCache(Cache),
210 ReferencePixelCache(Cache);
212 extern MagickPrivate ClassType
213 GetPixelCacheStorageClass(const Cache);
215 extern MagickPrivate ColorspaceType
216 GetPixelCacheColorspace(const Cache);
218 extern MagickPrivate const Quantum
219 *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod,
220 const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
221 ExceptionInfo *) magick_hot_spot,
222 *GetVirtualPixelsNexus(const Cache,NexusInfo *);
224 extern MagickPrivate const void
225 *AcquirePixelCachePixels(const Image *,MagickSizeType *,ExceptionInfo *),
226 *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *);
228 extern MagickPrivate MagickBooleanType
229 CacheComponentGenesis(void),
230 SyncAuthenticPixelCacheNexus(Image *,NexusInfo *,ExceptionInfo *)
232 SyncImagePixelCache(Image *,ExceptionInfo *);
234 extern MagickPrivate MagickSizeType
235 GetPixelCacheNexusExtent(const Cache,NexusInfo *);
237 extern MagickPrivate NexusInfo
238 **AcquirePixelCacheNexus(const size_t),
239 **DestroyPixelCacheNexus(NexusInfo **,const size_t);
241 extern MagickPrivate Quantum
242 *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
243 const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
244 *GetPixelCacheNexusPixels(const Cache,NexusInfo *),
245 *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
246 const size_t,const size_t,const MagickBooleanType,NexusInfo *,
247 ExceptionInfo *) magick_hot_spot;
249 extern MagickPrivate size_t
250 GetPixelCacheChannels(const Cache);
252 extern MagickPrivate VirtualPixelMethod
253 GetPixelCacheVirtualMethod(const Image *),
254 SetPixelCacheVirtualMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
256 extern MagickPrivate void
257 CacheComponentTerminus(void),
258 ClonePixelCacheMethods(Cache,const Cache),
259 *GetPixelCacheNexusMetacontent(const Cache,NexusInfo *) magick_hot_spot,
260 *GetPixelCachePixels(Image *,MagickSizeType *,ExceptionInfo *),
261 GetPixelCacheTileSize(const Image *,size_t *,size_t *),
262 GetPixelCacheMethods(CacheMethods *),
263 SetPixelCacheMethods(Cache,CacheMethods *);
265 #if defined(__cplusplus) || defined(c_plusplus)