For global classes, GetClassInfo now returns a handle to USER.
[wine] / dlls / ttydrv / objects.c
1 /*
2  * TTY DC objects
3  *
4  * Copyright 1999 Patrik Stridvall
5  */
6
7 #include "bitmap.h"
8 #include "gdi.h"
9 #include "ttydrv.h"
10 #include "debugtools.h"
11
12 DEFAULT_DEBUG_CHANNEL(ttydrv);
13
14 /**********************************************************************/
15
16 extern HBITMAP TTYDRV_DC_BITMAP_SelectObject(DC *dc, HBITMAP hbitmap, BITMAPOBJ *bitmap);
17 extern BOOL TTYDRV_DC_BITMAP_DeleteObject(HBITMAP hbitmap, BITMAPOBJ *bitmap);
18
19
20 /***********************************************************************
21  *              TTYDRV_DC_BRUSH_SelectObject
22  */
23 static HBRUSH TTYDRV_DC_BRUSH_SelectObject(DC *dc, HBRUSH hbrush)
24 {
25   HBRUSH hPreviousBrush;
26
27   TRACE("(%p, 0x%04x)\n", dc, hbrush);
28
29   hPreviousBrush = dc->hBrush;
30   dc->hBrush = hbrush;
31
32   return hPreviousBrush;
33 }
34
35 /***********************************************************************
36  *              TTYDRV_DC_FONT_SelectObject
37  */
38 static HFONT TTYDRV_DC_FONT_SelectObject(DC* dc, HFONT hfont)
39 {
40   TRACE("(%p, 0x%04x)\n", dc, hfont);
41
42   return TRUE; /* Use device font */
43 }
44
45 /***********************************************************************
46  *              TTYDRV_DC_PEN_SelectObject
47  */
48 static HPEN TTYDRV_DC_PEN_SelectObject(DC *dc, HBRUSH hpen)
49 {
50   HPEN hPreviousPen;
51
52   TRACE("(%p, 0x%04x)\n", dc, hpen);
53
54   hPreviousPen = dc->hPen;
55   dc->hPen = hpen;
56
57   return hPreviousPen;
58 }
59
60 /***********************************************************************
61  *              TTYDRV_DC_SelectObject
62  */
63 HGDIOBJ TTYDRV_DC_SelectObject(DC *dc, HGDIOBJ handle)
64 {
65   GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
66   HGDIOBJ result = 0;
67
68   if(!ptr) return 0;
69
70   switch(GDIMAGIC(ptr->wMagic))
71   {
72     case BITMAP_MAGIC:
73       result = TTYDRV_DC_BITMAP_SelectObject(dc, handle, (BITMAPOBJ *) ptr);
74       break;
75     case BRUSH_MAGIC:
76       result = TTYDRV_DC_BRUSH_SelectObject(dc, handle);
77       break;
78     case FONT_MAGIC:
79       result = TTYDRV_DC_FONT_SelectObject(dc, handle);
80       break;
81     case PEN_MAGIC:
82       result = TTYDRV_DC_PEN_SelectObject(dc, handle);
83       break;
84     case REGION_MAGIC:
85       /* FIXME: Shouldn't be handled here */
86       result = (HGDIOBJ) SelectClipRgn(dc->hSelf, handle);
87       break;
88     default:
89       ERR("handle (0x%04x) has unknown magic (0x%04x)\n",
90                                                 handle, GDIMAGIC(ptr->wMagic));
91   }
92
93   GDI_ReleaseObj(handle);
94     
95   return result;
96 }
97
98 /***********************************************************************
99  *           TTYDRV_DC_DeleteObject
100  */
101 BOOL TTYDRV_DC_DeleteObject(HGDIOBJ handle)
102 {
103   GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
104   BOOL result;
105   
106   if(!ptr) return FALSE;
107      
108   switch(GDIMAGIC(ptr->wMagic))
109   {
110     case BITMAP_MAGIC:
111       result = TTYDRV_DC_BITMAP_DeleteObject(handle, (BITMAPOBJ *) ptr);
112       break;
113     case BRUSH_MAGIC:
114     case FONT_MAGIC:
115     case PEN_MAGIC:
116     case REGION_MAGIC:
117       result = TRUE;
118       break;
119     default:
120       ERR("handle (0x%04x) has unknown magic (0x%04x)\n",
121                                                 handle, GDIMAGIC(ptr->wMagic));   
122       result = FALSE;
123   }
124
125   GDI_ReleaseObj(handle);
126
127   return result;
128 }