131 lines
3.8 KiB
C
131 lines
3.8 KiB
C
|
//
|
||
|
// LoadImage.c
|
||
|
//
|
||
|
// routines to load and decomress a graphics file using a MS Office
|
||
|
// graphic import filter.
|
||
|
//
|
||
|
// writen for Plus! 05/24/95
|
||
|
// ToddLa
|
||
|
//
|
||
|
// Copyright (c) 1995-1998 Microsoft Corporation. All rights reserved.
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" { /* Assume C declarations for C++ */
|
||
|
#endif /* __cplusplus */
|
||
|
|
||
|
|
||
|
|
||
|
|
||
|
typedef struct
|
||
|
{
|
||
|
LPBITMAPINFOHEADER pBitmapInfoHeader;
|
||
|
HMETAFILE hMetaFile;
|
||
|
} BITMAP_AND_METAFILE_COMBO;
|
||
|
|
||
|
// LoadImageFromFile(LPCTSTR szFileName, int width, int height, int bpp, int dither);
|
||
|
//
|
||
|
// load a graphic file decompess it (iff needed) and return a DIBSection
|
||
|
//
|
||
|
// szFileName - the file name, can be a windows bitmap
|
||
|
// or any format supported by a installed
|
||
|
// graphic import filter.
|
||
|
//
|
||
|
// width, height - requested width,height in pixels
|
||
|
// pass zero for no stretching
|
||
|
//
|
||
|
// bpp - requested bit depth
|
||
|
//
|
||
|
// 0 use the bit depth of the image
|
||
|
// -1 use best bit depth for current display
|
||
|
// 8 use 8bpp
|
||
|
// 16 use 16bpp 555
|
||
|
// 24 use 24bpp
|
||
|
// 32 use 32bpp
|
||
|
// 555 use 16bpp 555
|
||
|
// 565 use 16bpp 565
|
||
|
//
|
||
|
// if the requested bit depth is 8bpp a palette
|
||
|
// will be used in this order.
|
||
|
//
|
||
|
// if the image file is <= 8bpp its
|
||
|
// color table will be used.
|
||
|
//
|
||
|
// if a file of the same name, with
|
||
|
// a .pal extension exists this will be
|
||
|
// used as the palette.
|
||
|
//
|
||
|
// otherwise the halftone palette will be used.
|
||
|
//
|
||
|
// dither 0 = none.
|
||
|
// 1 = dither to custon palette.
|
||
|
// 2 = dither to standard palette.
|
||
|
// 3 = halftone to standard palette.
|
||
|
//
|
||
|
// returns
|
||
|
//
|
||
|
// DIBSection bitmap handle
|
||
|
//
|
||
|
#define DITHER_NONE 0
|
||
|
#define DITHER_CUSTOM 1
|
||
|
#define DITHER_STANDARD 2
|
||
|
#define DITHER_HALFTONE 3
|
||
|
#define DITHER_CUSTOM_HYBRID 4
|
||
|
#define DITHER_STANDARD_HYBRID 5
|
||
|
HBITMAP LoadImageFromFile(LPCTSTR szFileName, BITMAP_AND_METAFILE_COMBO * pbam, int width, int height, int bpp, int dither);
|
||
|
|
||
|
// LoadDIBFromFile
|
||
|
//
|
||
|
// load a image file using a image import filter.
|
||
|
HRESULT LoadDIBFromFile(IN LPCTSTR szFileName, IN BITMAP_AND_METAFILE_COMBO * pBitmapAndMetaFile);
|
||
|
void FreeDIB(BITMAP_AND_METAFILE_COMBO bam);
|
||
|
|
||
|
//
|
||
|
// LoadPaletteFromFile
|
||
|
//
|
||
|
// load a MS .PAL file. as a array of RGBQUADs
|
||
|
//
|
||
|
// if the palette file is invalid or does not
|
||
|
// exists the halftone colors are returned.
|
||
|
// if hdcNearest is not NULL the colors are adjusted w/GetNearestColor
|
||
|
//
|
||
|
DWORD LoadPaletteFromFile(LPCTSTR szFile, LPDWORD rgb, HDC hdcNearest);
|
||
|
|
||
|
//
|
||
|
// GetFilterInfo
|
||
|
//
|
||
|
BOOL GetFilterInfo(int i, LPTSTR szName, UINT cbName, LPTSTR szExt, UINT cbExt, LPTSTR szHandler, UINT cbHandler);
|
||
|
|
||
|
//
|
||
|
// SaveImageToFile
|
||
|
//
|
||
|
// save a DIBSection to a .BMP file.
|
||
|
//
|
||
|
// if szTitle is !=NULL it will be written to the end of the
|
||
|
// bitmap so GetImageTitle() can read it.
|
||
|
//
|
||
|
BOOL SaveImageToFile(HBITMAP hbm, LPCTSTR szFile, LPCTSTR szTitle);
|
||
|
|
||
|
//
|
||
|
// GetImageTitle
|
||
|
//
|
||
|
// retrives the title writen to a bitmap file by SaveImageToFile
|
||
|
//
|
||
|
DWORD GetImageTitle(LPCTSTR szFile, LPTSTR szTitle, UINT cb);
|
||
|
|
||
|
//
|
||
|
// CacheLoadImageFromFile
|
||
|
// CacheDeleteBitmap
|
||
|
//
|
||
|
HBITMAP CacheLoadImageFromFile(LPCTSTR szFileName, int width, int height, int bpp, int dither);
|
||
|
void CacheDeleteBitmap(HBITMAP hbm);
|
||
|
|
||
|
// FindExtension
|
||
|
//
|
||
|
// returns a pointer to the extension of a file.
|
||
|
//
|
||
|
LPCTSTR FindExtension(LPCTSTR pszPath);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif /* __cplusplus */
|