[ANN] [.Net] AntiGrain Geometry C# Wrapper
От: McSeem2 США http://www.antigrain.com
Дата: 11.01.06 00:54
Оценка: 34 (3)
http://www.creativedocs.net/devs/agg

Штука довольно специфическая, разработана была для своих прикладных нужд. Документации нет. Тем не менее, может быть, кому-то и пригодится.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: HotDog Швейцария www.denebspace.com
Дата: 11.01.06 07:46
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>http://www.creativedocs.net/devs/agg


MS>Штука довольно специфическая, разработана была для своих прикладных нужд. Документации нет. Тем не менее, может быть, кому-то и пригодится.


Можешь пару слов сказать о скорости отрисовки по сравнению с GDI+? Стоит ли пробовать портировать приложение которое оперирует с изображениями размерами порядка 5000х5000 с альфа каналами?
Re[2]: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: korzhik Россия  
Дата: 11.01.06 13:46
Оценка: :)
Здравствуйте, HotDog, Вы писали:

HD>Здравствуйте, McSeem2, Вы писали:


MS>>http://www.creativedocs.net/devs/agg


MS>>Штука довольно специфическая, разработана была для своих прикладных нужд. Документации нет. Тем не менее, может быть, кому-то и пригодится.


HD>Можешь пару слов сказать о скорости отрисовки по сравнению с GDI+? Стоит ли пробовать портировать приложение которое оперирует с изображениями размерами порядка 5000х5000 с альфа каналами?


Я делал враппер antigrain для Delphi.
Правда я сам не тестировал.
Но заказчик был в восторге, говорил что на его задачах скорость отрисовки увеличилась в 10 раз (по сравнению с GDI+) и качество отрисовки получше стало.
Правда как я понял, он альфа каналы не очень использовал, в основном куча полигонов (что-то с железными дорогами связано)
Re[2]: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: McSeem2 США http://www.antigrain.com
Дата: 11.01.06 16:57
Оценка:
Здравствуйте, HotDog, Вы писали:

HD>Можешь пару слов сказать о скорости отрисовки по сравнению с GDI+? Стоит ли пробовать портировать приложение которое оперирует с изображениями размерами порядка 5000х5000 с альфа каналами?


В основном быстрее, но не в 10 раз. Да, есть некоторые трюки, работаюшие очень быстро, типа рисования паттерна вдоль линии. Но в GDI+ такого вообще нету, поэтому сравнение несколько некорректно. Кое-что, например, трансформация изображений — даже медленнее.
А вообще-то, можно составить некое представление по Creative Docs.NET:
http://www.creativedocs.net/downloads/files/
Там все, ровно 100% всей графики (включая меню) рисуется с помощью их тулкита.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[3]: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: Denis_TST Россия www.transsys.ru
Дата: 11.01.06 20:12
Оценка:
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, HotDog, Вы писали:

HD>>Можешь пару слов сказать о скорости отрисовки по сравнению с GDI+? Стоит ли пробовать портировать приложение которое оперирует с изображениями размерами порядка 5000х5000 с альфа каналами?
K>Но заказчик был в восторге,
ага (заказчик типа я ) . Если кому интересно , могу поделиться получившеся оберткой для Delphi (правда сейчас она
стремительно затачивается под мою задачу)
K>говорил что на его задачах скорость отрисовки увеличилась в 10 раз (по сравнению с GDI+) и качество отрисовки получше стало.
K>Правда как я понял, он альфа каналы не очень использовал, в основном куча полигонов (что-то с железными дорогами связано)
Да , в у меня в приложении есть хитрый график , там нужно выводить 250-300 сглаженных линий толщиной 2px . GDI + рисует их
за ~300 ms — при такой скорости прокрутка превражается в слайд-шоу . C Agg у меня получилось 30 ms .

Получившийся резерв по скорости позволил добавить всяких красивых наворотов
В конце января буду другую задачу переносить с GDI+ (типа мини-GIS), там тоже померяю скорость.

