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|