susie.h

C:\home\SVGCats_src\src\susie.h

[目次 | 型・クラス・構造体 | マクロ]

目次

型・クラス・構造体一覧

マクロ一覧


   1|/**************************************************************************
   2|  1. <<< Susie プラグイン (Susie) >>> 
   3|***************************************************************************/
   4|
   5|#ifndef __SUSIE_H
   6|#define __SUSIE_H
   7|
   8|
   9| 
  10|/*************************************************************************
  11|  2. <<< モジュール設定・優先ヘッダ >>> 
  12|**************************************************************************/
  13|#ifndef USES_PRIORITY_HEADER
  14|/*[START_OF_PRIORITY_HEADER]*/
  15|
  16|#ifndef  USES_SUSIE
  17|#define  USES_SUSIE
  18|
  19|typedef  struct _Susie   Susie;
  20|typedef  struct _Susies  Susies;
  21|
  22|#endif
  23|
  24|/*[END_OF_PRIORITY_HEADER]*/
  25|#endif
  26|
  27|/* 派生属性の設定 */
  28|#if defined(SUSIE_SOME)
  29|  #define  SUSIE_OTHER
  30|#endif
  31| 
  32|/*************************************************************************
  33|  3. <<< エラーコード, リターンコード >>> 
  34|**************************************************************************/
  35|
  36|#define  Susie_Err_CannotLoadSPI      22760
  37|  /* Susie プラグインがロードできない(ファイルが見つからないか、プラグインではない)*/
  38|
  39|#define  Susie_Err_NotSupportImgType  22761
  40|  /* 設定しているプラグインに対応していない画像ファイル */
  41|
  42|#define  Susie_Err_GetPictureInfo     22762
  43|  /* プラグインの GetPictureInfo 関数がエラーを返した */
  44|
  45|#define  Susie_Err_GetPicture         22763
  46|  /* プラグインの GetPicture 関数がエラーを返した */
  47|
  48| 
  49|/*--------------------------------------------------------------*/
  50|/*4. <<< Interface Area -------------------------------------- >>> */ 
  51|/*--------------------------------------------------------------*/
  52|
  53|#ifdef __cplusplus
  54|extern "C" {
  55|#endif
  56|
  57| 
  58|/**************************************************************************
  59|  5. <<< [SPI] Susie プラグイン API >>> 
  60|【補足】
  61|・内部用です。Susie クラスの内部で使用しています。
  62|***************************************************************************/
  63|#include <pshpack1.h>
  64|typedef struct _SPI_PicInfo {
  65|  long   left;       /* 画像を展開する位置 */
  66|  long   top;        /* 画像を展開する位置 */
  67|  long   width;      /* 画像の幅(pixel) */
  68|  long   height;     /* 画像の高さ(pixel) */
  69|  WORD   x_density;  /* 画素の水平方向密度 */
  70|  WORD   y_density;  /* 画素の垂直方向密度 */
  71|  short  colorDepth; /* 1画素のbit数 */
  72|  HLOCAL info;       /* 画像のテキストヘッダ */
  73|} SPI_PicInfo;
  74|#include <poppack.h>
  75|
  76|typedef int (CALLBACK *SPI_onProgress_F)( int, int, long );
  77|
  78|typedef int (__stdcall *SPI_getPluginInfo_F)( int infono, LPCSTR buf,int buflen );
  79|typedef int (__stdcall *SPI_isSupported_F)( LPCSTR filename, DWORD dw );
  80|typedef int (__stdcall *SPI_getPictureInfo_F)( LPSTR buf, long len,
  81|  unsigned int flag, SPI_PicInfo *lpInfo );
  82|typedef int (__stdcall *SPI_getPicture_F)( LPSTR buf, long len, unsigned int flag,
  83|  HANDLE *pHBInfo, HANDLE *pHBm,  SPI_onProgress_F lpPrgressCallback, long lData );
  84|
  85|
  86| 
  87|/**************************************************************************
  88|  6. <<< [Susie] Susie プラグイン >>> 
  89|***************************************************************************/
  90|struct  _Susie {
  91|  #ifdef  USES_LISTX
  92|    ListX_Elem  inherit_ListX_Elem;
  93|  #endif
  94|
  95|  /* 画像情報 */
  96|  HANDLE bitmapInfo;  /* LocalAlloc された画像情報やパレット情報 */
  97|  HANDLE image;       /* LocalAlloc された画像データ */
  98|  int    size;      /* 画像データのサイズ */
  99|  int    width;     /* 画像の幅 */
 100|  int    height;    /* 画像の高さ */
 101|  int    bpp;       /* 1ピクセルあたりのビット数 */
 102|  int    nPalette;  /* パレット数 */
 103|
 104|  /* プラグイン API */
 105|  HMODULE  spi;
 106|  SPI_getPluginInfo_F   SPI_getPluginInfo;
 107|  SPI_isSupported_F     SPI_isSupported;
 108|  SPI_getPictureInfo_F  SPI_getPictureInfo;
 109|  SPI_getPicture_F      SPI_getPicture;
 110|};
 111|
 112|void  Susie_init( Susie* m, const char* spi_path );
 113|void  Susie_finish( Susie* m );
 114|void  Susie_attach( Susie* m, const char* pic_path );
 115|void  Susie_draw( Susie* m, HDC dc, int x, int y );
 116|void  Susie_drawMul( Susie* m, HDC dc, int x, int y, float x_mul, float y_mul );
 117|void  Susie_drawStretch( Susie* m, HDC dc, int x, int y, int w, int h );
 118|void  Susie_getImage( Susie* m, void* p, int p_size );
 119|void  Susie_getPalette( Susie* m, void* p, int p_size );
 120|
 121| 
 122|/**************************************************************************
 123|  7. <<< [Susies] Susie プラグインの集合 >>> 
 124|【補足】
 125|・画像のフォーマットに応じて自動的にプラグインを選択します。
 126|***************************************************************************/
 127|#ifdef  USES_LISTX
 128|struct  _Susies {
 129|  ListX   susies;  /* Susie 型リスト */
 130|  Susie*  selectingSPI;
 131|};
 132|
 133|extern  Susies  Susies_globl;
 134|
 135|void  Susies_init( Susies* m, const char* spi_folder_path );
 136|void  Susies_finish( Susies* m );
 137|void  Susies_addSPI( Susies* m, const char* spi_path );
 138|void  Susies_attach( Susies* m, const char* pic_path );
 139|void  Susies_draw( Susies* m, HDC dc, int x, int y );
 140|void  Susies_drawMul( Susies* m, HDC dc, int x, int y, float x_mul, float y_mul );
 141|void  Susiea_drawStretch( Susies* m, HDC dc, int x, int y, int w, int h );
 142|void  Susies_getImage( Susies* m, void* p, int p_size );
 143|void  Susies_getPalette( Susies* m, void* p, int p_size );
 144|
 145|#else
 146|  #define  Susies  __need_ListX  /* ListX モジュールが必要 */
 147|#endif
 148|
 149| 
 150|#ifdef __cplusplus
 151|}
 152|#endif
 153|
 154|/*-----------------------------------------------------------------*/
 155|/* 8. <<< Mapping Area ------------------------------------------ >>> */ 
 156|/*-----------------------------------------------------------------*/
 157|
 158| 
 159|/***********************************************************************
 160|  9. <<< [Susies_draw] プラグイン自動選択版 Susie_draw >>> 
 161|【補足】
 162|・void  Susies_draw( Susies* m, HDC dc, int x, int y );
 163|************************************************************************/
 164|#define  Susies_draw( m, dc, x, y ) \
 165|  Susie_draw( (m)->selectingSPI, dc, x, y )
 166|
 167|
 168|/***********************************************************************
 169|  10. <<< [Susies_drawMul] プラグイン自動選択版 Susie_drawMul >>>
 170|【補足】
 171|・void  Susie_drawMul( Susie* m, HDC dc, int x, int y, float x_mul, float y_mul );
 172|************************************************************************/
 173|#define  Susies_drawMul( m, dc, x, y, x_mul, y_mul ) \
 174|  Susie_drawMul( (m)->selectingSPI, dc, x, y, x_mul, y_mul )
 175|
 176|
 177|/***********************************************************************
 178|  11. <<< [Susies_drawStretch] プラグイン自動選択版 Susie_drawStretch >>>
 179|【補足】
 180|・void  Susie_drawStretch( Susie* m, HDC dc, int x, int y, int w, int h );
 181|************************************************************************/
 182|#define  Susies_drawStretch( m, dc, x, y, w, h ) \
 183|  Susie_drawStretch( (m)->selectingSPI, dc, x, y, w, h )
 184|
 185|
 186|/***********************************************************************
 187|  12. <<< [Susies_getImage] プラグイン自動選択版 Susies_getImage >>>
 188|【補足】
 189|・void  Susies_getImage( Susies* m, void* p, int p_size );
 190|************************************************************************/
 191|#define  Susies_getImage( m, p, p_size ) \
 192|  Susie_getImage( (m)->selectingSPI, p, p_size )
 193|
 194|
 195|
 196|/***********************************************************************
 197|  13. <<< [Susies_getPalette] プラグイン自動選択版 Susies_getPalette >>>
 198|【補足】
 199|・void  Susies_getPalette( Susies* m, void* p, int p_size );
 200|************************************************************************/
 201|#define  Susies_getPalette( m, p, p_size ) \
 202|  Susie_getPalette( (m)->selectingSPI, p, p_size )
 203|
 204| 
 205|#endif  /* __SUSIE_H */ 
 206| 
 207|