Page 3 of 7

Re: Векторные функции

Posted: Sat Sep 19, 2009 12:02 pm
by IgorA
Если делать буферизацию, то надо предусмотреть некоторые моменты, а именно:
1) размер буфера будет разный, даже если символы моноширинные. Например вывести символ 60*90 пикселей, буфер можно задать такой-же, но если символ повернуть скажем на 30градусов, то такого буфера не хватит по ширине :( т.к. буква наклонена, а значит размер буфера всегда надо пересчитывать.
2) взаимодействие буфера и основного фонового изображения (прозрачности и т.д.)
<Lrz> wrote:лучше разобраться с существующими форматами шрифтов (хотя бы одним)
Хотелось-бы но:
1) мало времени
2) документация на английском

Re: Векторные функции

Posted: Sat Sep 19, 2009 7:45 pm
by Asper
Есть исходники по работе со шрифтами TrueType на языках Pascal и C++. Если кому-то надо, то могу поделиться.

Re: Векторные функции

Posted: Sat Sep 19, 2009 8:00 pm
by IgorA
Asper
Если можно давай в ЛС.

Re: Векторные функции

Posted: Tue Sep 22, 2009 8:41 am
by DmitrySokolowsky
Баг с таймером в новой версии не наблюдаю.
Самолёт стал рисоваться немного лучше, но всё равно создаётся впечатление, что он машет крыльями.))
Как запустить Font.kex, я не понял. Он не запускается.

Re: Векторные функции

Posted: Tue Sep 22, 2009 10:15 am
by IgorA
Атауальпа wrote:Как запустить Font.kex, я не понял. Он не запускается.
в папке где лежит font.kex должны лежать 2 файла fnt_1.vfo (файл шрифта) и vectors.obj (последняя версия от 19-го сентября).
При открытии (у меня) выводится окно, показанное на картинке. В Win перерисовка символов идет медленно (заметно мерцание), в самой Kolibri рисует быстро (мерцания почти не видно).
Много символов не рисуются, это потому что файл fnt_1.vfo нужно дополнять остальными символами (а времени на него нет, хотелось-бы в свободное время по возможности разобрать стандартные ttf).

Re: Векторные функции

Posted: Tue Sep 22, 2009 1:47 pm
by DmitrySokolowsky
Я скопировал оба файла по назначению, но всё равно не запускается... Может, что-то ещё надо сделать?
И ещё, хорошо бы исходники и бинарники разложить по разным папкам, а в корень архива положить ридми с описанием установки.

Re: Векторные функции

Posted: Tue Sep 22, 2009 2:35 pm
by Mario
Атауальпа
Только что запустил под эмулятором Diamond'а и Qemu, с запущеной Колибри, в обоих случаях работает.
Ты бы хоть написал следующие данные:
1) Где запускаешь.
2) Что пишет на доске отладки.

Возможно у тебя в /sys/lib/ лежит предыдущая версия библиотеки, а при использовании макроса sys_load_library (обязательно читаем руководство написанное <Lrz>):
Разница между этими двумя макросами только в порядке проверки пути к библиотеке.
sys_load_library – в первую очередь проверяется значение указанное в system_path, т.е. на
этом месте где находится system_path должен быть помещен адрес записи.
ИМХО надо было использовать макрос load_library

Re: Векторные функции

Posted: Mon Sep 28, 2009 3:51 pm
by IgorA
Доработал рисующие функции, если задать координаты меньше 0 то раньше глючило, сейчас работает.
Атауальпа wrote:создаётся впечатление, что он машет крыльями.))
Сделал еще 1 пример с округляемыми координатами, в нем не машет, но кода больше.

Re: Векторные функции

Posted: Sat Oct 03, 2009 11:42 pm
by IgorA
03.10.09 - ускорен вывод комбинированых полигонов, за счет оптимизации вызовов функций (оказалось, что некоторые функции вызывались несколько раз подряд, что тормозило прорисовку)
Mario wrote:Еще идея вдогонку - сделать готовые шаблоны. Например, пример со стрелками уже подходит для чертежей навроде AutoCAD.
Добавлен 1 пример (bug.kex), из которого можно будет сделать шаблон, наподобие как в Ворде галерея клипов.

Re: Векторные функции

Posted: Sun Oct 04, 2009 12:35 pm
by Mario
IgorA
ускорен вывод комбинированых полигонов
Примера шрифтов это тоже коснулось? Просто на вскидку быстрее стало отрисовывать.
Добавлен 1 пример (bug.kex), из которого можно будет сделать шаблон
Это конечно замечательно, но почему бы не сделать масштабирование в размеры окна или регулировку как в примере шрифтов. Если это векторные изображения, то первейшее их отличие от растровых - масштабирование без существенной потери качества. И еще с заливкой похоже совсем туго?

Re: Векторные функции

Posted: Sun Oct 04, 2009 1:37 pm
by andrew_programmer
Причина всех тормозов в способе рисования примитивов - это по точечное рисование напрямую на экране при помощи системной функции 1.
В идеале надо сделать универсальную функцию рисования точки. Которая могла бы рисовать как в буфере так и на экране(у меня в библиотеке так). Отвести для флага вывода рисования некоторую переменную. Если, например, она ноль, то рисуется в буфере, если 1 то на экране. Просто при реализации заливки областей(в особенности градиентной заливки) или сглаживании шрифтов, рисование напрямую на экране - это самоубийство. Векторные изображения могут содержать сотни объектов с различными видами заливок и прозрачностей, поэтому без буфера никак не обойтись.

Re: Векторные функции

Posted: Sun Oct 04, 2009 3:32 pm
by Gluk
Отвести для флага вывода рисования некоторую переменную. Если, например, она ноль, то рисуется в буфере, если 1 то на экране.
зачем? проще если в переменной есть параметры буфера (адрес/ширина/высота/число бит на пиксель) то рисовать в буфер, если вместо этого там нулик - рисовать на экран. Впрочем, техническая реализация не важна)

Re: Векторные функции

Posted: Sun Oct 04, 2009 4:29 pm
by andrew_programmer
проще если в переменной есть параметры буфера (адрес/ширина/высота/число бит на пиксель) то рисовать в буфер, если вместо этого там нулик - рисовать на экран.
Это уже не переменная, а тип данных "структура" с минимальным размером(для этого случая) 4+2+2+1=9 байт. У меня все эти данные хранятся в структуре + переменная-флаг указывающая куда рисовать(на экран или в буфер).

Re: Векторные функции

Posted: Sun Oct 04, 2009 4:39 pm
by Gluk
ну я руководствовался определением переменной как именованной области памяти, в данном случае 9 байт, что-то типа

Code: Select all

peremennaya rb 9
а в каком виде данные внутри нея представлены - другой вопрос
Впрочем, это уже оффтоп =)

Re: Векторные функции

Posted: Sun Oct 04, 2009 6:28 pm
by IgorA
Mario wrote:Примера шрифтов это тоже коснулось? Просто на вскидку быстрее стало отрисовывать.
Да, коснулось всех фигур где рисуются кривые Безье. Просто раньше был многократный вызов последних кривых. Например если было несколько контуров (Безье), то рисовалось так:
  • 1234
    234
    34
    4
Под цифрами имею ввиду любой набор точек для рисования кривой. Заметил это когда не совпадали цвета пересекающихся кривых и оно мигать начало. Тогда и понял что лишний раз в цикле вызов идет. Достаточно 1 раз вызвать и все:
  • 1234
Mario wrote:но почему бы не сделать масштабирование в размеры окна или регулировку как в примере шрифтов. Если это векторные изображения, то первейшее их отличие от растровых - масштабирование без существенной потери качества
стрелки курсоров Вверх и Вниз меняют масштаб, хотя я не сделал поворот картинки стрелками Влево и Вправо и подписи на экране нет. Хотелось еще сделать саму картинку в отдельный файл, а в программе загрузку картинки, по указанному пути.
Mario wrote:И еще с заливкой похоже совсем туго?
Пока да, нужно запрограммировать сам алгоритм заливки, и желательно делать ее в буфере, чтобы не тормозило на экране.
andrew_programmer wrote:В идеале надо сделать универсальную функцию рисования точки. Которая могла бы рисовать как в буфере так и на экране(у меня в библиотеке так).
ты имееш ввиду libGUI ? В каком файле код ?