On Mon, Nov 9, 2020 at 4:30 PM Per Dalgas Jakobsen <p...@knaldgas.dk> wrote:
>
> Hi,
>
> I'm trying to learn coding with XCB and found an issue the XCB people
> think should be placed her.
> Drawing a diamond seems to render correctly only if started (end ended)
> at the right-most corner, drawing from any other corner causes the
> right-most pixel not to be rendered.

libxcb has no involvement with actual drawing or rendering. It's sole
function is to transmit requests, and all their parameters, to the X
server which then executes them. libxcb is really just a very thin
mapping layer between a functional API and X protocol messages.

What you want to do is investigate the formal X protocol
specification, which defines how various coordinates and parameters
get interpreted.

>     xcb_poly_line (connection, XCB_COORD_MODE_ORIGIN, window,
> foreground, 5, diamond);

This would be the PolyLine request:

https://www.x.org/releases/X11R7.7/doc/xproto/x11protocol.html#requests:PolyLine

Note the nuanced detail of how various coordinates get interpreted and
the meticulous detail in defining the actual drawn pixels.

Elsewhere in this specification you will find the formal definition of
the low level data points. For example, in general, line
drawing-related requests specify the coordinates for the center of the
drawn line. A question then arises, if the line's width is given as an
even number of pixels, what actual pixels get drawn? If the line's
width is given as 1, 3 or 5 pixels, for example, and it's a vertical
line, which pixels get drawn is not such a big mystery. But what if
it's 2 or 4 pixels, then what?

You're going to have to sift through the specification, to get the
details of what happens. That's just one example (whose answer I don't
recall off the top of my head), you'll have to decipher what's
happening in your case similarly.
_______________________________________________
xorg@lists.x.org: X.Org support
Archives: http://lists.freedesktop.org/archives/xorg
Info: https://lists.x.org/mailman/listinfo/xorg
Your subscription address: %(user_address)s

Reply via email to