Authors: Alexandre Julliard <julliard@codeweavers.com> (for Corel), Albert den Haan...
[wine/gsoc_dplay.git] / dlls / ttydrv / objects.c
blob0719ed7f3a93352bbcc3c3cb9071f926f010c5f8
1 /*
2 * TTY DC objects
4 * Copyright 1999 Patrik Stridvall
5 */
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"
16 DEFAULT_DEBUG_CHANNEL(ttydrv);
18 /**********************************************************************/
20 extern HBITMAP TTYDRV_DC_BITMAP_SelectObject(DC *dc, HBITMAP hbitmap, BITMAPOBJ *bitmap);
21 extern BOOL TTYDRV_DC_BITMAP_DeleteObject(HBITMAP hbitmap, BITMAPOBJ *bitmap);
24 /***********************************************************************
25 * TTYDRV_DC_BRUSH_SelectObject
27 static HBRUSH TTYDRV_DC_BRUSH_SelectObject(DC *dc, HBRUSH hbrush, BRUSHOBJ *brush)
29 HBRUSH hPreviousBrush;
31 TRACE("(%p, 0x%04x, %p)\n", dc, hbrush, brush);
33 hPreviousBrush = dc->w.hBrush;
34 dc->w.hBrush = hbrush;
36 return hPreviousBrush;
39 /***********************************************************************
40 * TTYDRV_DC_FONT_SelectObject
42 static HFONT TTYDRV_DC_FONT_SelectObject(DC* dc, HFONT hfont, FONTOBJ *font)
44 HFONT hPreviousFont;
46 TRACE("(%p, 0x%04x, %p)\n", dc, hfont, font);
48 hPreviousFont = dc->w.hFont;
49 dc->w.hFont = hfont;
51 return hPreviousFont;
54 /***********************************************************************
55 * TTYDRV_DC_PEN_SelectObject
57 static HPEN TTYDRV_DC_PEN_SelectObject(DC *dc, HBRUSH hpen, PENOBJ *pen)
59 HPEN hPreviousPen;
61 TRACE("(%p, 0x%04x, %p)\n", dc, hpen, pen);
63 hPreviousPen = dc->w.hPen;
64 dc->w.hPen = hpen;
66 return hPreviousPen;
69 /***********************************************************************
70 * TTYDRV_DC_SelectObject
72 HGDIOBJ TTYDRV_DC_SelectObject(DC *dc, HGDIOBJ handle)
74 GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
75 HGDIOBJ result = 0;
77 if(!ptr) return 0;
79 switch(ptr->wMagic)
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", handle, ptr->wMagic);
101 GDI_ReleaseObj(handle);
103 return result;
106 /***********************************************************************
107 * TTYDRV_DC_DeleteObject
109 BOOL TTYDRV_DC_DeleteObject(HGDIOBJ handle)
111 GDIOBJHDR *ptr = GDI_GetObjPtr(handle, MAGIC_DONTCARE);
112 BOOL result;
114 if(!ptr) return FALSE;
116 switch(ptr->wMagic)
118 case BITMAP_MAGIC:
119 result = TTYDRV_DC_BITMAP_DeleteObject(handle, (BITMAPOBJ *) ptr);
120 break;
121 case BRUSH_MAGIC:
122 case FONT_MAGIC:
123 case PEN_MAGIC:
124 case REGION_MAGIC:
125 result = TRUE;
126 break;
127 default:
128 ERR("handle (0x%04x) has unknown magic (0x%04x)\n", handle, ptr->wMagic);
129 result = FALSE;
132 GDI_ReleaseObj(handle);
134 return result;