OberonCore https://forum.oberoncore.ru/ |
|
Anti-Grain для Ports https://forum.oberoncore.ru/viewtopic.php?f=23&t=3980 |
Страница 1 из 6 |
Автор: | Иван Денисов [ Среда, 30 Май, 2012 07:32 ] |
Заголовок сообщения: | Anti-Grain для Ports |
Подскажите есть ли какие-нибудь наработки по более качественной отрисовке геометрических примитивов в BB? Хотел бы переписать DrawOval и DrawLine очень уж достало как он их криво рисует. |
Автор: | Евгений Темиргалеев [ Среда, 30 Май, 2012 07:43 ] |
Заголовок сообщения: | Re: AntiGain для Ports |
Ports --- абстракция. Поэтому проблему надо понимать, как "криво рисует WinApi", используемый HostPorts для виндового ББ. Так? Попробуйте сделать свою реализацию Ports, которая будет использоваться для вьюшек, которым надо красиво нарисовать. Через OpenGL-какой-нибудь или... Если не ошибаюсь, пример использования специальных портов для вьюшек можно поглядеть у гуйных вьюшек-контролов. |
Автор: | Иван Денисов [ Среда, 30 Май, 2012 07:47 ] |
Заголовок сообщения: | Re: AntiGain для Ports |
Евгений Темиргалеев писал(а): Поэтому проблему надо понимать, как "криво рисует WinApi", используемый HostPorts для виндового ББ. Так? Да, где то встречалось на форуме, что какие-то студенты переписывали HostPorts, но вот теперь не могу найти. Может мне это приснилось ) Но решил спросить все-же.
|
Автор: | Иван Кузьмицкий [ Среда, 30 Май, 2012 07:51 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Человек сподобился портировать AGG на паскаль: http://www.crossgl.com/aggpas Почему бы не рассмотреть возможность портирования на оберон? Ну или Cairo тут упоминалась, не знаю. Хороший вектор нужен, нужен. P.S. И, да, скорее всего будет, наверное, HostPorts другой сделать. На базе того же AGG или Cairo. |
Автор: | Роман М. [ Воскресенье, 03 Июнь, 2012 18:00 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
В Cairo была добавлена поддержка вывода на Win32 GDI, не знаю в какой версии. Сам вывод примитивов очень прост. Стоит проверить этот вариант. |
Автор: | Иван Денисов [ Воскресенье, 03 Июнь, 2012 19:20 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Роман М. писал(а): В Cairo была добавлена поддержка вывода на Win32 GDI, не знаю в какой версии. Сам вывод примитивов очень прост. Стоит проверить этот вариант. С огромным удовольствием, вот бы пример только, не получается разобраться с выводом в этот GDI.
|
Автор: | Иван Денисов [ Понедельник, 04 Июнь, 2012 14:46 ] | ||||
Заголовок сообщения: | Re: Anti-Grain для Ports | ||||
На основе наработок Романа переписал HostPorts (DrawOval, DrawLine, Роман помог с DrawPath), и теперь ББ может рисовать красиво.
|
Автор: | Роман М. [ Понедельник, 04 Июнь, 2012 18:49 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Результаты при просмотре с мобильника мне кажутся вполне удовлетворительными. Если я не проглядел чего. Позже взгляну на HostPorts - что там проблематично. Результаты экспериментов проще и лучше хранить в VCS в кодировке UTF-8. Я так делаю в своем хранилище на https://github.com/romiras/ . По крайней мере, история всех произведенных изменений видна всем и кто захочет, может присоединиться к разработке. Ветку можно назвать host-cairo. |
Автор: | Иван Денисов [ Понедельник, 04 Июнь, 2012 19:41 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Не против вести публичную ветку у тебя, зарегистрировался на github. Но только не в utf8, потом как все будет работать переводи в текст в скажем host-cairo-utf8, а сейчас выделять предлагаю цветом. |
Автор: | Роман М. [ Понедельник, 04 Июнь, 2012 22:42 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Иван Денисов писал(а): Не против вести публичную ветку у тебя, зарегистрировался на github. Но только не в utf8, потом как все будет работать переводи в текст в скажем host-cairo-utf8, а сейчас выделять предлагаю цветом. На открытых хранилищах я буду работать только с кодировкой UTF-8, даже если и в ущерб некоторой функциональности. Если хочешь работать только с форматом ODC, то веди разработку в своем хранилище, а себе я буду дублировать ветку в удобном мне формате, периодически синхронизируя с твоей. |
Автор: | Роман М. [ Понедельник, 04 Июнь, 2012 22:57 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Локально я работаю или с плоским текстом или с odc , но в итоге все равно экспортирую в VCS плоский текст, потому что все доступно публично без ББ. |
Автор: | Иван Денисов [ Вторник, 05 Июнь, 2012 07:51 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Исправил косяки с цветами, начал делать DrawPath, но не могу разобраться как залить путь в Cairo. Обновил архив в сообщении выше. download/file.php?id=3214 |
Автор: | Роман М. [ Среда, 06 Июнь, 2012 00:42 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Иван Денисов писал(а): Исправил косяки с цветами, начал делать DrawPath, но не могу разобраться как залить путь в Cairo. Обновил архив в сообщении выше. download/file.php?id=3214 Иван, попробуй так: Код: IF s = 0 THEN s := 1 END; (поменял порядок вызова)
C.cairo_set_line_width(ctx, s); C.cairo_stroke_preserve(ctx); IF path = Ports.closedPoly THEN C.cairo_fill(ctx) END; |
Автор: | Иван Денисов [ Среда, 06 Июнь, 2012 11:42 ] | ||
Заголовок сообщения: | Re: Anti-Grain для Ports | ||
К сожалению порядок вызова не помог. Проверяю работоспособность на стандартных примерах Omosi
|
Автор: | Роман М. [ Среда, 06 Июнь, 2012 23:43 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Я разобрался в чём дело с заливкой. Всё из-за того, что ломаная линия должна состоять из непрерывных отрезков. Для этого команда Move To делается лишь 1 раз. И Line To сама устанавливает позицию пера на новом месте. Правильно так: Код: C.cairo_move_to(ctx, pts[0].x, pts[0].y); FOR i := 1 TO n-1 DO C.cairo_line_to(ctx, pts[i].x, pts[i].y) END; Однако (из-за антиалиасинга?) получается вот такой результат: Вложение: На данный момент с Cairo реализована только отрисовка ломаных линий. Сплайны Безье остались пока в WinAPI. Вложение:
|
Автор: | Роман М. [ Четверг, 07 Июнь, 2012 08:57 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Иван Денисов писал(а): Отлично! Роман, а у вас обрезается вот так отображения или нет? Не наблюдал я такого. Все Omosi показывались прилично, почти (см. выше) не отличимы от оригинала. Твистер также показывался без проблем.У кого-нибудь есть идеи, что может быть причиной? Из патчей к ББ применял только этот. |
Автор: | Роман М. [ Четверг, 07 Июнь, 2012 09:03 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Роман М. писал(а): Иван Денисов писал(а): Отлично! Роман, а у вас обрезается вот так отображения или нет? Не наблюдал я такого. Все Omosi показывались прилично, почти (см. выше) не отличимы от оригинала. Твистер также показывался без проблем.У кого-нибудь есть идеи, что может быть причиной? Из патчей к ББ применял только этот. Правда, в Линуксе еще не проверял. Позже проверю. [Проверил. В Wine выглядит также неплохо, как и в Windows.] Это на какой демке произошло? |
Автор: | Иван Денисов [ Суббота, 09 Июнь, 2012 18:57 ] | ||
Заголовок сообщения: | Re: Anti-Grain для Ports | ||
Роман М. писал(а): Это на какой демке произошло? Да на любой со встроенными отображениями, например на Cubes и коммандеры только половинками в новом документе. Для проверки, создать новый документ и вставить несколько коммандеров.
|
Автор: | Роман М. [ Суббота, 09 Июнь, 2012 23:19 ] | ||
Заголовок сообщения: | Re: Anti-Grain для Ports | ||
Иван Денисов писал(а): Отлично! Роман, а у вас обрезается вот так отображения или нет? Проблема обнаруживается при наборе версий библиотек из поставки Cairo в Wine, которыми ты пользуешься. При использовании версий библиотек, которыми пользуюсь я из этого сообщения проблема проявляется только у командеров в некоторых случаях: изображения прорисовываются полностью, но при перекрытии другими окнами наблюдается эффект затирания низлежащих областей (dirty window).
У кого-нибудь есть идеи, что может быть причиной?
|
Страница 1 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |