问题描述
任何人都可以解释什么是内在手段以及如何从像素图渲染窗口边框?谢谢。
源代码链接:https://github.com/wmutils/opt/blob/master/chwb2.c#L72
xcb_rectangle_t inner[] = {
/* you're not supposed to understand this. */
{ w,b-o,h+b- o },{ w+b +o,b -o,h+ b - o},{ 0,h,w+b -o,b- o },h +b+ o,w+ b- o,b -o},{ w+b+o,b +h +o,b,b}
};
xcb_rectangle_t outer[] = {
{w + b - o,o,h + b * 2},{w + b,{0,h + b - o,w + b * 2,o},h + b,{1,1,1}
};
xcb_pixmap_t pmap = xcb_generate_id(conn);
xcb_create_pixmap(conn,geom->depth,pmap,win,geom->width + (b*2),geom->height + (b*2));
xcb_gcontext_t gc = xcb_generate_id(conn);
xcb_create_gc(conn,gc,NULL);
values[0] = oc;
xcb_change_gc(conn,XCB_GC_FOREGROUND,values);
xcb_poly_fill_rectangle(conn,5,outer);
values[0] = ic;
xcb_change_gc(conn,inner);
values[0] = pmap;
xcb_change_window_attributes(conn,XCB_CW_BORDER_PIXMAP,values);
解决方法
好吧,这段代码创建了一个像素图,然后绘制到它上面。首先,它用颜色 outer
填充名为 oc
的五个矩形,然后用颜色 inner
填充另外五个名为 ic
的矩形。
要理解每个矩形的含义,我想有一个结果的屏幕截图会有所帮助。然后你可以看到各种距离是什么,也许这足以弄清楚各种矩形的含义。