<div dir="ltr"><div class="gmail_quote">Hello,</div><div class="gmail_quote"><br></div><div class="gmail_quote">I had forgotten I made this, but here's a patch that adds documentation for xcb_create_window, xcb_create_pixmap, and xcb_create_gc. It also adds an example for xcb_map_window, which I believe I got from the wiki.</div><div class="gmail_quote">This patch is the previous two patches I sent, but I squashed them into one, and corrected a typo I had made.</div><div class="gmail_quote"><br></div><div class="gmail_quote">I believe when I was writing this, I was working out of the "X Window System Protocol" and the Xlib man pages, so the information should be accurate, but please let me know if I can correct anything.</div><div class="gmail_quote"><br></div><div class="gmail_quote">I hope this helps anyone who wants to get into using XCB.</div><div class="gmail_quote"><br></div><div class="gmail_quote">Thanks,</div><div class="gmail_quote">Thomas Fischer</div><div class="gmail_quote"><br></div><div class="gmail_quote">
---<br>
 src/xproto.xml | 304 +++++++++++++++++++++++++++++++++++++------------<br>
 1 file changed, 233 insertions(+), 71 deletions(-)<br>
<br>
diff --git a/src/xproto.xml b/src/xproto.xml<br>
index dea48df..33ca5f1 100644<br>
--- a/src/xproto.xml<br>
+++ b/src/xproto.xml<br>
@@ -1147,6 +1147,27 @@ <enum name="WindowClass"><br>
     <item name="CopyFromParent"><value>0</value></item><br>
     <item name="InputOutput">   <value>1</value></item><br>
     <item name="InputOnly">     <value>2</value></item><br>
+    <doc><br>
+      <field name="CopyFromParent"><![CDATA[<br>
+The class is taken from the `parent`. A `depth` of zero for class `InputOutput`<br>
+or `CopyFromParent` means the `depth` is taken from the `parent`.<br>
+        ]]></field><br>
+      <field name="InputOutput"><![CDATA[<br>
+An `InputOutput` window is the normal kind of opaque window, used for both<br>
+input and output. `InputOutput` windows can have both `InputOutput` and<br>
+`InputOnly` windows as inferiors.<br>
+        ]]></field><br>
+      <field name="InputOnly"><![CDATA[<br>
+An `InputOnly` window is a window that cannot be used for graphics requests.<br>
+`InputOnly` windows are invisible and can be used to control such things as<br>
+cursors, input event generation, and grabbing. `InputOnly` windows cannot have<br>
+`InputOutput` windows as inferiors.<br>
+<br>
+The server essentially acts as if `InputOnly` windows do not exist for the<br>
+purposes of graphics requests, exposure processing, and `VisibilityNotify`<br>
+events.<br>
+        ]]></field><br>
+    </doc><br>
   </enum><br>
<br>
   <!-- Window attributes for CreateWindow and ChangeWindowAttributes. --><br>
