windows-nt/Source/XPSP1/NT/admin/netui/common/h/bltbitmp.hxx
2020-09-26 16:20:57 +08:00

175 lines
5.1 KiB
C++

/**********************************************************************/
/** Microsoft Windows/NT **/
/** Copyright(c) Microsoft Corp., 1991 **/
/**********************************************************************/
/*
bltbitmp.hxx
Bitmap and display map definitions
Note: This file depends on the BMID typedef in blt.hxx
FILE HISTORY:
rustanl 3-Dec-1990 Created
JohnL 4-Mar-1991 Fully implemented display map
Johnl 18-Mar-1991 Made code review changes
Terryk 22-Mar-1991 comment header changed
gregj 1-May-1991 Added DISPLAY_MAP::QueryID
beng 14-May-1991 Hacked for separate compilation
terryk 19-Jul-1991 Delete BLT_MAP::BLT_MAP( ULONG )
Add BLT_MAP::SetBitmap( HBITMAP hbitmap )
*/
#ifndef _BLT_HXX_
#error "Don't include this file directly; instead, include it through blt.hxx"
#endif // _BLT_HXX_
#ifndef _BLTBITMP_HXX_
#define _BLTBITMP_HXX_
#include "base.hxx"
#include "bltidres.hxx"
// The following is the color that will be mapped to the screen background.
// for DISPLAY_MAP objects. (this is bright green).
//
#define DISPLAY_MAP_TRANS_COLOR RGB(0x00, 0xFF, 0x00 )
/*************************************************************************
NAME: BIT_MAP
SYNOPSIS: General wrapper for a bitmap object
INTERFACE:
BIT_MAP()
Takes a bitmap ID defined in the resource and attempts to
load it from the resource. Will assert out in debug version
if loading fails.
BIT_MAP()
Assumes hbitmp is a valid bitmap handle and initializes the
BIT_MAP object accordingly
QueryHandle()
Returns the bitmap handle
QueryWidth()
QueryHeight()
Returns the width and the height (respectively)
QueryError()
Returns ERROR_INVALID_DATA if this BIT_MAP object is NULL
PARENT: BASE
NOTES: The bitmap is deleted during destruction.
HISTORY:
Rustanl 3-Dec-1990 Created
Johnl 13-Mar-1991 Documented, cleaned up
terryk 21-Jun-1991 Add 2 more constructors for bitmap class
terryk 19-Jul-1991 Delete BLT_MAP( ULONG ) and Add
SetBitmap( HBITMAP hbitmap )
beng 04-Oct-1991 Win32 conversion
beng 28-Jul-1992 Loads from app or lib; use IDRESOURCE
**************************************************************************/
DLL_CLASS BIT_MAP : public BASE
{
public:
BIT_MAP( const IDRESOURCE & id );
BIT_MAP( HBITMAP hbitmp );
~BIT_MAP();
HBITMAP QueryHandle() const;
UINT QueryHeight() const;
UINT QueryWidth() const;
VOID SetBitmap( HBITMAP hbitmap );
private:
HBITMAP _h;
};
/*************************************************************************
NAME: DISPLAY_MAP
SYNOPSIS: Used when portions of a bitmap need to transparently overlay
the underlying screen. Generates the mask to do so automatically.
INTERFACE:
DISPLAY_MAP()
Takes a BMID (Bitmap ID) and generates the mask automatically
(note: the bitmap is twiddled with also, so don't use it
by itself, always use the DISPLAY_MAP::Paint method).
QueryMaskHandle()
QueryBitmapHandle()
Gets the HBITMAP of the mask and handle respectively
QueryWidth()
QueryHeight()
Gets the width and height of the display map.
QueryID()
Gets the DMID for the display map.
Paint()
Paints this display map onto the given device context
at the given position. Returns TRUE if successful,
FALSE otherwise (BitBlt failed for some reason).
PARENT: BASE
HISTORY:
Johnl 1-Mar-1991 Created first real version
gregj 1-May-1991 Added QueryID() for GUILTT support
beng 04-Oct-1991 Win32 conversion
**************************************************************************/
DLL_CLASS DISPLAY_MAP : public BASE
{
public:
DISPLAY_MAP( BMID bmid );
~DISPLAY_MAP();
HBITMAP QueryMaskHandle() const;
HBITMAP QueryBitmapHandle() const;
UINT QueryHeight() const;
UINT QueryWidth() const;
BOOL Paint( HDC hDC, INT x, INT y ) const;
BMID QueryID() const { return _bmid; }
private:
BIT_MAP * _pbmMask; // Pointer to the bitmap of the mask
BIT_MAP * _pbmBitmap; // Pointer to the bitmap image
BMID _bmid; // display map ID
VOID SetMaskBits( BYTE * pbBits,
INT nColorIndex,
INT nBitsPerPixel,
UINT cbSize );
VOID SetBitmapBits( BYTE * pbBits,
INT nColorIndex,
INT nBitsPerPixel,
UINT cbSize );
INT GetTransColorIndex( DWORD *pdwRGB, INT nNumDWords ) const;
};
#endif // _BLTBITMP_HXX - end of file