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