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