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 #if defined(__cplusplus) || defined(c_plusplus)
00022 extern "C" {
00023 #endif
00024
00025 #include <time.h>
00026 #include "magick/semaphore.h"
00027
00028 typedef enum
00029 {
00030 UndefinedCache,
00031 MemoryCache,
00032 MapCache,
00033 DiskCache
00034 } CacheType;
00035
00036 typedef void
00037 *Cache;
00038
00039 typedef const IndexPacket
00040 *(*AcquireIndexesFromHandler)(const Image *);
00041
00042 typedef IndexPacket
00043 *(*GetIndexesFromHandler)(const Image *);
00044
00045 typedef MagickBooleanType
00046 (*SyncPixelHandler)(Image *);
00047
00048 typedef const PixelPacket
00049 *(*AcquirePixelHandler)(const Image *,const VirtualPixelMethod,const long,
00050 const long,const unsigned long,const unsigned long,ExceptionInfo *);
00051
00052 typedef PixelPacket
00053 (*AcquireOnePixelFromHandler)(const Image *,const VirtualPixelMethod,
00054 const long,const long,ExceptionInfo *);
00055
00056 typedef PixelPacket
00057 (*GetOnePixelFromHandler)(Image *,const long,const long);
00058
00059 typedef PixelPacket
00060 *(*GetPixelHandler)(Image *,const long,const long,const unsigned long,
00061 const unsigned long);
00062
00063 typedef PixelPacket
00064 *(*GetPixelsFromHandler)(const Image *);
00065
00066 typedef PixelPacket
00067 *(*SetPixelHandler)(Image *,const long,const long,const unsigned long,
00068 const unsigned long);
00069
00070 typedef void
00071 (*DestroyPixelHandler)(Image *);
00072
00073 typedef struct _CacheMethods
00074 {
00075 AcquireIndexesFromHandler
00076 acquire_indexes_from_handler;
00077
00078 AcquireOnePixelFromHandler
00079 acquire_one_pixel_from_handler;
00080
00081 AcquirePixelHandler
00082 acquire_pixel_handler;
00083
00084 DestroyPixelHandler
00085 destroy_pixel_handler;
00086
00087 GetIndexesFromHandler
00088 get_indexes_from_handler;
00089
00090 GetOnePixelFromHandler
00091 get_one_pixel_from_handler;
00092
00093 GetPixelHandler
00094 get_pixel_handler;
00095
00096 GetPixelsFromHandler
00097 get_pixels_from_handler;
00098
00099 SetPixelHandler
00100 set_pixel_handler;
00101
00102 SyncPixelHandler
00103 sync_pixel_handler;
00104 } CacheMethods;
00105
00106 typedef struct _NexusInfo NexusInfo;
00107
00108 typedef struct _CacheInfo
00109 {
00110 unsigned long
00111 id;
00112
00113 NexusInfo
00114 *nexus_info;
00115
00116 unsigned long
00117 number_views;
00118
00119 ClassType
00120 storage_class;
00121
00122 ColorspaceType
00123 colorspace;
00124
00125 CacheType
00126 type;
00127
00128 MagickBooleanType
00129 mapped;
00130
00131 unsigned long
00132 columns,
00133 rows;
00134
00135 MagickOffsetType
00136 offset;
00137
00138 MagickSizeType
00139 length;
00140
00141 PixelPacket
00142 *pixels;
00143
00144 IndexPacket
00145 *indexes;
00146
00147 VirtualPixelMethod
00148 virtual_pixel_method;
00149
00150 PixelPacket
00151 virtual_pixel;
00152
00153 int
00154 file;
00155
00156 MagickSizeType
00157 serial_number;
00158
00159 char
00160 filename[MaxTextExtent],
00161 cache_filename[MaxTextExtent];
00162
00163 CacheMethods
00164 methods;
00165
00166 MagickBooleanType
00167 debug;
00168
00169 unsigned long
00170 thread;
00171
00172 long
00173 reference_count;
00174
00175 SemaphoreInfo
00176 *semaphore;
00177
00178 unsigned long
00179 signature;
00180 } CacheInfo;
00181
00182 extern MagickExport Cache
00183 DestroyCacheInfo(Cache),
00184 ReferenceCache(Cache);
00185
00186 extern MagickExport ClassType
00187 GetCacheClass(const Cache);
00188
00189 extern MagickExport ColorspaceType
00190 GetCacheColorspace(const Cache);
00191
00192 extern MagickExport const IndexPacket
00193 *AcquireNexusIndexes(const Cache,const unsigned long);
00194
00195 extern MagickExport IndexPacket
00196 *GetNexusIndexes(const Cache,const unsigned long);
00197
00198 extern MagickExport MagickBooleanType
00199 GetCacheInfo(Cache *);
00200
00201 extern MagickExport PixelPacket
00202 *GetNexusPixels(const Cache,const unsigned long);
00203
00204 extern MagickExport unsigned long
00205 GetNexus(Cache);
00206
00207 extern MagickExport void
00208 CloneCacheMethods(Cache,const Cache),
00209 DestroyCacheNexus(Cache,const unsigned long),
00210 GetCacheMethods(CacheMethods *),
00211 SetCacheMethods(Cache,CacheMethods *);
00212
00213 #if defined(__cplusplus) || defined(c_plusplus)
00214 }
00215 #endif
00216
00217 #endif