mirror of
https://github.com/reactos/reactos.git
synced 2025-08-04 08:15:41 +00:00
- Fix DC/Bitmap handling
- Fix compiler warnings - Silence some debug output svn path=/trunk/; revision=4263
This commit is contained in:
parent
10283bad30
commit
6fdd94516b
15 changed files with 61 additions and 42 deletions
|
@ -1,14 +1,15 @@
|
||||||
/*
|
/*
|
||||||
* entry.c
|
* entry.c
|
||||||
*
|
*
|
||||||
* $Revision: 1.24 $
|
* $Revision: 1.25 $
|
||||||
* $Author: gvg $
|
* $Author: gvg $
|
||||||
* $Date: 2003/02/25 23:08:52 $
|
* $Date: 2003/03/08 13:16:52 $
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gdiinfo.h"
|
#include "gdiinfo.h"
|
||||||
#include "../vgavideo/vgavideo.h"
|
#include "../vgavideo/vgavideo.h"
|
||||||
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
#define DBG_PREFIX "VGADDI: "
|
#define DBG_PREFIX "VGADDI: "
|
||||||
|
|
|
@ -1085,7 +1085,7 @@ EngCreateEvent
|
||||||
HPALETTE STDCALL
|
HPALETTE STDCALL
|
||||||
EngCreatePalette(IN ULONG Mode,
|
EngCreatePalette(IN ULONG Mode,
|
||||||
IN ULONG NumColors,
|
IN ULONG NumColors,
|
||||||
IN PULONG *Colors,
|
IN ULONG *Colors,
|
||||||
IN ULONG Red,
|
IN ULONG Red,
|
||||||
IN ULONG Green,
|
IN ULONG Green,
|
||||||
IN ULONG Blue);
|
IN ULONG Blue);
|
||||||
|
|
|
@ -48,6 +48,7 @@ int DIB_GetDIBImageBytes (int width, int height, int depth);
|
||||||
int DIB_BitmapInfoSize (const BITMAPINFO * info, WORD coloruse);
|
int DIB_BitmapInfoSize (const BITMAPINFO * info, WORD coloruse);
|
||||||
INT BITMAP_GetObject(BITMAPOBJ * bmp, INT count, LPVOID buffer);
|
INT BITMAP_GetObject(BITMAPOBJ * bmp, INT count, LPVOID buffer);
|
||||||
BOOL Bitmap_InternalDelete( PBITMAPOBJ pBmp );
|
BOOL Bitmap_InternalDelete( PBITMAPOBJ pBmp );
|
||||||
|
HBITMAP BitmapToSurf(PBITMAPOBJ BitmapObj);
|
||||||
|
|
||||||
/* User Entry Points */
|
/* User Entry Points */
|
||||||
BOOL
|
BOOL
|
||||||
|
|
|
@ -130,6 +130,11 @@ STDCALL
|
||||||
W32kRectInRegion(HRGN hRgn,
|
W32kRectInRegion(HRGN hRgn,
|
||||||
CONST LPRECT rc);
|
CONST LPRECT rc);
|
||||||
|
|
||||||
|
INT
|
||||||
|
STDCALL
|
||||||
|
W32kSelectVisRgn(HDC hdc,
|
||||||
|
HRGN hrgn);
|
||||||
|
|
||||||
BOOL
|
BOOL
|
||||||
STDCALL
|
STDCALL
|
||||||
W32kSetRectRgn(HRGN hRgn,
|
W32kSetRectRgn(HRGN hRgn,
|
||||||
|
|
|
@ -12,13 +12,13 @@
|
||||||
#include <include/object.h>
|
#include <include/object.h>
|
||||||
#include "handle.h"
|
#include "handle.h"
|
||||||
|
|
||||||
//#define NDEBUG
|
#define NDEBUG
|
||||||
#include <win32k/debug1.h>
|
#include <win32k/debug1.h>
|
||||||
|
|
||||||
HPALETTE STDCALL
|
HPALETTE STDCALL
|
||||||
EngCreatePalette(ULONG Mode,
|
EngCreatePalette(ULONG Mode,
|
||||||
ULONG NumColors,
|
ULONG NumColors,
|
||||||
PULONG *Colors, // FIXME: This was implemented with ULONG *Colors!!
|
ULONG *Colors,
|
||||||
ULONG Red,
|
ULONG Red,
|
||||||
ULONG Green,
|
ULONG Green,
|
||||||
ULONG Blue)
|
ULONG Blue)
|
||||||
|
|
|
@ -175,8 +175,8 @@ static INT CalculateShift(ULONG Mask)
|
||||||
return Shift;
|
return Shift;
|
||||||
}
|
}
|
||||||
|
|
||||||
XLATEOBJ *EngCreateXlate(USHORT DestPalType, USHORT SourcePalType,
|
XLATEOBJ *IntEngCreateXlate(USHORT DestPalType, USHORT SourcePalType,
|
||||||
HPALETTE PaletteDest, HPALETTE PaletteSource)
|
HPALETTE PaletteDest, HPALETTE PaletteSource)
|
||||||
{
|
{
|
||||||
// FIXME: Add support for BGR conversions
|
// FIXME: Add support for BGR conversions
|
||||||
|
|
||||||
|
|
|
@ -24,4 +24,9 @@ BOOL STDCALL IntEngBitBlt(SURFOBJ *DestObj,
|
||||||
POINTL *BrushOrigin,
|
POINTL *BrushOrigin,
|
||||||
ROP4 rop4);
|
ROP4 rop4);
|
||||||
|
|
||||||
|
XLATEOBJ *IntEngCreateXlate(USHORT DestPalType,
|
||||||
|
USHORT SourcePalType,
|
||||||
|
HPALETTE PaletteDest,
|
||||||
|
HPALETTE PaletteSource);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: windc.c,v 1.7 2003/03/08 00:46:14 gvg Exp $
|
/* $Id: windc.c,v 1.8 2003/03/08 13:16:51 gvg Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -13,6 +13,7 @@
|
||||||
|
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <win32k/win32k.h>
|
#include <win32k/win32k.h>
|
||||||
|
#include <win32k/region.h>
|
||||||
#include <win32k/userobj.h>
|
#include <win32k/userobj.h>
|
||||||
#include <include/class.h>
|
#include <include/class.h>
|
||||||
#include <include/error.h>
|
#include <include/error.h>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: window.c,v 1.26 2003/03/07 05:38:02 rcampbell Exp $
|
/* $Id: window.c,v 1.27 2003/03/08 13:16:51 gvg Exp $
|
||||||
*
|
*
|
||||||
* COPYRIGHT: See COPYING in the top level directory
|
* COPYRIGHT: See COPYING in the top level directory
|
||||||
* PROJECT: ReactOS kernel
|
* PROJECT: ReactOS kernel
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
#include <include/msgqueue.h>
|
#include <include/msgqueue.h>
|
||||||
#include <include/rect.h>
|
#include <include/rect.h>
|
||||||
|
|
||||||
//#define NDEBUG
|
#define NDEBUG
|
||||||
#include <debug.h>
|
#include <debug.h>
|
||||||
|
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
|
@ -82,7 +82,7 @@ BOOL STDCALL W32kBitBlt(HDC hDCDest,
|
||||||
PalDestGDI = (PPALGDI)AccessInternalObject(DestPalette);
|
PalDestGDI = (PPALGDI)AccessInternalObject(DestPalette);
|
||||||
PalSourceGDI = (PPALGDI)AccessInternalObject(SourcePalette);
|
PalSourceGDI = (PPALGDI)AccessInternalObject(SourcePalette);
|
||||||
|
|
||||||
XlateObj = (PXLATEOBJ)EngCreateXlate(PalDestGDI->Mode, PalSourceGDI->Mode, DestPalette, SourcePalette);
|
XlateObj = (PXLATEOBJ)IntEngCreateXlate(PalDestGDI->Mode, PalSourceGDI->Mode, DestPalette, SourcePalette);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Perform the bitblt operation
|
// Perform the bitblt operation
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include <win32k/cliprgn.h>
|
#include <win32k/cliprgn.h>
|
||||||
#include <win32k/coord.h>
|
#include <win32k/coord.h>
|
||||||
|
|
||||||
// #define NDEBUG
|
#define NDEBUG
|
||||||
#include <win32k/debug1.h>
|
#include <win32k/debug1.h>
|
||||||
|
|
||||||
VOID
|
VOID
|
||||||
|
@ -54,7 +54,7 @@ HRGN WINAPI SaveVisRgn(HDC hdc)
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
INT WINAPI
|
INT STDCALL
|
||||||
W32kSelectVisRgn(HDC hdc, HRGN hrgn)
|
W32kSelectVisRgn(HDC hdc, HRGN hrgn)
|
||||||
{
|
{
|
||||||
int retval;
|
int retval;
|
||||||
|
|
|
@ -4,11 +4,14 @@
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
#include <ddk/winddi.h>
|
#include <ddk/winddi.h>
|
||||||
|
#include <win32k/brush.h>
|
||||||
#include <win32k/dc.h>
|
#include <win32k/dc.h>
|
||||||
#include <win32k/color.h>
|
#include <win32k/color.h>
|
||||||
|
#include <win32k/pen.h>
|
||||||
#include "../eng/handle.h"
|
#include "../eng/handle.h"
|
||||||
|
#include <include/inteng.h>
|
||||||
|
|
||||||
// #define NDEBUG
|
#define NDEBUG
|
||||||
#include <win32k/debug1.h>
|
#include <win32k/debug1.h>
|
||||||
|
|
||||||
int COLOR_gapStart = 256;
|
int COLOR_gapStart = 256;
|
||||||
|
@ -58,12 +61,16 @@ ULONG W32kGetSysColor(int nIndex)
|
||||||
|
|
||||||
HPEN STDCALL W32kGetSysColorPen(int nIndex)
|
HPEN STDCALL W32kGetSysColorPen(int nIndex)
|
||||||
{
|
{
|
||||||
return(W32kCreatePen(PS_SOLID, 1, COLOR_sysPalTemplate[nIndex]));
|
COLORREF Col;
|
||||||
|
memcpy(&Col, COLOR_sysPalTemplate + nIndex, sizeof(COLORREF));
|
||||||
|
return(W32kCreatePen(PS_SOLID, 1, Col));
|
||||||
}
|
}
|
||||||
|
|
||||||
HBRUSH STDCALL W32kGetSysColorBrush(int nIndex)
|
HBRUSH STDCALL W32kGetSysColorBrush(int nIndex)
|
||||||
{
|
{
|
||||||
return(W32kCreateSolidBrush(COLOR_sysPalTemplate[nIndex]));
|
COLORREF Col;
|
||||||
|
memcpy(&Col, COLOR_sysPalTemplate + nIndex, sizeof(COLORREF));
|
||||||
|
return(W32kCreateSolidBrush(Col));
|
||||||
}
|
}
|
||||||
|
|
||||||
//forward declarations
|
//forward declarations
|
||||||
|
@ -331,7 +338,7 @@ UINT STDCALL W32kRealizePalette(HDC hDC)
|
||||||
if(dc->w.flags != DC_MEMORY)
|
if(dc->w.flags != DC_MEMORY)
|
||||||
{
|
{
|
||||||
// Device managed DC
|
// Device managed DC
|
||||||
palPtr->logicalToSystem = EngCreateXlate(sysGDI->Mode, palGDI->Mode, systemPalette, dc->w.hPalette);
|
palPtr->logicalToSystem = IntEngCreateXlate(sysGDI->Mode, palGDI->Mode, systemPalette, dc->w.hPalette);
|
||||||
}
|
}
|
||||||
|
|
||||||
// GDI_ReleaseObj(dc->w.hPalette);
|
// GDI_ReleaseObj(dc->w.hPalette);
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* $Id: dc.c,v 1.49 2003/03/06 00:57:44 gvg Exp $
|
/* $Id: dc.c,v 1.50 2003/03/08 13:16:51 gvg Exp $
|
||||||
*
|
*
|
||||||
* DC.C - Device context functions
|
* DC.C - Device context functions
|
||||||
*
|
*
|
||||||
|
@ -19,6 +19,7 @@
|
||||||
#include <win32k/pen.h>
|
#include <win32k/pen.h>
|
||||||
#include <win32k/text.h>
|
#include <win32k/text.h>
|
||||||
#include "../eng/handle.h"
|
#include "../eng/handle.h"
|
||||||
|
#include <include/inteng.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <win32k/debug1.h>
|
#include <win32k/debug1.h>
|
||||||
|
@ -100,7 +101,6 @@ HDC STDCALL W32kCreateCompatableDC(HDC hDC)
|
||||||
{
|
{
|
||||||
PDC NewDC, OrigDC = NULL;
|
PDC NewDC, OrigDC = NULL;
|
||||||
HBITMAP hBitmap;
|
HBITMAP hBitmap;
|
||||||
SIZEL onebyone;
|
|
||||||
HDC hNewDC;
|
HDC hNewDC;
|
||||||
|
|
||||||
OrigDC = DC_HandleToPtr(hDC);
|
OrigDC = DC_HandleToPtr(hDC);
|
||||||
|
@ -137,11 +137,6 @@ HDC STDCALL W32kCreateCompatableDC(HDC hDC)
|
||||||
NewDC->DevInfo = OrigDC->DevInfo;
|
NewDC->DevInfo = OrigDC->DevInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a 1x1 monochrome bitmap surface
|
|
||||||
onebyone.cx = 1;
|
|
||||||
onebyone.cy = 1;
|
|
||||||
NewDC->Surface = EngCreateBitmap(onebyone, 1, BMF_1BPP, 0, NULL);
|
|
||||||
|
|
||||||
/* DriverName is copied in the AllocDC routine */
|
/* DriverName is copied in the AllocDC routine */
|
||||||
if(OrigDC == NULL) {
|
if(OrigDC == NULL) {
|
||||||
NewDC->DeviceDriver = DRIVER_FindMPDriver(NewDC->DriverName);
|
NewDC->DeviceDriver = DRIVER_FindMPDriver(NewDC->DriverName);
|
||||||
|
@ -160,7 +155,7 @@ HDC STDCALL W32kCreateCompatableDC(HDC hDC)
|
||||||
/* Create default bitmap */
|
/* Create default bitmap */
|
||||||
if (!(hBitmap = W32kCreateBitmap( 1, 1, 1, 1, NULL )))
|
if (!(hBitmap = W32kCreateBitmap( 1, 1, 1, 1, NULL )))
|
||||||
{
|
{
|
||||||
DC_ReleasePtr( hNewDC );
|
DC_ReleasePtr( hNewDC );
|
||||||
DC_FreeDC( hNewDC );
|
DC_FreeDC( hNewDC );
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -168,6 +163,7 @@ HDC STDCALL W32kCreateCompatableDC(HDC hDC)
|
||||||
NewDC->w.bitsPerPixel = 1;
|
NewDC->w.bitsPerPixel = 1;
|
||||||
NewDC->w.hBitmap = hBitmap;
|
NewDC->w.hBitmap = hBitmap;
|
||||||
NewDC->w.hFirstBitmap = hBitmap;
|
NewDC->w.hFirstBitmap = hBitmap;
|
||||||
|
NewDC->Surface = BitmapToSurf(BITMAPOBJ_HandleToPtr(hBitmap));
|
||||||
|
|
||||||
if(OrigDC != NULL)
|
if(OrigDC != NULL)
|
||||||
{
|
{
|
||||||
|
@ -355,8 +351,10 @@ BOOL STDCALL W32kCreatePrimarySurface(LPCWSTR Driver,
|
||||||
PrimarySurface.Handle =
|
PrimarySurface.Handle =
|
||||||
PrimarySurface.DriverFunctions.EnableSurface(PrimarySurface.PDev);
|
PrimarySurface.DriverFunctions.EnableSurface(PrimarySurface.PDev);
|
||||||
|
|
||||||
SurfObj = (PSURFOBJ)AccessUserObject(PrimarySurface.Handle);
|
SurfObj = (PSURFOBJ)AccessUserObject((ULONG) PrimarySurface.Handle);
|
||||||
SurfObj->dhpdev = PrimarySurface.PDev;
|
SurfObj->dhpdev = PrimarySurface.PDev;
|
||||||
|
|
||||||
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
HDC STDCALL W32kCreateDC(LPCWSTR Driver,
|
HDC STDCALL W32kCreateDC(LPCWSTR Driver,
|
||||||
|
@ -367,7 +365,6 @@ HDC STDCALL W32kCreateDC(LPCWSTR Driver,
|
||||||
HDC hNewDC;
|
HDC hNewDC;
|
||||||
PDC NewDC;
|
PDC NewDC;
|
||||||
HDC hDC = NULL;
|
HDC hDC = NULL;
|
||||||
PSURFOBJ SurfObj;
|
|
||||||
PSURFGDI SurfGDI;
|
PSURFGDI SurfGDI;
|
||||||
|
|
||||||
/* Check for existing DC object */
|
/* Check for existing DC object */
|
||||||
|
@ -413,7 +410,7 @@ HDC STDCALL W32kCreateDC(LPCWSTR Driver,
|
||||||
/* FIXME: get mode selection information from somewhere */
|
/* FIXME: get mode selection information from somewhere */
|
||||||
|
|
||||||
NewDC->DMW.dmLogPixels = 96;
|
NewDC->DMW.dmLogPixels = 96;
|
||||||
SurfGDI = (PSURFGDI)AccessInternalObject(PrimarySurface.Handle);
|
SurfGDI = (PSURFGDI)AccessInternalObject((ULONG) PrimarySurface.Handle);
|
||||||
NewDC->DMW.dmBitsPerPel = SurfGDI->BitsPerPixel;
|
NewDC->DMW.dmBitsPerPel = SurfGDI->BitsPerPixel;
|
||||||
NewDC->DMW.dmPelsWidth = SurfGDI->SurfObj.sizlBitmap.cx;
|
NewDC->DMW.dmPelsWidth = SurfGDI->SurfObj.sizlBitmap.cx;
|
||||||
NewDC->DMW.dmPelsHeight = SurfGDI->SurfObj.sizlBitmap.cy;
|
NewDC->DMW.dmPelsHeight = SurfGDI->SurfObj.sizlBitmap.cy;
|
||||||
|
@ -497,6 +494,7 @@ BOOL STDCALL W32kDeleteDC(HDC DCHandle)
|
||||||
W32kSelectObject (DCHandle, STOCK_WHITE_BRUSH);
|
W32kSelectObject (DCHandle, STOCK_WHITE_BRUSH);
|
||||||
W32kSelectObject (DCHandle, STOCK_SYSTEM_FONT);
|
W32kSelectObject (DCHandle, STOCK_SYSTEM_FONT);
|
||||||
DC_LockDC (DCHandle); W32kSelectObject does not recognize stock objects yet */
|
DC_LockDC (DCHandle); W32kSelectObject does not recognize stock objects yet */
|
||||||
|
BITMAPOBJ_ReleasePtr(DCToDelete->w.hBitmap);
|
||||||
if (DCToDelete->w.flags & DC_MEMORY)
|
if (DCToDelete->w.flags & DC_MEMORY)
|
||||||
{
|
{
|
||||||
W32kDeleteObject (DCToDelete->w.hFirstBitmap);
|
W32kDeleteObject (DCToDelete->w.hFirstBitmap);
|
||||||
|
@ -1021,8 +1019,6 @@ HGDIOBJ STDCALL W32kSelectObject(HDC hDC, HGDIOBJ hGDIObj)
|
||||||
{
|
{
|
||||||
HGDIOBJ objOrg;
|
HGDIOBJ objOrg;
|
||||||
BITMAPOBJ *pb;
|
BITMAPOBJ *pb;
|
||||||
PSURFOBJ surfobj;
|
|
||||||
PSURFGDI surfgdi;
|
|
||||||
PDC dc;
|
PDC dc;
|
||||||
PPENOBJ pen;
|
PPENOBJ pen;
|
||||||
PBRUSHOBJ brush;
|
PBRUSHOBJ brush;
|
||||||
|
@ -1046,9 +1042,9 @@ HGDIOBJ STDCALL W32kSelectObject(HDC hDC, HGDIOBJ hGDIObj)
|
||||||
dc->w.hPen = hGDIObj;
|
dc->w.hPen = hGDIObj;
|
||||||
|
|
||||||
// Convert the color of the pen to the format of the DC
|
// Convert the color of the pen to the format of the DC
|
||||||
PalGDI = (PPALGDI)AccessInternalObject(dc->w.hPalette);
|
PalGDI = (PPALGDI)AccessInternalObject((ULONG) dc->w.hPalette);
|
||||||
if( PalGDI ){
|
if( PalGDI ){
|
||||||
XlateObj = (PXLATEOBJ)EngCreateXlate(PalGDI->Mode, PAL_RGB, dc->w.hPalette, NULL);
|
XlateObj = (PXLATEOBJ)IntEngCreateXlate(PalGDI->Mode, PAL_RGB, dc->w.hPalette, NULL);
|
||||||
pen = GDIOBJ_LockObj(dc->w.hPen, GO_PEN_MAGIC);
|
pen = GDIOBJ_LockObj(dc->w.hPen, GO_PEN_MAGIC);
|
||||||
if( pen ){
|
if( pen ){
|
||||||
pen->logpen.lopnColor = XLATEOBJ_iXlate(XlateObj, pen->logpen.lopnColor);
|
pen->logpen.lopnColor = XLATEOBJ_iXlate(XlateObj, pen->logpen.lopnColor);
|
||||||
|
@ -1061,9 +1057,9 @@ HGDIOBJ STDCALL W32kSelectObject(HDC hDC, HGDIOBJ hGDIObj)
|
||||||
dc->w.hBrush = (HBRUSH) hGDIObj;
|
dc->w.hBrush = (HBRUSH) hGDIObj;
|
||||||
|
|
||||||
// Convert the color of the brush to the format of the DC
|
// Convert the color of the brush to the format of the DC
|
||||||
PalGDI = (PPALGDI)AccessInternalObject(dc->w.hPalette);
|
PalGDI = (PPALGDI)AccessInternalObject((ULONG) dc->w.hPalette);
|
||||||
if( PalGDI ){
|
if( PalGDI ){
|
||||||
XlateObj = (PXLATEOBJ)EngCreateXlate(PalGDI->Mode, PAL_RGB, dc->w.hPalette, NULL);
|
XlateObj = (PXLATEOBJ)IntEngCreateXlate(PalGDI->Mode, PAL_RGB, dc->w.hPalette, NULL);
|
||||||
brush = GDIOBJ_LockObj(dc->w.hBrush, GO_BRUSH_MAGIC);
|
brush = GDIOBJ_LockObj(dc->w.hBrush, GO_BRUSH_MAGIC);
|
||||||
if( brush ){
|
if( brush ){
|
||||||
brush->iSolidColor = XLATEOBJ_iXlate(XlateObj, brush->logbrush.lbColor);
|
brush->iSolidColor = XLATEOBJ_iXlate(XlateObj, brush->logbrush.lbColor);
|
||||||
|
@ -1080,10 +1076,11 @@ HGDIOBJ STDCALL W32kSelectObject(HDC hDC, HGDIOBJ hGDIObj)
|
||||||
if (!(dc->w.flags & DC_MEMORY)) return NULL;
|
if (!(dc->w.flags & DC_MEMORY)) return NULL;
|
||||||
objOrg = (HGDIOBJ)dc->w.hBitmap;
|
objOrg = (HGDIOBJ)dc->w.hBitmap;
|
||||||
|
|
||||||
// setup mem dc for drawing into bitmap
|
/* Release the old bitmap, lock the new one and convert it to a SURF */
|
||||||
pb = BITMAPOBJ_HandleToPtr (hGDIObj);
|
BITMAPOBJ_ReleasePtr(objOrg);
|
||||||
dc->w.hBitmap = BitmapToSurf(pb);
|
dc->w.hBitmap = hGDIObj;
|
||||||
dc->Surface = dc->w.hBitmap;
|
pb = BITMAPOBJ_HandleToPtr(hGDIObj);
|
||||||
|
dc->Surface = BitmapToSurf(pb);
|
||||||
|
|
||||||
// if we're working with a DIB, get the palette [fixme: only create if the selected palette is null]
|
// if we're working with a DIB, get the palette [fixme: only create if the selected palette is null]
|
||||||
if(pb->dib)
|
if(pb->dib)
|
||||||
|
@ -1103,7 +1100,7 @@ HGDIOBJ STDCALL W32kSelectObject(HDC hDC, HGDIOBJ hGDIObj)
|
||||||
pb->ColorMap[Index].rgbGreen,
|
pb->ColorMap[Index].rgbGreen,
|
||||||
pb->ColorMap[Index].rgbBlue);
|
pb->ColorMap[Index].rgbBlue);
|
||||||
}
|
}
|
||||||
dc->w.hPalette = EngCreatePalette(PAL_INDEXED, NumColors, ColorMap, 0, 0, 0);
|
dc->w.hPalette = EngCreatePalette(PAL_INDEXED, NumColors, (ULONG *) ColorMap, 0, 0, 0);
|
||||||
ExFreePool(ColorMap);
|
ExFreePool(ColorMap);
|
||||||
} else
|
} else
|
||||||
if(16 == pb->dib->dsBmih.biBitCount)
|
if(16 == pb->dib->dsBmih.biBitCount)
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
#include <win32k/debug.h>
|
#include <win32k/debug.h>
|
||||||
#include "../eng/handle.h"
|
#include "../eng/handle.h"
|
||||||
#include <ntos/minmax.h>
|
#include <ntos/minmax.h>
|
||||||
|
#include <include/inteng.h>
|
||||||
|
|
||||||
#define NDEBUG
|
#define NDEBUG
|
||||||
#include <win32k/debug1.h>
|
#include <win32k/debug1.h>
|
||||||
|
@ -132,7 +133,7 @@ INT STDCALL W32kSetDIBits(HDC hDC,
|
||||||
DIB_Palette = BuildDIBPalette(bmi, &DIB_Palette_Type);
|
DIB_Palette = BuildDIBPalette(bmi, &DIB_Palette_Type);
|
||||||
|
|
||||||
// Determine XLATEOBJ for color translation
|
// Determine XLATEOBJ for color translation
|
||||||
XlateObj = EngCreateXlate(DDB_Palette_Type, DIB_Palette_Type, DDB_Palette, DIB_Palette);
|
XlateObj = IntEngCreateXlate(DDB_Palette_Type, DIB_Palette_Type, DDB_Palette, DIB_Palette);
|
||||||
|
|
||||||
// Zero point
|
// Zero point
|
||||||
ZeroPoint.x = 0;
|
ZeroPoint.x = 0;
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#undef WIN32_LEAN_AND_MEAN
|
#undef WIN32_LEAN_AND_MEAN
|
||||||
#include <windows.h>
|
#include <windows.h>
|
||||||
#include <ddk/ntddk.h>
|
#include <ddk/ntddk.h>
|
||||||
|
#include <win32k/brush.h>
|
||||||
#include <win32k/dc.h>
|
#include <win32k/dc.h>
|
||||||
#include <win32k/text.h>
|
#include <win32k/text.h>
|
||||||
#include <win32k/kapi.h>
|
#include <win32k/kapi.h>
|
||||||
|
@ -12,7 +13,7 @@
|
||||||
|
|
||||||
#include <include/inteng.h>
|
#include <include/inteng.h>
|
||||||
|
|
||||||
// #define NDEBUG
|
#define NDEBUG
|
||||||
#include <win32k/debug1.h>
|
#include <win32k/debug1.h>
|
||||||
|
|
||||||
FT_Library library;
|
FT_Library library;
|
||||||
|
@ -654,7 +655,7 @@ W32kTextOut(HDC hDC,
|
||||||
|
|
||||||
// Create the brush
|
// Create the brush
|
||||||
PalDestGDI = (PPALGDI)AccessInternalObject(dc->w.hPalette);
|
PalDestGDI = (PPALGDI)AccessInternalObject(dc->w.hPalette);
|
||||||
XlateObj = (PXLATEOBJ)EngCreateXlate(PalDestGDI->Mode, PAL_RGB, dc->w.hPalette, NULL);
|
XlateObj = (PXLATEOBJ)IntEngCreateXlate(PalDestGDI->Mode, PAL_RGB, dc->w.hPalette, NULL);
|
||||||
hBrush = W32kCreateSolidBrush(XLATEOBJ_iXlate(XlateObj, dc->w.textColor));
|
hBrush = W32kCreateSolidBrush(XLATEOBJ_iXlate(XlateObj, dc->w.textColor));
|
||||||
Brush = BRUSHOBJ_LockBrush(hBrush);
|
Brush = BRUSHOBJ_LockBrush(hBrush);
|
||||||
EngDeleteXlate(XlateObj);
|
EngDeleteXlate(XlateObj);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue