Board.KolibriOS.org

Official KolibriOS board
It is currently Sat Apr 20, 2019 3:37 pm

All times are UTC+03:00




Post new topic  Reply to topic  [ 44 posts ]  Go to page Previous 1 2 3 Next
Author Message
 Post subject: Re: Kofee - Flash player
PostPosted: Thu Oct 07, 2010 6:36 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
art_zh wrote:
Пока можешь работать со страничками, только помечай где в коде надо будет переделывать на malloc()

Если нет других вариантов, то похоже, что так и придётся делать.


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Thu Oct 07, 2010 9:02 pm 
ЕМНИП когда еще не было 68 функции для управления памятью, был какой-то менеджер памяти для приложений основанный на 64 функции. Может у кого сохранился его код исходный.

UPD Вот тема viewtopic.php?f=2&t=146


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Thu Oct 28, 2010 2:54 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
Сделал DisplayList и Dictionary. Каждый элемент этих двух структур занимает одну страницу памяти, но в принципе я придумал как использовать "лишнюю" память, по крайней мере для Dictionary. Можно записывать туда предварительно объявляемый обьект в удобной для последующей обработки структуре. Сейчас элемент Dictionary имеет такую структуру:
Code:
; Dictionary Item:
;     .CharacterId  dw ?
;     .Type         dw ?
;     .Address      dd ?

а элемент DisplayList такую:
Code:
; DisplayList Item:
;     .CharacterId  dw ?
;     .Depth        dw ?
;     .Address      dd ?


Сделал (частично) парсинг Shape. Только Shape с Newstyles ещё не поддерживаются.
Прикрутил графическую библиотеку Buf2D. Как оказалось она замечательно подходит для флеша!
Функции линии, кривой Безье по трём точкам, рисование в памяти, возможность сбрасывать изображение из одного буфера в другой, это как раз то, что нужно. В настоящее время не хватает возможности указывать толщину линии и функций заливки.

Временно сделал рендеринг Shape'ов в один общий буфер на этапе объявления (DefineShape, DefineShape2, DefineShape3). Обрабатываются линии и кривые Безье, цвета линий пока ещё не задаются как следует. Буфер изображения не очищается, так что вся графика накладывается друг на друга, а не "анимируется". В парсере ещё есть несколько ошибок, из-за которых плеер иногда вылетает (потом исправлю).

Надо будет сделать:
1. Отдельный буфер изображения под каждый Shape.
2. Трансформацию Shape на этапе помещения в DisplayList.
3. Очищать общий буфер изображения при входе в ShowFrame.
4. В ShowFrame скидывать изображения из буферов изображений, записанных в DisplayList в общий буфер (ImageBuffer0).
5. Добавить задание цветов и толщины линий, заливку, градиенты и битмапы, вывод звука и т.д.
6. Исправить имеющиеся ошибки в парсере.
Attachment:
KOFEE.7z [40.22 KiB]
Downloaded 137 times


Здесь 3 swf файла для примера.
Attachment:
testfiles.7z [41.22 KiB]
Downloaded 131 times


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Thu Oct 28, 2010 2:59 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
Вот так они должны выглядеть:
Spoiler: Show
Attachment:
File comment: Файл сделанный по заказу Gluk'a :)
1mn_1.PNG
1mn_1.PNG [ 10.42 KiB | Viewed 3088 times ]

Spoiler: Show
Attachment:
File comment: Пример из спецификации на формат SWF от компании Adobe
Adobe_1.PNG
Adobe_1.PNG [ 4.87 KiB | Viewed 3088 times ]

Spoiler: Show
Attachment:
File comment: Информация на одну из лучших демок
Heaven7_1.PNG
Heaven7_1.PNG [ 34.35 KiB | Viewed 3088 times ]


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Thu Oct 28, 2010 3:05 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
а вот так их сейчас показывает Kofee:
Spoiler: Show
Attachment:
File comment: Файл сделанный по заказу Gluk'a :)
1MN.PNG
1MN.PNG [ 6.96 KiB | Viewed 3085 times ]

Spoiler: Show
Attachment:
File comment: Пример из спецификации на формат SWF от компании Adobe
ADOBE.PNG
ADOBE.PNG [ 6.12 KiB | Viewed 3085 times ]

Spoiler: Show
Attachment:
File comment: Информация на одну из лучших демок
HEAVEN7.PNG
HEAVEN7.PNG [ 22.01 KiB | Viewed 3085 times ]


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Fri Oct 29, 2010 4:04 pm 
Asper
Если есть необходимость, могу прикрутить OpenDialog. Load_Lib уже используется, а данные для Proc_Lib много места не займут. Вообще наверное пора над интерфейсом поработать и залить исходники на SVN, если не против.


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Fri Oct 29, 2010 4:55 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
Mario
Если хочешь прикрути OpenDialog и залей на SVN. Только код ещё будет сильно видоизменён, с учётом всего вышеперечисленного.


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Fri Oct 29, 2010 5:01 pm 
Ну, я надеюсь ты не глядя заливать на SVN не станешь.
И потом уже будешь работать с той версией. Иначе весь смысл потеряется.


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Fri Oct 29, 2010 5:05 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
Mario wrote:
Ну, я надеюсь ты не глядя заливать на SVN не станешь.
И потом уже будешь работать с той версией. Иначе весь смысл потеряется.

Естесственно. Я хотел сказать, что текущие исходники ещё очень сырые.


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Sat Oct 30, 2010 1:26 am 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Посмотрел рисунки в сообщении:
Asper wrote:
а вот так их сейчас показывает Kofee:

Меня смущает то что 3-й круг получился разорванным ... Сразу возникает вопрос: допустил ли я ошибку при программировании функции buf2d_circle ?


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Sat Oct 30, 2010 12:01 pm 
Offline
User avatar

Joined: Mon Apr 16, 2007 6:38 pm
Posts: 1222
IgorA, насколько я понимаю (из недавнего сообщения Asper'а), в SWF нет такого примитива, как окружность, и она рисуется с помощью кривых Безье.

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


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Sat Oct 30, 2010 1:50 pm 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
Gluk правильно понимает. Круг состоит из 8 кривых Безье, это и в спецификации на SWF есть. Ошибка вероятнее всего у меня в парсере, и это не третий, а первый круг. От библиотеки Buf2D нужно будет ещё задание толщины линий и разные заливки:
1. Сплошная заливка указанным цветом
2. Разного рода градиентные заливки
3. Заливка битмапом


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Sat Oct 30, 2010 5:48 pm 
Offline
User avatar

Joined: Mon Oct 27, 2008 10:10 pm
Posts: 811
Asper wrote:
Круг состоит из 8 кривых Безье

это хорошо а то я подумал что глючит функция рисования окружности
Asper wrote:
нужно будет ещё задание толщины линий

думаю есть 2 пути решения:
1) сделать кисть в виде окружности, которую вызывать при прорисовке вместо функции ставящей 1-ну точку (сейчас рисование линий сделано через 1-ну точку). Недостатком может быть медленная прорисовка, т. к. большинство точек кисти будут совпадать.
2) найти какие-либо специальные алгоритмы для рисования толстых линий (возможно даже сглаженных, с заданием дробной толщины линии), тут без fpu не обойтись
Asper wrote:
и разные заливки

В заливке самое главное правильно определить пиксели, которые будут заливаемыми. Когда-то я программировал на С++ рекурсивный алгоритм для заливки контура, ограниченного определенным цветом. Тот алгоритм я не хочу использовать, т. к. в нем выделялся массив для заливаемых точек, и чем больше закрашиваемая область тем больший объем памяти требовался для заливки.


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Sun Oct 31, 2010 2:20 am 
Offline
Just Flooding

Joined: Sat Jan 06, 2007 2:30 pm
Posts: 269
Quote:
специальные алгоритмы для рисования толстых линий (возможно даже сглаженных, с заданием дробной толщины линии), тут без fpu не обойтись
Вот уж где FPU не нужен, для таких вещей как раз используют Fixed-point math.
http://algolist.manual.ru/graphics/painting/line.php
http://enlight.ru/demo/faq/smth.phtml?q ... tialiasing (вот это долго искал)
http://enlight.ru/demo/faq/smth.phtml?query=alg_line_aa (вот это то что нужно)
Хотя, по факту это уже давно задача GPU...


Top
   
 Post subject: Re: Kofee - Flash player
PostPosted: Sun Oct 31, 2010 9:56 am 
Offline
User avatar

Joined: Fri Jun 27, 2008 3:22 pm
Posts: 979
IgorA
Насчет толщин линий посмотри то, что предлагает Nable.
Насчёт заливок, хранить массив заливаемых точек абсолютно не нужно.
Например алгоритм сплошной заливки примерно следующий (не проверял).

Code:
int ResetColor (x,y,fillcolor, backcolor)
{
   c1=GetColor(x,y);
   if (c1!=backcolor) return 0;
   SetColor(x,y,fillcolor);
   return 1;
}

void FloodFill (int x, int y, int fillcolor, int backcolor)
{
   int result;
   SetColor(x,y,fillcolor);
   //Рекурсивный алгоритм по 4 соседним точкам
   result=ResetColor(x-1,y,fillcolor,backcolor);
   if (result) FloodFill(x-1,y,fillcolor,backcolor);

   result=ResetColor(x,y-1,fillcolor,backcolor);
   if (result) FloodFill(x,y-1,fillcolor,backcolor);

   result=ResetColor(x+1,y,fillcolor,backcolor);
   if (result) FloodFill(x+1,y,fillcolor,backcolor);

   result=ResetColor(x,y+1,fillcolor,backcolor);
   if (result) FloodFill(x,y+1,fillcolor,backcolor);
}


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

All times are UTC+03:00


Who is online

Users browsing this forum: No registered users and 1 guest


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