1 #include "ecore_xcb_private.h"
4 * Creates a new default graphics context associated with the given
6 * @param draw Drawable to create graphics context with. If @c 0 is
7 * given instead, the default root window is used.
8 * @param value_mask Bitmask values.
9 * @param value_list List of values. The order of values must be the
10 * same than the corresponding bitmaks.
11 * @return The new default graphics context.
14 ecore_x_gc_new(Ecore_X_Drawable drawable,
15 Ecore_X_GC_Value_Mask value_mask,
16 const unsigned int *value_list)
22 LOGFN(__FILE__, __LINE__, __FUNCTION__);
25 if (!drawable) drawable = ((xcb_screen_t *)_ecore_xcb_screen)->root;
27 for (i = 0, mask = 1; i <= 22; i++, mask <<= 1)
29 switch (mask & value_mask)
31 case ECORE_X_GC_VALUE_MASK_FUNCTION:
32 vmask |= XCB_GC_FUNCTION;
35 case ECORE_X_GC_VALUE_MASK_PLANE_MASK:
36 vmask |= XCB_GC_PLANE_MASK;
39 case ECORE_X_GC_VALUE_MASK_FOREGROUND:
40 vmask |= XCB_GC_FOREGROUND;
43 case ECORE_X_GC_VALUE_MASK_BACKGROUND:
44 vmask |= XCB_GC_BACKGROUND;
47 case ECORE_X_GC_VALUE_MASK_LINE_WIDTH:
48 vmask |= XCB_GC_LINE_WIDTH;
51 case ECORE_X_GC_VALUE_MASK_LINE_STYLE:
52 vmask |= XCB_GC_LINE_STYLE;
55 case ECORE_X_GC_VALUE_MASK_CAP_STYLE:
56 vmask |= XCB_GC_CAP_STYLE;
59 case ECORE_X_GC_VALUE_MASK_JOIN_STYLE:
60 vmask |= XCB_GC_JOIN_STYLE;
63 case ECORE_X_GC_VALUE_MASK_FILL_STYLE:
64 vmask |= XCB_GC_FILL_STYLE;
67 case ECORE_X_GC_VALUE_MASK_FILL_RULE:
68 vmask |= XCB_GC_FILL_RULE;
71 case ECORE_X_GC_VALUE_MASK_TILE:
75 case ECORE_X_GC_VALUE_MASK_STIPPLE:
76 vmask |= XCB_GC_STIPPLE;
79 case ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_X:
80 vmask |= XCB_GC_TILE_STIPPLE_ORIGIN_X;
83 case ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_Y:
84 vmask |= XCB_GC_TILE_STIPPLE_ORIGIN_Y;
87 case ECORE_X_GC_VALUE_MASK_FONT:
91 case ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE:
92 vmask |= XCB_GC_SUBWINDOW_MODE;
95 case ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES:
96 vmask |= XCB_GC_GRAPHICS_EXPOSURES;
99 case ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X:
100 vmask |= XCB_GC_CLIP_ORIGIN_X;
103 case ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y:
104 vmask |= XCB_GC_CLIP_ORIGIN_Y;
107 case ECORE_X_GC_VALUE_MASK_CLIP_MASK:
108 vmask |= XCB_GC_CLIP_MASK;
111 case ECORE_X_GC_VALUE_MASK_DASH_OFFSET:
112 vmask |= XCB_GC_DASH_OFFSET;
115 case ECORE_X_GC_VALUE_MASK_DASH_LIST:
116 vmask |= XCB_GC_DASH_LIST;
119 case ECORE_X_GC_VALUE_MASK_ARC_MODE:
120 vmask |= XCB_GC_ARC_MODE;
125 gc = xcb_generate_id(_ecore_xcb_conn);
126 xcb_create_gc(_ecore_xcb_conn, gc, drawable, vmask, value_list);
133 * Deletes and frees the given graphics context.
134 * @param gc The given graphics context.
137 ecore_x_gc_free(Ecore_X_GC gc)
139 LOGFN(__FILE__, __LINE__, __FUNCTION__);
142 xcb_free_gc(_ecore_xcb_conn, gc);
147 ecore_x_gc_foreground_set(Ecore_X_GC gc,
148 unsigned long foreground)
152 LOGFN(__FILE__, __LINE__, __FUNCTION__);
156 xcb_change_gc(_ecore_xcb_conn, gc, XCB_GC_FOREGROUND, &list);
161 ecore_x_gc_background_set(Ecore_X_GC gc,
162 unsigned long background)
166 LOGFN(__FILE__, __LINE__, __FUNCTION__);
170 xcb_change_gc(_ecore_xcb_conn, gc, XCB_GC_BACKGROUND, &list);