OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Понедельник, 24 Сентябрь, 2018 19:04

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




Начать новую тему Ответить на тему  [ Сообщений: 113 ]  На страницу Пред.  1, 2, 3, 4, 5, 6
Автор Сообщение
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Вторник, 11 Март, 2014 21:53 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2518
Откуда: Россия, Ярославль
Интересно, вы сделали над AGG dll-обертку на другом языке программирования?


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

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Пётр Кушнир писал(а):
Интересно, вы сделали над AGG dll-обертку на другом языке программирования?

Я не понял вопрос.
Обертка написана на С++

Если говорить об AGG на других языках, то я рассматривал вопрос сделать порт на Lisp, но быстро отказался от этой затеи — мало опыта, плюс наличие библиотек, частично реализующих AGG.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Воскресенье, 16 Март, 2014 18:38 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2518
Откуда: Россия, Ярославль
Димыч писал(а):
Обертка написана на С++
Некошерно :) Зачем тогда КП, если писать придется на С++?


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

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2185
Откуда: Красноярск
Пётр Кушнир писал(а):
Димыч писал(а):
Обертка написана на С++
Некошерно :) Зачем тогда КП, если писать придется на С++?

Это временная мера, чтобы все запустилось, мысль правильная, надо понять стоит ли игра свеч, чтобы затем переписать на КП. Вот только у меня как-то глючит, то что я скачал по последним ссылкам Дмитрия... не могу понять, так и должно быть? Дмитрий, напиши, куда смотреть? Я думал, что после фикса со сборщиком трапы перестанут вылетать и в черный не будет окрашиваться, но так вроде все и осталось...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Воскресенье, 16 Март, 2014 18:54 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2518
Откуда: Россия, Ярославль
Иван Денисов писал(а):
Это временная мера, чтобы все запустилось, мысль правильная, надо понять стоит ли игра свеч
Насколько я могу судить, проблема всегда в написании биндинга. Как только биндинг готов - работа встает на рельсы и катится легко. Но это уже давно известно, зачем еще один раз проверять?


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

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Пётр Кушнир писал(а):
Димыч писал(а):
Обертка написана на С++
Некошерно :) Зачем тогда КП, если писать придется на С++?

Изначально не было обертки. Был (и остается) код на КП. Обертка появилась, когда появился тупик с реализацией шрифтов на КП.

Дело в том, что библиотека AGG написана на C++ с применением шаблонов. В конечном коде (после раскрытия шаблонов) используется «утиная типизация», т.е. стыковка кусков кода осуществляется по сигнатурам, а не по типам. Более того, и в коде на C++, и в коде на Pascal (AggPas), в модулях, связанных со шрифтами, байтовые массивы данных весьма вольно преобразуются от типа к типу, т.е. сначала это массив одного типа, несколькими строками ниже — другого типа. В общем и целом, осилить этот кусок сразу целиком у меня не получилось. Но, поскольку работать надо, я и решил потратить силы и сделать обертку, тем более, что архитектурно то, что легло в основу обертки будет использоваться и в КП.

В процессе реализации обертки, а также после некоторых обсуждений здесь и в офлайне появилось понимание того, как надо делать шрифты. Поэтому судьба обертки сейчас под вопросом.
Тем не менее, опыт её написания полезный.

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

Иван Денисов писал(а):
Вот только у меня как-то глючит, то что я скачал по последним ссылкам Дмитрия... не могу понять, так и должно быть?

Я исправил только одну ошибку, приводившую к трапу. Связана она была со сборщиком мусора. Есть еще одна, периодически обваливающая ББ. Ошибка плавающая, для вылавливания требуется отладка. Еще есть проблема с некорректной отрисовкой, видимо неправильный расчет координат.
Есть еще и другие проблемы: ссылка.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Понедельник, 17 Март, 2014 09:59 

Зарегистрирован: Вторник, 29 Август, 2006 12:32
Сообщения: 2518
Откуда: Россия, Ярославль
А, понятно.

Ну, конечно, реализовывать абстракции ББ непосредственно в DLL это немного странно, но раз уж другого способа нет.
Кстати, а вы не думали реализовать что-то типа обертки на все случаи жизни, например, чтобы больше не реализовывать биндинги на КП, а описывать обмен информацией с помощью json например, чтобы передавать сообщения внутрь dll-обертки, там их разбирать и превращать в вызовы библиотек, или объекты в памяти.
Накладные расходы, конечно, зато какое удобство.


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

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Пётр Кушнир писал(а):
Накладные расходы, конечно, зато какое удобство.

Не делал. Пока смысла не было. Для таких целей, в принципе, есть SVG.
У меня другой процедурный движок, а делать обобщенную систему цели не было.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Пятница, 21 Март, 2014 12:31 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2185
Откуда: Красноярск
Тем временем Дмитрий прислал улучшенный вариант HostPorts на основе Cairo. Улучшена отрисовка кривых Безье и овалов.

Обновил его тут:
https://bitbucket.org/diamagnetic/bb-cairo
и тут:
http://oberon.molpit.com/packs/Cairo.txt

Сделал также демку CairoDemoBezier, в Блэкбоксе эта синяя фигура крутится :)


Вложения:
bezier.png
bezier.png [ 26.39 КБ | Просмотров: 3491 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Среда, 26 Март, 2014 13:02 
Аватара пользователя

Зарегистрирован: Пятница, 25 Сентябрь, 2009 13:10
Сообщения: 1158
Откуда: Tel-Aviv
Спасибо, уже добавил себе. Сглаженные кривые выглядят намного приятнее. Да и со шрифтами было бы класно то же самое проделать.

Обратите также внимание на следующие фиксации для модулей Ports и HostPorts в моём хранилище:
  1. 2009 Aug 06, BdT, jt, DrawSpace added (underlining spaces)
  2. HostPortsCairo synced with HostPortsGDI32, adding DrawSpace


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

Зарегистрирован: Среда, 29 Март, 2006 12:09
Сообщения: 495
Коллеги, у меня маленькое свершение.
Заработал вывод шрифтов в AGG.
Вложение:
Комментарий к файлу: Первый вывод шрифтом PT Mono
a.png
a.png [ 1.95 КБ | Просмотров: 3400 ]

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

Правильно считывается шрифтовая информация из операционной системы и правильно выстраиваются кривые. Пока неправильно работает собственно вывод, но это ничего, исправим :)

Подробности и код в репозитории:

https://github.com/dmitrys99/BBAGG

Как-нибудь выкрою время и напишу «квест» о переводе AGG с С++ и Паскаля со вставкой кусков Питона на BB. Увлекательное мероприятие :)

UPD: См. код в модуле AggTestTT


Последний раз редактировалось Димыч Вторник, 29 Апрель, 2014 04:44, всего редактировалось 1 раз.

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

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 8989
Откуда: Россия, Орёл
Впечатляет...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Anti-Grain для Ports
СообщениеДобавлено: Суббота, 24 Май, 2014 15:25 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 2185
Откуда: Красноярск
Исправил косяк с обводкой овалов. "Оказывается" овал то задумывался на демонстрации без заливки, а ее наличие было следствием ошибки.

Вложение:
new.png
new.png [ 37.04 КБ | Просмотров: 3312 ]

Обновленная версия по старой ссылке:
http://oberon.molpit.com/packs/Cairo.txt

Хранилище перенес сегодня сюда:
http://gitlab.molpit.com/oberon/cairo

Роман М. писал(а):
Обратите также внимание на следующие фиксации для модулей Ports и HostPorts в моём хранилище:
  1. 2009 Aug 06, BdT, jt, DrawSpace added (underlining spaces)
  2. HostPortsCairo synced with HostPortsGDI32, adding DrawSpace
Роман, я пока не уверен про эти подчеркивания, буду опираться на версию центра (которой пока нет). Поэтому пока оставлю без них.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 113 ]  На страницу Пред.  1, 2, 3, 4, 5, 6

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


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

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


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

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