void pixel (int x, int y, unsigned colidx)
{
unsigned xormode;
union multiptr loc;
int x1=480-x;
int y1=272-y;
if ((x1 < 0) || ((uint32_t)x1 >= var.xres_virtual) ||
(y1< 0) || ((uint32_t)y1 >= var.yres_virtual))
return;
xormode = colidx & XORMODE;
colidx &= ~XORMODE;
#ifdef DEBUG
if (colidx > 255) {
fprintf (stderr, "WARNING: color value = %u, must be <256\n",
colidx);
return;
}
#endif
loc.p8 = line_addr [y1] + x1 * bytes_per_pixel;
__setpixel (loc, xormode, colormap [colidx]);
}rcu_preempt detected stalls on CPUs/tasks: {} (detected by 1, t=24007 jiffies, g=-98, c=-99, q=54)
tslib中绘制动作都是通过直接描绘像素点来确定的,所以直接对像素点的x.y进行转换即可完成坐标变换。
现在需要将图片旋转180°,则直接用480-x,272-y(480,272为屏幕大小)即可。