OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 06:59

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




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

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

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


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

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

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

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


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

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


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

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

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

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

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


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

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


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

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


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

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


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


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

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


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

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


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

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

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


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

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


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

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


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

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1177
Откуда: Мариуполь
Иван Денисов писал(а):
Исправил косяки с цветами, начал делать 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
Сообщения: 3774
К сожалению порядок вызова не помог. Проверяю работоспособность на стандартных примерах Omosi :)


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

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


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


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

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

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


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

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

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


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

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

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

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


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

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

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


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

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

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


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

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


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

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


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

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