|
MagickCore
6.7.5
|
00001 /* 00002 Copyright 1999-2012 ImageMagick Studio LLC, a non-profit organization 00003 dedicated to making software imaging solutions freely available. 00004 00005 You may not use this file except in compliance with the License. 00006 obtain a copy of the License at 00007 00008 http://www.imagemagick.org/script/license.php 00009 00010 Unless required by applicable law or agreed to in writing, software 00011 distributed under the License is distributed on an "AS IS" BASIS, 00012 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 00013 See the License for the specific language governing permissions and 00014 limitations under the License. 00015 00016 MagickCore cache private methods. 00017 */ 00018 #ifndef _MAGICKCORE_CACHE_PRIVATE_H 00019 #define _MAGICKCORE_CACHE_PRIVATE_H 00020 00021 #if defined(__cplusplus) || defined(c_plusplus) 00022 extern "C" { 00023 #endif 00024 00025 #include <time.h> 00026 #include "MagickCore/random_.h" 00027 #include "MagickCore/thread-private.h" 00028 #include "MagickCore/semaphore.h" 00029 00030 typedef enum 00031 { 00032 UndefinedCache, 00033 MemoryCache, 00034 MapCache, 00035 DiskCache, 00036 PingCache 00037 } CacheType; 00038 00039 typedef void 00040 *Cache; 00041 00042 typedef MagickBooleanType 00043 (*GetOneAuthenticPixelFromHandler)(Image *,const ssize_t,const ssize_t, 00044 Quantum *,ExceptionInfo *), 00045 (*GetOneVirtualPixelFromHandler)(const Image *,const VirtualPixelMethod, 00046 const ssize_t,const ssize_t,Quantum *,ExceptionInfo *), 00047 (*SyncAuthenticPixelsHandler)(Image *,ExceptionInfo *); 00048 00049 typedef const Quantum 00050 *(*GetVirtualPixelHandler)(const Image *,const VirtualPixelMethod, 00051 const ssize_t,const ssize_t,const size_t,const size_t,ExceptionInfo *), 00052 *(*GetVirtualPixelsHandler)(const Image *); 00053 00054 typedef const void 00055 *(*GetVirtualMetacontentFromHandler)(const Image *); 00056 00057 typedef Quantum 00058 *(*GetAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t, 00059 const size_t,const size_t,ExceptionInfo *); 00060 00061 typedef Quantum 00062 *(*GetAuthenticPixelsFromHandler)(const Image *); 00063 00064 typedef Quantum 00065 *(*QueueAuthenticPixelsHandler)(Image *,const ssize_t,const ssize_t, 00066 const size_t,const size_t,ExceptionInfo *); 00067 00068 typedef void 00069 (*DestroyPixelHandler)(Image *); 00070 00071 typedef void 00072 *(*GetAuthenticMetacontentFromHandler)(const Image *); 00073 00074 typedef struct _CacheMethods 00075 { 00076 GetVirtualPixelHandler 00077 get_virtual_pixel_handler; 00078 00079 GetVirtualPixelsHandler 00080 get_virtual_pixels_handler; 00081 00082 GetVirtualMetacontentFromHandler 00083 get_virtual_metacontent_from_handler; 00084 00085 GetOneVirtualPixelFromHandler 00086 get_one_virtual_pixel_from_handler; 00087 00088 GetAuthenticPixelsHandler 00089 get_authentic_pixels_handler; 00090 00091 GetAuthenticMetacontentFromHandler 00092 get_authentic_metacontent_from_handler; 00093 00094 GetOneAuthenticPixelFromHandler 00095 get_one_authentic_pixel_from_handler; 00096 00097 GetAuthenticPixelsFromHandler 00098 get_authentic_pixels_from_handler; 00099 00100 QueueAuthenticPixelsHandler 00101 queue_authentic_pixels_handler; 00102 00103 SyncAuthenticPixelsHandler 00104 sync_authentic_pixels_handler; 00105 00106 DestroyPixelHandler 00107 destroy_pixel_handler; 00108 } CacheMethods; 00109 00110 typedef struct _NexusInfo 00111 NexusInfo; 00112 00113 typedef struct _CacheInfo 00114 { 00115 ClassType 00116 storage_class; 00117 00118 ColorspaceType 00119 colorspace; 00120 00121 MagickBooleanType 00122 matte, 00123 mask; 00124 00125 size_t 00126 columns, 00127 rows; 00128 00129 size_t 00130 metacontent_extent, 00131 number_channels; 00132 00133 PixelChannelMap 00134 channel_map[MaxPixelChannels]; 00135 00136 CacheType 00137 type; 00138 00139 MapMode 00140 mode; 00141 00142 MagickBooleanType 00143 mapped; 00144 00145 MagickOffsetType 00146 offset; 00147 00148 MagickSizeType 00149 length; 00150 00151 VirtualPixelMethod 00152 virtual_pixel_method; 00153 00154 PixelInfo 00155 virtual_pixel_color; 00156 00157 size_t 00158 number_threads; 00159 00160 NexusInfo 00161 **nexus_info; 00162 00163 Quantum 00164 *pixels; 00165 00166 void 00167 *metacontent; 00168 00169 int 00170 file; 00171 00172 char 00173 filename[MaxTextExtent], 00174 cache_filename[MaxTextExtent]; 00175 00176 CacheMethods 00177 methods; 00178 00179 RandomInfo 00180 *random_info; 00181 00182 MagickBooleanType 00183 debug; 00184 00185 MagickThreadType 00186 id; 00187 00188 ssize_t 00189 reference_count; 00190 00191 SemaphoreInfo 00192 *semaphore, 00193 *disk_semaphore; 00194 00195 time_t 00196 timestamp; 00197 00198 size_t 00199 signature; 00200 } CacheInfo; 00201 00202 extern MagickPrivate Cache 00203 AcquirePixelCache(const size_t), 00204 ClonePixelCache(const Cache), 00205 DestroyPixelCache(Cache), 00206 ReferencePixelCache(Cache); 00207 00208 extern MagickPrivate CacheType 00209 GetPixelCacheType(const Image *); 00210 00211 extern MagickPrivate ClassType 00212 GetPixelCacheStorageClass(const Cache); 00213 00214 extern MagickPrivate ColorspaceType 00215 GetPixelCacheColorspace(const Cache); 00216 00217 extern MagickPrivate const Quantum 00218 *GetVirtualPixelsFromNexus(const Image *,const VirtualPixelMethod, 00219 const ssize_t,const ssize_t,const size_t,const size_t,NexusInfo *, 00220 ExceptionInfo *), 00221 *GetVirtualPixelsNexus(const Cache,NexusInfo *); 00222 00223 extern MagickPrivate const void 00224 *AcquirePixelCachePixels(const Image *,MagickSizeType *,ExceptionInfo *), 00225 *GetVirtualMetacontentFromNexus(const Cache,NexusInfo *); 00226 00227 extern MagickPrivate MagickBooleanType 00228 CacheComponentGenesis(void), 00229 SyncAuthenticPixelCacheNexus(Image *,NexusInfo *,ExceptionInfo *), 00230 SyncImagePixelCache(Image *,ExceptionInfo *); 00231 00232 extern MagickPrivate MagickSizeType 00233 GetPixelCacheNexusExtent(const Cache,NexusInfo *); 00234 00235 extern MagickPrivate NexusInfo 00236 **AcquirePixelCacheNexus(const size_t), 00237 **DestroyPixelCacheNexus(NexusInfo **,const size_t); 00238 00239 extern MagickPrivate Quantum 00240 *GetAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t, 00241 const size_t,const size_t,NexusInfo *,ExceptionInfo *), 00242 *GetPixelCacheNexusPixels(const Cache,NexusInfo *), 00243 *QueueAuthenticPixelCacheNexus(Image *,const ssize_t,const ssize_t, 00244 const size_t,const size_t,const MagickBooleanType,NexusInfo *, 00245 ExceptionInfo *); 00246 00247 extern MagickPrivate size_t 00248 GetPixelCacheChannels(const Cache); 00249 00250 extern MagickPrivate VirtualPixelMethod 00251 GetPixelCacheVirtualMethod(const Image *), 00252 SetPixelCacheVirtualMethod(Image *,const VirtualPixelMethod,ExceptionInfo *); 00253 00254 extern MagickPrivate void 00255 CacheComponentTerminus(void), 00256 ClonePixelCacheMethods(Cache,const Cache), 00257 *GetPixelCacheNexusMetacontent(const Cache,NexusInfo *), 00258 *GetPixelCachePixels(Image *,MagickSizeType *,ExceptionInfo *), 00259 GetPixelCacheTileSize(const Image *,size_t *,size_t *), 00260 GetPixelCacheMethods(CacheMethods *), 00261 SetPixelCacheMethods(Cache,CacheMethods *); 00262 00263 #if defined(__cplusplus) || defined(c_plusplus) 00264 } 00265 #endif 00266 00267 #endif