OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 17 Декабрь, 2018 20:44

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 113 ]  На страницу 1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Anti-Grain для Ports
СообщениеДобавлено: Среда, 30 Май, 2012 07:32 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
Подскажите есть ли какие-нибудь наработки по более качественной отрисовке геометрических примитивов в BB?

Хотел бы переписать DrawOval и DrawLine очень уж достало как он их криво рисует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AntiGain для Ports
СообщениеДобавлено: Среда, 30 Май, 2012 07:43 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4487
Откуда: Россия, Орёл
Ports --- абстракция.

Поэтому проблему надо понимать, как "криво рисует WinApi", используемый HostPorts для виндового ББ. Так?

Попробуйте сделать свою реализацию Ports, которая будет использоваться для вьюшек, которым надо красиво нарисовать. Через OpenGL-какой-нибудь или... Если не ошибаюсь, пример использования специальных портов для вьюшек можно поглядеть у гуйных вьюшек-контролов.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: AntiGain для Ports
СообщениеДобавлено: Среда, 30 Май, 2012 07:47 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
Евгений Темиргалеев писал(а):
Поэтому проблему надо понимать, как "криво рисует WinApi", используемый HostPorts для виндового ББ. Так?
Да, где то встречалось на форуме, что какие-то студенты переписывали HostPorts, но вот теперь не могу найти. Может мне это приснилось ) Но решил спросить все-же.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Среда, 30 Май, 2012 07:51 

Зарегистрирован: Четверг, 17 Ноябрь, 2005 11:51
Сообщения: 2930
Откуда: г. Ярославль
Человек сподобился портировать AGG на паскаль: http://www.crossgl.com/aggpas

Почему бы не рассмотреть возможность портирования на оберон? Ну или Cairo тут упоминалась, не знаю.

Хороший вектор нужен, нужен.

P.S. И, да, скорее всего будет, наверное, HostPorts другой сделать. На базе того же AGG или Cairo.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Воскресенье, 03 Июнь, 2012 18:00 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
В Cairo была добавлена поддержка вывода на Win32 GDI, не знаю в какой версии. Сам вывод примитивов очень прост. Стоит проверить этот вариант.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Воскресенье, 03 Июнь, 2012 19:20 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
Роман М. писал(а):
В Cairo была добавлена поддержка вывода на Win32 GDI, не знаю в какой версии. Сам вывод примитивов очень прост. Стоит проверить этот вариант.
С огромным удовольствием, вот бы пример только, не получается разобраться с выводом в этот GDI.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Понедельник, 04 Июнь, 2012 14:46 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
На основе наработок Романа переписал HostPorts (DrawOval, DrawLine, Роман помог с DrawPath), и теперь ББ может рисовать красиво.


Вложения:
Комментарий к файлу: Cairo (переименована), HostPorts, ObxLines, dlls
cairo.7z [717.97 КБ]
Скачиваний: 180
plot_test.png
plot_test.png [ 62.15 КБ | Просмотров: 8907 ]
cairoTest_win7.png
cairoTest_win7.png [ 42.68 КБ | Просмотров: 8906 ]


Последний раз редактировалось Иван Денисов Понедельник, 11 Июнь, 2012 05:57, всего редактировалось 4 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Понедельник, 04 Июнь, 2012 18:49 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Результаты при просмотре с мобильника мне кажутся вполне удовлетворительными. Если я не проглядел чего.
Позже взгляну на HostPorts - что там проблематично.
Результаты экспериментов проще и лучше хранить в VCS в кодировке UTF-8. Я так делаю в своем хранилище на https://github.com/romiras/ . По крайней мере, история всех произведенных изменений видна всем и кто захочет, может присоединиться к разработке.
Ветку можно назвать host-cairo.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Понедельник, 04 Июнь, 2012 19:41 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
Не против вести публичную ветку у тебя, зарегистрировался на github. Но только не в utf8, потом как все будет работать переводи в текст в скажем host-cairo-utf8, а сейчас выделять предлагаю цветом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Понедельник, 04 Июнь, 2012 22:42 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Иван Денисов писал(а):
Не против вести публичную ветку у тебя, зарегистрировался на github. Но только не в utf8, потом как все будет работать переводи в текст в скажем host-cairo-utf8, а сейчас выделять предлагаю цветом.

На открытых хранилищах я буду работать только с кодировкой UTF-8, даже если и в ущерб некоторой функциональности. Если хочешь работать только с форматом ODC, то веди разработку в своем хранилище, а себе я буду дублировать ветку в удобном мне формате, периодически синхронизируя с твоей.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Понедельник, 04 Июнь, 2012 22:57 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Локально я работаю или с плоским текстом или с odc , но в итоге все равно экспортирую в VCS плоский текст, потому что все доступно публично без ББ.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Вторник, 05 Июнь, 2012 07:51 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
Исправил косяки с цветами, начал делать DrawPath, но не могу разобраться как залить путь в Cairo.
Обновил архив в сообщении выше.
download/file.php?id=3214


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Среда, 06 Июнь, 2012 00:42 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Иван Денисов писал(а):
Исправил косяки с цветами, начал делать 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;
(поменял порядок вызова)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Среда, 06 Июнь, 2012 11:42 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
К сожалению порядок вызова не помог. Проверяю работоспособность на стандартных примерах Omosi :)


Вложения:
omosi.png
omosi.png [ 14.84 КБ | Просмотров: 8795 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Среда, 06 Июнь, 2012 23:43 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Я разобрался в чём дело с заливкой. Всё из-за того, что ломаная линия должна состоять из непрерывных отрезков. Для этого команда 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-fill.png
cairo-fill.png [ 15.16 КБ | Просмотров: 8767 ]


На данный момент с Cairo реализована только отрисовка ломаных линий. Сплайны Безье остались пока в WinAPI.
Вложение:
HostCairo-v0.1.zip [22.81 КБ]
Скачиваний: 187


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Четверг, 07 Июнь, 2012 05:11 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
Отлично! Роман, а у вас обрезается вот так отображения или нет?

У кого-нибудь есть идеи, что может быть причиной?


Вложения:
Комментарий к файлу: недорисовка
cut.png
cut.png [ 16.5 КБ | Просмотров: 8752 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Четверг, 07 Июнь, 2012 08:57 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Иван Денисов писал(а):
Отлично! Роман, а у вас обрезается вот так отображения или нет?

У кого-нибудь есть идеи, что может быть причиной?
Не наблюдал я такого. Все Omosi показывались прилично, почти (см. выше) не отличимы от оригинала. Твистер также показывался без проблем.
Из патчей к ББ применял только этот.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Четверг, 07 Июнь, 2012 09:03 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Роман М. писал(а):
Иван Денисов писал(а):
Отлично! Роман, а у вас обрезается вот так отображения или нет?

У кого-нибудь есть идеи, что может быть причиной?
Не наблюдал я такого. Все Omosi показывались прилично, почти (см. выше) не отличимы от оригинала. Твистер также показывался без проблем.
Из патчей к ББ применял только этот.

Правда, в Линуксе еще не проверял. Позже проверю. [Проверил. В Wine выглядит также неплохо, как и в Windows.]
Это на какой демке произошло?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Суббота, 09 Июнь, 2012 18:57 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2236
Роман М. писал(а):
Это на какой демке произошло?

Да на любой со встроенными отображениями, например на Cubes и коммандеры только половинками в новом документе. Для проверки, создать новый документ и вставить несколько коммандеров.


Вложения:
demo.png
demo.png [ 30.71 КБ | Просмотров: 8689 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Суббота, 09 Июнь, 2012 23:19 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1162
Откуда: Tel-Aviv
Иван Денисов писал(а):
Отлично! Роман, а у вас обрезается вот так отображения или нет?

У кого-нибудь есть идеи, что может быть причиной?
Проблема обнаруживается при наборе версий библиотек из поставки Cairo в Wine, которыми ты пользуешься. При использовании версий библиотек, которыми пользуюсь я из этого сообщения проблема проявляется только у командеров в некоторых случаях: изображения прорисовываются полностью, но при перекрытии другими окнами наблюдается эффект затирания низлежащих областей (dirty window).


Вложения:
cairo-commander-issue-wine.png
cairo-commander-issue-wine.png [ 5.32 КБ | Просмотров: 8659 ]
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 113 ]  На страницу 1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2018, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB