3 #endif /* ifdef HAVE_CONFIG_H */
8 #include "ecore_x_private.h"
12 * Creates a new default graphics context associated with the given
14 * @param draw Drawable to create graphics context with. If @c 0 is
15 * given instead, the default root window is used.
16 * @param value_mask Bitmask values.
17 * @param value_list List of values. The order of values must be the
18 * same than the corresponding bitmaks.
19 * @return The new default graphics context.
22 ecore_x_gc_new(Ecore_X_Drawable draw,
23 Ecore_X_GC_Value_Mask value_mask,
24 const unsigned int *value_list)
31 LOGFN(__FILE__, __LINE__, __FUNCTION__);
33 draw = DefaultRootWindow(_ecore_x_disp);
35 memset(&gcv, 0, sizeof (gcv));
37 for (i = 0, idx = 0, mask = 1; i <= 22; i++, mask <<= 1)
39 switch (mask & value_mask)
41 case ECORE_X_GC_VALUE_MASK_FUNCTION:
42 gcv.function = value_list[idx];
46 case ECORE_X_GC_VALUE_MASK_PLANE_MASK:
47 gcv.plane_mask = value_list[idx];
51 case ECORE_X_GC_VALUE_MASK_FOREGROUND:
52 gcv.foreground = value_list[idx];
56 case ECORE_X_GC_VALUE_MASK_BACKGROUND:
57 gcv.background = value_list[idx];
61 case ECORE_X_GC_VALUE_MASK_LINE_WIDTH:
62 gcv.line_width = value_list[idx];
66 case ECORE_X_GC_VALUE_MASK_LINE_STYLE:
67 gcv.line_style = value_list[idx];
71 case ECORE_X_GC_VALUE_MASK_CAP_STYLE:
72 gcv.cap_style = value_list[idx];
76 case ECORE_X_GC_VALUE_MASK_JOIN_STYLE:
77 gcv.join_style = value_list[idx];
81 case ECORE_X_GC_VALUE_MASK_FILL_STYLE:
82 gcv.fill_style = value_list[idx];
86 case ECORE_X_GC_VALUE_MASK_FILL_RULE:
87 gcv.fill_rule = value_list[idx];
91 case ECORE_X_GC_VALUE_MASK_TILE:
92 gcv.tile = value_list[idx];
96 case ECORE_X_GC_VALUE_MASK_STIPPLE:
97 gcv.stipple = value_list[idx];
101 case ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_X:
102 gcv.ts_x_origin = value_list[idx];
106 case ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_Y:
107 gcv.ts_y_origin = value_list[idx];
111 case ECORE_X_GC_VALUE_MASK_FONT:
112 gcv.font = value_list[idx];
116 case ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE:
117 gcv.subwindow_mode = value_list[idx];
121 case ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES:
122 gcv.graphics_exposures = value_list[idx];
126 case ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X:
127 gcv.clip_x_origin = value_list[idx];
131 case ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y:
132 gcv.clip_y_origin = value_list[idx];
136 case ECORE_X_GC_VALUE_MASK_CLIP_MASK:
137 gcv.clip_mask = value_list[idx];
141 case ECORE_X_GC_VALUE_MASK_DASH_OFFSET:
142 gcv.dash_offset = value_list[idx];
146 case ECORE_X_GC_VALUE_MASK_DASH_LIST:
147 gcv.dashes = value_list[idx];
151 case ECORE_X_GC_VALUE_MASK_ARC_MODE:
152 gcv.arc_mode = value_list[idx];
158 return XCreateGC(_ecore_x_disp, draw, value_mask, &gcv);
162 * Deletes and frees the given graphics context.
163 * @param gc The given graphics context.
166 ecore_x_gc_free(Ecore_X_GC gc)
168 LOGFN(__FILE__, __LINE__, __FUNCTION__);
169 XFreeGC(_ecore_x_disp, gc);