201306131508Recovery 和Charger 模式下屏幕旋轉180 度, 尚未進入 android

Recovery 和Charger 模式下屏幕旋轉180 度, 尚未進入 android
或是在 Droidboot 因為 [硬體工程師接錯導致整個畫面反轉時], 這時候硬體不改
driver 也不改的狀況下, 只好改程式的方法如下


解決方法:
1.在bootable\recovery\minui\Graphics.c 文件找到gr_flip(void)方法
  把memcpy(gr_framebuffer[gr_active_fb].da ta,gr_mem_surface.data,fi.line_length*vi.yres);
  修改為
  rotate_180(gr_framebuffer[gr_active_fb].da ta,gr_mem_surface.data,fi.line_length*vi.yres);

2. 添加方法
void *rotate_180(void *_dst,const void *_src,int len)
{
    int pixelSize = PIXEL_SIZE, size = 0;
    int step = len / pixelSize;
    unsigned char *dst = (unsigned char *)_dst;
    const unsigned char *src = (unsigned char *)_src + len;
    while((step--) > 0){
        size = pixelSize;
        src -=size;
        while((size--) > 0){
            *dst++ = *src++;
        }
        src -=pixelSize;
    }
    return _dst;
}

rotate_180 方法的作用就是把buffer 中的數據按像素倒轉過來
例如:原始數據

{(1,2,3),(4,5,6),(7,8,9),

 (a,b,c),(d,e,f),(g,h,i),

  (A,B,C),(D,E,F),(G,H,I)

}

180 度旋轉後數據

{(G,H,I),(D,E,F),(A,B,C),

 (g,h,i),(d,e,f),(a,b,c),

  (7,8,9),(4,5,6),(1,2,3)

}

每個像素的數據不變,以像素為單位旋轉順序
這樣就完成了旋轉

沒有上一則|日誌首頁|沒有下一則
回應





Powered by Xuite
    沒有新回應!
關鍵字