www.pudn.com > PtOpenGuiSourceCode.zip > cache.h


/* 
  ImageMagick Cache Methods. 
*/ 
#ifndef _MAGICK_CACHE_H 
#define _MAGICK_CACHE_H 
 
#if defined(__cplusplus) || defined(c_plusplus) 
extern "C" { 
#endif 
 
#include "blob.h" 
 
/* 
  Enum declaractions. 
*/ 
typedef enum 
{ 
  UndefinedCache, 
  MemoryCache, 
  DiskCache, 
  MapCache 
} CacheType; 
 
typedef enum 
{ 
  UndefinedVirtualPixelMethod, 
  ConstantVirtualPixelMethod, 
  EdgeVirtualPixelMethod, 
  MirrorVirtualPixelMethod, 
  TileVirtualPixelMethod 
} VirtualPixelMethod; 
 
/* 
  Typedef declaractions. 
*/ 
typedef void 
  *Cache; 
 
typedef IndexPacket 
  *(*GetIndexesFromHandler)(const Image *); 
 
typedef const PixelPacket 
  *(*AcquirePixelHandler)(const Image *,const long,const long, 
    const unsigned long,const unsigned long,ExceptionInfo *); 
 
typedef PixelPacket 
  (*AcquireOnePixelFromHandler)(const Image *,const long,const long, 
    ExceptionInfo *); 
 
typedef PixelPacket 
  (*GetOnePixelFromHandler)(Image *,const long,const long); 
 
typedef PixelPacket 
  *(*GetPixelHandler)(Image *,const long,const long,const unsigned long, 
    const unsigned long); 
 
typedef PixelPacket 
  *(*GetPixelsFromHandler)(const Image *); 
 
typedef PixelPacket 
  *(*SetPixelHandler)(Image *,const long,const long,const unsigned long, 
    const unsigned long); 
 
typedef unsigned int 
  (*SyncPixelHandler)(Image *); 
 
typedef void 
  (*DestroyPixelHandler)(Image *); 
 
typedef struct _CacheMethods 
{ 
  AcquireOnePixelFromHandler 
    acquire_one_pixel_from_handler; 
 
  AcquirePixelHandler 
    acquire_pixel_handler; 
 
  DestroyPixelHandler 
    destroy_pixel_handler; 
 
  GetIndexesFromHandler 
    get_indexes_from_handler; 
 
  GetOnePixelFromHandler 
    get_one_pixel_from_handler; 
 
  GetPixelHandler 
    get_pixel_handler; 
 
  GetPixelsFromHandler 
    get_pixels_from_handler; 
 
  SetPixelHandler 
    set_pixel_handler; 
 
  SyncPixelHandler 
    sync_pixel_handler; 
} CacheMethods; 
 
typedef struct _NexusInfo 
{ 
  long 
    x, 
    y; 
 
  ExtendedSignedIntegralType 
    length; 
 
  PixelPacket 
    *staging, 
    *pixels; 
 
  IndexPacket 
    *indexes; 
 
  unsigned long 
    columns, 
    rows; 
 
  unsigned int 
    available; 
} NexusInfo; 
 
typedef struct _CacheInfo 
{ 
  unsigned long 
    id; 
 
  NexusInfo 
    *nexus_info; 
 
  ClassType 
    storage_class; 
 
  ColorspaceType 
    colorspace; 
 
  CacheType 
    type; 
 
  unsigned long 
    columns, 
    rows; 
 
  ExtendedSignedIntegralType 
    offset, 
    length; 
 
  PixelPacket 
    *pixels; 
 
  IndexPacket 
    *indexes; 
 
  VirtualPixelMethod 
    virtual_pixel_method; 
 
  PixelPacket 
    virtual_pixel; 
 
  int 
    file; 
 
  char 
    filename[MaxTextExtent], 
    cache_filename[MaxTextExtent]; 
 
  CacheMethods 
    methods; 
 
  long 
    reference_count; 
 
  SemaphoreInfo 
    *semaphore; 
 
  unsigned long 
    signature; 
} CacheInfo; 
 
/* 
  MagickExported interfaces. 
*/ 
extern MagickExport Cache 
  ReferenceCache(Cache); 
 
extern MagickExport ClassType 
  GetCacheClass(const Cache); 
 
extern MagickExport ColorspaceType 
  GetCacheColorspace(const Cache); 
 
extern MagickExport const PixelPacket 
  *AcquireCacheNexus(const Image *,const long,const long,const unsigned long, 
    const unsigned long,const unsigned long,ExceptionInfo *); 
 
extern MagickExport ExtendedSignedIntegralType 
  GetPixelCacheArea(const Image *); 
 
extern MagickExport IndexPacket 
  *GetNexusIndexes(const Cache,const unsigned long); 
 
extern MagickExport PixelPacket 
  *GetCacheNexus(Image *,const long,const long,const unsigned long, 
    const unsigned long,const unsigned long), 
  *GetNexusPixels(const Cache,const unsigned long), 
  *SetCacheNexus(Image *,const long,const long,const unsigned long, 
    const unsigned long,const unsigned long); 
 
extern MagickExport unsigned int 
  OpenCache(Image *,const MapMode), 
  PersistCache(Image *,const char *,const unsigned int, 
    ExtendedSignedIntegralType *,ExceptionInfo *), 
  SyncCacheNexus(Image *,const unsigned long); 
 
extern MagickExport unsigned long 
  GetNexus(Cache); 
 
extern MagickExport VirtualPixelMethod 
  GetImageVirtualPixelMethod(const Image *); 
 
extern MagickExport void 
  AllocateCacheNexus(CacheInfo *), 
  ClonePixelCacheMethods(Cache,const Cache), 
  DestroyCacheInfo(Cache), 
  DestroyCacheNexus(Cache,const unsigned long), 
  GetCacheInfo(Cache *), 
  SetImageVirtualPixelMethod(const Image *,const VirtualPixelMethod), 
  SetPixelCacheMethods(Cache,AcquirePixelHandler,GetPixelHandler, 
    SetPixelHandler,SyncPixelHandler,GetPixelsFromHandler,GetIndexesFromHandler, 
    AcquireOnePixelFromHandler,GetOnePixelFromHandler,DestroyPixelHandler); 
 
#if defined(__cplusplus) || defined(c_plusplus) 
} 
#endif 
 
#endif