Re[7]: Оффтоп
От: McSeem2 США http://www.antigrain.com
Дата: 21.09.05 20:10
Оценка: 10 (2)
Здравствуйте, ArtemGorikov, Вы писали:

AG>Да, что-то было, просто хотелось бы иметь уже реализованным, чтобы принимало на вход LOGBRUSH.


Понятно. Но я не позиционирую AGG в качестве некого готового решения. Это просто набор пил, топоров и стамесок для краснодеревщика, но не сами окна-двери-наличники.

AG>Вы не ответили на вопрос: как полученный у HDC регион (HRGN) скормить растеризатору? Если бы это был только clipbox, тогда было бы все просто. И даже после того, как написал транслятор из HRGN в формат либы клиппера, как быть с ее лицензией?


Не ответил. Беда в том, что я понятия не имею, что такое HRGN, как из него вытащить данные и как они вообще представлены. В виде скан-лайнов или в виде полигона? Если первое (есть подозрение, что это так), то можно написать простой класс, который ведет себя как растеризатор (rewind_scanlines/sweep_scanline) и использовать его вместо растеризатора для дальнейших операций. Если это полигон — его надо предварительно растеризовать при помощи того же rasterizer_scanline_aa и потом уже использовать в scanline_boolean.

AG>ras.clip_box(x1, y1, x2, y2) — это я и вызывал, иначе имеем падение с Access Violation. В том случае мне еще не надо было отсекать регионы.


Падение без clip_box с гигантскими координатами вполне объяснимо, а вот почему медленно работало при включенном отсечении — это для меня загадка. Может быть, это был не rasterizer.clip_box(), а renderer.clip_box()? renderer_base тоже имеет такую функцию и она выполняет отсечение в растровом виде.

AG>Т.е. можно включить отсечение регионов и не получить гемора с лицензией?

AG>conv_clip_polygon — и решать проблему с лицензией?

Если нужно только отсечение по ортогональному прямоугольнику — то да. Еще раз — rasterizer.clip_box() эквивалентен conv_clip_polygon, если координаты не вылезают за пределы 24-х бит. Если с этим были проблемы — то я не исключаю возможность глюка, хотя это и маловероятно, поскольку многократно проверено. Скорее всего имело место какое-то недопонимание (но я ни в коем случае не снимаю с себя ответственности за это).

AG>Почему бы не иметь неуклюжего монстра размером в 1-1.5 метра, если GDI+ весит столько? В наше время это не размер, и хорошо бы иметь сборки в виде либы и dll, с макросами, определяющими используемые возможности.

AG>А сейчас получается, что с GDI+ на порядок меньше траха, он принимает GDI объекты и его константы на входе, не озадачивается особенно форматом устройства вывода и "космическими координатами". Только вот качество его антиалиасинга не супер

Вполне согласен. С точки зрения программиста, которому надо "нарисовать-линию-и-фсе", AGG — это далеко не лучший выбор. Я этого и не скрываю. Теоретически, конечно же, если бы был такой класс типа Graphics — это было бы гораздо более usable. Но здесь уже вступает в силу некая диалектика. Беда в том, как всю эту квачу поддерживать. GDI+ поддерживает толпа голодных индусов. Им бы только на хлеб заработать, а на чем — это совершенно не существенно. Для меня же это существенно. Просто потому, что я не "толпа голодных индусов" и весь этот объем рутинной работы я просто-напросто не потяну в одиночку. При таком подходе очень велик риск попасть в сказку-неотвязку (never ending story) — то есть, когда все силы будут уходить только на поддержку. Я же хочу работать и над новыми алгоритмами, типа ClearType-like rendering. Поэтому и такое отношение. Вполне допускаю, что это не лучшее отношение.

Хорошо, колюсь. Вот есть некий Agg2D — довольно примитивный класс, оформленный в стиле класса Graphics. Пользоваться им просто. http://antigrain.com/stuff/Agg2D.zip
Чтобы скомпилировать, надо скачать http://antigrain.com/agg23.zip и положить файлы Agg2D* в что-то типа agg23/research/win32/Agg2D/*.* — просто чтобы не перенестраивать пути в проекте.

Есть даже мысль — завести этот проект на РСДН и хозяева эту мысль одобряют. Но честно сказать, я просто боюсь потонуть в рутине. Нужны собутыльники
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[8]: Оффтоп
От: korzhik Россия  
Дата: 21.09.05 20:26
Оценка:
Здравствуйте, McSeem2, Вы писали:

S>Хорошо, колюсь. Вот есть некий Agg2D — довольно примитивный класс, оформленный в стиле класса Graphics. Пользоваться им просто. http://antigrain.com/stuff/Agg2D.zip

MS>Чтобы скомпилировать, надо скачать http://antigrain.com/agg23.zip и положить файлы Agg2D* в что-то типа agg23/research/win32/Agg2D/*.* — просто чтобы не перенестраивать пути в проекте.

MS>Есть даже мысль — завести этот проект на РСДН и хозяева эту мысль одобряют. Но честно сказать, я просто боюсь потонуть в рутине. Нужны собутыльники


Уверен что продвижение этого проекта очень бы помогло бы продвижению твоей библиотеки.
Просто вспоминаю себя когда первый раз скачал AGG и пытался нарисовать линию это было не просто!

В ближайший месяц или два должен буду решить некоторые проблемы, а потом может быть запишусь в "собутыльники".
Re[8]: Оффтоп
От: ArtemGorikov Австралия жж
Дата: 22.09.05 08:39
Оценка:
Здравствуйте, McSeem2, Вы писали:


MS>Не ответил. Беда в том, что я понятия не имею, что такое HRGN, как из него вытащить данные и как они вообще представлены. В виде скан-лайнов или в виде полигона? Если первое (есть подозрение, что это так), то можно написать простой класс, который ведет себя как растеризатор (rewind_scanlines/sweep_scanline) и использовать его вместо растеризатора для дальнейших операций. Если это полигон — его надо предварительно растеризовать при помощи того же rasterizer_scanline_aa и потом уже использовать в scanline_boolean.


Т.е. можно поместить в HDC монохромный растр DIB-секции (предварительно забитый нулями), сделать ему BitBlt(....., WHITENESS), и воспользоваться scanline_boolean, применив его как трафаретку? Это интересная мысль, а как насчет дополнительных временных затрат на его создание и затрат памяти? Хотя монохромный растр, по идее, достаточно компактен.


AG>>Почему бы не иметь неуклюжего монстра размером в 1-1.5 метра, если GDI+ весит столько? В наше время это не размер, и хорошо бы иметь сборки в виде либы и dll, с макросами, определяющими используемые возможности.

AG>>А сейчас получается, что с GDI+ на порядок меньше траха, он принимает GDI объекты и его константы на входе, не озадачивается особенно форматом устройства вывода и "космическими координатами". Только вот качество его антиалиасинга не супер

MS>Вполне согласен. С точки зрения программиста, которому надо "нарисовать-линию-и-фсе", AGG — это далеко не лучший выбор. Я этого и не скрываю. Теоретически, конечно же, если бы был такой класс типа Graphics — это было бы гораздо более usable. Но здесь уже вступает в силу некая диалектика. Беда в том, как всю эту квачу поддерживать. GDI+ поддерживает толпа голодных индусов. Им бы только на хлеб заработать, а на чем — это совершенно не существенно. Для меня же это существенно. Просто потому, что я не "толпа голодных индусов" и весь этот объем рутинной работы я просто-напросто не потяну в одиночку. При таком подходе очень велик риск попасть в сказку-неотвязку (never ending story) — то есть, когда все силы будут уходить только на поддержку. Я же хочу работать и над новыми алгоритмами, типа ClearType-like rendering. Поэтому и такое отношение. Вполне допускаю, что это не лучшее отношение.


Ну, скажем так, мне надо нарисовать не только линию . В одном проекте, в котором я использовал AGG, было очень много copy-paste разных include, определений структур — а зачем все это? Удобно, когда есть набор шаблонных оберток, а include — одна — максимум 2 штуки.


MS>Хорошо, колюсь. Вот есть некий Agg2D — довольно примитивный класс, оформленный в стиле класса Graphics. Пользоваться им просто. http://antigrain.com/stuff/Agg2D.zip

MS>Чтобы скомпилировать, надо скачать http://antigrain.com/agg23.zip и положить файлы Agg2D* в что-то типа agg23/research/win32/Agg2D/*.* — просто чтобы не перенестраивать пути в проекте.

MS>Есть даже мысль — завести этот проект на РСДН и хозяева эту мысль одобряют. Но честно сказать, я просто боюсь потонуть в рутине. Нужны собутыльники

Я бы предложил написать шаблонный класс-обертку, замещающий CDC, или лучше интерфейс вида IDC и обертку к нему — аналог CDC, чтобы легко было в проектах перенаправлять вызовы к GDI на AGG прозрачно для юзера. Т.к. печать еще никто не отменял, IMHO нужно поддерживать полную обратную совместимость с HDC на уровне векторов (для записи метафайла).
Re[9]: Оффтоп
От: McSeem2 США http://www.antigrain.com
Дата: 22.09.05 15:17
Оценка:
Здравствуйте, ArtemGorikov, Вы писали:

AG>Т.е. можно поместить в HDC монохромный растр DIB-секции (предварительно забитый нулями), сделать ему BitBlt(....., WHITENESS), и воспользоваться scanline_boolean, применив его как трафаретку? Это интересная мысль, а как насчет дополнительных временных затрат на его создание и затрат памяти? Хотя монохромный растр, по идее, достаточно компактен.


Насколько я понял, можно вызвать GetRegionData(), нарисовать все эти прямоугольники и использовать буфер в качестве Alpha-mask. Правда в AGG есть только 8-битовая маска, а RGN по сути — монохромный. А монохромную маску я так и не сподобился пока сделать. Можно и через scanline_boolean, но для этого придется написать адаптор — простой растеризатор для прямоугольников (кстати, для полигональных регионов — там получается много-много мелких прямоугольников?). Стоп. А нафига это все? Если регионы используются в качестве маски для сложногго отсечения, то разве на BitBlt (или SetDIBitsToDevice) они не действуют? То есть, рисуем как обычно, но результирующий битмап выводим с регионом. И вообще, для чего эти регионы в данном случае нужны — для "круглых окон"?

AG>Ну, скажем так, мне надо нарисовать не только линию . В одном проекте, в котором я использовал AGG, было очень много copy-paste разных include, определений структур — а зачем все это? Удобно, когда есть набор шаблонных оберток, а include — одна — максимум 2 штуки.


Ну как бы вложенные "#include" пока еще никто не отменял. Кто мешает вместо copy-paste использовать один файл?

AG>Я бы предложил написать шаблонный класс-обертку, замещающий CDC, или лучше интерфейс вида IDC и обертку к нему — аналог CDC, чтобы легко было в проектах перенаправлять вызовы к GDI на AGG прозрачно для юзера. Т.к. печать еще никто не отменял, IMHO нужно поддерживать полную обратную совместимость с HDC на уровне векторов (для записи метафайла).


Вот и надо работать над этой интерфейсной частью. Это тоже большая работа. У меня для этого возможностей пока что нет. Есть заготовка, которую можно развивать/переделывать. Я могу консультировать, но непосредственно за сам внешний интерфейс не возьмусь. К тому же, полная "прозрачная совместимость" — это утопия, либо же это сильно кастрирует возможности вообще.
И это опять же только для виндов. А что делать на X11, MacOS, и прочих?
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[10]: Оффтоп
От: ArtemGorikov Австралия жж
Дата: 22.09.05 17:34
Оценка:
Здравствуйте, McSeem2, Вы писали:


MS>Насколько я понял, можно вызвать GetRegionData(), нарисовать все эти прямоугольники и использовать буфер в качестве Alpha-mask. Правда в AGG есть только 8-битовая маска, а RGN по сути — монохромный. А монохромную маску я так и не сподобился пока сделать. Можно и через scanline_boolean, но для этого придется написать адаптор — простой растеризатор для прямоугольников (кстати, для полигональных регионов — там получается много-много мелких прямоугольников?). Стоп. А нафига это все? Если регионы используются в качестве маски для сложногго отсечения, то разве на BitBlt (или SetDIBitsToDevice) они не действуют? То есть, рисуем как обычно, но результирующий битмап выводим с регионом. И вообще, для чего эти регионы в данном случае нужны — для "круглых окон"?


Когда вызывается серия InvalidateRect/InvalidateRgn , получается результирующий регион (результат операции OR) , который и попадает в HDC на WM_PAINT, когда система отрисовывает окно, либо окно само себя принудительно обновляет через UpdateWindow. Результирующий прямоугольник в PAINTSTRUCT — это на самом деле ограничивающий регион прямоугольник. Т.е., чтобы исключить рисование на запрещенных участках, выделить только rect в растеризатор недостаточно.


MS>Вот и надо работать над этой интерфейсной частью. Это тоже большая работа. У меня для этого возможностей пока что нет. Есть заготовка, которую можно развивать/переделывать. Я могу консультировать, но непосредственно за сам внешний интерфейс не возьмусь. К тому же, полная "прозрачная совместимость" — это утопия, либо же это сильно кастрирует возможности вообще.

MS>И это опять же только для виндов. А что делать на X11, MacOS, и прочих?

Ну так речь то пока идет про винду, прозрачная совместимость обеспечивается перегрузкой некоторых методов CDC и отрисовкой на AGG, остальное ничего не нужно трогать. Я таким образом (правда, на шаблонах) перенаправил вызовы на GDI+. Сложность использования AGG заключаются в отсечении и hutchbrush. Сделаю пока отсечение на 8-битной маске, а в будущем, если ты напишешь отсечение на монохромной маске, использую его.
Re[5]: Creative Docs .NET by Pierre Arnaud
От: c-smile Канада http://terrainformatica.com
Дата: 23.09.05 00:17
Оценка: +1
Здравствуйте, ArtemGorikov, Вы писали:

AG>Здравствуйте, c-smile, Вы писали:



CS>>Артем, я так понимаю ты не смотрел внутрь Гармони.

CS>>Там есть абстракция themes.
AG>Я бы с интересом посмотрел на ее исходники А чем ваша абстракция принципиально отличается от использованной в MS uxtheme.dll?

svn://harmonia.dyndns.org

А то получается как в том анекдоте — "Рембранта не читал но мнение свое имею"


CS>>То что ты видишь в demo это тема слепленная на скорую руку чтобы показать

CS>>единственное — можно делать свой стиль как систему объектов
CS>>Theme/Style.
AG>Как я уже говорил, демка мне не понравилась именно коричневым цветом. Если бы вы отнеслись к демке более основательно, т.е., к примеру, наняли хорошего веб-дизайнера (не путать с верстальщиком!), то и впечатление было бы совсем другое. Плюс еще, не всем вообще надо разрабатывать свою тему, большинство скорее возьмет готовую (IMHO).

Эта коричневая тема имеет имя Pathfinder.
D это продукт DigitalMars — там традиционно все библиотеки вертятся
вокруг оного. Phobos, Deimos, Ares и т.д.

Для спарвки у меня два образования — одно из них художественное (класс живопись).

CS>>Что я сделал в Гармони принципиального — отработка в принципе новой для такого

CS>>типа frameworks архитектуры распространения событий — event propagation.
AG>Что такое event propagation? Я знаю event bubbling — эта схема используется в DHTML и после некоторого количества гемора работает в приложениях с интерфейсом на WebBrowser-контроле. Ее же использовал и Bjarke в своем DirectUI.

http://www.terrainformatica.com/wiki/pmwiki.php?pagename=Harmonia.Harmonia
четвертый параграф сверху.

"и после некоторого количества гемора" — ???

"использовал и Bjarke в своем DirectUI."

Угу. Я опубликовал Harmonia на WTL newsgroup . Он и воспылал
после того со своим UI (очень личное имхо — ничего хорошего в этот раз у него не получилось)
Re[5]: Creative Docs .NET by Pierre Arnaud
От: c-smile Канада http://terrainformatica.com
Дата: 23.09.05 04:16
Оценка: +1
Здравствуйте, ArtemGorikov, Вы писали:

AG>Максим, меня в AGG не устраивают 3 вещи:

