blob: 190ddd1a22a587d7e23d1ff140ddcedcb18e9bdc [file] [log] [blame]
Alexandre Julliard401710d1993-09-04 10:09:32 +00001/*
2 * GDI definitions
3 *
4 * Copyright 1993 Alexandre Julliard
Alexandre Julliard0799c1a2002-03-09 23:29:33 +00005 *
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
Jonathan Ernst360a3f92006-05-18 14:49:52 +020018 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
Alexandre Julliard401710d1993-09-04 10:09:32 +000019 */
20
Alexandre Julliardc6c09441997-01-12 18:32:19 +000021#ifndef __WINE_GDI_H
22#define __WINE_GDI_H
Alexandre Julliard401710d1993-09-04 10:09:32 +000023
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000024#include <stdarg.h>
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +000025#include <windef.h>
Alexandre Julliarde37c6e12003-09-05 23:08:26 +000026#include <winbase.h>
Dimitrie O. Paun53f9c212003-08-28 21:43:34 +000027#include <wingdi.h>
28#include <wine/wingdi16.h>
Alexandre Julliarddadf78f1998-05-17 17:13:43 +000029#include <math.h>
Alexandre Julliard401710d1993-09-04 10:09:32 +000030
31 /* GDI objects magic numbers */
Andreas Mohr007fb242000-09-16 20:53:51 +000032#define FIRST_MAGIC 0x4f47
Alexandre Julliard401710d1993-09-04 10:09:32 +000033#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
Huw D M Davies7603dea1999-04-25 09:24:23 +000044#define ENHMETAFILE_MAGIC 0x4f52
45#define ENHMETAFILE_DC_MAGIC 0x4f53
Alexandre Julliarde1147ba2003-05-13 23:56:12 +000046#define MEMORY_DC_MAGIC 0x4f54
Dmitry Timoshkoveb893bd2006-01-30 18:17:07 +010047#define EXT_PEN_MAGIC 0x4f55
48#define LAST_MAGIC 0x4f55
Huw D M Davies7603dea1999-04-25 09:24:23 +000049
Alexandre Julliard0c126c71996-02-18 18:44:41 +000050#define MAGIC_DONTCARE 0xffff
Alexandre Julliard401710d1993-09-04 10:09:32 +000051
Andreas Mohr007fb242000-09-16 20:53:51 +000052/* GDI constants for making objects private/system (naming undoc. !) */
53#define OBJECT_PRIVATE 0x2000
54#define OBJECT_NOSYSTEM 0x8000
55
56#define GDIMAGIC(magic) ((magic) & ~(OBJECT_PRIVATE|OBJECT_NOSYSTEM))
57
Alexandre Julliard6ec42c02004-01-15 00:35:38 +000058struct gdi_obj_funcs;
59struct hdc_list;
Huw Davies9e8ce632003-11-25 05:03:09 +000060
Alexandre Julliard401710d1993-09-04 10:09:32 +000061typedef struct tagGDIOBJHDR
62{
Alexandre Julliard401710d1993-09-04 10:09:32 +000063 WORD wMagic;
64 DWORD dwCount;
Alexandre Julliardd8a92442002-05-31 18:43:22 +000065 const struct gdi_obj_funcs *funcs;
Huw Davies9e8ce632003-11-25 05:03:09 +000066 struct hdc_list *hdcs;
Alexandre Julliard401710d1993-09-04 10:09:32 +000067} GDIOBJHDR;
68
Alexandre Julliard05df86a2004-03-04 20:41:12 +000069/* palette object */
70
71#define NB_RESERVED_COLORS 20 /* number of fixed colors in system palette */
72
73#define PC_SYS_USED 0x80 /* palentry is used (both system and logical) */
74#define PC_SYS_RESERVED 0x40 /* system palentry is not to be mapped to */
Alexandre Julliard05df86a2004-03-04 20:41:12 +000075
76typedef struct tagPALETTEOBJ
77{
78 GDIOBJHDR header;
79 int *mapping;
80 LOGPALETTE logpalette; /* _MUST_ be the last field */
81} PALETTEOBJ;
Alexandre Julliarddadf78f1998-05-17 17:13:43 +000082
Alexandre Julliard401710d1993-09-04 10:09:32 +000083 /* GDI local heap */
84
Alexandre Julliard2a2321b2000-08-19 21:38:55 +000085extern void *GDI_GetObjPtr( HGDIOBJ, WORD );
86extern void GDI_ReleaseObj( HGDIOBJ );
Alexandre Julliard91697292002-12-03 19:18:41 +000087
Huw Davies90020c92005-10-06 12:28:11 +000088/* GetGlyphOutline */
Alexandre Julliard18d75732002-01-29 03:02:50 +000089#define WINE_GGO_GRAY16_BITMAP 0x7f
90
Huw Davies90020c92005-10-06 12:28:11 +000091/* GetRasterizerCaps */
92#define WINE_TT_HINTER_ENABLED 0x8000
93
Alexandre Julliardc6c09441997-01-12 18:32:19 +000094#endif /* __WINE_GDI_H */