OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Четверг, 28 Март, 2024 15:39

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 9 ] 
Автор Сообщение
 Заголовок сообщения: Фолды в BB1.6
СообщениеДобавлено: Пятница, 13 Май, 2011 13:33 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
В оригинальном 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 КБ | Просмотров: 8176 ]
Комментарий к файлу: BB Revival 0.2
folds1.png
folds1.png [ 22.78 КБ | Просмотров: 8174 ]
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фолды в BB1.6
СообщениеДобавлено: Понедельник, 16 Май, 2011 11:17 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Во избежание недоразумений небольшое уточнение: Код выделенный синим цветом в правленой процедуре следует удалить (он приведен для информации). Ну или в WinApi.GetTextExtentPoint32A(dc, str, 1, s) вместо 1 поставить 2.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фолды в BB1.6
СообщениеДобавлено: Вторник, 17 Май, 2011 03:34 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
Вы про rc5 пишете.
В rc6, которая выложена на сайте Оберонкора эти правки были сделаны и фолды стали нормальной ширины.
http://oberoncore.ru/blackbox/environment


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фолды в BB1.6
СообщениеДобавлено: Вторник, 17 Май, 2011 08:35 

Зарегистрирован: Понедельник, 28 Ноябрь, 2005 10:28
Сообщения: 1428
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;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фолды в BB1.6
СообщениеДобавлено: Вторник, 17 Май, 2011 08:44 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Любопытно... у меня rc6. Этих правок нет и фолды кривые... :shock:

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фолды в BB1.6
СообщениеДобавлено: Вторник, 17 Май, 2011 08:47 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
О!!! Trurl, спасибо!

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фолды в BB1.6
СообщениеДобавлено: Вторник, 17 Май, 2011 16:56 

Зарегистрирован: Вторник, 22 Май, 2007 15:38
Сообщения: 220
Откуда: Питер
Как мне кажется, текст, выделенный синим цветом, удалять не надо. Он учитывает межбуквенный интервал.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фолды в BB1.6
СообщениеДобавлено: Четверг, 30 Июнь, 2011 11:42 
Аватара пользователя

Зарегистрирован: Четверг, 08 Октябрь, 2009 15:00
Сообщения: 3774
ilovb писал(а):
Любопытно... у меня rc6. Этих правок нет и фолды кривые... :shock:

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

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


Вложения:
Комментарий к файлу: Исправленный Folds
Folds.odc [26.1 КБ]
Скачиваний: 742
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Фолды в BB1.6
СообщениеДобавлено: Четверг, 30 Июнь, 2011 19:25 

Зарегистрирован: Вторник, 30 Июнь, 2009 14:58
Сообщения: 1549
Да, я думаю - это самая нормальная правка. Только надо бы цветом выделить... (пришлось в WinMerge загонять)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Часовой пояс: UTC + 3 часа


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

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


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB