Официальный форум СВД Встраиваемые Системы
27 Апрель, 2024, 05:03:34 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.

Войти
 
 
 Сайт СВД ВС  Начало   Помощь Поиск Войти Регистрация  
Страниц: [1]   Вниз
  Печать  
Автор Тема: Ошибка при использовании gf_context_set_transform и gf_context_enable_antialais  (Прочитано 1178 раз)
andemeno
Пользователь

Сообщений: 33


« : 29 Январь, 2016, 13:21:14 »

Здравствуйте.
В моей программе есть следующий фрагмент
Код:

gf_context_set_antialias(context, GF_CONTEXT_ANTIALIAS_POLYFILL |
                                            GF_CONTEXT_ANTIALIAS_LINES |
                                            GF_CONTEXT_ANTIALIAS_SOFT);

float a = beginAngle;
for(int c = 0; c < count; ++c) {

gf_fixed_t m1 = FloatToFixed(cosf(-a));
gf_fixed_t m2 = FloatToFixed(sinf(-a));
gf_fixed_t matrix[] = { m1, -m2, m2, m1 };
gf_context_set_transform(context, matrix);

gf_draw_poly_fill(context, &points[0], points.size());

gf_context_disable_transform(context);

a += segmentLength;
if(a < 0) a += M_PI;
}

Вызов gf_draw_poly_fill на 3 или 4 итерации приводит к SIGSEGV.
1 Если в исходном фрагменте убрать установку сглаживания gf_context_set_antialias - SIGSEGV не происходит.
2 Если в исходном фрагменте убрать поворот системы координат gf_context_set_transform - SIGSEGV не происходит.

Таким образом совместно эти функции не работают. Как это можно объяснить?
Записан
Игорь Косик
Пользователь

Сообщений: 11


WWW
« Ответ #1 : 29 Январь, 2016, 17:48:53 »

Падение воспроизвести не удалось. прилагаю наш тестовый пример.

Приведите более полный пример Вашего кода, возможно проблема в конкретных значениях переменных.
Записан

Сотрудник СВД Встраиваемые Системы
andemeno
Пользователь

Сообщений: 33


« Ответ #2 : 02 Февраль, 2016, 11:03:14 »

Во вложении немного измененный код вашего примера, в котором воспроизводится ошибка.

На падение влияет количество вершин полигона: треугольник - без падения, четырехугольник - падение.
« Последнее редактирование: 02 Февраль, 2016, 11:05:55 от andemeno » Записан
Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1076



WWW
« Ответ #3 : 02 Февраль, 2016, 14:11:24 »

Завели ошибку во внутренней багзилле, будем разбираться.
Записан

Андрей Докучаев
Сотрудник СВД ВС
Легенда

Сообщений: 1076



WWW
« Ответ #4 : 16 Февраль, 2016, 12:43:40 »

Отправили по почте библиотеку с исправлениями.
Записан

Страниц: [1]   Вверх
  Печать  
 
Перейти в:  

Powered by MySQL Powered by PHP © 2002-2024 СВД Встраиваемые Системы.
При использовании материалов сайта ссылка на forum.kpda.ru обязательна.

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines | © Aiwan. Kolobok smiles | Sitemap
Valid XHTML 1.0! Valid CSS!
Сайт СВД ВС

В последний раз google посещал эту страницу 20 Май, 2020, 06:11:49