А вообще Creative Docs.NET очень показательный проект в плане возможностей и скорости . Именно он убедил меня что переход
на Agg дело стоящее.
... << RSDN@Home 1.2.0 alpha rev. 622>>
Re[3]: Вопрос ...
От: Denis_TST Россия www.transsys.ru
Дата: 11.01.06 21:36
Оценка:
Максим!
Сорри за off topic , но можно вопрос :
Мне понадобилось нарисовать (с Agg) что-то вроде balloon tooltip с тенью. Сам path нужной формы сделать не проблема ,
но вот как лучше реализовать тень ?

пока придумал обвести path линиями с уменьшающейся альфой.
Можно ли из path получить линии (если использовать conv_contour то я получу обводку со всех строн,а нужно сверху\сбоку )?
Re: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: retalik www.airbandits.com/
Дата: 12.01.06 06:18
Оценка: 4 (2) :)
Здравствуйте, McSeem2, Вы писали:

MS>http://www.creativedocs.net/devs/agg


[offtopic]
Ой, да это же авторы COLOBOT! Более необычной и интересной игрушки "для детей программистов" я еще не встречал. Молодцы шведы.
[/offtopic]
Успехов,
Виталий.
Re[2]: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: Russ  
Дата: 12.01.06 07:01
Оценка: :)
Здравствуйте, retalik, Вы писали:
R>[offtopic]
R>Ой, да это же авторы COLOBOT! Более необычной и интересной игрушки "для детей программистов" я еще не встречал. Молодцы шведы.
R>[/offtopic]
угу, молодцы, только эти шведы из Швейцарии.
... << RSDN@Home 1.1.4 beta 2 >>
Re[3]: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: retalik www.airbandits.com/
Дата: 12.01.06 07:06
Оценка:
Здравствуйте, Russ, Вы писали:

R>угу, молодцы, только эти шведы из Швейцарии.

Успехов,
Виталий.
Re[4]: Вопрос ...
От: McSeem2 США http://www.antigrain.com
Дата: 12.01.06 15:45
Оценка: 8 (1)
Здравствуйте, Denis_TST, Вы писали:

D_T>Мне понадобилось нарисовать (с Agg) что-то вроде balloon tooltip с тенью. Сам path нужной формы сделать не проблема ,

D_T>но вот как лучше реализовать тень ?

Обычно делают Gaussian Blur, что есть сравнительно дорогая операция, к тому же, в AGG не реализована. Другой способ, который используют Daniel и Pierre — это чисто векторный, conv_contour. Но он тоже дорогой, возможно даже медленнее, чем blur.

D_T>пока придумал обвести path линиями с уменьшающейся альфой.

D_T>Можно ли из path получить линии (если использовать conv_contour то я получу обводку со всех строн,а нужно сверху\сбоку )?

Ну так у conv_contour есть свойство "width". Если эта величина положительна, то контур — снаружи, если отрицательна — то внутри (или наоборот, в зависимости от фактического направления обхода). При width=0 надо получить alpha=0.5. Чем "наружней", тем прозрачней — это и есть эмуляция gaussian blur. Ну и плюс смещение вправо-вниз.

Но самый интересный способ — это Adaptively Sampled Distance Fields (ADFs). Он запатентован и его задействовали в Macromedia Flash 8:
http://www.merl.com/reports/docs/TR2000-15.pdf
http://www.merl.com/people/perry/treeTraversalJGTWithCode.pdf

И вообще, Ron Perry — весьма интересный дядя:
http://www.merl.com/people/perry/perry.html

Может есть у кого желание попробовать имплементировать, чтобы чисто поиграться? Можно безотносительно к каким-либо AGG-ам, просто на коленке. Если метод действительно стоящий (кажется, что это так), и если получится что-то интересное и быстрое, то можно будет подумать, как разрулить патентные вопросы.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[5]: Вопрос ...
От: Denis_TST Россия www.transsys.ru
Дата: 12.01.06 17:29
Оценка:
Здравствуйте, McSeem2, Вы писали:
D_T>>Мне понадобилось нарисовать (с Agg) что-то вроде balloon tooltip с тенью. Сам path нужной формы сделать не проблема ,
D_T>>но вот как лучше реализовать тень ?
MS>Обычно делают Gaussian Blur, что есть сравнительно дорогая операция, к тому же, в AGG не реализована.
MS>Другой способ, который используют Daniel и Pierre — это чисто векторный, conv_contour. Но он тоже дорогой, возможно даже медленнее, чем blur.
Ага, в последней версии Creative Docs у заливки и линий появился Blur — правда на тень это не похоже , скорее на красивый эффект.
я все гадал используется ли там conv_contour или нет


