Board.KolibriOS.org

Official KolibriOS board
It is currently Wed Dec 02, 2020 3:47 am

All times are UTC+03:00




Post new topic  Reply to topic  [ 144 posts ]  Go to page Previous 16 7 8 9 10
Author Message
PostPosted: Tue Jan 25, 2011 1:17 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
в принципе, определиться с номерами указаных объектов и команд, их параметрами (в т.ч. по приоритету - то, что часто надо указывать, в начале, то, что редко - в конце, так битфилд короче будет), и можно записывать в BFG(vs) шрифты)

Соответственно, в заголовке файла следует указывать так же подмножество языка, чтобы не путали программы ничего

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Tue Jan 25, 2011 1:23 pm 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
Мне кажется, что полезнее делать, чем бесконечно теоретизировать. С начала обсуждения прошло 5 месяцев. За это время можно было сделать (по крайней мере, неполную) поддержку того же SVG. Или портировать готовую реализацию.
При затратах времени, разумеется.


Top
   
PostPosted: Sun Feb 13, 2011 10:35 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
попытался на php организовать генерирование таких файлов - столкнулся с совершеннейшей неприспособленностью php к работе с низкоуровневыми структурами с одной стороны, и сложностью генерации битовых полей, что связано, в первую очередь, с необходимостью заранее указывать то, что может быть посчитано только в дальнейшем.
Однако в последнем ничего удивительного нет, так как формат битовых полей был создан не с учетом простой генерации, но с учетом простого чтения и экономии в объеме данных. Я не хочу сказать что генерация невозможна, но хочу сказать что она будет дольше чтения, ввиду того, что приходится проходиться по сгенерированным битам дважды - в ту и в другую сторону. Готовый алгоритм на пхп опубликую (как генерации, так и чтения), благо у знакомых с Си людей не возникает проблем с чтением php-исходников обычно.

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Tue Feb 15, 2011 12:28 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
зато, написание на PHP позволит:
1) "компилировать" изображения из SVG на сервере, ввиду присутствия на нем PHP с одной стороны, и присутствия в PHP средств работы с XML - с другой.
2) создать онлайн-редактор или конвертер (см. п. 1) таких изображений.

Одно из подмножеств формата я планирую в дальнейшем использовать для задания и хранения механических систем (в учебной и научной работе), благо он достаточно мощен для этого должен получиться (подмножество может иметь очень много своих функций (а именно 2^(8*4), лень считать), не "засоряя" основной формат, т.к. использует нулевую функцию).

[offtop]И да, надеюсь, что буду использовать в ней (работе) Колибри =)[/offtop]

P.S. битовые поля почти генерятся, осталось сделать второй проход. К сожалению, алгоритм, ввиду моего незнания PHP, крайне неэффективен, и для ассемблерной версии конвертера/парсера придется писать другой, а не адаптировать этот. Хотя, тоже вариант. Просто я могу не найти времени на асм-версию, хочу хоть PHP доделать и выложить.


Top
   
PostPosted: Tue Feb 15, 2011 4:57 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
почти готова генерация на пхп BFGvs. функция требуют объявленных глобальных переменных:
1) массив возможных объектов и их свойств - в общем, правила формата (пример):
Code:
$bfg_rules=array(
   'zeroobject'=>array(),
   'rectangle'=>array(
         'x position',
         'y position',
         'x size',
         'y size',
         'rotation',
         'fillcolor',
         'thickness',
         'strokecolor',
         'round radius x',
         'round radius y',
         'fill transparency',
         'stroke transparency',
         'filltexture',
         'strokefigure'
   ),
   'ellipse'=>array(
         'x position',
         'y position',
         'x radius',
         'y radius',
         'rotation',
         'fillcolor',
         'thickness',
         'strokecolor',
         'fill transparency',
         'stroke transparency',   
         'filltexture',
         'strokefigure'
   )
);


2) массив нумерации функций - вынесен отдельно для удобной перетасовки (пример):
Code:
$bfg_numbers=array(
   'zeroobject'=>0,
   'rectangle'=>1,
   'ellipse'=>2
);


ну и на вход принимается описание картинки (в такой вид нужно привести SVG для конвертации через этот скрипт):
Code:
array(

   array('type'=>'rectangle','parameters'=>array(
      array('name'=>'x size','type'=>'integer','value'=>400),
      array('name'=>'thickness','type'=>'integer','value'=>5),
      array('name'=>'strokecolor','type'=>'argb color','value'=>array(170,0,0,0)))),
      
   array('type'=>'ellipse','parameters'=>array(
      array('name'=>'x radius','type'=>'float','value'=>0.25),
      array('name'=>'x position','type'=>'float','value'=>0.5),
      array('name'=>'y position','type'=>'float','value'=>0.33),
      array('name'=>'fill color','type'=>'argb color','value'=>array(85,255,0,0))))

)


на что функция возвращает строку в таком виде "{424647}{01}{0000004e}{01}[10010100][00010010]{0190}{05}{80}{02}[01001001][00000000]{40}{80}{54}{70}", где в квадратных скобках бинарные числа, в фигурных - шеснадцатиричные.

что еще не сделано:
Длина в заголовке указывается неверно (она указыватеся не для готового файла, а для строки, которую выдает функция).
Цветовые схемы кроме argb не поддерживаются, ahls будет добавлена позже.
Еще нет опций оптимизации с искажением (например, сохранения цвета argb(1,254,254,254) как argb(0,255,255,255), что сократит требуемый для хранения цвета объем в четыре раза), происходит только оптимизация без искажения.
Не знаю как в PHP выдать двоичный файл, потому выдается текстом.

Парсер тоже будет, позже.
Пока не выкладываю скрипты, но кому надо вдруг - просите

ADDED: строки сделаны, вычеркнул.
длину атрибутов функции указывать и не надо, вычеркнул.

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Sat Feb 19, 2011 1:28 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
в SVG окружности, как как и в SWF, похоже, задаются с помощью кривых =(
ну да ладно, благо от кривых мы не отказываемся, просто конвертированные из SVG будут не настолько оптимальны, насколько это позволяет BFG(vs).
А вообще там ничего сложного в конвертации с помощью PHP, по крайней мере, нет. Ну сперва генерацию с парсингом доделаю, потом уже конвертация туда-обратно...
P.S. парсинг хочу в качестве д/з другу, желающему научиться программировать на Си, дать =)
-Сито- Си то поближе к Колибри будет, чем PHP, а я первого не знаю в достаточной мере.

Таки да, координаты лучше и правда вещественные)

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Sun Feb 20, 2011 2:56 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
в массив правил формата будут добавлены дефолтные значения (зачем они для чтения, думаю, понятно, а для генерации - чтобы можно было во входном массиве их указывать, а в файл они не сохранялись).

Теперь, давайте поговорим (я надеюсь, это не будет монолог) о координатах. У меня такой вариант есть:
есть два поля под каждую координату/размер (т.е. когда указано лишь одно, теряется лишь один бит на второе). Первое поле - числитель, второе - знаменатель. Когда второе не задано (дефолтное значение ноль) или равно нулю, то первое поле содержит размеры в тех же единицах, в которых задан размер поля.
Если задан только второй параметр, то первый равен нулю, и размер/координата равен размер поля*У/Х, где У это число, заданное в параметре, Х - 2 в степени (8*число байт параметра), т.е. если задано 127 в одном байте, то это половина размера поля.
Если заданы оба параметра, то размер/координата равно размер поля*первый пар-р/второй пар-р.

Вроде, получается достаточно гибко, объединяя все три предполагаемые мной варианта. Как вам?

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
PostPosted: Thu Mar 10, 2011 12:12 pm 
Offline
User avatar

Joined: Wed Feb 04, 2009 12:19 am
Posts: 12
И снова здравствуйте. Кажется, ещё никто в этой теме не упоминал HVIF - Haiku Vector Icon Format (обзор на хабре). Формат прост и компактен - колибри-стайл, а также уже используется в Haiku, так что доступна пара сотен свободных HVIF иконок, и существует как минимум один графический векторный редактор, напрямую работающий с этим форматом.

Мне кажется, целесообразнее использовать его в KolibriOS, нежели придумывать свой формат.

_________________
Image


Top
   
PostPosted: Thu Mar 10, 2011 8:25 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
для иконок неплохо, но явно недостаточно для всего прочего (механических систем с высокой точностью позиционирования, например, или для построения интерфейсов приложений). А для иконок, повторюсь, да, круто. Приложение ICON можно изрядно доработать с учетом. Но я не уверен, что оно будет эффективнее растра в плане быстродействия

_________________
И мы уже давно не пешки,
Мы пули, мы орлы, и решки!
Война ютит бинарный код,
Умри, или иди вперед!


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 144 posts ]  Go to page Previous 16 7 8 9 10

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 4 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