Removed a few dependencies on kernel32 functions.
[wine] / dlls / ttydrv / objects.c
1 /*
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
16 DEFAULT_DEBUG_CHANNEL(ttydrv);
17
18 /**********************************************************************/
19
20 extern HBITMAP TTYDRV_DC_BITMAP_SelectObject(DC *dc, HBITMAP hbitmap, BITMAPOBJ *bitmap);
21 extern BOOL TTYDRV_DC_BITMAP_DeleteObject(HBITMAP hbitmap, BITMAPOBJ *bitmap);
22
23
24 /***********************************************************************
25  *              TTYDRV_DC_BRUSH_SelectObject
26  */
27 static HBRUSH TTYDRV_DC_BRUSH_SelectObject(DC *dc, HBRUSH hbrush, BRUSHOBJ *brush)
28 {
29   HBRUSH hPreviousBrush;
30
31   TRACE("(%p, 0x%04x, %p)\n", dc, hbrush, brush);
32
33   hPreviousBrush = dc->w.hBrush;
34   dc->w.hBrush = hbrush;
35
36   return hPreviousBrush;
37 }
38
39 /***********************************************************************
40  *              TTYDRV_DC_FONT_SelectObject
41  */
42 static HFONT TTYDRV_DC_FONT_SelectObject(DC* dc, HFONT hfont, FONTOBJ *font)
43 {
44   HFONT hPreviousFont;
45
46   TRACE("(%p, 0x%04x, %p)\n", dc, hfont, font);
47
48   hPreviousFont = dc->w.hFont;
49   dc->w.hFont = hfont;
50
51   return hPreviousFont;
52 }
53
54 /***********************************************************************
55  *              TTYDRV_DC_PEN_SelectObject
56  */
57 static HPEN TTYDRV_DC_PEN_SelectObject(DC *dc, HBRUSH hpen, PENOBJ *pen)
58 {
59   HPEN hPreviousPen;
60
61   TRACE("(%p, 0x%04x, %p)\n", dc, hpen, pen);
62
63   hPreviousPen = dc->w.hPen;
64   dc->w.hPen = hpen;
65
66   return hPreviousPen;
67 }
68
69 /***********************************************************************
70  *              TTYDRV_DC_SelectObject
71  */
72 HGDIOBJ TTYDRV_DC_SelectObject(DC *dc, HGDIOBJ handle)
73 {
74   GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
75   HGDIOBJ result = 0;
76
77   if(!ptr) return 0;
78
79   switch(GDIMAGIC(ptr->wMagic))
80   {
81     case BITMAP_MAGIC:
82       result = TTYDRV_DC_BITMAP_SelectObject(dc, handle, (BITMAPOBJ *) ptr);
83       break;
84     case BRUSH_MAGIC:
85       result = TTYDRV_DC_BRUSH_SelectObject(dc, handle, (BRUSHOBJ *) ptr);
86       break;
87     case FONT_MAGIC:
88       result = TTYDRV_DC_FONT_SelectObject(dc, handle, (FONTOBJ *) ptr);          
89       break;
90     case PEN_MAGIC:
91       result = TTYDRV_DC_PEN_SelectObject(dc, handle, (PENOBJ *) ptr);
92       break;
93     case REGION_MAGIC:
94       /* FIXME: Shouldn't be handled here */
95       result = (HGDIOBJ) SelectClipRgn(dc->hSelf, handle);
96       break;
97     default:
98       ERR("handle (0x%04x) has unknown magic (0x%04x)\n",
99                                                 handle, GDIMAGIC(ptr->wMagic));
100   }
101
102   GDI_ReleaseObj(handle);
103     
104   return result;
105 }
106
107 /***********************************************************************
108  *           TTYDRV_DC_DeleteObject
109  */
110 BOOL TTYDRV_DC_DeleteObject(HGDIOBJ handle)
111 {
112   GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
113   BOOL result;
114   
115   if(!ptr) return FALSE;
116      
117   switch(GDIMAGIC(ptr->wMagic))
118   {
119     case BITMAP_MAGIC:
120       result = TTYDRV_DC_BITMAP_DeleteObject(handle, (BITMAPOBJ *) ptr);
121       break;
122     case BRUSH_MAGIC:
123     case FONT_MAGIC:
124     case PEN_MAGIC:
125     case REGION_MAGIC:
126       result = TRUE;
127       break;
128     default:
129       ERR("handle (0x%04x) has unknown magic (0x%04x)\n",
130                                                 handle, GDIMAGIC(ptr->wMagic));   
131       result = FALSE;
132   }
133
134   GDI_ReleaseObj(handle);
135
136   return result;
137 }