я искал тебя два дня... |
[Jun. 6th, 2020|07:50 am] |
два дня искал баг в растеризаторе libart, из-за которого вот так протекает (попробуйте догадаться сами, результат чего это, оно сложно только для меня):
нашёл:
естественно, не в libart, а в моём экпортёре свг. который я писал для библиотеки, где заполненые контуры автоматически закрываются, и поэтому финальный lineto делать не обязательно. libart же полностью доверяет входным данным — и, конечно, сходит с ума на отсутствующем сегменте.
в общем, тупо научил libart автоматически всё закрывать в заполнялке — потому что никакой причины этого не делать нет.
по дороге перевёл множество апей с копипасты реаллока на общий апи динамических массивов, убрал отдельный тип «путь с безьерками» (теперь один тип пути на всё), сделал итератор по командам, который автоматически тесселизирует кривые (и использовал где возможно), сменил тесселизатор на улучшеный из моей NanoVega, с защитой от дурной рекурсии на плоских частях.
по дороге продолжаю наслаждаться отсутствием документации. когда я только начинал, обнаружил, что некоторые пути не заливаются. в принципе, понятно: порядок обхода. и winding rule. в библиотеке есть два API для исправления этого: длинно документированое и очень глючное старое, и вообще ни строчкой не документированое хорошо работающее новое. угадать не читая исходников — невозможно.
как работают градиенты — тоже совершенно неясно, опять придётся исходник читать. вот есть linear gradient, с многозначительными параметрами `double a, b, c;`. отлично. я понял, да. это, кажется, уравнение прямой — но хоть строчку об этом можно написать, не?
при этом к куче апей документация таки написана (и вместо .h зачем-то была засунута в .c — потому что Особенности). но написана обычно совершенно на отъебись: две очевидных фразы, и почти ничего про контракты.
само собой, я эту традицию продолжу и ничего исправлять не буду. |
|
|
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 | |