1 /* GTK - The GIMP Toolkit
2  * Copyright (C) 2016 Benjamin Otte <otte@gnome.org>
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library. If not, see <http://www.gnu.org/licenses/>.
16  */
17 
18 #ifndef __GTK_WIN32_DRAW_H__
19 #define __GTK_WIN32_DRAW_H__
20 
21 #include <gdk/gdk.h>
22 #include <cairo.h>
23 
24 #include <gtk/gtkborder.h>
25 
26 G_BEGIN_DECLS
27 
28 enum {
29   GTK_WIN32_SYS_COLOR_SCROLLBAR,
30   GTK_WIN32_SYS_COLOR_BACKGROUND,
31   GTK_WIN32_SYS_COLOR_ACTIVECAPTION,
32   GTK_WIN32_SYS_COLOR_INACTIVECAPTION,
33   GTK_WIN32_SYS_COLOR_MENU,
34   GTK_WIN32_SYS_COLOR_WINDOW,
35   GTK_WIN32_SYS_COLOR_WINDOWFRAME,
36   GTK_WIN32_SYS_COLOR_MENUTEXT,
37   GTK_WIN32_SYS_COLOR_WINDOWTEXT,
38   GTK_WIN32_SYS_COLOR_CAPTIONTEXT,
39   GTK_WIN32_SYS_COLOR_ACTIVEBORDER,
40   GTK_WIN32_SYS_COLOR_INACTIVEBORDER,
41   GTK_WIN32_SYS_COLOR_APPWORKSPACE,
42   GTK_WIN32_SYS_COLOR_HIGHLIGHT,
43   GTK_WIN32_SYS_COLOR_HIGHLIGHTTEXT,
44   GTK_WIN32_SYS_COLOR_BTNFACE,
45   GTK_WIN32_SYS_COLOR_BTNSHADOW,
46   GTK_WIN32_SYS_COLOR_GRAYTEXT,
47   GTK_WIN32_SYS_COLOR_BTNTEXT,
48   GTK_WIN32_SYS_COLOR_INACTIVECAPTIONTEXT,
49   GTK_WIN32_SYS_COLOR_BTNHIGHLIGHT,
50   GTK_WIN32_SYS_COLOR_3DDKSHADOW,
51   GTK_WIN32_SYS_COLOR_3DLIGHT,
52   GTK_WIN32_SYS_COLOR_INFOTEXT,
53   GTK_WIN32_SYS_COLOR_INFOBK,
54   GTK_WIN32_SYS_COLOR_ALTERNATEBTNFACE,
55   GTK_WIN32_SYS_COLOR_HOTLIGHT,
56   GTK_WIN32_SYS_COLOR_GRADIENTACTIVECAPTION,
57   GTK_WIN32_SYS_COLOR_GRADIENTINACTIVECAPTION,
58   GTK_WIN32_SYS_COLOR_MENUHILIGHT,
59   GTK_WIN32_SYS_COLOR_MENUBAR
60 };
61 
62 enum {
63   GTK_WIN32_SYS_METRIC_CXSCREEN = 0,
64   GTK_WIN32_SYS_METRIC_CYSCREEN = 1,
65   GTK_WIN32_SYS_METRIC_CXVSCROLL = 2,
66   GTK_WIN32_SYS_METRIC_CYHSCROLL = 3,
67   GTK_WIN32_SYS_METRIC_CYCAPTION = 4,
68   GTK_WIN32_SYS_METRIC_CXBORDER = 5,
69   GTK_WIN32_SYS_METRIC_CYBORDER = 6,
70   GTK_WIN32_SYS_METRIC_CXDLGFRAME = 7,
71   GTK_WIN32_SYS_METRIC_CYDLGFRAME = 8,
72   GTK_WIN32_SYS_METRIC_CYVTHUMB = 9,
73   GTK_WIN32_SYS_METRIC_CXHTHUMB = 10,
74   GTK_WIN32_SYS_METRIC_CXICON = 11,
75   GTK_WIN32_SYS_METRIC_CYICON = 12,
76   GTK_WIN32_SYS_METRIC_CXCURSOR = 13,
77   GTK_WIN32_SYS_METRIC_CYCURSOR = 14,
78   GTK_WIN32_SYS_METRIC_CYMENU = 15,
79   GTK_WIN32_SYS_METRIC_CXFULLSCREEN = 16,
80   GTK_WIN32_SYS_METRIC_CYFULLSCREEN = 17,
81   GTK_WIN32_SYS_METRIC_CYKANJIWINDOW = 18,
82   GTK_WIN32_SYS_METRIC_MOUSEPRESENT = 19,
83   GTK_WIN32_SYS_METRIC_CYVSCROLL = 20,
84   GTK_WIN32_SYS_METRIC_CXHSCROLL = 21,
85   GTK_WIN32_SYS_METRIC_DEBUG = 22,
86   GTK_WIN32_SYS_METRIC_SWAPBUTTON = 23,
87   GTK_WIN32_SYS_METRIC_RESERVED1 = 24,
88   GTK_WIN32_SYS_METRIC_RESERVED2 = 25,
89   GTK_WIN32_SYS_METRIC_RESERVED3 = 26,
90   GTK_WIN32_SYS_METRIC_RESERVED4 = 27,
91   GTK_WIN32_SYS_METRIC_CXMIN = 28,
92   GTK_WIN32_SYS_METRIC_CYMIN = 29,
93   GTK_WIN32_SYS_METRIC_CXSIZE = 30,
94   GTK_WIN32_SYS_METRIC_CYSIZE = 31,
95   GTK_WIN32_SYS_METRIC_CXFRAME = 32,
96   GTK_WIN32_SYS_METRIC_CYFRAME = 33,
97   GTK_WIN32_SYS_METRIC_CXMINTRACK = 34,
98   GTK_WIN32_SYS_METRIC_CYMINTRACK = 35,
99   GTK_WIN32_SYS_METRIC_CXDOUBLECLK = 36,
100   GTK_WIN32_SYS_METRIC_CYDOUBLECLK = 37,
101   GTK_WIN32_SYS_METRIC_CXICONSPACING = 38,
102   GTK_WIN32_SYS_METRIC_CYICONSPACING = 39,
103   GTK_WIN32_SYS_METRIC_MENUDROPALIGNMENT = 40,
104   GTK_WIN32_SYS_METRIC_PENWINDOWS = 41,
105   GTK_WIN32_SYS_METRIC_DBCSENABLED = 42,
106   GTK_WIN32_SYS_METRIC_CMOUSEBUTTONS = 43,
107   GTK_WIN32_SYS_METRIC_SECURE = 44,
108   GTK_WIN32_SYS_METRIC_CXEDGE = 45,
109   GTK_WIN32_SYS_METRIC_CYEDGE = 46,
110   GTK_WIN32_SYS_METRIC_CXMINSPACING = 47,
111   GTK_WIN32_SYS_METRIC_CYMINSPACING = 48,
112   GTK_WIN32_SYS_METRIC_CXSMICON = 49,
113   GTK_WIN32_SYS_METRIC_CYSMICON = 50,
114   GTK_WIN32_SYS_METRIC_CYSMCAPTION = 51,
115   GTK_WIN32_SYS_METRIC_CXSMSIZE = 52,
116   GTK_WIN32_SYS_METRIC_CYSMSIZE = 53,
117   GTK_WIN32_SYS_METRIC_CXMENUSIZE = 54,
118   GTK_WIN32_SYS_METRIC_CYMENUSIZE = 55,
119   GTK_WIN32_SYS_METRIC_ARRANGE = 56,
120   GTK_WIN32_SYS_METRIC_CXMINIMIZED = 57,
121   GTK_WIN32_SYS_METRIC_CYMINIMIZED = 58,
122   GTK_WIN32_SYS_METRIC_CXMAXTRACK = 59,
123   GTK_WIN32_SYS_METRIC_CYMAXTRACK = 60,
124   GTK_WIN32_SYS_METRIC_CXMAXIMIZED = 61,
125   GTK_WIN32_SYS_METRIC_CYMAXIMIZED = 62,
126   GTK_WIN32_SYS_METRIC_NETWORK = 63,
127   GTK_WIN32_SYS_METRIC_CLEANBOOT = 67,
128   GTK_WIN32_SYS_METRIC_CXDRAG = 68,
129   GTK_WIN32_SYS_METRIC_CYDRAG = 69,
130   GTK_WIN32_SYS_METRIC_SHOWSOUNDS = 70,
131   GTK_WIN32_SYS_METRIC_CXMENUCHECK = 71,
132   GTK_WIN32_SYS_METRIC_CYMENUCHECK = 72,
133   GTK_WIN32_SYS_METRIC_SLOWMACHINE = 73,
134   GTK_WIN32_SYS_METRIC_MIDEASTENABLED = 74,
135   GTK_WIN32_SYS_METRIC_MOUSEWHEELPRESENT = 75,
136   GTK_WIN32_SYS_METRIC_XVIRTUALSCREEN = 76,
137   GTK_WIN32_SYS_METRIC_YVIRTUALSCREEN = 77,
138   GTK_WIN32_SYS_METRIC_CXVIRTUALSCREEN = 78,
139   GTK_WIN32_SYS_METRIC_CYVIRTUALSCREEN = 79,
140   GTK_WIN32_SYS_METRIC_CMONITORS = 80,
141   GTK_WIN32_SYS_METRIC_SAMEDISPLAYFORMAT = 81,
142   GTK_WIN32_SYS_METRIC_IMMENABLED = 82,
143   GTK_WIN32_SYS_METRIC_CXFOCUSBORDER = 83,
144   GTK_WIN32_SYS_METRIC_CYFOCUSBORDER = 84,
145   GTK_WIN32_SYS_METRIC_TABLETPC = 86,
146   GTK_WIN32_SYS_METRIC_MEDIACENTER = 87,
147   GTK_WIN32_SYS_METRIC_STARTER = 88,
148   GTK_WIN32_SYS_METRIC_SERVERR2 = 89,
149   GTK_WIN32_SYS_METRIC_CMETRICS = 90,
150   GTK_WIN32_SYS_METRIC_MOUSEHORIZONTALWHEELPRESENT = 91,
151   GTK_WIN32_SYS_METRIC_CXPADDEDBORDER = 92
152 };
153 
154 void                    gtk_win32_draw_theme_background         (cairo_t        *cr,
155                                                                  const char     *class_name,
156                                                                  int             part,
157                                                                  int             state,
158                                                                  int             width,
159                                                                  int             height);
160 void                    gtk_win32_get_theme_part_size           (const char     *class_name,
161                                                                  int             part,
162                                                                  int             state,
163                                                                  int            *width,
164                                                                  int            *height);
165 void                    gtk_win32_get_theme_margins             (const char     *class_name,
166                                                                  int             part,
167                                                                  int             state,
168                                                                  GtkBorder      *out_margins);
169 
170 const char *            gtk_win32_get_sys_metric_name_for_id    (gint            id);
171 int                     gtk_win32_get_sys_metric_id_for_name    (const char     *name);
172 int                     gtk_win32_get_sys_metric                (gint            id);
173 
174 const char *            gtk_win32_get_sys_color_name_for_id     (gint            id);
175 int                     gtk_win32_get_sys_color_id_for_name     (const char     *name);
176 void                    gtk_win32_get_sys_color                 (gint            id,
177                                                                  GdkRGBA        *color);
178 
179 G_END_DECLS
180 
181 #endif /* __GTK_WIN32_DRAW_H__ */
182