X11 - 以XY格式放置图像

时间:2018-03-07 19:59:36

标签: x11 xorg xcb

XCB库提供函数xcb_put_image。该功能的签名是:

xcb_void_cookie_t xcb_put_image( xcb_connection_t *conn, uint8_t format, xcb_drawable_t drawable, xcb_gcontext_t gc, uint16_t width, uint16_t height, int16_t dst_x, int16_t dst_y, uint8_t left_pad, uint8_t depth, uint32_t data_len, const uint8_t *data )

该函数使用drawable的像素颜色填充给定的data(窗口/像素图)。 format参数指定X服务器应如何解释给定数据。

format的三个可能值之一是XCB_IMAGE_FORMAT_XY_PIXMAP,这意味着data中包含的字节应该被解释为XY像素图(三个连续的“灰度”图像 - 每个RGB通道一个)。

这是我的问题:假设我想用黄色10x10矩形填充像素图,我想使用XY像素图格式。为此,我需要用data字节填充data_len。数组中字节的数量和值应该是多少?

1 个答案:

答案 0 :(得分:0)

这取决于可绘制对象所使用的视觉效果。您并不是真的想了解有关视觉效果的所有详细信息,但是https://tronche.com/gui/x/xlib/window/visual-types.html是一个好的开始。

如果您可以随意使用字节序少的“健全” X11服务器,则您的视觉效果很可能是TrueColor类型,其中红色,绿色和蓝色只有一个字节。然后可以通过将红色和绿色完全混合而没有蓝色来产生黄色。

我不记得XYPixmap的定义,但是如果您是对的,那么这将需要200个字节(值255),然后是100个字节(值0)。 (在这种情况下,left_pad为零)。