星期一, 3月 27, 2006

nanox - DrawImageFromFile

PWMIMAGEHDR
typedef struct {
int width; /* image width in pixels*/
int height; /* image height in pixels*/
int planes; /* # image planes*/
int bpp; /* bits per pixel (1, 4 or 8)*/
int pitch; /* bytes per line*/
int bytesperpixel; /* bytes per pixel*/
int compression; /* compression algorithm*/
int palsize; /* palette size*/
long transcolor; /* transparent color or -1 if none*/
MWPALENTRY * palette; /* palette*/
MWUCHAR * imagebits; /* image bits (dword right aligned)*/
} MWIMAGEHDR, *PMWIMAGEHDR;

實際image bitmap 放在 *imagebits 中。
因為到了load時才會知道image的size,所以這個buffer是runtime alloc的。
height * width * bytesperpixel。

int GeDecodeImage(PSD psd, buffer_t *src, char *path, int flags)

實際return的是一個id,PIMAGEITEM的id。
PIMAGEITEM的一個property就是PWIMAGEHDR <- 實際放image bmp 的buffer。

所以

LoadImageFromFile(PSD psd, char *path, int flag)

return的是一個id。就是PIMAGEITEM的id.

nanox將所有物件都用id來辨別,用FindXXX(id)來找出該id 的structure head。
所有物件都會放在一個linking list中。

實際的device driver是 src/driver/fb.c。
又依照color depth,使用fbline32alpha.c

所以PSD->DrawPixel是fbline32alpha.c的drawpixel( )。

沒有留言:

網誌存檔