LINUX.ORG.RU

framebuffer 8bpp


0

0

Приветствую всех.

Работаю через фреймбуффер 640х480 8bpp.
Насколько я знаю этот режим цветности предпологает наличие палитры на 256 цветов. Как можно узнать какому индексу в палитре соответствует какой цвет RGB? И наоборот как сконвертировать RGB в индекс из стандартной палитры?



★★★★

я сам не пробовал, так что извиняйте, если навру,
но если посмотреть на drivers/video/fbmem.c:fb_ioctl():
        case FBIOPUTCMAP:
                if (copy_from_user(&cmap, argp, sizeof(cmap)))
                        return -EFAULT;
                return (fb_set_user_cmap(&cmap, info));
        case FBIOGETCMAP:
                if (copy_from_user(&cmap, argp, sizeof(cmap)))
                        return -EFAULT;
                return fb_cmap_to_user(&info->cmap, &cmap);

похоже, то что вам надо.

include/linux/fb.h:
struct fb_cmap {
        __u32 start;                    /* First entry  */
        __u32 len;                      /* Number of entries */
        __u16 *red;                     /* Red values   */
        __u16 *green;
        __u16 *blue;
        __u16 *transp;                  /* transparency, can be NULL */
};

idle ★★★★★
()
Ответ на: комментарий от idle

Спасибо, просмотр и установка палитры работает.
Такой еще вопрос, может кто знает.
Допустим есть некая палитра на 256 цветов.
Я хочу отобразить некий цвет RGB, которого нету в палитре.
Получается я должен просмотреть палитру и найти наиболее похожий цвет.
Может кто-то знает формулы какие-нить?
Первое что лезет в голову это пробежать и найти цвет с минимальным ErrorRate по такой форуле
ErrorRate= abs(R1-R0)+abs(G1-G0)+abs(B1-B0)
Или я заблуждаюсь где-то?



Dead ★★★★
() автор топика
Ответ на: комментарий от anonymous

Простым перебором медленновато ...
Если индекс упорядочен, то можно еще присабачить "binary search" ...
Если палитра, так называемая "wep palette", т.е. 6х6х6, то
еще все делается еше быстрее ...

carrot
()
Ответ на: комментарий от carrot

pardon, "web palette":

The web palette is a set of 216 colors that will not dither or
shift on PCs or Macs. Browsers use this built-in palette when
they need to render colors on monitors with only 256 colors
(also called 8-bit color monitors).

carrot
()
Ответ на: комментарий от carrot

> Простым перебором медленновато ...

чем же медленновато? там всего 256 цветов в палитре.
разве что все это работает на 386 проце, тогда есть смысл.

и мне кажется что более естественно минимизировать сумму квадратов
разностей, а не сумму модулей.

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