AG>1. Он не принимает на вход аналог gdi hatch brush
AG>2. Что-то там накрутили с clipping regions. Т.е. как я могу clip rgn, выделенный в HDC, передать в AGG, чтобы он не рисовал по запрещенным участкам? Опять же, лицензия на использование clipping — либы.
AG>3. Clip работает крайне медленно, если координаты большие. Пример — рисуем линию с x=от -10000 до 10000, clip rect (0,0,5,5). В этом случае на AGG тормоза начинаются просто нереальные, хотя на GDI и GDI+ это вообще никак не влияет, они рисуют эти 5 пикселов без лишних раздумий.
AG>Если бы не эти недостатки, я с удовольствием бы заменил GDI+ на AGG — надоело уже, как GDI+ мылит и коряво рисует линии.

Лирические отступления:

1) Это Open Source. Предполагается что если что-то не нравится то молоток в руки и на благо сообщества...
2) Критикуя — предлагай. Это золотой принцип дискуссии. Его нужно в RSDN прибить на самом видном месте кстати.

По делу:

"как я могу clip rgn, выделенный в HDC, передать в AGG"

А зачем? Не проще ли то что у тебя есть на экране подсунуть как уже готовый растр AGG (background)
и рисовать поверх AGG функциями. Потом скопировать bitmap обратно. Это кстати в общем случае быстрее будет
чем BitBlt на COMPLEXRGN.

Если вариант выше не проходит то используем либо ::BitBlt либо ::AlphaBlend на выбор.
Re[5]: Creative Docs .NET by Pierre Arnaud
От: uw  
Дата: 23.09.05 09:06
Оценка: -1
Здравствуйте, ArtemGorikov, Вы писали:

AG>XML DOM живет в MSXML.dll, не имеющем никакого отношения к .NET. Его часто используют MFC-шники, хотя есть SAX и куча велосипедов, не зависящих от MSXML.dll.


В .NET Framework собственная реализация XML DOM и XML парсера, не имеющая никакого отношения к MSXML.dll

AG>Максим, меня в AGG не устраивают 3 вещи:


Да у тебя "талант" — постоянно путаешь божий дар с яичницей.
Re[6]: Creative Docs .NET by Pierre Arnaud
От: Аноним  
Дата: 23.09.05 09:20
Оценка: -1
Здравствуйте, c-smile, Вы писали:


CS>svn://harmonia.dyndns.org

К сожалению, у меня в терминале не установлен subversion. А можно закачать просто в виде zip-архива?

CS>А то получается как в том анекдоте — "Рембранта не читал но мнение свое имею"

Рембрант был художником, соответственно картины его не читают, а смотрят.


CS>Эта коричневая тема имеет имя Pathfinder.

CS>D это продукт DigitalMars — там традиционно все библиотеки вертятся
CS>вокруг оного. Phobos, Deimos, Ares и т.д.
Ну не нравится мне коричневый цвет. В Windows традиционно используется серый/серебристый/синий.


CS>Для спарвки у меня два образования — одно из них художественное (класс живопись).

Какое это имеет отношение к делу? Вы же зарабатываете на жизнь, работая программистом, а не дизайнером


CS>>>Что я сделал в Гармони принципиального — отработка в принципе новой для такого

CS>>>типа frameworks архитектуры распространения событий — event propagation.
AG>>Что такое event propagation? Я знаю event bubbling — эта схема используется в DHTML и после некоторого количества гемора работает в приложениях с интерфейсом на WebBrowser-контроле. Ее же использовал и Bjarke в своем DirectUI.

CS>http://www.terrainformatica.com/wiki/pmwiki.php?pagename=Harmonia.Harmonia

CS>четвертый параграф сверху.
"Принципиально новая архитектура" это и есть event bubbling, она используется веб-программистами еще с появления DHTML (IE 4.0).

CS>"и после некоторого количества гемора" — ???

После "много траха" с WebBrowser. Знаете, удобнее инициализировать контролы в OnInitDialog, а не в OnDocumentComplete, который приходит намного позже, а в промежутке между этими двумя событиями юзер может любоваться неинициализированными и даже неактивными (в случае, если на странице хостятся ActiveX-ы) — контролами. А еще юзер может в настройках броузера выключить скрипты или от контрола потребует сертификат.


CS>"использовал и Bjarke в своем DirectUI."


CS>Угу. Я опубликовал Harmonia на WTL newsgroup . Он и воспылал

CS>после того со своим UI (очень личное имхо — ничего хорошего в этот раз у него не получилось)

В данном случае, схему событий Вы тоже не сами придумали, а позаимствовали у DHTML. Он на сайте честно написал, что идеи брал у DHTML, Java и других windowless библиотек и ссылку привел на блог майкросовтовца. Там написано, что первая windowless либа использовалась в Access, потом перешла на все продукты из пакета Office, а уже потом такую же написала команда Internet Explorer.
Re[6]: Creative Docs .NET by Pierre Arnaud
От: ArtemGorikov Австралия жж
Дата: 23.09.05 09:38
Оценка: -1
Здравствуйте, c-smile, Вы писали:

CS>Лирические отступления:


CS>1) Это Open Source. Предполагается что если что-то не нравится то молоток в руки и на благо сообщества...

CS>2) Критикуя — предлагай. Это золотой принцип дискуссии. Его нужно в RSDN прибить на самом видном месте кстати.
Почитайте сначала ветку выше, там я предлагал Максиму свои мысли по поводу интерфейса.


CS>По делу:


CS>"как я могу clip rgn, выделенный в HDC, передать в AGG"


CS>А зачем? Не проще ли то что у тебя есть на экране подсунуть как уже готовый растр AGG (background)


Это нужно затем, чтобы ограничить область отрисовки windowless контролу. Не по делу замечу, что в Harmonia при уменьшении размеров окна закладки табов налазят на дерево слева, т.е. клипа по региону котрола, чтобы он рисовал только там, где положено, нет.

CS>и рисовать поверх AGG функциями. Потом скопировать bitmap обратно. Это кстати в общем случае быстрее будет

CS>чем BitBlt на COMPLEXRGN.
В теории может и так. А на практике копирование в/из DIB-секции через BitBlt с нулевым регионом отсечения жутко тормозит. Если копировать между экраном и DDB, созданным через CreateCompatibleBitmap, то это вообще стоит 0. Вот я теперь думаю, а не из-за того ли тормоза в GDI+, что он внутри использует DIB-секцию?

CS>Если вариант выше не проходит то используем либо ::BitBlt либо ::AlphaBlend на выбор.

Это высказывание я вообще не понял.
Re[6]: Creative Docs .NET by Pierre Arnaud
От: ArtemGorikov Австралия жж
Дата: 23.09.05 09:50
Оценка: -1
Здравствуйте, uw, Вы писали:

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


AG>>XML DOM живет в MSXML.dll, не имеющем никакого отношения к .NET. Его часто используют MFC-шники, хотя есть SAX и куча велосипедов, не зависящих от MSXML.dll.


uw>В .NET Framework собственная реализация XML DOM и XML парсера, не имеющая никакого отношения к MSXML.dll


Я просто заступился на .NET Не в тему: может, и спецификация XML в .NET тоже собственная

AG>>Максим, меня в AGG не устраивают 3 вещи:

uw>Да у тебя "талант" — постоянно путаешь божий дар с яичницей.

А что, если не секрет, из .NET и AGG Вы считаете божьим даром и что — яичницей
Re[7]: Creative Docs .NET by Pierre Arnaud
От: c-smile Канада http://terrainformatica.com
Дата: 23.09.05 20:14
Оценка: +1 :)
Здравствуйте, ArtemGorikov, Вы писали:

AG>Здравствуйте, c-smile, Вы писали:


CS>>Лирические отступления:


CS>>1) Это Open Source. Предполагается что если что-то не нравится то молоток в руки и на благо сообщества...

CS>>2) Критикуя — предлагай. Это золотой принцип дискуссии. Его нужно в RSDN прибить на самом видном месте кстати.
AG>Почитайте сначала ветку выше, там я предлагал Максиму свои мысли по поводу интерфейса.

Из черного юмора Губермана:
Надпись на могильной плите: "Лежал бы ты, смотрел бы я"

В том смысле что а) подними проект такого уровня.
b) выложи его бесплатно в Open Source
c) а потом сядь и слушай фразы "что мне не нравится в твоем проекте" или "слышь, тебе надо сделать так и так и тогда я так и быть начну твою либу использовать она ж ведь бесплатная, да?".

