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

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

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

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

Сообщение olegy123 » 01.12.2017 22:00:49

Пишу в linux-е Debian.

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


исходник
fonts.tar.gz
(126.42 КБ) Скачиваний: 1265


Добавлено спустя 5 минут 37 секунд:
шрифт имеет кирилицу
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение Лекс Айрин » 02.12.2017 09:35:58

olegy123, ну это же обычные проблемы с кодировкой.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение zub » 02.12.2017 11:06:09

Неворуженным взглядом видно что вместо юникода приходит утф8.
TextOut объявлено как
Код: Выделить всё
procedure TextOut (x,y:integer;text:unicodestring); virtual;

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

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

Добавлено спустя 28 минут 14 секунд:
да и такого
>>Код полностью родной(native) Lazarus/FPC.
кода тут кот наплакал, попробуй запустить это под виндой
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение olegy123 » 02.12.2017 13:43:29

Лекс Айрин писал(а):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.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение zub » 02.12.2017 13:48:21

{$codepage utf8} поставь в начале модуля - заработает.
>>Цель написать проект без привлечения сторонних библиотек.
freetype это не сторонняя библиотека?
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение olegy123 » 02.12.2017 14:06:42

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

ft.png


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

Добавлено спустя 1 минуту 55 секунд:
Пока подняться хотя бы на уровень nanoVG/nanoGUI
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение zub » 02.12.2017 14:37:56

>>ставил - не работает
А у меня работает...
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение olegy123 » 02.12.2017 15:01:28

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

Добавлено спустя 24 минуты 54 секунды:
Чую что нужно через
FT_Select_Charmap() в режим FT_ENCODING_UNICODE переводить
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение zub » 03.12.2017 10:36:45

и так не работает?
c.TextOut(5,14,UTF8ToUTF16('Test Тест'));
чето ты темнишь
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение olegy123 » 03.12.2017 13:11:58

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

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

Сообщение zub » 03.12.2017 14:48:13

FPC какой используется? может стоит попробовать в транке?
судя по
TFPCustomCanvas.TextOut (x,y:integer;text:string);
чтото старенькое
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение olegy123 » 03.12.2017 21:05:10

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

ft0.png
ft0.png (53.68 КБ) Просмотров: 32564


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

Добавлено спустя 5 минут 47 секунд:
Тогда возникает вопрос, где происходит передача ссылки, а где имеет место копирование данных.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

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

Сообщение zub » 04.12.2017 08:19:04

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

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

>>Тогда возникает вопрос, где происходит передача ссылки, а где имеет место копирование данных.
происходит передача указателя по ссылке и по значению, данные будь добр копировать сам
zub
долгожитель
 
Сообщения: 2886
Зарегистрирован: 14.11.2005 23:51:26

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

Сообщение Mikhail » 04.12.2017 15:51:57

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


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

:D

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


автодеструкторов тоже нет.
Mikhail
энтузиаст
 
Сообщения: 565
Зарегистрирован: 24.10.2013 16:06:47

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

Сообщение olegy123 » 04.12.2017 16:00:59

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

o3.gif
o3.gif (240.02 КБ) Просмотров: 32504


Работает
OnMouseDown,OnMouseUp,OnMouseMove,OnMouseEnter,OnMouseLeave для TGGUIButton компонента.
olegy123
долгожитель
 
Сообщения: 1643
Зарегистрирован: 25.02.2016 12:10:20

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

Рейтинг@Mail.ru