/*++ * File name: * bmpdb.h * Contents: * bmpdb structures * * Copyright (C) 1998-1999 Microsoft Corp. --*/ #define MAX_STRING_LENGTH 128 typedef long FOFFSET; typedef struct _BMPENTRY { UINT nDataSize; // Total size of pData (bmpSize+bmiSize) UINT bmpSize; // Size of bits. Located at pData // After BITMAPINFO (if any) UINT bmiSize; // Size of BITMAPINFO header // if zero -> monocrome bitmap // BITMAPINFO is located in begining of // pData UINT xSize, ySize; UINT nChkSum; BOOL bDeleted; // Valuable in DB char szComment[MAX_STRING_LENGTH]; HBITMAP hBitmap; // Valuable in linked list FOFFSET FOffsMe; // My pointer in DB FOFFSET FOffsNext; // DB struct _BMPENTRY *pNext; // linked list PVOID pData; // Pointer to BMP data, in DB it is // immediatly after this structure } BMPENTRY, *PBMPENTRY; typedef struct _GROUPENTRY { WCHAR WText[MAX_STRING_LENGTH]; BOOL bDeleted; FOFFSET FOffsMe; // My pointer in DB FOFFSET FOffsBmp; // DB PBMPENTRY pBitmap; // linked list FOFFSET FOffsNext; // DB struct _GROUPENTRY *pNext; // linked list } GROUPENTRY, *PGROUPENTRY; typedef BOOL (_cdecl *PFNENUMGROUPS)(FOFFSET nOff, PGROUPENTRY pGroup, PVOID pParam); typedef BOOL (_cdecl *PFNENUMBITMAPS)(FOFFSET nOff, PBMPENTRY pBitmap, PVOID pParam); BOOL OpenDB(BOOL bWrite); VOID CloseDB(VOID); BOOL ReadGroup(FOFFSET nOffset, PGROUPENTRY pGroup); BOOL WriteGroup(FOFFSET nOffset, PGROUPENTRY pGroup); VOID EnumerateGroups(PFNENUMGROUPS pfnEnumGrpProc, PVOID pParam); BOOL ReadBitmapHeader(FOFFSET nOffset, PBMPENTRY pBitmap); BOOL WriteBitmapHeader(FOFFSET nOffset, PBMPENTRY pBitmap); PBMPENTRY ReadBitmap(FOFFSET nOffset); VOID FreeBitmap(PBMPENTRY pBmp); VOID EnumerateBitmaps(FOFFSET nOffset, PFNENUMBITMAPS pfnEnumProc, PVOID pParam); FOFFSET FindGroup(LPWSTR szWText); FOFFSET FindBitmap(LPWSTR szWText, char *szComment); UINT CheckSum(PVOID pData, UINT nLen); BOOL AddBitMap(PBMPENTRY pBitmap, LPCWSTR szWText); BOOL AddBitMapA(PBMPENTRY pBitmap, LPCSTR szAText); BOOL DeleteBitmap(LPWSTR szWText, char *szComment); BOOL DeleteBitmapByPointer(FOFFSET nBmpOffs); BOOL DeleteGroupByPointer(FOFFSET nGrpOffs); PGROUPENTRY GetGroupList(VOID); VOID FreeGroupList(PGROUPENTRY pList); PBMPENTRY GetBitmapList(HDC hDC, FOFFSET nOffs); VOID FreeBitmapList(PBMPENTRY pList);