Графика 3М (GUI на базе OpenGL)

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 »

Пишу в linux-е Debian.

вот как выглядит строчка
c.TextOut(5,14,'Test Тест');
rusfonts.png
rusfonts.png (4.71 КБ) 36158 просмотров


исходник
fonts.tar.gz
(126.42 КБ) 1401 скачивание


Добавлено спустя 5 минут 37 секунд:
шрифт имеет кирилицу
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Re: Графика 3М (GUI на базе OpenGL)

Сообщение Лекс Айрин »

olegy123, ну это же обычные проблемы с кодировкой.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Re: Графика 3М (GUI на базе OpenGL)

Сообщение zub »

Неворуженным взглядом видно что вместо юникода приходит утф8.
TextOut объявлено как

Код: Выделить всё

procedure TextOut (x,y:integer;text:unicodestring); virtual;

поэтому либо ручками перекодировать, либо бом в файл добавить, либо {$codepage utf8}

Добавлено спустя 1 минуту 49 секунд:
а в каком месте тут OpenGL?

Добавлено спустя 28 минут 14 секунд:
да и такого
>>Код полностью родной(native) Lazarus/FPC.
кода тут кот наплакал, попробуй запустить это под виндой
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 »

Лекс Айрин писал(а):olegy123, ну это же обычные проблемы с кодировкой.
FreeType использует UTF8 кодировку.
Почему в lasarus не выводит кириллицу, ведь текст кода пишется в UTF8, поэтому Utf8toAnsi как AnsitoUtf8 результата не дает. Я пока не знаю почему.

zub писал(а):Неворуженным взглядом видно что вместо юникода приходит утф8.
TextOut объявлено как
На сколько я знаю код пишется в utf. Если нужно перевести в старую консоль, то нужно UTF8toConsole переводит.
TFPCustomCanvas.TextOut (x,y:integer;text:string); virtual; -> TFPCustomDrawFont.DoDrawText (x,y:integer; text:string); virtual; abstract; - > TFreeTypeFont.DoDrawText (atx,aty:integer; atext:string); override;

zub писал(а):а в каком месте тут OpenGL?
2D пока пишется канвой(TFPImageCanvas). Потом буду переводить в OpenGL. Сроки горят.
zub писал(а):Код полностью родной(native) Lazarus/FPC.

Цель написать проект без привлечения сторонних библиотек. Сначала была идея привлечь BGRABitmap, но там активно используется asm и стали привлекать OpenGL.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Re: Графика 3М (GUI на базе OpenGL)

Сообщение zub »

{$codepage utf8} поставь в начале модуля - заработает.
>>Цель написать проект без привлечения сторонних библиотек.
freetype это не сторонняя библиотека?
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 »

ставил - не работает.

ft.png


Добавлено спустя 7 минут 36 секунд:
zub писал(а):freetype это не сторонняя библиотека?
цель - работа на Arm-ах..
Сейчас никакой оптимизации и без подключения иных библиотек.
По мне бы подключить Cairo или даже Skia - но Cairo еще как то описан в lazarus-е и он есть в Linux-е, хотя он активно использует OpenGL и нужно переключать контексты. А это усложняет. Но под винду его нет, нужно докачивать либлы. То со Skia еще хуже - кроме как src под с++ да еще требует пакет "ninja+pythonа" его не заполучить.

Добавлено спустя 1 минуту 55 секунд:
Пока подняться хотя бы на уровень nanoVG/nanoGUI
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Re: Графика 3М (GUI на базе OpenGL)

Сообщение zub »

>>ставил - не работает
А у меня работает...
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 »

Буква похожая на 'D' = это символ #208
когда UTF8ToCP1251, UTF8ToKOI8 - то кол-во букв совпадает.

Добавлено спустя 24 минуты 54 секунды:
Чую что нужно через
FT_Select_Charmap() в режим FT_ENCODING_UNICODE переводить
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Re: Графика 3М (GUI на базе OpenGL)

Сообщение zub »

и так не работает?
c.TextOut(5,14,UTF8ToUTF16('Test Тест'));
чето ты темнишь
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 »

Ничего не меняется.
Возможно это проблема инициализации локальных переменных, возможно нужно принудительно вызывать FT_Select_Charmap с флагом FT_ENCODING_UNICODE, но чтобы это сделать нужно перелапатить весь Lazarus, из коробки не дает мне писать в /usr/lib/lazarus/.. файл, а при перекомпиляции хочет папку создавать "lib/$(TargetCPU)-$(TargetOS)".. это все трудности перевода.
Я этим потом займусь.
Сейчас я не могу понять почему в выборке вместо данные указатель на объект(на сам объект) мне приходят данные (данные на указатель на сам объект) - где то есть ошибка синтаксиса программы, а возможно компилятор не до понял меня.. видимо компилятор слишком толерантен с приведением типов указателей одного типа к другому..
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Re: Графика 3М (GUI на базе OpenGL)

Сообщение zub »

FPC какой используется? может стоит попробовать в транке?
судя по
TFPCustomCanvas.TextOut (x,y:integer;text:string);
чтото старенькое
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 »

обновил с 1.6 до 1.8.0RC5

ft0.png
ft0.png (53.68 КБ) 36007 просмотров


Добавлено спустя 10 часов 25 минут 10 секунд:
Тут для себя сделал открытие - оказывается переменная на класс - это уже ссылка(ссылочная переменная).
Form:TForm; это есть на самом деле Form:^TForm;
Теперь понимаю почему сишники не любят так паскаль.

Добавлено спустя 5 минут 47 секунд:
Тогда возникает вопрос, где происходит передача ссылки, а где имеет место копирование данных.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Re: Графика 3М (GUI на базе OpenGL)

Сообщение zub »

>>Тут для себя сделал открытие
Поздравляю! я бы постеснялся такое прилюдно говорить))

>>Теперь понимаю почему сишники не любят так паскаль.
есть object`ы

>>Тогда возникает вопрос, где происходит передача ссылки, а где имеет место копирование данных.
происходит передача указателя по ссылке и по значению, данные будь добр копировать сам
Mikhail
энтузиаст
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

Re: Графика 3М (GUI на базе OpenGL)

Сообщение Mikhail »

olegy123 писал(а):Тут для себя сделал открытие - оказывается переменная на класс - это уже ссылка(ссылочная переменная).


День мы сидим, другой день сидим, а на третий день Орлиный Глаз заметил, что у сарая нет одной стены.

:D

zub писал(а):есть object`ы


автодеструкторов тоже нет.
olegy123
долгожитель
Сообщения: 1643
Зарегистрирован: 25.02.2016 11:10:20

Re: Графика 3М (GUI на базе OpenGL)

Сообщение olegy123 »

Увсе выборку сделал..

o3.gif
o3.gif (240.02 КБ) 35947 просмотров


Работает
OnMouseDown,OnMouseUp,OnMouseMove,OnMouseEnter,OnMouseLeave для TGGUIButton компонента.
Ответить