Board.KolibriOS.org

Official KolibriOS board
It is currently Mon Jul 22, 2019 5:58 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 158 posts ]  Go to page Previous 17 8 9 10 11 Next
Author Message
PostPosted: Mon Aug 16, 2010 11:29 am 
Offline

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


Top
   
PostPosted: Mon Aug 16, 2010 11:38 am 
Offline
User avatar

Joined: Sat Feb 20, 2010 1:27 pm
Posts: 41
Sorcerer wrote:
SVG сам по себе довольно простой формат

Да, уж... одних только типов данных 35
Sorcerer wrote:
Кстати, в Колибри ведь есть библиотека вывода векторной графики

Какая?

_________________
Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда.


Top
   
PostPosted: Mon Aug 16, 2010 11:46 am 
Offline

Joined: Mon Sep 24, 2007 11:11 am
Posts: 2814
konstantin_666. wrote:
Sorcerer писал(а):
Кстати, в Колибри ведь есть библиотека вывода векторной графики

Какая?

Библи отека векторных функций: viewtopic.php?f=9&t=1319

konstantin_666. wrote:
Sorcerer писал(а):
SVG сам по себе довольно простой формат

Да, уж...


Code:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<svg version = "1.1"
     baseProfile="full"
     xmlns = "http://www.w3.org/2000/svg"
     xmlns:xlink = "http://www.w3.org/1999/xlink"
     xmlns:ev = "http://www.w3.org/2001/xml-events"
     height = "400px"  width = "400px">
     <rect x="0" y="0" width="400" height="400"
          fill="none" stroke="black" stroke-width="5px" stroke-opacity="0.5"/>
     <g fill-opacity="0.7" stroke="black" stroke-width="0.5px">
        <circle cx="200px" cy="200px" r="100px" fill="red"   transform="translate(  0,-50)" />
        <circle cx="200px" cy="200px" r="100px" fill="blue"  transform="translate( 70, 50)" />
        <circle cx="200px" cy="200px" r="100px" fill="green" transform="translate(-70, 50)" />
     </g>
</svg>


Сложный?
Картинка 400x400, прямоугольник (0,0)-(400,400) без заливки с линией толщиной 5пкс и прозрачностью линии 0.5,
слой с прозрачностью 0.7 и толщиной линий 0.5пкс, и в нем три окружности, смещенные относительно центра.


Top
   
PostPosted: Mon Aug 16, 2010 11:55 am 
Offline
User avatar

Joined: Sat Feb 20, 2010 1:27 pm
Posts: 41
Ну, что же, значит нужно писать.
Если кто захочет поучаствовать, номер аськи в профиле. Если не будет в сети, пишите в личку.
А то и так уже тему засорили. Модераторы вряд ли почистят.

_________________
Теория и практика иногда сталкиваются. Когда это случается, теория проигрывает. Всегда.


Last edited by konstantin_666. on Mon Aug 16, 2010 3:01 pm, edited 1 time in total.

Top
   
PostPosted: Mon Aug 16, 2010 12:13 pm 
По хорошему надо бы отделить тему про SVG от темы панели. В свое время форум чистился своевременно, но некоторым это не нравилось (мне в том числе) :mrgreen:


Top
   
PostPosted: Wed Aug 18, 2010 8:09 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
konstantin_666, классная идея про использование векторной графики! а я прям как-то и не знал даже что такое бывает!.. хотя и упомянул это в одном из постов (полтемы назад, кажется, см. чуть ниже), а также в документации. Сорри за сарказм.
"Вс янв 31, 2010 2:31 am ... и возможно средства для векторного рисования."

"Если Вы все "единогласно" решили, что рабочий стол должен быть гибким и настраиваемым, то так тому и быть. Ура!" - не единогласно, но я насчитал большинство голосов

"II Виджеты на машинном коде:
3.Загрузка виджетов в память панели." - вот это. Скриптовые языки и не рассматривались ввиду мифичности этого направления в среде КолибриОС. А загрузка виджета в память панели позволяет панели позаботиться о загрузке всех библиотек, что могут понадобиться виджетам (в заголовке виджета будет указано, какие библиотеки ему нужны, не нужные никому (панели самой в т.ч.) библиотеки грузиться не будут). Впрочем, это уже детали

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


Top
   
PostPosted: Wed Aug 18, 2010 8:36 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
про SVG - надо просто переконвертировать файлы из человекопонятного XML в машинопонятный бинарный код вида "[байт что рисовать - 1 круг, 2 прямоугольник, и т.д., или что объявить, 3 - градиент][байт/слово/двойное слово (зависит от возможного числа праметров) - битовая маска какие из всех возможных (поддерживаемых) параметров этого объекта далее указаны, например начало такое 1010..][набор байт, слов, двойных слов, строк с длиной в начале (нуль может быть частью строки, посему не нуль-завершенные) - это набор параметров. для примера мы рисуем, допустим, прямоугольник, и его возможные параметры (некоторые) - высота, цвет линии, ширина, цвет заливки. допустим, что они идут первыми. тогда из предыдущего примера (помните, да, 1010..?) в списке параметров будут указаны подряд две величины - высота и ширина, а цвет линии и прямоугольника либо дефолтны, либо как у предыдущей фигуры][следующий объект..]"
сделать это не сложно (а парсить готовый такой код - дыки одно удовольствие), я делал нечто подобное (в действительности, довольно близкое) для хтмл, когда пытался делать браузер, и оно работало, причем неплохо. Но тогда это было чисто внутрипрограммное решение, а тут предлагаю в таком формате сохранять файлы, ну и хранить бинарно внутри программ-виджетов. Прошу считать этот пост кандидатом на спецификацию такого формата, т.к. не очень хочется чтобы панель при работе распарсивала человекопонятный XML, который человек-то никогда, видимо, и не увидит =)

ВНИМАНИЕ, на пост этот прошу сюда не отвечать, сейчас создам соответствующую тему

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


Top
   
PostPosted: Wed Aug 18, 2010 9:08 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
viewtopic.php?f=4&t=1489

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


Top
   
PostPosted: Wed Aug 18, 2010 9:29 am 
Gluk
Quote:
"Если Вы все "единогласно" решили, что рабочий стол должен быть гибким и настраиваемым, то так тому и быть. Ура!" - не единогласно, но я насчитал большинство голосов

Во оно всегда так - автор стоит в сторонке и тихо помалкивает, пока остальные решают что и как ему делать. Поздравляю с прозрением.


Top
   
PostPosted: Fri Nov 05, 2010 12:09 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Интерфейс виджетов будет основываться на векторных форматах SWF или BFG(VS) [ссылка на обсуждение выше], либо в растровом формате (но тогда виджет должен учитывать всякие разные масштабирования самостоятельно).
Т.е. реализованы будут все варианты, а автор виджета уже выбирает что ему удобнее использовать.

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


Top
   
PostPosted: Sat Jul 16, 2011 12:47 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Gluk: "Скриптовые языки и не рассматривались ввиду мифичности этого направления в среде КолибриОС." - недальновидно было сказано. Теперь концепцию приходится сильно менять, но оно и к лучшему.

Теперь роадмап гласит, что виджеты принадлежат, во имя безопасности, вообще другим процессам, а весь обмен - через именованные области.

Мысли читателей (предполагаемые мною): "А чем ты занимался все эти месяцы, собственно????" - стоял на одном месте. В ходе смены способа рисования (с рисования линий в ходе обновления на подготовку в памяти картинки и вывода ея при обновлении) допустил ряд ошибок, к исправлению которых неоднократно возвращался. На данный момент все их победил.

Помимо этого: настройки панелей теперь считываются из бинарных файлов, имеющих имена top.s, bottom.s, left.s, right.s, которые должны лежать рядом с бинариком.

Мысли читателей (предполагаемые мною): "Где бинарик/исходники?" - исходники - когда будет достигнут функционал @panel. Бинарики (ну потестить, пореверсить, посмотреть - да мало ли зачем) - когда сделаю компиляцию файлов настроек fasm'ом из одноимённых файлов (top, bottom, left и right) с расширением .a, лежащих рядом же. Зачем? Чтобы не слышать ни слова про ini облегчить редактирование настроек. Синтаксис простой, будут макросы и образцы. Компиляция, забыл сказать, автоматическая.

Ещё раз про виджеты - это файлы, лежащие в некой директории, имеющие расширение .wc для компилированных, .wpy для питоновских, .wls для лисповых и т.д. (или .ws для скриптовых всех - обсуждаемо), они запускаются панелью с параметром, содержащим имя именованной области памяти, приготовленной для них. Виджеты будут нескольких типов, не беспокойтесь о повторном использовании, о нём будут беспокоиться авторы виджетов.

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


Top
   
PostPosted: Fri Jul 22, 2011 1:55 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
кстати, такое построение связи с виджетом позволяет их создавать на основе имеющихся программ. Например, менюшной программы:

пусть есть программа, показывающая меню, подменю - многопоточное приложение.
пусть есть готовая revo-панель (вот уж фантастика...)
в панель надо добавить кнопку меню слева снизу (панель нижняя горизонтальная, т.е. №0)
как меняется программа меню для интеграции:

в код вставляется код примера (я напишу), в нём меняется функция рисования (т.е. ф-я пишется, ставится ссылка на неё) кнопки в память в разных состояниях (невыделена/выделена/нажата/новогодняя/etc.), ставится ссылка на код, который должен быть выполнен по нажатию (вернее, прописывается), и... всё.

что делает код примера? он просто следит за кнопкой и реагирует на событие нажатия созданием потока, адрес старта которого - бывшая точка входа в программу Menu. Всё, остальной код работает как обычно.

остаётся только полученный после компиляции бинарик положить в нужную папочку с нужным расширением (.wc, наверное), прописать его загрузку в файле настроек (bottom.a), ну и скомпилировать настройки (для получения bottom.s, это будет происходить автоматически при перезапуске панели по горячей комбинации - ctrl+alt+backspace - сейчас это завершение, но последнее будет переназначено, видимо, т.к. завершаться нечасто придётся, я надеюсь).

Я думаю, работы в данном простом (я не специально попроще выбрал - просто это одна из первостепенных функций панели) случае, если повезёт, без учёта тестирования, минут на 10.

Для диспетчера окон надо заново писать виджет будет, для трея тоже, а вот в часы можно превратить приложение календаря.

Если кто-то подумал, что это плохо, держать большие приложения в памяти:
1) меню - не большое приложение
2) календарь - тоже
3) если 1) or 2) == false, можно и отдельным приложением виджет, с запускалкой приложения вместо потока - такой пример тоже будет.

Впрочем, примеры будут не сложны, так что может были бы и не обязательны, но они будут брать на себя всю специфику работы revo, снимая ношу сию с плеч разработчика виджета - оный работает над функциональностью лишь.

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


Top
   
PostPosted: Fri Jul 22, 2011 7:30 am 
Артем тебе вместо сумбурных постов на форуме было бы лучше оформить внятную документацию - глядишь бы и сам перестал запутываться и другие бы по делу говорили.


Top
   
PostPosted: Fri Jul 22, 2011 12:31 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Mario, ещё лучше бы мне вообще приложение закончить, вместе с документацией... Пойду посмотрю как там fasm'ом компилировать

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


Top
   
PostPosted: Mon Aug 29, 2011 1:18 am 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
Файлы настроек уже компилируются fasm'ом успешно, но бинарик остался на выключенном компьютере. Будет нужен - говорите, выложу.

Mario, я сюда пишу раньше, чем в документацию, чтобы обсудить планы заранее. Я воспринимаю документацию как нечто довольно-таки стабильное, на что можно было бы ориентироваться при создании виджетов ещё до окончания разработки панели, если уж она задержится (пока что хочу догнать текущую панель по функциональности в четвёртом квартале этого года). А если менять её постоянно, то это нехорошо... Ну а так любой может мне сказать что идеи фигня и надо делать так и так (и обязательно - ) по таким-то причинам.

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


Top
   
Display posts from previous:  Sort by  
Post new topic  Reply to topic  [ 158 posts ]  Go to page Previous 17 8 9 10 11 Next

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 2 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:  
cron
Powered by phpBB® Forum Software © phpBB Limited