Еще раз повторю: критикуя — предлагай.
В данном контексте предложение заключается в следующем:
идешь на
news://gmane.comp.graphics.agg
и говоришь : "люди добрые вот мое предложение как сделать вот это и вот это, файлы лежат там-то и там-то". Можно еще сначала спросить а есть ли готовое у кого на эту тему.
добрые люди есть — могут поделиться заготовками.


CS>>По делу:


CS>>"как я могу clip rgn, выделенный в HDC, передать в AGG"


CS>>А зачем? Не проще ли то что у тебя есть на экране подсунуть как уже готовый растр AGG (background)


AG>Это нужно затем, чтобы ограничить область отрисовки windowless контролу. Не по делу замечу, что в Harmonia при уменьшении размеров окна закладки табов налазят на дерево слева, т.е. клипа по региону котрола, чтобы он рисовал только там, где положено, нет.


Опять же, если ты посмотришь в код то ты увидишь что есть там отсечение.
В данном конкретном контейнере по всей видимости бага наличесвует.

(Если бы ты подумал немного то понял что например скроллинг с дочерними конторолами без отсечения не сделать)

CS>>и рисовать поверх AGG функциями. Потом скопировать bitmap обратно. Это кстати в общем случае быстрее будет

CS>>чем BitBlt на COMPLEXRGN.
AG>В теории может и так. А на практике копирование в/из DIB-секции через BitBlt с нулевым регионом отсечения жутко тормозит. Если копировать между экраном и DDB, созданным через CreateCompatibleBitmap, то это вообще стоит 0. Вот я теперь думаю, а не из-за того ли тормоза в GDI+, что он внутри использует DIB-секцию?

В предлагаемой схеме нет вообще никаких регионов.
И что такое "BitBlt с нулевым регионом отсечения"?


CS>>Если вариант выше не проходит то используем либо ::BitBlt либо ::AlphaBlend на выбор.

AG>Это высказывание я вообще не понял.

Рисуешь AGG на DDB и делаешь BitBlt. BitBlt саи разберется с rgn.

Использование AlphaBlend — экзотика но может иногда сработать.
Русуешь AGG на 32bpp DIB. Заливешь регион отсечения transparent color на этом
DIB и делаешь ::AlphaBlend. Выглядит сие действо не очень но иногда the only option.

Успехов в пути.

ПыСы: Свистни как напишешь чего, а лучше прям сюда выкладывай — обсудим
Re[7]: Creative Docs .NET by Pierre Arnaud
От: c-smile Канада http://terrainformatica.com
Дата: 23.09.05 20:26
Оценка: :)
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, c-smile, Вы писали:



CS>>svn://harmonia.dyndns.org

А>К сожалению, у меня в терминале не установлен subversion. А можно закачать просто в виде zip-архива?

Посмотри ниже, добрая душа выкладывала.

CS>>А то получается как в том анекдоте — "Рембранта не читал но мнение свое имею"

А>Рембрант был художником, соответственно картины его не читают, а смотрят.

Да ну!?? Эх, вона как...
Ошибся я. Писателя Рерихом звали...
Re[8]: Creative Docs .NET by Pierre Arnaud
От: McSeem2 США http://www.antigrain.com
Дата: 23.09.05 22:12
Оценка: 3 (1)
CS>В том смысле что а) подними проект такого уровня.
CS>b) выложи его бесплатно в Open Source
CS>c) а потом сядь и слушай фразы "что мне не нравится в твоем проекте" или "слышь, тебе надо сделать так и так и тогда я так и быть начну твою либу использовать она ж ведь бесплатная, да?".

Андрей, не бухти, все нормально
Иногда подобный критицизм наводит на некоторые конструктивные мысли.

CS>Еще раз повторю: критикуя — предлагай.

CS>В данном контексте предложение заключается в следующем:
CS>идешь на
CS>news://gmane.comp.graphics.agg
CS>и говоришь : "люди добрые вот мое предложение как сделать вот это и вот это, файлы лежат там-то и там-то". Можно еще сначала спросить а есть ли готовое у кого на эту тему.
CS>добрые люди есть — могут поделиться заготовками.

На самом деле, есть. Вот, один чувачок из Македонии сделал:
http://www.point.com.mk/aggplus/
Называет сябя ником Marlon.
Он даже соптимизировал кой-чего для MMX, так что его творение кроет GDI+ по скорости как... ну вы поняли.
Но если что-то не так — все вопросы к нему. Это не я...
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[8]: Creative Docs .NET by Pierre Arnaud
От: ArtemGorikov Австралия жж
Дата: 24.09.05 10:46
Оценка:
Здравствуйте, c-smile, Вы писали:


