Added mappings for a few messages.
[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   HFONT hPreviousFont;
41
42   TRACE("(%p, 0x%04x)\n", dc, hfont);
43
44   hPreviousFont = dc->hFont;
45   dc->hFont = hfont;
46
47   return hPreviousFont;
48 }
49
50 /***********************************************************************
51  *              TTYDRV_DC_PEN_SelectObject
52  */
53 static HPEN TTYDRV_DC_PEN_SelectObject(DC *dc, HBRUSH hpen)
54 {
55   HPEN hPreviousPen;
56
57   TRACE("(%p, 0x%04x)\n", dc, hpen);
58
59   hPreviousPen = dc->hPen;
60   dc->hPen = hpen;
61
62   return hPreviousPen;
63 }
64
65 /***********************************************************************
66  *              TTYDRV_DC_SelectObject
67  */
68 HGDIOBJ TTYDRV_DC_SelectObject(DC *dc, HGDIOBJ handle)
69 {
70   GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
71   HGDIOBJ result = 0;
72
73   if(!ptr) return 0;
74
75   switch(GDIMAGIC(ptr->wMagic))
76   {
77     case BITMAP_MAGIC:
78       result = TTYDRV_DC_BITMAP_SelectObject(dc, handle, (BITMAPOBJ *) ptr);
79       break;
80     case BRUSH_MAGIC:
81       result = TTYDRV_DC_BRUSH_SelectObject(dc, handle);
82       break;
83     case FONT_MAGIC:
84       result = TTYDRV_DC_FONT_SelectObject(dc, handle);
85       break;
86     case PEN_MAGIC:
87       result = TTYDRV_DC_PEN_SelectObject(dc, handle);
88       break;
89     case REGION_MAGIC:
90       /* FIXME: Shouldn't be handled here */
91       result = (HGDIOBJ) SelectClipRgn(dc->hSelf, handle);
92       break;
93     default:
94       ERR("handle (0x%04x) has unknown magic (0x%04x)\n",
95                                                 handle, GDIMAGIC(ptr->wMagic));
96   }
97
98   GDI_ReleaseObj(handle);
99     
100   return result;
101 }
102
103 /***********************************************************************
104  *           TTYDRV_DC_DeleteObject
105  */
106 BOOL TTYDRV_DC_DeleteObject(HGDIOBJ handle)
107 {
108   GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
109   BOOL result;
110   
111   if(!ptr) return FALSE;
112      
113   switch(GDIMAGIC(ptr->wMagic))
114   {
115     case BITMAP_MAGIC:
116       result = TTYDRV_DC_BITMAP_DeleteObject(handle, (BITMAPOBJ *) ptr);
117       break;
118     case BRUSH_MAGIC:
119     case FONT_MAGIC:
120     case PEN_MAGIC:
121     case REGION_MAGIC:
122       result = TRUE;
123       break;
124     default:
125       ERR("handle (0x%04x) has unknown magic (0x%04x)\n",
126                                                 handle, GDIMAGIC(ptr->wMagic));   
127       result = FALSE;
128   }
129
130   GDI_ReleaseObj(handle);
131
132   return result;
133 }