Author | Message |
---|
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 Какой из них использует азбука? |
| | | lunohod Член клуба 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 |
| | | Otaka Недавний участник форума
Joined: 30 Apr 2010 Posts: 17
Location: Украина Днепропетровск
| Posted: 30.04.2010 19:08 | |
| Первичный осмотр документации уже очень радует. Похоже, это именно то, что нужно. Если оно еще и заводится "с полоборота" на Азбуке, то большего мне и желать не надо. |
| | | lunohod Член клуба The eBook
Joined: 10 Jan 2007 Posts: 4283
Location: Stuttgart, Germany
| Posted: 30.04.2010 20:41 | |
| Otaka wrote: | Первичный осмотр документации уже очень радует. Похоже, это именно то, что нужно. Если оно еще и заводится "с полоборота" на Азбуке, то большего мне и желать не надо. |
Заводится. 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 |
| | | 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 |
| | | dottedmag Член клуба The eBook
Joined: 29 Nov 2007 Posts: 385
| | | | lunohod Член клуба 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 |
| | | Otaka Недавний участник форума
Joined: 30 Apr 2010 Posts: 17
Location: Украина Днепропетровск
| Posted: 01.05.2010 13:10 | |
| Ого. Это классно... но сложно... хотя с примерами и документацией немного помедитировав можно разобраться. _________________ OpenInkpot :: Азбука n516 |
| | | 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 |
| | | lunohod Член клуба 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 |
| | |
| 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
|