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, Ecore_X_GC_Value_Mask value_mask, const unsigned int *value_list)
20 LOGFN(__FILE__, __LINE__, __FUNCTION__);
22 if (!drawable) drawable = ((xcb_screen_t *)_ecore_xcb_screen)->root;
24 for (i = 0, mask = 1; i <= 22; i++, mask <<= 1)
26 switch (mask & value_mask)
28 case ECORE_X_GC_VALUE_MASK_FUNCTION:
29 vmask |= XCB_GC_FUNCTION;
31 case ECORE_X_GC_VALUE_MASK_PLANE_MASK:
32 vmask |= XCB_GC_PLANE_MASK;
34 case ECORE_X_GC_VALUE_MASK_FOREGROUND:
35 vmask |= XCB_GC_FOREGROUND;
37 case ECORE_X_GC_VALUE_MASK_BACKGROUND:
38 vmask |= XCB_GC_BACKGROUND;
40 case ECORE_X_GC_VALUE_MASK_LINE_WIDTH:
41 vmask |= XCB_GC_LINE_WIDTH;
43 case ECORE_X_GC_VALUE_MASK_LINE_STYLE:
44 vmask |= XCB_GC_LINE_STYLE;
46 case ECORE_X_GC_VALUE_MASK_CAP_STYLE:
47 vmask |= XCB_GC_CAP_STYLE;
49 case ECORE_X_GC_VALUE_MASK_JOIN_STYLE:
50 vmask |= XCB_GC_JOIN_STYLE;
52 case ECORE_X_GC_VALUE_MASK_FILL_STYLE:
53 vmask |= XCB_GC_FILL_STYLE;
55 case ECORE_X_GC_VALUE_MASK_FILL_RULE:
56 vmask |= XCB_GC_FILL_RULE;
58 case ECORE_X_GC_VALUE_MASK_TILE:
61 case ECORE_X_GC_VALUE_MASK_STIPPLE:
62 vmask |= XCB_GC_STIPPLE;
64 case ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_X:
65 vmask |= XCB_GC_TILE_STIPPLE_ORIGIN_X;
67 case ECORE_X_GC_VALUE_MASK_TILE_STIPPLE_ORIGIN_Y:
68 vmask |= XCB_GC_TILE_STIPPLE_ORIGIN_Y;
70 case ECORE_X_GC_VALUE_MASK_FONT:
73 case ECORE_X_GC_VALUE_MASK_SUBWINDOW_MODE:
74 vmask |= XCB_GC_SUBWINDOW_MODE;
76 case ECORE_X_GC_VALUE_MASK_GRAPHICS_EXPOSURES:
77 vmask |= XCB_GC_GRAPHICS_EXPOSURES;
79 case ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_X:
80 vmask |= XCB_GC_CLIP_ORIGIN_X;
82 case ECORE_X_GC_VALUE_MASK_CLIP_ORIGIN_Y:
83 vmask |= XCB_GC_CLIP_ORIGIN_Y;
85 case ECORE_X_GC_VALUE_MASK_CLIP_MASK:
86 vmask |= XCB_GC_CLIP_MASK;
88 case ECORE_X_GC_VALUE_MASK_DASH_OFFSET:
89 vmask |= XCB_GC_DASH_OFFSET;
91 case ECORE_X_GC_VALUE_MASK_DASH_LIST:
92 vmask |= XCB_GC_DASH_LIST;
94 case ECORE_X_GC_VALUE_MASK_ARC_MODE:
95 vmask |= XCB_GC_ARC_MODE;
100 gc = xcb_generate_id(_ecore_xcb_conn);
101 xcb_create_gc(_ecore_xcb_conn, gc, drawable, vmask, value_list);
108 * Deletes and frees the given graphics context.
109 * @param gc The given graphics context.
112 ecore_x_gc_free(Ecore_X_GC gc)
114 LOGFN(__FILE__, __LINE__, __FUNCTION__);
116 xcb_free_gc(_ecore_xcb_conn, gc);
121 ecore_x_gc_foreground_set(Ecore_X_GC gc, unsigned long foreground)
125 LOGFN(__FILE__, __LINE__, __FUNCTION__);
128 xcb_change_gc(_ecore_xcb_conn, gc, XCB_GC_FOREGROUND, &list);
133 ecore_x_gc_background_set(Ecore_X_GC gc, unsigned long background)
137 LOGFN(__FILE__, __LINE__, __FUNCTION__);
140 xcb_change_gc(_ecore_xcb_conn, gc, XCB_GC_BACKGROUND, &list);