crypt of decay - я искал тебя два дня... [entries|archive|friends|userinfo]
ketmar

[ userinfo | ljr userinfo ]
[ archive | journal archive ]

я искал тебя два дня... [Jun. 6th, 2020|07:50 am]
Previous Entry Add to Memories Tell A Friend Next Entry
два дня искал баг в растеризаторе libart, из-за которого вот так протекает (попробуйте догадаться сами, результат чего это, оно сложно только для меня):


нашёл:


естественно, не в libart, а в моём экпортёре свг. который я писал для библиотеки, где заполненые контуры автоматически закрываются, и поэтому финальный lineto делать не обязательно. libart же полностью доверяет входным данным — и, конечно, сходит с ума на отсутствующем сегменте.

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

по дороге перевёл множество апей с копипасты реаллока на общий апи динамических массивов, убрал отдельный тип «путь с безьерками» (теперь один тип пути на всё), сделал итератор по командам, который автоматически тесселизирует кривые (и использовал где возможно), сменил тесселизатор на улучшеный из моей NanoVega, с защитой от дурной рекурсии на плоских частях.

по дороге продолжаю наслаждаться отсутствием документации. когда я только начинал, обнаружил, что некоторые пути не заливаются. в принципе, понятно: порядок обхода. и winding rule. в библиотеке есть два API для исправления этого: длинно документированое и очень глючное старое, и вообще ни строчкой не документированое хорошо работающее новое. угадать не читая исходников — невозможно.

как работают градиенты — тоже совершенно неясно, опять придётся исходник читать. вот есть linear gradient, с многозначительными параметрами `double a, b, c;`. отлично. я понял, да. это, кажется, уравнение прямой — но хоть строчку об этом можно написать, не?

при этом к куче апей документация таки написана (и вместо .h зачем-то была засунута в .c — потому что Особенности). но написана обычно совершенно на отъебись: две очевидных фразы, и почти ничего про контракты.

само собой, я эту традицию продолжу и ничего исправлять не буду.
Linkmeow!

Comments:
From:(Anonymous)
Date:June 6th, 2020 - 04:10 pm
(Link)
аниме-говно
давай гаечку
From:(Anonymous)
Date:June 8th, 2020 - 12:34 am
(Link)
к этой няшечке просится подпись "зачем ты меня обидел? Чего ты добился?"

https://pm1.narvii.com/6868/9b7f12f5b15da55598b8d03ef5d264c861f705a4r1-1024-720v2_00.jpg