Библиотека рисования

 
Libroom Forum IndexOpenInkpot
AuthorMessage

Otaka
Недавний участник форума

Недавний участник форума



Joined: 30 Apr 2010
Posts: 17


Location: Украина Днепропетровск

Posted: 30.04.2010 16:43    

В OpenInkpot в приложениях используется библиотека Evas.
А можно ли использовать что-нибудь другое? Что-нибудь не такое...абстрактно-автоматизированное.
Мне не нужны эти автообновления, векторные объекты которые постоянно хранятся в памяти. Мне не нужна вся эта сложность.
Я еще не настолько продвинулся в программировании для линукса, поэтому прошу помощи. Хотелось бы какую-нибудь простенькую библиотеку для рисования, которую можно было бы всунуть в Азбуку N516.

Гуглинг дает очень много чего, но одни библиотеки для frame buffer, некоторые под X11 (как-то так). Может можно взять и самому просто рисовать в память видеоадаптера?
Кто-то может послать меня читать исходники evas, но я уже там был. evas использует для своей работы разные движки:
gl_x11
gl_common
gl_glew
quartz
software_16
software_x11
xrender_x11
fb
directfb
cairo_x11
cairo_common
Какой из них использует азбука?
 
View user's profile ^

lunohod
Член клуба The eBook

Член клуба The eBook



Joined: 10 Jan 2007
Posts: 4283


Location: Stuttgart, Germany

Posted: 30.04.2010 17:00    

Otaka

Можно использовать xcb. http://xcb.freedesktop.org/tutorial/
_________________
V3, n516, PRS-505, iLiad, eSlick, Samsung E60, K3, K4NT, Onyx M90, PB 912, Kobo Mini
 
View user's profile ^

Otaka
Недавний участник форума

Недавний участник форума



Joined: 30 Apr 2010
Posts: 17


Location: Украина Днепропетровск

Posted: 30.04.2010 19:08    

Very Happy Первичный осмотр документации уже очень радует.
Похоже, это именно то, что нужно.
Если оно еще и заводится "с полоборота" на Азбуке, то большего мне и желать не надо.
 
View user's profile ^

lunohod
Член клуба The eBook

Член клуба The eBook



Joined: 10 Jan 2007
Posts: 4283


Location: Stuttgart, Germany

Posted: 30.04.2010 20:41    

Otaka wrote:
Very Happy Первичный осмотр документации уже очень радует.
Похоже, это именно то, что нужно.
Если оно еще и заводится "с полоборота" на Азбуке, то большего мне и желать не надо.


Заводится. fbreader и coolreader тоже используют xcb напрямую.

вот здесь создаётся окно:
http://git.openinkpot.org/fbreader.git/tree/zlibrary/ui/src/ewl/view/Z LEwlViewWidget.cpp#n127

а вот так можно рисовать:
Code:

   for(int i = 0; i < 256; i++)  {
      for(int j = 0; j < 600; j++) {
         xcb_image_put_pixel(im, j, i, pal[i]);
      }
   }

   xcb_image_shm_put (connection, window, gc,
         im, shminfo,
         0, 0, 0, 0, w, h, 0);

   xcb_flush(connection);


тут main loop с реакцией на кнопки и разные события:
http://git.openinkpot.org/fbreader.git/tree/zlibrary/ui/src/ewl/librar y/ZLibrary.cpp#n390
_________________
V3, n516, PRS-505, iLiad, eSlick, Samsung E60, K3, K4NT, Onyx M90, PB 912, Kobo Mini
 
View user's profile ^

Otaka
Недавний участник форума

Недавний участник форума



Joined: 30 Apr 2010
Posts: 17


Location: Украина Днепропетровск

Posted: 30.04.2010 23:36    

Спасибо большое. вот теперь я смог нормально, простым и понятным кодом нарисовать кружок посреди экрана, без всех этих дополнительных непонятных библиотек(ecore, evas, ecore-evas, efreet, edje, eina...).

