00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef MAGICKCORE_CACHE_PRIVATE_H
00019 #define MAGICKCORE_CACHE_PRIVATE_H
00020
00021 #include "MagickCore/cache.h"
00022 #include "MagickCore/distribute-cache.h"
00023 #include "MagickCore/opencl-private.h"
00024 #include "MagickCore/pixel.h"
00025 #include "MagickCore/random_.h"
00026 #include "MagickCore/thread-private.h"
00027 #include "MagickCore/semaphore.h"
00028
00029 #if defined(__cplusplus) || defined(c_plusplus)
00030 extern "C" {
00031 #endif
00032
00033 typedef void
00034 *Cache;
00035
00036 typedef MagickBooleanType
00037 (*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t,
00038 Quantum *,ExceptionInfo *),
00039 (*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod,
00040 const ssize_t,const ssize_t,Quantum *,ExceptionInfo *),
00041 (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *);
00042
00043 typedef const Quantum
00044 *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod,
00045 const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *),
00046 *(*GetVirtualPixelsHandler)(const Image *);
00047
00048 typedef const void
00049 *(*GetVirtualMetacontentFromHandler)(const Image *);
00050
00051 typedef Quantum
00052 *(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
00053 const size_t,const size_t,ExceptionInfo *);
00054
00055 typedef Quantum
00056 *(*GetAuthenticPixelsFromHandler)(const Image *);
00057
00058 typedef Quantum
00059 *(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t,
00060 const size_t,const size_t,ExceptionInfo *);
00061
00062 typedef void
00063 (*DestroyPixelHandler)(Image *);
00064
00065 typedef void
00066 *(*GetAuthenticMetacontentFromHandler)(const Image *);
00067
00068 typedef struct _CacheMethods
00069 {
00070 GetVirtualPixelHandler
00071 get_virtual_pixel_handler;
00072
00073 GetVirtualPixelsHandler
00074 get_virtual_pixels_handler;
00075
00076 GetVirtualMetacontentFromHandler
00077 get_virtual_metacontent_from_handler;
00078
00079 GetOneVirtualPixelFromHandler
00080 get_one_virtual_pixel_from_handler;
00081
00082 GetAuthenticPixelsHandler
00083 get_authentic_pixels_handler;
00084
00085 GetAuthenticMetacontentFromHandler
00086 get_authentic_metacontent_from_handler;
00087
00088 GetOneAuthenticPixelFromHandler
00089 get_one_authentic_pixel_from_handler;
00090
00091 GetAuthenticPixelsFromHandler
00092 get_authentic_pixels_from_handler;
00093
00094 QueueAuthenticPixelsHandler
00095 queue_authentic_pixels_handler;
00096
00097 SyncAuthenticPixelsHandler
00098 sync_authentic_pixels_handler;
00099
00100 DestroyPixelHandler
00101 destroy_pixel_handler;
00102 } CacheMethods;
00103
00104 typedef struct _NexusInfo
00105 {
00106 MagickBooleanType
00107 mapped;
00108
00109 RectangleInfo
00110 region;
00111
00112 MagickSizeType
00113 length;
00114
00115 Quantum
00116 *cache,
00117 *pixels;
00118
00119 MagickBooleanType
00120 authentic_pixel_cache;
00121
00122 void
00123 *metacontent;
00124
00125 size_t
00126 signature;
00127
00128 struct _NexusInfo
00129 *virtual_nexus;
00130 } NexusInfo;
00131
00132 typedef struct _CacheInfo
00133 {
00134 ClassType
00135 storage_class;
00136
00137 ColorspaceType
00138 colorspace;
00139
00140 PixelTrait
00141 alpha_trait;
00142
00143 ChannelType
00144 channels;
00145
00146 size_t
00147 columns,
00148 rows;
00149
00150 size_t
00151 metacontent_extent,
00152 number_channels;
00153
00154 PixelChannelMap
00155 channel_map[MaxPixelChannels];
00156
00157 CacheType
00158 type;
00159
00160 MapMode
00161 mode,
00162 disk_mode;
00163
00164 MagickBooleanType
00165 mapped;
00166
00167 MagickOffsetType
00168 offset;
00169
00170 MagickSizeType
00171 length;
00172
00173 VirtualPixelMethod
00174 virtual_pixel_method;
00175
00176 PixelInfo
00177 virtual_pixel_color;
00178
00179 size_t
00180 number_threads;
00181
00182 NexusInfo
00183 **nexus_info;
00184
00185 Quantum
00186 *pixels;
00187
00188 void
00189 *metacontent;
00190
00191 int
00192 file;
00193
00194 char
00195 filename[MagickPathExtent],
00196 cache_filename[MagickPathExtent];
00197
00198 CacheMethods
00199 methods;
00200
00201 RandomInfo
00202 *random_info;
00203
00204 void
00205 *server_info;
00206
00207 MagickBooleanType
00208 synchronize,
00209 debug;
00210
00211 MagickThreadType
00212 id;
00213
00214 ssize_t
00215 reference_count;
00216
00217 SemaphoreInfo
00218 *semaphore,
00219 *file_semaphore;
00220
00221 time_t
00222 timestamp;
00223
00224 size_t
00225 signature;
00226
00227 MagickCLCacheInfo
00228 opencl;
00229
00230 MagickBooleanType
00231 composite_mask;
00232
00233 MagickSizeType
00234 width_limit,
00235 height_limit;
00236 } CacheInfo;
00237
00238 extern MagickPrivate Cache
00239 AcquirePixelCache(const size_t),
00240 ClonePixelCache(const Cache),
00241 DestroyPixelCache(Cache),
00242 ReferencePixelCache(Cache);
00243
00244 extern MagickPrivate ClassType
00245 GetPixelCacheStorageClass(const Cache);
00246
00247 extern MagickPrivate ColorspaceType
00248 GetPixelCacheColorspace(const Cache);
00249
00250 extern MagickPrivate const Quantum
00251 *GetVirtualPixelCacheNexus(const Image *,const VirtualPixelMethod,
00252 const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *,
00253 ExceptionInfo *) magick_hot_spot,
00254 *GetVirtualPixelsNexus(const Cache,NexusInfo *magick_restrict);
00255
00256 extern MagickPrivate const void
00257 *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *magick_restrict);
00258
00259 extern MagickPrivate MagickBooleanType
00260 CacheComponentGenesis(void),
00261 SyncAuthenticPixelCacheNexus(Image *,NexusInfo *magick_restrict,
00262 ExceptionInfo *) magick_hot_spot,
00263 SyncImagePixelCache(Image *,ExceptionInfo *);
00264
00265 extern MagickPrivate MagickSizeType
00266 GetPixelCacheNexusExtent(const Cache,NexusInfo *magick_restrict);
00267
00268 extern MagickPrivate NexusInfo
00269 **AcquirePixelCacheNexus(const size_t),
00270 **DestroyPixelCacheNexus(NexusInfo **,const size_t);
00271
00272 extern MagickPrivate Quantum
00273 *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
00274 const size_t,const size_t,NexusInfo *,ExceptionInfo *) magick_hot_spot,
00275 *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t,
00276 const size_t,const size_t,const MagickBooleanType,NexusInfo *,
00277 ExceptionInfo *) magick_hot_spot;
00278
00279 extern MagickPrivate size_t
00280 GetPixelCacheChannels(const Cache);
00281
00282 extern MagickPrivate VirtualPixelMethod
00283 GetPixelCacheVirtualMethod(const Image *),
00284 SetPixelCacheVirtualMethod(Image *,const VirtualPixelMethod,ExceptionInfo *);
00285
00286 extern MagickPrivate void
00287 CacheComponentTerminus(void),
00288 ClonePixelCacheMethods(Cache,const Cache),
00289 GetPixelCacheTileSize(const Image *,size_t *,size_t *),
00290 GetPixelCacheMethods(CacheMethods *),
00291 ResetCacheAnonymousMemory(void),
00292 ResetPixelCacheEpoch(void),
00293 ResetPixelCacheChannels(Image *),
00294 SetPixelCacheMethods(Cache,CacheMethods *);
00295
00296 #if defined(MAGICKCORE_OPENCL_SUPPORT)
00297 extern MagickPrivate cl_mem
00298 GetAuthenticOpenCLBuffer(const Image *,MagickCLDevice,ExceptionInfo *);
00299
00300 extern MagickPrivate void
00301 SyncAuthenticOpenCLBuffer(const Image *);
00302 #endif
00303
00304 #if defined(__cplusplus) || defined(c_plusplus)
00305 }
00306 #endif
00307
00308 #endif