@@ -1250,20 +1271,23 @@ <enum name="CW"><br>
 ancestor windows when no client has the event type selected in this window.<br>
       ]]></field><br>
       <field name="Colormap"><![CDATA[<br>
-The colormap specifies the colormap that best reflects the true colors of the window. Servers<br>
-capable of supporting multiple hardware colormaps may use this information, and window man-<br>
-agers may use it for InstallColormap requests. The colormap must have the same visual type<br>
-and root as the window (or a Match error results). If CopyFromParent is specified, the parent's<br>
-colormap is copied (subsequent changes to the parent's colormap attribute do not affect the child).<br>
-However, the window must have the same visual type as the parent (or a Match error results),<br>
-and the parent must not have a colormap of None (or a Match error results). For an explanation<br>
-of None, see FreeColormap request. The colormap is copied by sharing the colormap object<br>
-between the child and the parent, not by making a complete copy of the colormap contents.<br>
+The colormap specifies the colormap that best reflects the true colors of the<br>
+window. Servers capable of supporting multiple hardware colormaps may use this<br>
+information, and window man- agers may use it for `InstallColormap` requests.<br>
+The colormap must have the same visual type and `root` as the window (or a<br>
+`Match` error results). If `CopyFromParent` is specified, the parent's colormap<br>
+is copied (subsequent changes to the parent's colormap attribute do not affect<br>
+the child).  However, the window must have the same visual type as the parent<br>
+(or a Match error results), and the parent must not have a colormap of `None`<br>
+(or a `Match` error results). For an explanation of `None`, see `FreeColormap`<br>
+request. The colormap is copied by sharing the colormap object between the<br>
+child and the parent, not by making a complete copy of the colormap contents.<br>
       ]]></field><br>
       <field name="Cursor"><![CDATA[<br>
-If a cursor is specified, it will be used whenever the pointer is in the window. If None is speci-<br>
-fied, the parent's cursor will be used when the pointer is in the window, and any change in the<br>
-parent's cursor will cause an immediate change in the displayed cursor.<br>
+If a cursor is specified, it will be used whenever the pointer is in the<br>
+window. If `None` is specified, the parent's cursor will be used when the<br>
+pointer is in the window, and any change in the parent's cursor will cause an<br>
+immediate change in the displayed cursor.<br>
       ]]></field><br>
     </doc><br>
   </enum><br>
@@ -1365,7 +1389,7 @@ <request name="CreateWindow" opcode="1"><br>
     </switch><br>
<br>
     <doc><br>
-      <brief>Creates a window</brief><br>
+      <brief>Creates a window and assigns the identifier wid to it</brief><br>
       <description><![CDATA[<br>
 Creates an unmapped window as child of the specified `parent` window. A<br>
 CreateNotify event will be generated. The new window is placed on top in the<br>
@@ -1387,7 +1411,7 @@ <request name="CreateWindow" opcode="1"><br>
 `xcb_generate_id`.<br>
       ]]></field><br>
       <field name="depth"><![CDATA[<br>
-Specifies the new window's depth (TODO: what unit?).<br>
+Specifies the new window's color depth in bits per pixel.<br>
<br>
 The special value `XCB_COPY_FROM_PARENT` means the depth is taken from the<br>
 `parent` window.<br>
@@ -1403,35 +1427,63 @@ <request name="CreateWindow" opcode="1"><br>
 The parent window of the new window.<br>
       ]]></field><br>
       <field name="border_width"><![CDATA[<br>
-      TODO:<br>
+An `InputOutput` window can have a border of equal thickness on all four sides of<br>
+the window. A `pixmap` defines the contents of the border, and the server<br>
+automatically maintains the contents of the border. Exposure events are never<br>
+generated for border regions.<br>
<br>
 Must be zero if the `class` is `InputOnly` or a `xcb_match_error_t` occurs.<br>
       ]]></field><br>
       <field name="x"><![CDATA[The X coordinate of the new window.]]></field><br>
       <field name="y"><![CDATA[The Y coordinate of the new window.]]></field><br>
       <field name="width"><![CDATA[The width of the new window.]]></field><br>
-      <field name="height"><![CDATA[The height of the new window.]]></field><br>
+      <field name="height"><![CDATA[The height of the new window.<br>
+<br>
+The `width` and `height` specify the inside size, not including the `border_width`,<br>
+and must be nonzero (or a `Value` error results).<br>
+      ]]></field><br>
+      <field name="value_mask" /><br>
+      <field name="value_list"><![CDATA[<br>
+Values for each of the attributes specified in the bitmask `value_mask`. The<br>
+order has to correspond to the order of possible `value_mask` bits. See the<br>
+example.<br>
+      ]]></field><br>
       <error type="Colormap"><![CDATA[<br>
-TODO: reasons?<br>
+The value given for the `colormap` argument does not refer to a defined<br>
+`xcb_colormap_t`.<br>
       ]]></error><br>
       <error type="Match"><![CDATA[<br>
-TODO: reasons?<br>
+For an `InputOnly` window the `border_width` and the `depth` must be zero or<br>
+`CopyFromParent`.<br>
+<br>
+For an `InputOutput` window, the visual type and the `depth` must be a<br>
+combination supported for the screen. The parent of an `InputOutput` window<br>
+must not be a window of class `InputOnly`.<br>
       ]]></error><br>
       <error type="Cursor"><![CDATA[<br>
-TODO: reasons?<br>
+A value for a `xcb_cursor_t` argument does not refer to a defined `xcb_cursor_t`.<br>
       ]]></error><br>
       <error type="Pixmap"><![CDATA[<br>
-TODO: reasons?<br>
+A value for a `xcb_pixmap_t` argument does not refer to a defined `xcb_pixmap_t`.<br>
       ]]></error><br>
       <error type="Value"><![CDATA[<br>
-TODO: reasons?<br>
+Some numeric value falls outside the range of values accepted by the request.<br>
+<br>
+The `width` and `height` must be nonzero.<br>
       ]]></error><br>
       <error type="Window"><![CDATA[<br>
-TODO: reasons?<br>
+The specified `window` does not exist.<br>
       ]]></error><br>
       <error type="Alloc"><![CDATA[<br>
-The X server could not allocate the requested resources (no memory?).<br>
+The X server could not allocate the requested resource. Note that when a server<br>
+runs out of allocation space the semantics are left unspecified, but a server<br>
+may generate an `xcb_alloc_error_t` error on any request.<br>
       ]]></error><br>
+    <example><br>
+      <![CDATA[<br>
+See xcb_map_window(3).<br>
+      ]]><br>
+    </example><br>
       <see type="function" name="xcb_generate_id" /><br>
       <see type="request" name="MapWindow" /><br>
       <see type="event" name="CreateNotify" /><br>
@@ -1758,6 +1810,61 @@ <request name="MapWindow" opcode="8"><br>
       <error type="Match"><![CDATA[<br>
 The specified window does not exist.<br>
       ]]></error><br>
+    <example><br>
+      <![CDATA[<br>
+#include <unistd.h>      /* pause() */<br>
+<br>
+#include <xcb/xcb.h><br>
+<br>
+int<br>
+main ()<br>
+{<br>
+    /* Open the connection to the X server */<br>
+    xcb_connection_t *connection = xcb_connect (NULL, NULL);<br>
+<br>
+<br>
+    /* Get the first screen */<br>
+    const xcb_setup_t      *setup  = xcb_get_setup (connection);<br>
+    xcb_screen_iterator_t   iter   = xcb_setup_roots_iterator (setup);<br>
+    xcb_screen_t           *screen = iter.data;<br>
+<br>
+    uint32_t value_mask = XCB_CW_BACK_PIXEL | XCB_CW_EVENT_MASK;<br>
+    uint32_t value_list[] = { screen->black_pixel,<br>
+    XCB_EVENT_MASK_KEY_RELEASE | XCB_EVENT_MASK_EXPOSE<br>
+    /* | XCB_EVENT_MASK_* ... */ };<br>
+<br>
+    /* Create the window */<br>
+    xcb_window_t window = xcb_generate_id (connection);<br>
+    xcb_create_window (connection,                    /* Connection          */<br>
+                       XCB_COPY_FROM_PARENT,          /* depth (same as root)*/<br>
+                       window,                        /* window Id           */<br>
+                       screen->root,                  /* parent window       */<br>
+                       0, 0,                          /* x, y                */<br>
+                       150, 150,                      /* width, height       */<br>
+                       10,                            /* border_width        */<br>
+                       XCB_WINDOW_CLASS_INPUT_OUTPUT, /* class               */<br>
+                       screen->root_visual,           /* visual              */<br>
+                       value_mask, value_list );      /* masks, creates window<br>
+                       that receives KEY_RELEASE and EXPOSE events */<br>
+<br>
+<br>
+    /* Map the window on the screen */<br>
+    xcb_map_window (connection, window);<br>
+<br>
+<br>
+    /* Make sure commands are sent before we pause so that the window gets shown */<br>
+    xcb_flush (connection);<br>
+<br>
+<br>
+    pause();    /* hold client until Ctrl-C */<br>
+<br>
+    xcb_disconnect (connection);<br>
+<br>
+    return 0;<br>
+}<br>
+<br>
+      ]]><br>
+    </example><br>
       <see type="event" name="MapNotify" /><br>
       <see type="event" name="Expose" /><br>
       <see type="request" name="UnmapWindow" /><br>
@@ -2118,7 +2225,7 @@ <request name="InternAtom" opcode="16"><br>
 Return a valid atom id only if the atom already exists.<br>
       ]]></field><br>
       <error type="Alloc"><![CDATA[<br>
-TODO: reasons?<br>
+The X server could not store the property (no memory?).<br>
       ]]></error><br>
       <error type="Value"><![CDATA[<br>
 A value other than 0 or 1 was specified for `only_if_exists`.<br>
@@ -3308,7 +3415,7 @@ <request name="WarpPointer" opcode="41"><br>
 relative to the current position of the pointer.<br>
       ]]></field><br>
       <error type="Window"><![CDATA[<br>
-TODO: reasons?<br>
+Either the `src_window` or the `dst_window` do not refer to a defined `window`.<br>
       ]]></error><br>
       <see type="request" name="SetInputFocus" /><br>
     </doc><br>