Теперь я стал на шаг ближе к реализации своей идеи(примеры кода из FBReader - кладезь полезностей, я глядя в исходники gm и madeye решил, что там все основано на евасе и забил на просмотр других).


Но вот что меня очень смущает. Посмотрев список функций, я вижу, что функция xcb_image_text_8_checked принимает char* в качестве строки и выводит её на экран. А если я хочу писать Юникодом(сузим круг - японским)? Таких функций не видел. Или оно по умолчанию Юникодное?
_________________
OpenInkpot :: Азбука n516
 
View user's profile ^

dottedmag
Член клуба The eBook

Член клуба The eBook



Joined: 29 Nov 2007
Posts: 385



Posted: 01.05.2010 11:42    

pango бери
_________________
OpenInkpot: http://openinkpot.org/
 
View user's profile ^

lunohod
Член клуба The eBook

Член клуба The eBook



Joined: 10 Jan 2007
Posts: 4283


Location: Stuttgart, Germany

Posted: 01.05.2010 12:25    

Вот пример отрисовки текста в xcb_image с помощью pango:
http://git.openinkpot.org/fbreader.git/tree/zlibrary/ui/src/ewl/view/Z LEwlPaintContext.cpp?h=test_pango#n344

Там выше в файле можно найти инициализацию pango и выставление нужного шрифта. Код не совсем рабочий, наверное, но принцип должен быть понятен.
_________________
V3, n516, PRS-505, iLiad, eSlick, Samsung E60, K3, K4NT, Onyx M90, PB 912, Kobo Mini
 
View user's profile ^

Otaka
Недавний участник форума

Недавний участник форума



Joined: 30 Apr 2010
Posts: 17


Location: Украина Днепропетровск

Posted: 01.05.2010 13:10    

Ого. Это классно... но сложно... хотя с примерами и документацией немного помедитировав можно разобраться.
_________________
OpenInkpot :: Азбука n516
 
View user's profile ^

Otaka
Недавний участник форума

Недавний участник форума



Joined: 30 Apr 2010
Posts: 17


Location: Украина Днепропетровск

Posted: 07.08.2010 20:13    

Долгое время ничего не делалось(писался диплом... работа...), но я снова приступил к своей разработке.

Сейчас у меня все рисуется прямо в буффер xcb_image_t. Функции по прорисовке, рисованию текста, копированию графических блоков я написал, но вот как этот самый xcb_image_t вывести на экран?
xcb_image_put? не рисует, а почему не знаю. Оно ведь никаких кодов ошибки не возвращает, а молча проглатывает и все.

lunohod wrote:

а вот так можно рисовать:
Код:
   for(int i = 0; i < 256; i++)  {
      for(int j = 0; j < 600; j++) {
         xcb_image_put_pixel(im, j, i, pal[i]);
      }
   }
   xcb_image_shm_put (connection, window, gc,
         im, shminfo,
         0, 0, 0, 0, w, h, 0);
   xcb_flush(connection);



В примере вижу некое xcb_image_shm_put, но ему нужно передать xcb_shm_segment_info_t, а где его достать непонятно.
Когда гуглил видел еще функцию xcb_image_shm_create, вот только на официальном xcb сайте про нее ни слова.
Подскажите пожалуйста как вывести xcbimage созданный с помощью xcb_image_create на экран?
_________________
OpenInkpot :: Азбука n516
 
View user's profile ^

lunohod
Член клуба The eBook

Член клуба The eBook



Joined: 10 Jan 2007
Posts: 4283


Location: Stuttgart, Germany

Posted: 07.08.2010 20:19    

xcb_image_put (xcb_connection_t * conn,
xcb_drawable_t draw,
xcb_gcontext_t gc,
xcb_image_t * image,
int16_t x,
int16_t y,
uint8_t left_pad);
_________________
V3, n516, PRS-505, iLiad, eSlick, Samsung E60, K3, K4NT, Onyx M90, PB 912, Kobo Mini
 
View user's profile ^
Libroom Forum IndexOpenInkpotAll times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum

© Libroom, 2021