76 lines
2.0 KiB
C++
76 lines
2.0 KiB
C++
/******************************Module*Header*******************************\
|
|
* Module Name: mtkbmp.cxx
|
|
*
|
|
* mtk bitmap
|
|
*
|
|
* Copyright (c) 1997 Microsoft Corporation
|
|
*
|
|
\**************************************************************************/
|
|
|
|
#include "mtk.hxx"
|
|
#include "mtkbmp.hxx"
|
|
|
|
/******************************Public*Routine******************************\
|
|
*
|
|
\**************************************************************************/
|
|
|
|
MTKBMP::MTKBMP( HDC hdcWinArg )
|
|
{
|
|
hBitmap = NULL;
|
|
hdcWin = hdcWinArg;
|
|
hdc = CreateCompatibleDC( hdcWin );
|
|
size.width = size.height = 0;
|
|
}
|
|
|
|
MTKBMP::~MTKBMP()
|
|
{
|
|
if( hBitmap )
|
|
DeleteObject( hBitmap );
|
|
}
|
|
|
|
BOOL
|
|
MTKBMP::Resize( ISIZE *pSize )
|
|
{
|
|
if( (pSize->width <= 0) || (pSize->height <= 0) ) {
|
|
SS_ERROR( "MTKBMP::Resize : Invalid size parameters\n" );
|
|
return FALSE;
|
|
}
|
|
|
|
if( (pSize->width == size.width) && (pSize->height == size.height) )
|
|
// Same size
|
|
return TRUE;
|
|
|
|
size = *pSize;
|
|
|
|
PVOID pvBits; //mf: doesn't seem like we need this
|
|
#if 1
|
|
// Use system palette
|
|
//mf: don't know why we have to use hdcWin here, but if I use hdc, get
|
|
// error : 'not OBJ_DC'
|
|
HBITMAP hbmNew =
|
|
SSDIB_CreateCompatibleDIB(hdcWin, NULL, size.width, size.height, &pvBits);
|
|
#else
|
|
//mf: uhh, this never worked or something, right ?
|
|
// Use log palette
|
|
HBITMAP hbmNew = SSDIB_CreateCompatibleDIB(hdcWin,
|
|
gpssPal ? gpssPal->hPal : NULL,
|
|
size.width, size.height, &pvBits);
|
|
#endif
|
|
if (hbmNew)
|
|
{
|
|
if( hBitmap != NULL )
|
|
{
|
|
SelectObject( hdc, hBitmap );
|
|
DeleteObject( hBitmap );
|
|
}
|
|
|
|
hBitmap = hbmNew;
|
|
SelectObject( hdc, hBitmap );
|
|
}
|
|
return TRUE;
|
|
}
|
|
|
|
/******************************Public*Routine******************************\
|
|
\**************************************************************************/
|
|
|