Название: Выдрать глифы (решено) Отправлено: Igors от Август 17, 2018, 12:13 Добрый день
При портировании на 64-bit отвалился здоровенный кусок кода. Был написан на ATSU API, ф-ции ATSUGetTextLocation ATSUBreakLine ATSUGetSoftLineBreaks ATSUGetNativeCurveType и.т.д Никогда этим не занимался, задачу знаю в общих чертах: ищутся все фонты установленные в системе. Юзер выбирает фонт и пишет им какой-то текст. Ну и с помощью этого API буквы переводятся в контуры (N-угольники на поскости), которые затем используются для построения 3D моделей этих букв. С построением проблем нет, но чем заменить старое API? Что на эту тему есть в Qt ? Спасибо Название: Re: Выдрать глифы (?) Отправлено: kambala от Август 17, 2018, 13:14 родная замена — Core Text, скорее всего
Название: Re: Выдрать глифы (?) Отправлено: Igors от Август 17, 2018, 13:43 родная замена — Core Text, скорее всего Да, так в хедерах и пишут (deprecated, use Core Text API). Но где найти эквиваленты для 2 десятков вызовов старого API? И есть ли они вообще? Пытался гуглить "<имя ф-ции> replacement" - ничегоНазвание: Re: Выдрать глифы (?) Отправлено: kambala от Август 17, 2018, 14:04 видимо, придется читать документацию Core Text и самому определять что на что поменять :)
Название: Re: Выдрать глифы (?) Отправлено: Igors от Август 20, 2018, 09:33 Углубился в старый код. Само извлечение сводится к ф-циям типа
ATSUGlyphGetCubicPaths ATSUGlyphGetQuadraticPaths Которые извлекают не сами "точки" (контура), а "сегменты" Безье сплайна. Поэтому правильно выглядит построить QPainterPath для каждой буквы (глифа), и из него получить те же самые сегменты. Правда придется снести пачку старых файлов и написать новый код. Название: Re: Выдрать глифы (?) Отправлено: Igors от Август 23, 2018, 04:45 Наконец закончил резать старый код (чижело). А сама реализация на Qt - всего лишь страничка текста, все прекрасно работает без всякого нативняка
|