Sweden-Number/graphics/ttydrv/objects.c

94 lines
2.4 KiB
C

/*
* TTY DC objects
*
* Copyright 1999 Patrik Stridvall
*/
#include "bitmap.h"
#include "brush.h"
#include "dc.h"
#include "font.h"
#include "gdi.h"
#include "pen.h"
#include "ttydrv.h"
#include "debugtools.h"
DEFAULT_DEBUG_CHANNEL(ttydrv)
/**********************************************************************/
extern HBITMAP TTYDRV_DC_BITMAP_SelectObject(DC *dc, HBITMAP hbitmap, BITMAPOBJ *bitmap);
extern HBRUSH TTYDRV_DC_BRUSH_SelectObject(DC *dc, HBRUSH hbrush, BRUSHOBJ *brush);
extern HFONT TTYDRV_DC_FONT_SelectObject(DC* dc, HFONT hfont, FONTOBJ *font);
extern HPEN TTYDRV_DC_PEN_SelectObject(DC *dc, HBRUSH hpen, PENOBJ *pen);
extern BOOL TTYDRV_DC_BITMAP_DeleteObject(HBITMAP hbitmap, BITMAPOBJ *bitmap);
/***********************************************************************
* TTYDRV_DC_SelectObject
*/
HGDIOBJ TTYDRV_DC_SelectObject(DC *dc, HGDIOBJ handle)
{
GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
HGDIOBJ result = 0;
if(!ptr) return 0;
switch(ptr->wMagic)
{
case BITMAP_MAGIC:
result = TTYDRV_DC_BITMAP_SelectObject(dc, handle, (BITMAPOBJ *) ptr);
break;
case BRUSH_MAGIC:
result = TTYDRV_DC_BRUSH_SelectObject(dc, handle, (BRUSHOBJ *) ptr);
break;
case FONT_MAGIC:
result = TTYDRV_DC_FONT_SelectObject(dc, handle, (FONTOBJ *) ptr);
break;
case PEN_MAGIC:
result = TTYDRV_DC_PEN_SelectObject(dc, handle, (PENOBJ *) ptr);
break;
case REGION_MAGIC:
/* FIXME: Shouldn't be handled here */
result = (HGDIOBJ) SelectClipRgn(dc->hSelf, handle);
break;
default:
ERR("handle (0x%04x) has unknown magic (0x%04x)\n", handle, ptr->wMagic);
}
GDI_HEAP_UNLOCK(handle);
return result;
}
/***********************************************************************
* TTYDRV_DC_DeleteObject
*/
BOOL TTYDRV_DC_DeleteObject(HGDIOBJ handle)
{
GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
BOOL result;
if(!ptr) return FALSE;
switch(ptr->wMagic)
{
case BITMAP_MAGIC:
result = TTYDRV_DC_BITMAP_DeleteObject(handle, (BITMAPOBJ *) ptr);
break;
case BRUSH_MAGIC:
case FONT_MAGIC:
case PEN_MAGIC:
case REGION_MAGIC:
result = TRUE;
break;
default:
ERR("handle (0x%04x) has unknown magic (0x%04x)\n", handle, ptr->wMagic);
result = FALSE;
}
GDI_HEAP_UNLOCK(handle);
return result;
}