OberonCore https://forum.oberoncore.ru/ |
|
Anti-Grain для Ports https://forum.oberoncore.ru/viewtopic.php?f=23&t=3980 |
Страница 6 из 6 |
Автор: | Пётр Кушнир [ Вторник, 11 Март, 2014 21:53 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Интересно, вы сделали над AGG dll-обертку на другом языке программирования? |
Автор: | Димыч [ Суббота, 15 Март, 2014 10:11 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Пётр Кушнир писал(а): Интересно, вы сделали над AGG dll-обертку на другом языке программирования? Я не понял вопрос. Обертка написана на С++ Если говорить об AGG на других языках, то я рассматривал вопрос сделать порт на Lisp, но быстро отказался от этой затеи — мало опыта, плюс наличие библиотек, частично реализующих AGG. |
Автор: | Пётр Кушнир [ Воскресенье, 16 Март, 2014 18:38 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Димыч писал(а): Обертка написана на С++ Некошерно Зачем тогда КП, если писать придется на С++?
|
Автор: | Иван Денисов [ Воскресенье, 16 Март, 2014 18:46 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Пётр Кушнир писал(а): Димыч писал(а): Обертка написана на С++ Некошерно Зачем тогда КП, если писать придется на С++?Это временная мера, чтобы все запустилось, мысль правильная, надо понять стоит ли игра свеч, чтобы затем переписать на КП. Вот только у меня как-то глючит, то что я скачал по последним ссылкам Дмитрия... не могу понять, так и должно быть? Дмитрий, напиши, куда смотреть? Я думал, что после фикса со сборщиком трапы перестанут вылетать и в черный не будет окрашиваться, но так вроде все и осталось... |
Автор: | Пётр Кушнир [ Воскресенье, 16 Март, 2014 18:54 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Иван Денисов писал(а): Это временная мера, чтобы все запустилось, мысль правильная, надо понять стоит ли игра свеч Насколько я могу судить, проблема всегда в написании биндинга. Как только биндинг готов - работа встает на рельсы и катится легко. Но это уже давно известно, зачем еще один раз проверять?
|
Автор: | Димыч [ Понедельник, 17 Март, 2014 05:43 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Пётр Кушнир писал(а): Димыч писал(а): Обертка написана на С++ Некошерно Зачем тогда КП, если писать придется на С++?Изначально не было обертки. Был (и остается) код на КП. Обертка появилась, когда появился тупик с реализацией шрифтов на КП. Дело в том, что библиотека AGG написана на C++ с применением шаблонов. В конечном коде (после раскрытия шаблонов) используется «утиная типизация», т.е. стыковка кусков кода осуществляется по сигнатурам, а не по типам. Более того, и в коде на C++, и в коде на Pascal (AggPas), в модулях, связанных со шрифтами, байтовые массивы данных весьма вольно преобразуются от типа к типу, т.е. сначала это массив одного типа, несколькими строками ниже — другого типа. В общем и целом, осилить этот кусок сразу целиком у меня не получилось. Но, поскольку работать надо, я и решил потратить силы и сделать обертку, тем более, что архитектурно то, что легло в основу обертки будет использоваться и в КП. В процессе реализации обертки, а также после некоторых обсуждений здесь и в офлайне появилось понимание того, как надо делать шрифты. Поэтому судьба обертки сейчас под вопросом. Тем не менее, опыт её написания полезный. Сейчас, к своему глубокому сожалению, вынужденно занят ремонтом. Как только появится возможность, продолжу работу. Иван Денисов писал(а): Вот только у меня как-то глючит, то что я скачал по последним ссылкам Дмитрия... не могу понять, так и должно быть? Я исправил только одну ошибку, приводившую к трапу. Связана она была со сборщиком мусора. Есть еще одна, периодически обваливающая ББ. Ошибка плавающая, для вылавливания требуется отладка. Еще есть проблема с некорректной отрисовкой, видимо неправильный расчет координат. Есть еще и другие проблемы: ссылка. |
Автор: | Пётр Кушнир [ Понедельник, 17 Март, 2014 09:59 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
А, понятно. Ну, конечно, реализовывать абстракции ББ непосредственно в DLL это немного странно, но раз уж другого способа нет. Кстати, а вы не думали реализовать что-то типа обертки на все случаи жизни, например, чтобы больше не реализовывать биндинги на КП, а описывать обмен информацией с помощью json например, чтобы передавать сообщения внутрь dll-обертки, там их разбирать и превращать в вызовы библиотек, или объекты в памяти. Накладные расходы, конечно, зато какое удобство. |
Автор: | Димыч [ Понедельник, 17 Март, 2014 10:19 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Пётр Кушнир писал(а): Накладные расходы, конечно, зато какое удобство. Не делал. Пока смысла не было. Для таких целей, в принципе, есть SVG. У меня другой процедурный движок, а делать обобщенную систему цели не было. |
Автор: | Иван Денисов [ Пятница, 21 Март, 2014 12:31 ] | ||
Заголовок сообщения: | Re: Anti-Grain для Ports | ||
Тем временем Дмитрий прислал улучшенный вариант HostPorts на основе Cairo. Улучшена отрисовка кривых Безье и овалов. Обновил его тут: https://bitbucket.org/diamagnetic/bb-cairo и тут: http://oberon.molpit.com/packs/Cairo.txt Сделал также демку CairoDemoBezier, в Блэкбоксе эта синяя фигура крутится
|
Автор: | Роман М. [ Среда, 26 Март, 2014 13:02 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Спасибо, уже добавил себе. Сглаженные кривые выглядят намного приятнее. Да и со шрифтами было бы класно то же самое проделать. Обратите также внимание на следующие фиксации для модулей Ports и HostPorts в моём хранилище: |
Автор: | Димыч [ Вторник, 29 Апрель, 2014 04:40 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Коллеги, у меня маленькое свершение. Заработал вывод шрифтов в AGG. Вложение:
Комментарий к файлу: Первый вывод шрифтом PT Mono a.png [ 1.95 КБ | Просмотров: 11241 ] Я понимаю, что картинка не впечатляет, но эти артефакты вокруг букв - результат числовых ошибок, которые еще предстоит найти. Самое важное, что это заработало принципиально. Правильно считывается шрифтовая информация из операционной системы и правильно выстраиваются кривые. Пока неправильно работает собственно вывод, но это ничего, исправим Подробности и код в репозитории: https://github.com/dmitrys99/BBAGG Как-нибудь выкрою время и напишу «квест» о переводе AGG с С++ и Паскаля со вставкой кусков Питона на BB. Увлекательное мероприятие UPD: См. код в модуле AggTestTT |
Автор: | Илья Ермаков [ Вторник, 29 Апрель, 2014 04:42 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Впечатляет... |
Автор: | Иван Денисов [ Суббота, 24 Май, 2014 15:25 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Исправил косяк с обводкой овалов. "Оказывается" овал то задумывался на демонстрации без заливки, а ее наличие было следствием ошибки. Вложение: Обновленная версия по старой ссылке: http://oberon.molpit.com/packs/Cairo.txt Хранилище перенес сегодня сюда: http://gitlab.molpit.com/oberon/cairo Роман М. писал(а): Обратите также внимание на следующие фиксации для модулей Ports и HostPorts в моём хранилище: Роман, я пока не уверен про эти подчеркивания, буду опираться на версию центра (которой пока нет). Поэтому пока оставлю без них.
|
Автор: | Иван Денисов [ Вторник, 14 Июль, 2020 14:22 ] |
Заголовок сообщения: | Re: Anti-Grain для Ports |
Заметил, что тут в теме ссылки устарели. Актуальные: https://blackbox.oberon.org/extension/Cairo https://gitlab.molpit.org/bindings/Cairo http://comp.molpit.org/bindings/Cairo.txt |
Страница 6 из 6 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |