Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 1 | /* |
| 2 | * GDI objects |
| 3 | * |
| 4 | * Copyright 1993 Alexandre Julliard |
| 5 | */ |
| 6 | |
| 7 | #include <stdlib.h> |
| 8 | #include <stdio.h> |
| 9 | #include "bitmap.h" |
| 10 | #include "brush.h" |
| 11 | #include "font.h" |
| 12 | #include "pen.h" |
Alexandre Julliard | 61fece0 | 1999-06-26 19:09:08 +0000 | [diff] [blame] | 13 | #include "debugtools.h" |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 14 | |
Patrik Stridvall | b4b9fae | 1999-04-19 14:56:29 +0000 | [diff] [blame] | 15 | DEFAULT_DEBUG_CHANNEL(gdi) |
| 16 | |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 17 | |
Alexandre Julliard | a396029 | 1999-02-26 11:11:13 +0000 | [diff] [blame] | 18 | extern HBITMAP WIN16DRV_BITMAP_SelectObject( DC * dc, HBITMAP hbitmap, |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 19 | BITMAPOBJ * bmp ); |
Alexandre Julliard | a396029 | 1999-02-26 11:11:13 +0000 | [diff] [blame] | 20 | extern HBRUSH WIN16DRV_BRUSH_SelectObject( DC * dc, HBRUSH hbrush, |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 21 | BRUSHOBJ * brush ); |
Alexandre Julliard | a396029 | 1999-02-26 11:11:13 +0000 | [diff] [blame] | 22 | extern HFONT WIN16DRV_FONT_SelectObject( DC * dc, HFONT hfont, |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 23 | FONTOBJ * font ); |
Alexandre Julliard | a396029 | 1999-02-26 11:11:13 +0000 | [diff] [blame] | 24 | extern HPEN WIN16DRV_PEN_SelectObject( DC * dc, HPEN hpen, PENOBJ * pen ); |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 25 | |
| 26 | |
| 27 | /*********************************************************************** |
Alexandre Julliard | 670cdc4 | 1997-08-24 16:00:30 +0000 | [diff] [blame] | 28 | * WIN16DRV_SelectObject |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 29 | */ |
Alexandre Julliard | a396029 | 1999-02-26 11:11:13 +0000 | [diff] [blame] | 30 | HGDIOBJ WIN16DRV_SelectObject( DC *dc, HGDIOBJ handle ) |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 31 | { |
| 32 | GDIOBJHDR *ptr = GDI_GetObjPtr( handle, MAGIC_DONTCARE ); |
Alexandre Julliard | a396029 | 1999-02-26 11:11:13 +0000 | [diff] [blame] | 33 | HGDIOBJ ret = 0; |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 34 | |
| 35 | if (!ptr) return 0; |
Alexandre Julliard | 61fece0 | 1999-06-26 19:09:08 +0000 | [diff] [blame] | 36 | TRACE("hdc=%04x %04x\n", dc->hSelf, handle ); |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 37 | |
| 38 | switch(ptr->wMagic) |
| 39 | { |
| 40 | case PEN_MAGIC: |
Alexandre Julliard | 17216f5 | 1997-10-12 16:30:17 +0000 | [diff] [blame] | 41 | ret = WIN16DRV_PEN_SelectObject( dc, handle, (PENOBJ *)ptr ); |
| 42 | break; |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 43 | case BRUSH_MAGIC: |
Alexandre Julliard | 17216f5 | 1997-10-12 16:30:17 +0000 | [diff] [blame] | 44 | ret = WIN16DRV_BRUSH_SelectObject( dc, handle, (BRUSHOBJ *)ptr ); |
| 45 | break; |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 46 | case BITMAP_MAGIC: |
Alexandre Julliard | 61fece0 | 1999-06-26 19:09:08 +0000 | [diff] [blame] | 47 | FIXME("WIN16DRV_SelectObject for BITMAP not implemented\n"); |
Alexandre Julliard | 17216f5 | 1997-10-12 16:30:17 +0000 | [diff] [blame] | 48 | ret = 1; |
| 49 | break; |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 50 | case FONT_MAGIC: |
Alexandre Julliard | 670cdc4 | 1997-08-24 16:00:30 +0000 | [diff] [blame] | 51 | ret = WIN16DRV_FONT_SelectObject( dc, handle, (FONTOBJ *)ptr ); |
| 52 | break; |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 53 | case REGION_MAGIC: |
Alexandre Julliard | 670cdc4 | 1997-08-24 16:00:30 +0000 | [diff] [blame] | 54 | ret = (HGDIOBJ16)SelectClipRgn16( dc->hSelf, handle ); |
| 55 | break; |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 56 | } |
Alexandre Julliard | 2a2321b | 2000-08-19 21:38:55 +0000 | [diff] [blame^] | 57 | GDI_ReleaseObj( handle ); |
Alexandre Julliard | 670cdc4 | 1997-08-24 16:00:30 +0000 | [diff] [blame] | 58 | return ret; |
Alexandre Julliard | 2197901 | 1997-03-05 08:22:35 +0000 | [diff] [blame] | 59 | } |