@@ -3757,9 +3864,11 @@ <request name="CreatePixmap" opcode="53"><br>
       <description><![CDATA[<br>
 Creates a pixmap. The pixmap can only be used on the same screen as `drawable`<br>
 is on and only with drawables of the same `depth`.<br>
+<br>
+The initial contents of the pixmap are undefined.<br>
       ]]></description><br>
       <field name="depth"><![CDATA[<br>
-TODO<br>
+Specifies the new pixmap's color depth in pits per pixel.<br>
       ]]></field><br>
       <field name="pid"><![CDATA[<br>
 The ID with which you will refer to the new pixmap, created by<br>
@@ -3767,6 +3876,9 @@ <request name="CreatePixmap" opcode="53"><br>
       ]]></field><br>
       <field name="drawable"><![CDATA[<br>
 Drawable to get the screen from.<br>
+<br>
+It is `legal` to pass an `XCB_WINDOW_CLASS_INPUT_ONLY` drawable to this<br>
+request.<br>
       ]]></field><br>
       <field name="width"><![CDATA[<br>
 The width of the new pixmap.<br>
@@ -3775,7 +3887,8 @@ <request name="CreatePixmap" opcode="53"><br>
 The height of the new pixmap.<br>
       ]]></field><br>
       <error type="Value"><![CDATA[<br>
-TODO: reasons?<br>
+The `width` and `height` of the pixmap must be nonzero.  The `depth` must be<br>
+supported by the root of the specified drawable.<br>
       ]]></error><br>
       <error type="Drawable"><![CDATA[<br>
 The specified `drawable` (Window or Pixmap) does not exist.<br>
@@ -3846,36 +3959,46 @@ <enum name="GC"><br>
 Background colorpixel.<br>
       ]]></field><br>
       <field name="LineWidth"><![CDATA[<br>
-The line-width is measured in pixels and can be greater than or equal to one, a wide line, or the<br>
-special value zero, a thin line.<br>
+The line-width is measured in pixels and can be greater than or equal to one, a<br>
+wide line, or the special value zero, a thin line.<br>
       ]]></field><br>
       <field name="LineStyle"><![CDATA[<br>
 The line-style defines which sections of a line are drawn:<br>
+<br>
 Solid                The full path of the line is drawn.<br>
+<br>
 DoubleDash           The full path of the line is drawn, but the even dashes are filled differently<br>
                      than the odd dashes (see fill-style), with Butt cap-style used where even and<br>
                      odd dashes meet.<br>
+<br>
 OnOffDash            Only the even dashes are drawn, and cap-style applies to all internal ends of<br>
                      the individual dashes (except NotLast is treated as Butt).<br>
       ]]></field><br>
       <field name="CapStyle"><![CDATA[<br>
 The cap-style defines how the endpoints of a path are drawn:<br>
+<br>
 NotLast    The result is equivalent to Butt, except that for a line-width of zero the final<br>
            endpoint is not drawn.<br>
+<br>
 Butt       The result is square at the endpoint (perpendicular to the slope of the line)<br>
            with no projection beyond.<br>
+<br>
 Round      The result is a circular arc with its diameter equal to the line-width, centered<br>
            on the endpoint; it is equivalent to Butt for line-width zero.<br>
+<br>
 Projecting The result is square at the end, but the path continues beyond the endpoint for<br>
            a distance equal to half the line-width; it is equivalent to Butt for line-width<br>
            zero.<br>
       ]]></field><br>
       <field name="JoinStyle"><![CDATA[<br>
 The join-style defines how corners are drawn for wide lines:<br>
+<br>
 Miter               The outer edges of the two lines extend to meet at an angle. However, if the<br>
                     angle is less than 11 degrees, a Bevel join-style is used instead.<br>
+<br>
 Round               The result is a circular arc with a diameter equal to the line-width, centered<br>
                     on the joinpoint.<br>
+<br>
 Bevel               The result is Butt endpoint styles, and then the triangular notch is filled.<br>
       ]]></field><br>
       <field name="FillStyle"><![CDATA[<br>
@@ -3884,53 +4007,70 @@ <enum name="GC"><br>
 as well as for line requests with line-style Solid, (for example, PolyLine, PolySegment,<br>
 PolyRectangle, PolyArc) and for the even dashes for line requests with line-style OnOffDash<br>
 or DoubleDash:<br>
+<br>
 Solid                     Foreground<br>
+<br>
 Tiled                     Tile<br>
+<br>
 OpaqueStippled            A tile with the same width and height as stipple but with background<br>
                           everywhere stipple has a zero and with foreground everywhere stipple<br>
                           has a one<br>
+<br>
 Stippled                  Foreground masked by stipple<br>
+<br>
 For the odd dashes for line requests with line-style DoubleDash:<br>
+<br>
 Solid                     Background<br>
+<br>
 Tiled                     Same as for even dashes<br>
+<br>
 OpaqueStippled            Same as for even dashes<br>
+<br>
 Stippled                  Background masked by stipple<br>
       ]]></field><br>
       <field name="FillRule"><![CDATA[<br>
       ]]></field><br>
       <field name="Tile"><![CDATA[<br>
-The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all<br>
-dimensions. When that plane is superimposed on the drawable for use in a graphics operation,<br>
-the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable<br>
-specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the<br>
-origin of whatever destination drawable is specified in a graphics request.<br>
-The tile pixmap must have the same root and depth as the gcontext (or a Match error results).<br>
-The stipple pixmap must have depth one and must have the same root as the gcontext (or a<br>
-Match error results). For fill-style Stippled (but not fill-style<br>
-OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an<br>
-additional clip mask to be ANDed with the clip-mask.<br>
-Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than<br>
-others.<br>
+The tile/stipple represents an infinite two-dimensional plane with the<br>
+tile/stipple replicated in all dimensions. When that plane is superimposed on<br>
+the drawable for use in a graphics operation, the upper-left corner of some<br>
+instance of the tile/stipple is at the coordinates within the drawable<br>
+specified by the tile/stipple origin. The tile/stipple and clip origins are<br>
+interpreted relative to the origin of whatever destination drawable is<br>
+specified in a graphics request.<br>
+<br>
+The tile pixmap must have the same root and depth as the gcontext (or a Match<br>
+error results).  The stipple pixmap must have depth one and must have the same<br>
+root as the gcontext (or a Match error results). For fill-style Stippled (but<br>
+not fill-style OpaqueStippled), the stipple pattern is tiled in a single plane<br>
+and acts as an additional clip mask to be ANDed with the clip-mask.<br>
+<br>
+Any size pixmap can be used for tiling or stippling, although some sizes may be<br>
+faster to use than others.<br>
       ]]></field><br>
       <field name="Stipple"><![CDATA[<br>
-The tile/stipple represents an infinite two-dimensional plane with the tile/stipple replicated in all<br>
-dimensions. When that plane is superimposed on the drawable for use in a graphics operation,<br>
-the upper-left corner of some instance of the tile/stipple is at the coordinates within the drawable<br>
-specified by the tile/stipple origin. The tile/stipple and clip origins are interpreted relative to the<br>
-origin of whatever destination drawable is specified in a graphics request.<br>
-The tile pixmap must have the same root and depth as the gcontext (or a Match error results).<br>
-The stipple pixmap must have depth one and must have the same root as the gcontext (or a<br>
-Match error results). For fill-style Stippled (but not fill-style<br>
-OpaqueStippled), the stipple pattern is tiled in a single plane and acts as an<br>
-additional clip mask to be ANDed with the clip-mask.<br>
-Any size pixmap can be used for tiling or stippling, although some sizes may be faster to use than<br>
-others.<br>
+The tile/stipple represents an infinite two-dimensional plane with the<br>
+tile/stipple replicated in all dimensions. When that plane is superimposed on<br>
+the drawable for use in a graphics operation, the upper-left corner of some<br>
+instance of the tile/stipple is at the coordinates within the drawable<br>
+specified by the tile/stipple origin. The tile/stipple and clip origins are<br>
+interpreted relative to the origin of whatever destination drawable is<br>
+specified in a graphics request.<br>
+<br>
+The tile pixmap must have the same root and depth as the gcontext (or a Match<br>
+error results).  The stipple pixmap must have depth one and must have the same<br>
+root as the gcontext (or a Match error results). For fill-style Stippled (but<br>
+not fill-style OpaqueStippled), the stipple pattern is tiled in a single plane<br>
+and acts as an additional clip mask to be ANDed with the clip-mask.<br>
+<br>
+Any size pixmap can be used for tiling or stippling, although some sizes may be<br>
+faster to use than others.<br>
       ]]></field><br>
       <field name="TileStippleOriginX"><![CDATA[<br>
-TODO<br>
+Specifies the X origin in the drawable for the `upper-left` corner of the tile/stipple pixmap.<br>
       ]]></field><br>
       <field name="TileStippleOriginY"><![CDATA[<br>
-TODO<br>
+Specifies the Y origin in the drawable for the `upper-left` corner of the tile/stipple pixmap.<br>
       ]]></field><br>
       <field name="Font"><![CDATA[<br>
 Which font to use for the `ImageText8` and `ImageText16` requests.<br>
@@ -3938,11 +4078,11 @@ <enum name="GC"><br>
       <field name="SubwindowMode"><![CDATA[<br>
 For ClipByChildren, both source and destination windows are additionally<br>
 clipped by all viewable InputOutput children. For IncludeInferiors, neither<br>
-source nor destination window is<br>
-clipped by inferiors. This will result in including subwindow contents in the source and drawing<br>
-through subwindow boundaries of the destination. The use of IncludeInferiors with a source or<br>
-destination window of one depth with mapped inferiors of differing depth is not illegal, but the<br>
-semantics is undefined by the core protocol.<br>
+source nor destination window is clipped by inferiors. This will result in<br>
+including subwindow contents in the source and drawing through subwindow<br>
+boundaries of the destination. The use of IncludeInferiors with a source or<br>
+destination window of one depth with mapped inferiors of differing depth is not<br>
+illegal, but the semantics is undefined by the core protocol.<br>
       ]]></field><br>
       <field name="GraphicsExposures"><![CDATA[<br>
 Whether ExposureEvents should be generated (1) or not (0).<br>
@@ -3950,28 +4090,43 @@ <enum name="GC"><br>
 The default is 1.<br>
       ]]></field><br>
       <field name="ClipOriginX"><![CDATA[<br>
-TODO<br>
+Specifies the X origin in the drawable for the `upper-left` corner of the `ClipMask` pixmap.<br>
       ]]></field><br>
       <field name="ClipOriginY"><![CDATA[<br>
-TODO<br>
+Specifies the Y origin in the drawable for the `upper-left` corner of the `ClipMask` pixmap.<br>
       ]]></field><br>
       <field name="ClipMask"><![CDATA[<br>
-The clip-mask restricts writes to the destination drawable. Only pixels where the clip-mask has<br>
-bits set to 1 are drawn. Pixels are not drawn outside the area covered by the clip-mask or where<br>
-the clip-mask has bits set to 0. The clip-mask affects all graphics requests, but it does not clip<br>
-sources. The clip-mask origin is interpreted relative to the origin of whatever destination drawable is specified in a graphics request. If a pixmap is specified as the clip-mask, it must have<br>
-depth 1 and have the same root as the gcontext (or a Match error results). If clip-mask is None,<br>
-then pixels are always drawn, regardless of the clip origin. The clip-mask can also be set with the<br>
+The clip-mask restricts writes to the destination drawable. Only pixels where<br>
+the clip-mask has bits set to 1 are drawn. Pixels are not drawn outside the<br>
+area covered by the clip-mask or where the clip-mask has bits set to 0. The<br>
+clip-mask affects all graphics requests, but it does not clip sources. The<br>
+clip-mask origin is interpreted relative to the origin of whatever destination<br>
+drawable is specified in a graphics request. If a pixmap is specified as the<br>
+clip-mask, it must have depth 1 and have the same root as the gcontext (or a<br>
+Match error results). If clip-mask is None, then pixels are always drawn,<br>
+regardless of the clip origin. The clip-mask can also be set with the<br>
 SetClipRectangles request.<br>
       ]]></field><br>
       <field name="DashOffset"><![CDATA[<br>
-TODO<br>
+Defines the phase of the dash pattern, specifying how many pixels into `dashes`<br>
+the pattern should actually begin in any single graphics request. Dashing is<br>
+continuous through path elements combined with a join-style but is reset to the<br>
+`DashOffset` between each sequence of joined lines.<br>
       ]]></field><br>
       <field name="DashList"><![CDATA[<br>
-TODO<br>
+Specifies a list of `dash lengths` in pixels. All of the elements must be<br>
+nonzero or a `Value` error occurs. The length of `DashList` must be nonzero or<br>
+a `Value` error occurs.<br>
+<br>
       ]]></field><br>
       <field name="ArcMode"><![CDATA[<br>
-TODO<br>
+The `ArcMode` controls filling in the `PolyFillArc` request.<br>
+<br>
+For `Chord`, the single line segment joining the endpoints of the arc is used.<br>
+<br>
+For `PieSlice`, the two line segments joining the endpoints of the arc with the<br>
+center point are used.<br>
+<br>
       ]]></field><br>
     </doc><br>
<br>
@@ -4150,6 +4305,13 @@ <request name="CreateGC" opcode="55"><br>
       ]]></field><br>
       <field name="drawable"><![CDATA[<br>
 Drawable to get the root/depth from.<br>
+      ]]></field><br>
+      <!-- the enum documentation is good enough. --><br>
+      <field name="value_mask" /><br>
+      <field name="value_list"><![CDATA[<br>
+Values for each of the components specified in the bitmask `value_mask`. The<br>
+order has to correspond to the order of possible `value_mask` bits. See the<br>
+example in xcb_chane_gc(3).<br>
       ]]></field><br>
       <error type="Drawable"><![CDATA[<br>
 The specified `drawable` (Window or Pixmap) does not exist.<br>
-- <br>
2.22.0<br>
<br>
</div></div>