OberonCore
https://forum.oberoncore.ru/

Фолды в BB1.6
https://forum.oberoncore.ru/viewtopic.php?f=2&t=3451
Страница 1 из 1

Автор:  ilovb [ Пятница, 13 Май, 2011 13:33 ]
Заголовок сообщения:  Фолды в BB1.6

В оригинальном BB1.6 неправильно отображаются складки. Места под символ выделяется ровно половина от реального размера.

В BB Revival 0.2 это пофиксили умножая размер на 2. Проблема вроде решена. Но это костыль.
Решил докопаться до истины. И докопался до процедуры GetRasterWidth в HostFonts. (Спасибо Илье Ермакову за Terminal)

Выяснилось, что неправильно работает юникодная функция WinApi.GetTextExtentPoint32W(dc, str, 1, s)

На скрине два варианта GetRasterWidth. Оригинальная и поправленная. Правки выделены красным. Короче фикс заключается в отказе от юникодной GetTextExtentPoint32W.

Также скрин из BB Revival

Ну и вопросы к сообществу:
1. Корректен ли такой фикс в юникодном BB? Ведь ширина все равно определяется только для 256 символов
2. Кто знает почему GetTextExtentPoint32W неправильно работает со шрифтом "Wingdings"?
3. И зачем нужен код выделенный синим цветом?

Вложения:
Комментарий к файлу: BB 1.6 оригинальный
folds2.png
folds2.png [ 24.03 КБ | Просмотров: 8271 ]
Комментарий к файлу: BB Revival 0.2
folds1.png
folds1.png [ 22.78 КБ | Просмотров: 8269 ]

Автор:  ilovb [ Понедельник, 16 Май, 2011 11:17 ]
Заголовок сообщения:  Re: Фолды в BB1.6

Во избежание недоразумений небольшое уточнение: Код выделенный синим цветом в правленой процедуре следует удалить (он приведен для информации). Ну или в WinApi.GetTextExtentPoint32A(dc, str, 1, s) вместо 1 поставить 2.

Автор:  Иван Денисов [ Вторник, 17 Май, 2011 03:34 ]
Заголовок сообщения:  Re: Фолды в BB1.6

Вы про rc5 пишете.
В rc6, которая выложена на сайте Оберонкора эти правки были сделаны и фолды стали нормальной ширины.
http://oberoncore.ru/blackbox/environment

Автор:  Trurl [ Вторник, 17 Май, 2011 08:35 ]
Заголовок сообщения:  Re: Фолды в BB1.6

divan писал(а):
В rc6, которая выложена на сайте Оберонкора эти правки были сделаны и фолды стали нормальной ширины.

У меня свежеустановленная rc6 рисует ненормальной.
Чтобы рисовало хорошо, достаточно сделать метки юникодными и вместо
Код:
leftExp[0] := SHORT(CHR(240)); leftExp[1] := 0X;
rightExp[0] := SHORT(CHR(239)); rightExp[1] := 0X;
leftColl[0] := SHORT(CHR(232)); leftColl[1] := 0X;
rightColl[0] := SHORT(CHR(231)); rightColl[1] := 0X;

подставить
Код:
leftExp  := 0F0F0X;    rightExp := 0F0EFX;
leftColl := 0F0E8X;    rightColl := 0F0E7X;

Автор:  ilovb [ Вторник, 17 Май, 2011 08:44 ]
Заголовок сообщения:  Re: Фолды в BB1.6

Любопытно... у меня rc6. Этих правок нет и фолды кривые... :shock:

может в useTTMetric дело?!?

Автор:  ilovb [ Вторник, 17 Май, 2011 08:47 ]
Заголовок сообщения:  Re: Фолды в BB1.6

О!!! Trurl, спасибо!

У меня были подозрения что в юникодную функцию не те символы попадают :D

Автор:  GameHunter [ Вторник, 17 Май, 2011 16:56 ]
Заголовок сообщения:  Re: Фолды в BB1.6

Как мне кажется, текст, выделенный синим цветом, удалять не надо. Он учитывает межбуквенный интервал.

Автор:  Иван Денисов [ Четверг, 30 Июнь, 2011 11:42 ]
Заголовок сообщения:  Re: Фолды в BB1.6

ilovb писал(а):
Любопытно... у меня rc6. Этих правок нет и фолды кривые... :shock:

может в useTTMetric дело?!?
Мда :)
Код:
IF Dialog.platform = Dialog.linux THEN (* Linux *) ...
Платформ спецификс. Я же из под вайна проверял... а тут просто рисуются => <=

Чтобы загладить вину :) в необоснованном наезде, выкладываю свой вариант фикса.

Вложения:
Комментарий к файлу: Исправленный Folds
Folds.odc [26.1 КБ]
Скачиваний: 747

Автор:  ilovb [ Четверг, 30 Июнь, 2011 19:25 ]
Заголовок сообщения:  Re: Фолды в BB1.6

Да, я думаю - это самая нормальная правка. Только надо бы цветом выделить... (пришлось в WinMerge загонять)

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/