Board.KolibriOS.org

Official KolibriOS board
It is currently Tue Nov 12, 2019 12:05 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 63 posts ]  Go to page 1 2 3 4 5 Next
Author Message
 Post subject: SysFn 4
PostPosted: Tue Mar 12, 2013 9:57 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Данная функция вполне может возвращать длину строки. Это важно для не-моноширинных шрифтов.
У этой функции ecx=0xXYRRGGBB, где сейчас Y всегда должен быть равен 0.
Я предлагаю использовать значение Y=1 для подфункции Fn4, возвращающей размер выводимой надписи. К сожалению, возвращать размеры всегда нельзя - это поломает большинство программ, имеющихся на сегодняшний день.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:01 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5064
Идею всецело поддерживаю.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:14 pm 
Offline
Public Relations
User avatar

Joined: Mon Jun 07, 2010 12:01 pm
Posts: 1879
Как сказал в чате:
Зачем функция, рисующая текст, должна возвращать его длину? Размер у надписи будет, даже если её не выводить.
ИМХО размер и вывод на экран - вещи не связанные. Что, у нас номера функций закончились?


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:18 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Функции имеют/будут иметь общий код. 4я и 74я функции - это будет очень и очень логично.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:21 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
Мне тоже непонятно зачем? Хотелось бы более подробного изложения всей идеи.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:23 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
SoUrcerer wrote:
74я функции

Занято сетевым бранчем:
Code:
      dd blit_32                 ; 73-blitter;
      dd undefined_syscall       ; 74-reserved for new stack
      dd undefined_syscall       ; 75-reserved for new stack
      dd undefined_syscall       ; 76-reserved for new stack

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:25 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Сейчас везде моноширинный шрифт, потому что его размеры "известны" программисту. Это плохо, потому что дает ужасный результат с вашими любимыми большими и красивыми шрифтами.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:26 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
SoUrcerer wrote:
Это плохо, потому что дает ужасный результат с вашими любимыми большими и красивыми шрифтами.

Я все равно не понимаю. Честно. Ты половину как минимум не договариваешь вслух.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:31 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Перевожу с русского на русский. Большинство программ работает сейчас так:
У нас размер буквы 5x9 точек, с интервалом 1 точку между буквами. У нас надпись в 5 букв, так что сделаем кнопку в 5*(5+1)+2 = 32 пикселя шириной и 9+2=11 пикселей высотой.
Так вот это нихера не работает, когда размер шрифта НЕ 5x9, не говоря уже о том, что шрифт может быть НЕ моноширинным. Нужно знать точный размер надписи. Без этого ВООБЩЕ никакого смысла нет работать над шрифтами в системе.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:36 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5064
Зачем знать длинну выводимой строки?
Eolite (имена файлов), HTMLv (страница), Liza (текст письма) для отображения текста использует моноширный шрифт, т.к. я знаю сколько максимально символов поместится в окно. С немоноширным я этого не могу знать. Хотя немоноширный по размеру больше и легче для чтения.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:41 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
SoUrcerer wrote:
Перевожу с русского на русский. Большинство программ работает сейчас так:
У нас размер буквы 5x9 точек, с интервалом 1 точку между буквами. У нас надпись в 5 букв, так что сделаем кнопку в 5*(5+1)+2 = 32 пикселя шириной и 9+2=11 пикселей высотой.
Так вот это нихера не работает, когда размер шрифта НЕ 5x9, не говоря уже о том, что шрифт может быть НЕ моноширинным. Нужно знать точный размер надписи. Без этого ВООБЩЕ никакого смысла нет работать над шрифтами в системе.

Так ты вообще-то говоришь о принципиально разных вещах. Ф.4 ориентирована на 2 существующих системных шрифта и все. Если уж на то пошло зачем вообще внедрять новые шрифты в ядро? Алексей Теплов замечательно продемонстрировал какой можно применить подход. Напоминаю, что Box_Lib тоже был изначально написан как демонстрация того что можно сделать по простому и это будет работать - что собственно и наблюдаем.

Зачем все пихать в ядро? Да, даже если и пихать, то делать нужно полностью в другую функцию. Не надо оглядываться на существующую ф.4. В любом случае придется переделывать весь код программ использующих новые шрифты.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:48 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Заманчивость модификации функции 4 в том, что она используется везде. Я ради интереса модифицировал её для загрузки шрифтов 12x8 - хотя можно использовать и шрифты шириной до 16 пикселей по умолчанию.
Image
А ведь растровые шрифты чуть побольше по умолчанию, минимальные правки в софте - и счастье и радость на долгие годы. Даже в Windows по-прежнему растровые шрифты используются.
(На картинке - пример, как прекрасно могут читаться растровые шрифты высотой в 12/16 пикселей).

Векторные шрифты в наше время использовать можно только в одном случае - затирая фон (спасибо, оконная подсистема!). Если считывать область экрана, затем рисовать поверх, и записывать - получаются дикие тормоза. Если НЕ считывать эту область экрана, а рисовать без анти-алиасинга - мало того, что буквы выглядят так, будто их жевал лабрадор Кони; так еще придется вызывать стопятьсот раз функцию 1. Нет, реально, для небольшого окна с текстом придется раз 100500 или больше сделать int 0x40 только для вывода текста.


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:50 pm 
Offline
Designer
User avatar

Joined: Thu Jan 25, 2007 3:33 pm
Posts: 5064
Вопрос разделился на два.

1. По поводу функции: получение размера надписи в любом случае нужно реализовать - это даст возможность сделать часть программ более читабельными за счёт немоноширных шрифтов.

2. Добавление новых шрифтов в ядро: спорный вопрос. С одной стороны - это возможность уже сейчас сделать программы Колибри более читабельными, с другой некрасивая реализация. Тут я за добавление, хотя и не буду особо настаивать. Хотя бы получение размера запилить.

_________________
Через тернии к звездам


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:54 pm 
Offline
Kernel Developer

Joined: Sun Feb 10, 2013 12:37 pm
Posts: 2329
SoUrcerer
Я уже рассматривал эту идею и даже высказывался на форуме в одной из тем, но реакция была нулевая.

Суть такова:
Можно использовать дополнительную функцию для установки третьего шрифта, который будет динамически меняться по желанию программы и будет действовать в пределах этого адресного пространства исключительно. В ф.4 мы выбираем третий шрифт, но код в программа сам должен учитывать особенности шрифта. Можно грабить корованы

В общем случае это хорошо может сработать для моноширинных шрифтов. Для шрифтов с переменной шириной надо думать и ломать голову над наилучшим подходом.

_________________
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!


Top
   
 Post subject: Re: SysFn 4
PostPosted: Tue Mar 12, 2013 10:58 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
SysFn4, что самое паршивое, считает размеры этой самой выводимой строки. Это обидно. Считать-считает, а вывести некуда. Или затирать данные.


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 63 posts ]  Go to page 1 2 3 4 5 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 0 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Limited