ccontext:Stroke()
ccontext:Stroke(), the current path will be cleared from the Cairo
context. See ccontext:SetLineWidth(), ccontext:SetLineJoin(),
ccontext:SetLineCap(), ccontext:SetDash(), and
ccontext:StrokePreserve().
Note: Degenerate segments and sub-paths are treated specially and provide a useful result. These can result in two different situations:
#CAIRO_LINE_CAP_ROUND or #CAIRO_LINE_CAP_SQUARE then these
segments will be drawn as circular dots or squares respectively. In
the case of #CAIRO_LINE_CAP_SQUARE, the orientation of the squares
is determined by the direction of the underlying path.
#CAIRO_LINE_CAP_ROUND then these sub-paths will be drawn as circular
dots. Note that in the case of #CAIRO_LINE_CAP_SQUARE a degenerate
sub-path will not be drawn at all, (since the correct orientation
is indeterminate).
In no case will a cap style of #CAIRO_LINE_CAP_BUTT cause anything
to be drawn in the case of either degenerate segments or sub-paths.