blob: efff629ff67fa0f86e6bc918cbcda4e6db795569 [file] [log] [blame]
Patrik Stridvall4d715fd1999-11-23 23:43:29 +00001/*
2 * TTY DC objects
3 *
4 * Copyright 1999 Patrik Stridvall
5 */
6
7#include "bitmap.h"
8#include "brush.h"
9#include "dc.h"
10#include "font.h"
11#include "gdi.h"
12#include "pen.h"
13#include "ttydrv.h"
14#include "debugtools.h"
15
16DEFAULT_DEBUG_CHANNEL(ttydrv)
17
18/**********************************************************************/
19
20extern HBITMAP TTYDRV_DC_BITMAP_SelectObject(DC *dc, HBITMAP hbitmap, BITMAPOBJ *bitmap);
21extern HBRUSH TTYDRV_DC_BRUSH_SelectObject(DC *dc, HBRUSH hbrush, BRUSHOBJ *brush);
22extern HFONT TTYDRV_DC_FONT_SelectObject(DC* dc, HFONT hfont, FONTOBJ *font);
23extern HPEN TTYDRV_DC_PEN_SelectObject(DC *dc, HBRUSH hpen, PENOBJ *pen);
24
25extern BOOL TTYDRV_DC_BITMAP_DeleteObject(HBITMAP hbitmap, BITMAPOBJ *bitmap);
26
27/***********************************************************************
28 * TTYDRV_DC_SelectObject
29 */
30HGDIOBJ TTYDRV_DC_SelectObject(DC *dc, HGDIOBJ handle)
31{
32 GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
Andreas Mohr7fb732e1999-12-12 00:47:51 +000033 HGDIOBJ result = 0;
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000034
Andreas Mohr7fb732e1999-12-12 00:47:51 +000035 if(!ptr) return 0;
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000036
37 switch(ptr->wMagic)
38 {
39 case BITMAP_MAGIC:
40 result = TTYDRV_DC_BITMAP_SelectObject(dc, handle, (BITMAPOBJ *) ptr);
41 break;
42 case BRUSH_MAGIC:
43 result = TTYDRV_DC_BRUSH_SelectObject(dc, handle, (BRUSHOBJ *) ptr);
44 break;
45 case FONT_MAGIC:
46 result = TTYDRV_DC_FONT_SelectObject(dc, handle, (FONTOBJ *) ptr);
47 break;
48 case PEN_MAGIC:
49 result = TTYDRV_DC_PEN_SelectObject(dc, handle, (PENOBJ *) ptr);
50 break;
51 case REGION_MAGIC:
52 /* FIXME: Shouldn't be handled here */
53 result = (HGDIOBJ) SelectClipRgn(dc->hSelf, handle);
54 break;
55 default:
Patrik Stridvallcf844341999-12-11 23:08:48 +000056 ERR("handle (0x%04x) has unknown magic (0x%04x)\n", handle, ptr->wMagic);
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000057 }
58
59 GDI_HEAP_UNLOCK(handle);
60
61 return result;
62}
63
64/***********************************************************************
65 * TTYDRV_DC_DeleteObject
66 */
67BOOL TTYDRV_DC_DeleteObject(HGDIOBJ handle)
68{
69 GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
70 BOOL result;
71
72 if(!ptr) return FALSE;
73
74 switch(ptr->wMagic)
75 {
76 case BITMAP_MAGIC:
77 result = TTYDRV_DC_BITMAP_DeleteObject(handle, (BITMAPOBJ *) ptr);
78 break;
79 case BRUSH_MAGIC:
80 case FONT_MAGIC:
81 case PEN_MAGIC:
82 case REGION_MAGIC:
83 result = TRUE;
84 break;
85 default:
Patrik Stridvallcf844341999-12-11 23:08:48 +000086 ERR("handle (0x%04x) has unknown magic (0x%04x)\n", handle, ptr->wMagic);
Patrik Stridvall4d715fd1999-11-23 23:43:29 +000087 result = FALSE;
88 }
89
90 GDI_HEAP_UNLOCK(handle);
91
92 return result;
93}