Russian Qt Forum
Ноябрь 22, 2024, 16:15 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Выдрать глифы (решено)  (Прочитано 4370 раз)
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« : Август 17, 2018, 12:13 »

Добрый день

При портировании на 64-bit отвалился здоровенный кусок кода. Был написан на ATSU API, ф-ции

ATSUGetTextLocation
ATSUBreakLine
ATSUGetSoftLineBreaks
ATSUGetNativeCurveType
и.т.д

Никогда этим не занимался, задачу знаю в общих чертах: ищутся все фонты установленные в системе. Юзер выбирает фонт и пишет им какой-то текст. Ну и с помощью этого API буквы переводятся в контуры (N-угольники на поскости), которые затем используются для построения 3D моделей этих букв. С построением проблем нет, но чем заменить старое API?

Что на эту тему есть в Qt ?

Спасибо
« Последнее редактирование: Август 23, 2018, 04:45 от Igors » Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #1 : Август 17, 2018, 13:14 »

родная замена — Core Text, скорее всего
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #2 : Август 17, 2018, 13:43 »

родная замена — Core Text, скорее всего
Да, так в хедерах и пишут (deprecated, use Core Text API). Но где найти эквиваленты для 2 десятков вызовов старого API? И есть ли они вообще? Пытался гуглить "<имя ф-ции> replacement" - ничего
Записан
kambala
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4747



Просмотр профиля WWW
« Ответ #3 : Август 17, 2018, 14:04 »

видимо, придется читать документацию Core Text и самому определять что на что поменять Улыбающийся
Записан

Изучением C++ вымощена дорога в Qt.

UTF-8 has been around since 1993 and Unicode 2.0 since 1996; if you have created any 8-bit character content since 1996 in anything other than UTF-8, then I hate you. © Matt Gallagher
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #4 : Август 20, 2018, 09:33 »

Углубился в старый код. Само извлечение сводится к ф-циям типа

ATSUGlyphGetCubicPaths
ATSUGlyphGetQuadraticPaths

Которые извлекают не сами "точки" (контура), а "сегменты" Безье сплайна. Поэтому правильно выглядит
построить QPainterPath для каждой буквы (глифа), и из него получить те же самые сегменты. Правда придется снести пачку старых файлов и написать новый код.

Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Август 23, 2018, 04:45 »

Наконец закончил резать старый код (чижело). А сама реализация на Qt - всего лишь страничка текста, все прекрасно работает без всякого нативняка
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.05 секунд. Запросов: 22.