Создание новой поверхности, пригодной для ассоциации со слоем
#include <gf/gf.h>
int gf_surface_create_layer( gf_surface_t *psurface,
gf_layer_t *layer,
int nlayers,
int surface_index,
int w,
int h,
gf_format_t format,
const gf_palette_t *palette,
uint32_t flags );
- psurface
- Указатель на память, куда будет сохранен дескриптор создаваемой поверхности.
- layer
- Массив дескрипторов слоёв, возвращенных функцией gf_layer_attach(), с которыми может ассоциироваться создаваемая поверхность.
- nlayers
- Число дескрипторов слоев в массиве layer.
- surface_index
- Индекс поверхности, используемый только для планарных форматов слоев (напрмер, YUV), которые предполагают несколько поверхностей для каждой составляющей цветового пространства. Для не планарных форматов должно использоваться значение
0
.
- w,h
- Ширина и высота поверхности в пикселях.
- format
- Формат поверхности типа gf_format_t. Если используется упакованный формат, лучше использовать не endianness-специфичные варианты. Это приведет к лучшей портируемости приложения.
- palette
- Указатель на палитру поверхности типа gf_palette_t. Вы можете передать
NULL
только в том случае, если формат поверхности не предколагает наличия палитры (отличные от GF_FORMAT_PAL8
форматы).
- flags
- Флаги, характеризующие особенности создаваемой поверхности. Перечень и особенности использования флагов достпны на странице gf_surface_create().
gf
Функция позволяет создать новую графическую поверхность, пригодную для использования слоем layer контроллера дисплеев. Следует использовать эту функцию в случае, если поверхность предназначается для прямого ассоциирования с одним или несколькими слоями через вызов gf_layer_set_surfaces(). Она позволяет осуществить дополнительные проверки для определения соответствия запрашиваемых параметров поверхности возможностям слоя. Если поверхность предназначена лишь для offscreen рендеринга, достаточно возможностей функции gf_surface_create().
| Потоки не должны вызывать эту функцию между вызовами gf_draw_begin() и gf_draw_end(). В противном случае возможна взаимная блокировка потоков. |
- GF_ERR_OK
- Успешное завершение.
- GF_ERR_MEM
- Выделение памяти не выполнено.
- GF_ERR_PARM
- Невозможно удовлетворить критерии создания поверхности; убедитесь, что формат поверхности соответствует требованиям, установленным флагами flags для данного оборудования. Также данный статус завершения возвращается, если значение параметра psurface или layer равно
NULL
- GF_ERR_IODISPLAY
- Ошибка коммуникации с io-display. Следует проверить запущен ли в настоящий момент сервер io-display. Вывод sloginfo может содержать дополнительную информацию.
Графическая подсистема ЗОСРВ «Нейтрино», Graphics Framework
- Нет
- Обработчик сигналов
- Нет
- В потоке
- Да
gf_palette_t, gf_layer_set_surfaces(), gf_surface_attach(), gf_surface_create(), gf_surface_free()
Предыдущий раздел: GF API