LINUX.ORG.RU

раскодирование Х-овых курсоров


0

0

Пытаюсь раскодировать иксовые курсоры - всё удачно, даже анамируются :)

Но.

Вот как должен выглядеть курсор http://www.gamedev.ru/images/?id=3599, 

а выглядит http://www.gamedev.ru/images/?id=3598, т.е. окрашенным как-то неправильно. 

Вот функция раскодирования одной строки из файла:

...
struct RGB
{
   unsigned char r, g, b;
};

struct RGBA
{
   unsigned char r, g, b, a;
};

...

int fmt_read_scanline(fmt_info *finfo, RGBA *scan)
{
    RGB rgb;
    unsigned char a;

    for(int i = 0;i < WIDTH_OF_CURSOR;i++)
    {
        fread(&a, sizeof(unsigned char), 1, fptr);
        fread(&rgb, sizeof(RGB), 1, fptr);

        memcpy(scan+i, &rgb, sizeof(RGB));
        (scan+i)->a = a;
    }

    return SQERR_OK;
}

Считываю байты как и написано в документации - сначала байт альфа канала, потом RGB триплет. Так почему же в итоге курсор выглядит неверно ?

Ну так на беглый взгляд, читаем сначала альфа, то потом должны читать b, потом g, потом r. А в этой функции после альфа записываются три байта bgr в структуру RGB. Следовательно rgb.r = b rgb.g = g rgb.b = r Как видно, все через одно место (:

Chumka ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.