CS>Из черного юмора Губермана:

CS>Надпись на могильной плите: "Лежал бы ты, смотрел бы я"
При чем тут черный юмор Губермана? Может, я чего не понимаю, но я всего лишь хотел покритиковать AGG за некоторые грабли, с которыми я лично столкнулся. Я же не сказал, что GDI+ — оч хорошая либа, а AGG — нет? Сейчас я занимаюсь как раз заменой GDI+ на AGG в ком. проекте, т.к. недоволен качеством картинки GDI+.

CS>В том смысле что а) подними проект такого уровня.

CS>b) выложи его бесплатно в Open Source
CS>c) а потом сядь и слушай фразы "что мне не нравится в твоем проекте" или "слышь, тебе надо сделать так и так и тогда я так и быть начну твою либу использовать она ж ведь бесплатная, да?".
Я сказал "хорошо бы было так и так, тогда бы я смог его заюзать". Так что "Почувствуте разницу" (С) из какой-то рекламы.


CS>Еще раз повторю: критикуя — предлагай.

CS>В данном контексте предложение заключается в следующем:
CS>идешь на
CS>news://gmane.comp.graphics.agg
CS>и говоришь : "люди добрые вот мое предложение как сделать вот это и вот это, файлы лежат там-то и там-то". Можно еще сначала спросить а есть ли готовое у кого на эту тему.
CS>добрые люди есть — могут поделиться заготовками.
У меня есть свои заготовки. Политика компании не позволяет раздавать исходники сторонним людям.


CS>Опять же, если ты посмотришь в код то ты увидишь что есть там отсечение.

CS>В данном конкретном контейнере по всей видимости бага наличесвует.
Я горю от нетерпения посмотреть код Harmonia. К сожалению, в терминале не установлен subversion, поэтому я могу закачать только zip/rar архив. Буду очень признателен, если кинете ссылку для закачки.

CS>(Если бы ты подумал немного то понял что например скроллинг с дочерними конторолами без отсечения не сделать)

Иногда я немного думаю. Когда пишу код. Вообще это высказывание можно принять за хамский разговор. Я знаю, что в вашем коде есть отсечение, но также есть указанный баг. Еще иногда падает демка на вызове диаложек по 4 кнопкам на одной из закладок.


CS>В предлагаемой схеме нет вообще никаких регионов.

CS>И что такое "BitBlt с нулевым регионом отсечения"?
Я хотел сказать, что в source dc выделен нулевой регион.


CS>Рисуешь AGG на DDB и делаешь BitBlt. BitBlt саи разберется с rgn.


CS>Использование AlphaBlend — экзотика но может иногда сработать.

CS>Русуешь AGG на 32bpp DIB. Заливешь регион отсечения transparent color на этом
CS>DIB и делаешь ::AlphaBlend. Выглядит сие действо не очень но иногда the only option.
Думаю, есть другие, более оптимальные пути решения задачи.


CS>Успехов в пути.

Спасибо

CS>ПыСы: Свистни как напишешь чего, а лучше прям сюда выкладывай — обсудим

Написал, если смогу — выложу.
Re[6]: Creative Docs .NET by Pierre Arnaud
От: ArtemGorikov Австралия жж
Дата: 26.09.05 07:24
Оценка:
Здравствуйте, Denis_TST, Вы писали:

D_T>Кажется у Фень Юаня был описан механизм печати в winows. Там каждое задание на принтер это фактически метафайл. При печати

D_T>этот метафайл растеризуется но не весь а "плосами" в ширину страницы и посылается на печать. Вроде так...
"Полосами" растеризуется только для растровых принтеров (струйники). Большинство (если не все) лазерных принтеров получают страницу в виде PostScript.

D_T>А у gdi+ есть свой формат метафайлов который поддерживает эти все его градиенты и сглаживание. Возможно там тот же принцип...


У GDI+ свой, странный формат метафайлов. Странный потому, что его не может прочесть даже стандартный просмотрщик WinXP.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.