(No version information available, might only be in Git)
CairoFillRule используется для выбора способа заполнения путей. Для обоих правил заливки включение точки в заливку определяется путем проведения луча из этой точки в бесконечность и рассмотрения пересечений с путем. Луч может быть в любом направлении, если он не проходит через конечную точку сегмента или не имеет сложного пересечения, такого как пересечение касательной к пути. (Обратите внимание, что на самом деле заливка таким образом не реализуется. Это просто описание применяемого правила.)
Правило заливки по умолчанию - CairoFillRule::WINDING
.
CairoFillRule::WINDING
Если путь пересекает луч слева направо, считается +1. Если путь пересекает луч справа налево, считается -1. (Левая и правая стороны определяются с точки зрения взгляда вдоль луча из начальной точки.) Если общее количество не равно нулю, точка будет заполнена.
CairoFillRule::EVEN_ODD
Подсчитывает общее количество пересечений без учета ориентации контура. Если общее количество пересечений нечетное, точка будет заполнена.