#pragma once #ifndef ske_H_INC #define ske_H_INC #include "modern_skinselector.h" #include "modern_commonprototypes.h" /* Definitions */ #define GetAValue(argb)((BYTE)((argb)>>24)) #define DEFAULTSKINSECTION "ModernSkin" #define MAX_BUFF_SIZE 255*400 #define MAXSN_BUFF_SIZE 255*1000 /* External variables */ /* Structs */ typedef struct tagSKINOBJECTSLIST { DWORD dwObjLPReserved; DWORD dwObjLPAlocated; char * szSkinPlace; LISTMODERNMASK * pMaskList; SKINOBJECTDESCRIPTOR * pObjects; SortedList * pTextList; } SKINOBJECTSLIST; typedef struct tagGLYPHIMAGE { char * szFileName; DWORD dwLoadedTimes; HBITMAP hGlyph; BYTE isSemiTransp; } GLYPHIMAGE,*LPGLYPHIMAGE; typedef struct tagCURRWNDIMAGEDATA { HDC hImageDC; HDC hBackDC; HDC hScreenDC; HBITMAP hImageDIB, hImageOld; HBITMAP hBackDIB, hBackOld; BYTE * hImageDIBByte; BYTE * hBackDIBByte; int Width,Height; }CURRWNDIMAGEDATA; typedef struct tagEFFECTSSTACKITEM { HDC hdc; BYTE EffectID; DWORD FirstColor; DWORD SecondColor; } EFFECTSSTACKITEM; #pragma pack(push, 1) /* tga header */ typedef struct { BYTE id_lenght; /* size of image id */ BYTE colormap_type; /* 1 is has a colormap */ BYTE image_type; /* compression type */ short cm_first_entry; /* colormap origin */ short cm_length; /* colormap length */ BYTE cm_size; /* colormap size */ short x_origin; /* bottom left x coord origin */ short y_origin; /* bottom left y coord origin */ short width; /* picture width (in pixels) */ short height; /* picture height (in pixels) */ BYTE pixel_depth; /* bits per pixel: 8, 16, 24 or 32 */ BYTE image_descriptor; /* 24 bits = 0x00; 32 bits = 0x80 */ } tga_header_t; #pragma pack(pop) class IniParser { public: enum { FLAG_WITH_SETTINGS = 0, FLAG_ONLY_OBJECTS = 1, }; enum { IT_UNKNOWN, IT_FILE, IT_RESOURCE }; typedef HRESULT (*ParserCallback_t)( const char * szSection, const char * szKey, const char * szValue, IniParser * This ); IniParser( TCHAR * szFileName, BYTE flags = FLAG_WITH_SETTINGS ); IniParser( HINSTANCE hInst, const char * resourceName, const char * resourceType, BYTE flags = FLAG_ONLY_OBJECTS ); ~IniParser(); bool CheckOK() { return _isValid; } HRESULT Parse( ParserCallback_t pLineCallBackProc, LPARAM lParam ); static HRESULT WriteStrToDb( const char * szSection, const char * szKey, const char * szValue, IniParser * This); static int GetSkinFolder( IN const TCHAR * szFileName, OUT TCHAR * pszFolderName ); private: // common enum { MAX_LINE_LEN = 512 }; int _eType; bool _isValid; char * _szSection; ParserCallback_t _pLineCallBackProc; BOOL _SecCheck; int _nLine; void _DoInit(); BOOL _DoParseLine( char * szLine ); // Processing File HRESULT _DoParseFile(); FILE * _hFile; // Processing resource void _LoadResourceIni( HINSTANCE hInst, const char * resourceName, const char * resourceType ); HRESULT _DoParseResource(); const char * _RemoveTailings( const char * szLine, size_t& len ); HGLOBAL _hGlobalRes; DWORD _dwSizeOfRes; char * _pPosition; BYTE _Flags; }; int ske_UnloadSkin(SKINOBJECTSLIST * Skin); int ske_AddDescriptorToSkinObjectList (LPSKINOBJECTDESCRIPTOR lpDescr, SKINOBJECTSLIST* Skin); INT_PTR ske_Service_DrawGlyph(WPARAM wParam,LPARAM lParam); #endif