gf_context_set_polyfill()

Установка способа заливки полигонов

Прототип:

#include <gf/gf.h>
void gf_context_set_polyfill( gf_context_t context,
int polyfill );

Аргументы:

context
Дескриптор графического контекста для установки правил заливки полигона.
polyfill
Способ заливки:
GF_CONTEXT_POLYFILL_CONVEX
GF_CONTEXT_POLYFILL_EVENODD
правило, используемое по умолчанию
GF_CONTEXT_POLYFILL_NONZERO

Библиотека:

gf

Описание:

Данная функция устанавливает способ заливки полигонов для последующих операций с указанным контекстом context. Параметр polyfill определяет способ рендеринга полигонов с заливкой. Если производится рисование заведомо простых выпуклых полигонов, то рендеринг можно ускорить, используя константу GF_CONTEXT_POLYFILL_CONVEX.

По умолчанию все полигоны считаются самопересекающимися, к которым применяется четно-нечетный алгоритм GF_CONTEXT_POLYFILL_EVENODD, который гласит: если область перекрывается нечетное количество раз, то она не заполняется. Другой способ посмотреть на это - провести горизонталь через многоугольник. Двигаясь по ней и пересекая первое ребро полигона, вы окажетесь внутри многоугольника; пересекая второе ребро вы окажетесь вне его:

fill1.gif
Рисунок 1. Заполнение простого выпуклого полигона

Это правило можнт быть расширено на более сложный случай:

fill2.gif
Рисунок 2. Заполнение самопересекающегося полигона

Константа GF_CONTEXT_POLYFILL_NONZERO позволяет производить заливку всех областей внутри самопересекающегося полигона.

Классификация:

Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework

Безопасность использования
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

gf_context_set_linejoin(), gf_draw_poly_fill()

Основы рисования: Рисование линий и полигонов




Предыдущий раздел: GF API