Explicitly store the stack of saved DCs in the DC structure instead of
[wine] / include / gdi.h
1 /*
2  * GDI definitions
3  *
4  * Copyright 1993 Alexandre Julliard
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #ifndef __WINE_GDI_H
22 #define __WINE_GDI_H
23
24 #include <stdarg.h>
25 #include <windef.h>
26 #include <winbase.h>
27 #include <wingdi.h>
28 #include <wine/wingdi16.h>
29 #include <math.h>
30
31   /* GDI objects magic numbers */
32 #define FIRST_MAGIC           0x4f47
33 #define PEN_MAGIC             0x4f47
34 #define BRUSH_MAGIC           0x4f48
35 #define FONT_MAGIC            0x4f49
36 #define PALETTE_MAGIC         0x4f4a
37 #define BITMAP_MAGIC          0x4f4b
38 #define REGION_MAGIC          0x4f4c
39 #define DC_MAGIC              0x4f4d
40 #define DISABLED_DC_MAGIC     0x4f4e
41 #define META_DC_MAGIC         0x4f4f
42 #define METAFILE_MAGIC        0x4f50
43 #define METAFILE_DC_MAGIC     0x4f51
44 #define ENHMETAFILE_MAGIC     0x4f52
45 #define ENHMETAFILE_DC_MAGIC  0x4f53
46 #define MEMORY_DC_MAGIC       0x4f54
47 #define LAST_MAGIC            0x4f54
48
49 #define MAGIC_DONTCARE        0xffff
50
51 /* GDI constants for making objects private/system (naming undoc. !) */
52 #define OBJECT_PRIVATE        0x2000
53 #define OBJECT_NOSYSTEM       0x8000
54
55 #define GDIMAGIC(magic) ((magic) & ~(OBJECT_PRIVATE|OBJECT_NOSYSTEM))
56
57 struct gdi_obj_funcs;
58 struct hdc_list;
59
60 typedef struct tagGDIOBJHDR
61 {
62     WORD        wMagic;
63     DWORD       dwCount;
64     const struct gdi_obj_funcs *funcs;
65     struct hdc_list *hdcs;
66 } GDIOBJHDR;
67
68 /* extra stock object: default 1x1 bitmap for memory DCs */
69 #define DEFAULT_BITMAP (STOCK_LAST+1)
70
71 /* bitmap object */
72
73 typedef struct tagBITMAPOBJ
74 {
75     GDIOBJHDR   header;
76     BITMAP      bitmap;
77     SIZE        size;   /* For SetBitmapDimension() */
78     const struct tagDC_FUNCS *funcs; /* DC function table */
79     void        *physBitmap; /* ptr to device specific data */
80     /* For device-independent bitmaps: */
81     DIBSECTION *dib;
82     SEGPTR      segptr_bits;  /* segptr to DIB bits */
83 } BITMAPOBJ;
84
85 /* palette object */
86
87 #define NB_RESERVED_COLORS     20   /* number of fixed colors in system palette */
88
89 #define PC_SYS_USED            0x80 /* palentry is used (both system and logical) */
90 #define PC_SYS_RESERVED        0x40 /* system palentry is not to be mapped to */
91
92 typedef struct tagPALETTEOBJ
93 {
94     GDIOBJHDR                    header;
95     int                          *mapping;
96     LOGPALETTE                   logpalette; /* _MUST_ be the last field */
97 } PALETTEOBJ;
98
99   /* GDI local heap */
100
101 extern void *GDI_GetObjPtr( HGDIOBJ, WORD );
102 extern void GDI_ReleaseObj( HGDIOBJ );
103
104 #define WINE_GGO_GRAY16_BITMAP 0x7f
105
106 #endif  /* __WINE_GDI_H */