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