windows-nt/Source/XPSP1/NT/shell/osshell/themes/themesw/loadimag.h
2020-09-26 16:20:57 +08:00

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 */