【发布时间】:2017-04-05 16:47:29
【问题描述】:
环境:Ubuntu 16.04
在我的应用程序中,我通过调用 XGetWindowProperty 和 _NET_WM_ICON atom 来获取应用程序的图标。
unsigned char* data;
XGetWindowProperty(..., &data);
unsigned long* data1 = (unsigned long*) data;
long width = *data1;
long height = *(data1 + 1)
unsigned char* imageData = (unsigned char*) (data1 + 2);
这里是返回数据的规格:
https://specifications.freedesktop.org/wm-spec/wm-spec-1.3.html#idm140130317554480
根据规范,返回的图像必须是打包的 32 ARGB 格式。但是,我得到的图像似乎不正确。我终于用自己的图标创建了一个测试应用程序。它是一个实心图标,RGB 值分别为 0x20、0x40 和 0x80。
当我在调试器中检查我的变量 imageData 时,我看到的是:
0x80, 0x40, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff (repeat the pattern)
格式似乎是 BGRA,带有额外的四个字节的填充。
如果有人能解释这种差异,我将不胜感激。问候。
【问题讨论】: