Board.KolibriOS.org

Официальный форум KolibriOS
Текущее время: Вт июн 27, 2017 6:39 am

Часовой пояс: UTC+03:00




Начать новую тему  Ответить на тему  [ 44 сообщения ]  На страницу Пред. 1 2 3 След.
Автор Сообщение
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Чт окт 07, 2010 6:36 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
art_zh писал(а):
Пока можешь работать со страничками, только помечай где в коде надо будет переделывать на malloc()

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


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Чт окт 07, 2010 9:02 pm 
ЕМНИП когда еще не было 68 функции для управления памятью, был какой-то менеджер памяти для приложений основанный на 64 функции. Может у кого сохранился его код исходный.

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


Вернуться к началу
   
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Чт окт 28, 2010 2:54 pm 
Не в сети
Аватара пользователя

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

а элемент DisplayList такую:
Код:
; 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. Исправить имеющиеся ошибки в парсере.
Вложение:
KOFEE.7z [40.22 КБ]
94 скачивания


Здесь 3 swf файла для примера.
Вложение:
testfiles.7z [41.22 КБ]
89 скачиваний


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Чт окт 28, 2010 2:59 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Вот так они должны выглядеть:
Спойлер: Показать
Вложение:
Комментарий к файлу: Файл сделанный по заказу Gluk'a :)
1mn_1.PNG
1mn_1.PNG [ 10.42 КБ | 2406 просмотров ]

Спойлер: Показать
Вложение:
Комментарий к файлу: Пример из спецификации на формат SWF от компании Adobe
Adobe_1.PNG
Adobe_1.PNG [ 4.87 КБ | 2406 просмотров ]

Спойлер: Показать
Вложение:
Комментарий к файлу: Информация на одну из лучших демок
Heaven7_1.PNG
Heaven7_1.PNG [ 34.35 КБ | 2406 просмотров ]


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Чт окт 28, 2010 3:05 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
а вот так их сейчас показывает Kofee:
Спойлер: Показать
Вложение:
Комментарий к файлу: Файл сделанный по заказу Gluk'a :)
1MN.PNG
1MN.PNG [ 6.96 КБ | 2403 просмотра ]

Спойлер: Показать
Вложение:
Комментарий к файлу: Пример из спецификации на формат SWF от компании Adobe
ADOBE.PNG
ADOBE.PNG [ 6.12 КБ | 2403 просмотра ]

Спойлер: Показать
Вложение:
Комментарий к файлу: Информация на одну из лучших демок
HEAVEN7.PNG
HEAVEN7.PNG [ 22.01 КБ | 2403 просмотра ]


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


Вернуться к началу
   
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Пт окт 29, 2010 4:55 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Mario
Если хочешь прикрути OpenDialog и залей на SVN. Только код ещё будет сильно видоизменён, с учётом всего вышеперечисленного.


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Пт окт 29, 2010 5:01 pm 
Ну, я надеюсь ты не глядя заливать на SVN не станешь.
И потом уже будешь работать с той версией. Иначе весь смысл потеряется.


Вернуться к началу
   
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Пт окт 29, 2010 5:05 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пт июн 27, 2008 3:22 pm
Сообщения: 971
Mario писал(а):
Ну, я надеюсь ты не глядя заливать на SVN не станешь.
И потом уже будешь работать с той версией. Иначе весь смысл потеряется.

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


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Сб окт 30, 2010 1:26 am 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
Посмотрел рисунки в сообщении:
Asper писал(а):
а вот так их сейчас показывает Kofee:

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


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Сб окт 30, 2010 12:01 pm 
Не в сети
Аватара пользователя

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

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


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Сб окт 30, 2010 1:50 pm 
Не в сети
Аватара пользователя

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


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Сб окт 30, 2010 5:48 pm 
Не в сети
Аватара пользователя

Зарегистрирован: Пн окт 27, 2008 10:10 pm
Сообщения: 740
Asper писал(а):
Круг состоит из 8 кривых Безье

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

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

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


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Вс окт 31, 2010 2:20 am 
Не в сети
Just Flooding

Зарегистрирован: Сб янв 06, 2007 2:30 pm
Сообщения: 269
Цитата:
специальные алгоритмы для рисования толстых линий (возможно даже сглаженных, с заданием дробной толщины линии), тут без 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...


Вернуться к началу
 Заголовок сообщения: Re: Kofee - Flash player
СообщениеДобавлено: Вс окт 31, 2010 9:56 am 
Не в сети
Аватара пользователя

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

Код:
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);
}


Вернуться к началу
Показать сообщения за:  Поле сортировки  
Начать новую тему  Ответить на тему  [ 44 сообщения ]  На страницу Пред. 1 2 3 След.

Часовой пояс: UTC+03:00


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 1 гость


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Limited
Русская поддержка phpBB