D_T>>пока придумал обвести path линиями с уменьшающейся альфой.

D_T>>Можно ли из path получить линии (если использовать conv_contour то я получу обводку со всех строн,а нужно сверху\сбоку )?

MS>Ну так у conv_contour есть свойство "width". Если эта величина положительна, то контур — снаружи, если отрицательна — то внутри (или наоборот, в зависимости от фактического направления обхода). При width=0 надо получить alpha=0.5. Чем "наружней", тем прозрачней — это и есть эмуляция gaussian blur. Ну и плюс смещение вправо-вниз.

Павел (korzhik) предложил еще один интересный вариант — использовть linePattern с битмапом в виде тени (с градиентом по альфе).
для маленьких теней, думаю это лучший способ.
... << RSDN@Home 1.2.0 alpha rev. 622>>
Re[6]: Вопрос ...
От: korzhik Россия  
Дата: 12.01.06 22:13
Оценка: 12 (1)
Здравствуйте, Denis_TST, Вы писали:

D_T>Павел (korzhik) предложил еще один интересный вариант — использовть linePattern с битмапом в виде тени (с градиентом по альфе).

D_T>для маленьких теней, думаю это лучший способ.

Вот что получается с bitmap patterns: http://www.rsdn.ru/File/19450/shadow.bmp (195 Kb)
Извиняюсь что bmp, просто jpeg что то уж очень сильно портил картинку.

битмап можно задать в программе:
static const agg::int32u pixmap_chain[] = 
{
    0x00000000,
    0x00000000,
    0x11000000,
    0x15000000,
    0x20000000,
    0x25000000,
    0x30000000,
    0x35000000,
    0x40000000,
    0x44000000
};


помоему симпатично
Re[4]: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: alive Россия  
Дата: 13.01.06 10:47
Оценка:
Здравствуйте, Denis_TST, Вы писали:

D_T> ага (заказчик типа я ) . Если кому интересно , могу поделиться получившеся оберткой для Delphi (правда сейчас она

D_T> стремительно затачивается под мою задачу)

Очень интересно. Поделись, если можно. В своё время собирался писать сам, но руки так и не дошли
...<< RSDN@Home 1.2.0 alpha rev. 621>>
...Foobar {Nightwish — [Over The Hills And Far Away #09] Wishmaster (live) [foobar200
Keep yourself alive
Re[5]: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: Denis_TST Россия www.transsys.ru
Дата: 13.01.06 13:44
Оценка:
Здравствуйте, alive, Вы писали:

A>Здравствуйте, Denis_TST, Вы писали:


D_T>> ага (заказчик типа я ) . Если кому интересно , могу поделиться получившеся оберткой для Delphi (правда сейчас она

D_T>> стремительно затачивается под мою задачу)

A>Очень интересно. Поделись, если можно. В своё время собирался писать сам, но руки так и не дошли

ок, на след неделе пойду на работу , причешу исходники и выложу. Кстати, удобно работать в новой Delphi 2006 —
там Delphi и С++ Builder в одной IDE , можно завести общий Project Group и отлаживаться в обоих проектах.
... << RSDN@Home 1.2.0 alpha rev. 622>>
Re[6]: [ANN] [.Net] AntiGrain Geometry C# Wrapper
От: alive Россия  
Дата: 13.01.06 14:01
Оценка:
Здравствуйте, Denis_TST, Вы писали:

D_T>ок, на след неделе пойду на работу , причешу исходники и выложу. Кстати, удобно работать в новой Delphi 2006 -

D_T>там Delphi и С++ Builder в одной IDE , можно завести общий Project Group и отлаживаться в обоих проектах.

Заранее спасибо. Увы, все, что есть это Delphi7
...<< RSDN@Home 1.2.0 alpha rev. 621>>
...Foobar {silent}
Keep yourself alive
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.