Re[5]: О дизайне карандашей
От: vdimas Россия  
Дата: 18.12.05 07:09
Оценка: +1
Здравствуйте, McSeem2, Вы писали:

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


MS>>> а о том, нафига он вообще нужен этот карандаш? А особенно — зачем он нужен для чисто векторонй операции вычитания полигонов?


VD>>Вот последний вопрос просто в точку. Мне кажется он для этого вообще не нужен. Полигон есть полигон. Захотим ранисовать, тогда и передадим его вместе с карадашем в функцию рисования полигонов. А для рассчетов можно и одними полигонами обойтись.


MS>С дизайном GDI+ он как раз нужен для векторных операций. Так, еще раз повторяю, для тех кто в танке. В классе Pen вместе с цветами намешаны чисто геометрические свойства — такие, как Width, LineJoin, LineCap, MiterLimit. И если ты все-таки прочитаешь мое сообщение, то ты увидишь, что речь была не просто об операции над полигонами, а о том, чтобы линию представить как полигон (это называется stroke) и вычесть ее из некого другого полигона. И для этого тоже нужен карандаш и это уже само по себе противоестественно. А теперь вопрос — для какой цели в этом карандаше и в этой операции нужен цвет?

MS>Я просто на конкретном примере демонстрируую, что эта концепция карандашей не выдерживает самой элементарной критики. И закончим на этом.

Тут http://www.rsdn.ru/Forum/Message.aspx?mid=1548053&only=1
Автор: vdimas
Дата: 18.12.05


Прекрасно понимаем о чем ты, но не для того был разработан GDI, не для того... GDI — это абстракция устройства, а не графического редактора. А устройства всякие бывают. И как всегда при разработке оптимизировали самые критичные моменты, коими вывод на экран не является.

Если бы они сделали как предлагаешь ты, то от виндов отвернулись бы производители устройств в первую очередь, ибо — не было бы смысла вкладывать силы в реализацию сверхсложного АПИ, 99% из которого устройство не способно поддержать физически ...
Re[4]: О дизайне карандашей
От: Cyberax Марс  
Дата: 18.12.05 07:11
Оценка:
vdimas wrote:
> А рендериниг в 2D. Более ничего. Вполне приличный антиалиасинг и
> заливка. Что еще надо? Остальное имеет такое невообразимое количество
> инвариантов, что мне трудно представить их реализацию в либе,
> преттендующей на "базовую". Не забывай, что кому-то ведь и дрова писать
> надо, поддерживающие GDI (уверен, что скоро и GDI+)
Можно было бы ожидать от GDI+ слегка более качественной реализации.
Все-таки большую часть времени она будет исопльзоваться для визуализации
изображений на обычный экран.

Antigrain показывает, что можно было сделать все намного лучше.

> CS>Возникает третий законный вопрос: что конкретно имели ввиду авторы

> GDI+, зачем оно вообще?
> Дрова и еще раз дрова. Одинаковый способ рисования как на принтере, так
> и на плоттере.
Это скорее из области фантастики. Мне в текущем проекте нужно выводить
научную графику на принтер (в том числе на листы A1). Я перепробовал
кучу способов рендеринга моделей:
1. Рисовать OpenGL на контекст принтера — не работает вообще (хотя
документация говорит обратное).
2. Руками рендерить модель в виде векторного описания через OpenGL
feedback'и. На принтере выглядит уродливо.
3. Переводить векторную модель в PostScript и отсылать его на принтер.
На некоторых PS-принтерах выглядит нормально, но куча проблем с
совместимостью.

В итоге теперь мы прикрутили софтовый Mesa GL и при печати делаем
рендеринг изображения по кусочкам (100-200Мб размером) во внеэкранный
буффер. Эти изображения парраллельно отсылаем на принтер.

Вообще, принтеры умеют нормально растеризовать только небольшие
фрагменты векторных описаний — символы из шрифтов, например.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[6]: О дизайне карандашей
От: Cyberax Марс  
Дата: 18.12.05 07:29
Оценка:
vdimas wrote:
> Заодно помедитировать на тему — причем тут собственно, плоттеры или
> удаленные графические терминалы и особенно ширина канала связи при
> заливке шрихом сотен участков на сложном чертеже?
Если какие принтеры и занимаются полноценной заливкой, то стоят они
$$$$$ и не используют для печати GDI.

> Действиетльно, ну нахрена Brush, если можно каждый раз передать

> каждую линию штриха Ну блин, как дети, ей богу...
Дело в том, что рисование нестандартной шириной — достаточно редкая
операция. Поэтому можно было бы сделать две функции: draw_line и
draw_styled_line.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[6]: О дизайне карандашей
От: c-smile Канада http://terrainformatica.com
Дата: 18.12.05 08:44
Оценка:
Здравствуйте, vdimas, Вы писали:


CS>>"Иногда GDI+ не очень проворна" (автор указан ниже).


V>Иногда GDI+ сидит поверх дров GDI. Скоро будет наоборот.


Эту мулечку я уже от кого-то из здесь присутвующих слышал...
Года три тому назад.

Только ты все перепутал.

GDI как и GDI+ будут эмулирваться в
Windows Graphics Foundation которая есть "многоканальная" версия DirectX.


CS>>Это киллер и UI и редактора как ты сам понимаешь.

CS>>И самое грустное — ни объехать сие ни на какой козе.

V>Это уровень 0, не более того. Ты всерьез считаешь, что нормальный редактор должен делать рендеринг прямо на экран?

V>Не понял? Почему не объехать? Нельзя рисовать по точкам или плюнуть в него битмапом? Он тебе даже антиалиасинг заботливо сделает, если хочешь

"плюнуть в него битмапом" можно конечно если у тебя есть чем этот битмап эффективно наполнять.
Только битмап то только на экран можно это самое... На принтере-то пикселов нет...

Я вообще не понимаю... ну есть же в .NET GDI+ ну и рисуйте на нем в конце концов...
Он классовый по сами помидоры. Ну медленнее, ну дык ить как говорят в преферансе "за той горой все спрячется".

Чего не хватает-то? Еще десятка классов всяко разных? Или чего? В чем проблема GDI+?
Кто-нибудь может задачу/проблему-то описать? Только без эзотерики.

Я свою гипотезу изложил почему медленно и как надо правильнно.
Макс на примере AGG, я на примере Harmonia/HTMLayout демонстрируем наши подходы на практике.

"К рукавам претенцзии есть?"
Re[7]: О дизайне карандашей
От: Cyberax Марс  
Дата: 18.12.05 09:20
Оценка:
c-smile wrote:
> Только битмап то только на экран можно это самое... На принтере-то
> пикселов нет...
Есть, есть. Только они маленькие....

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[5]: О дизайне карандашей
От: vdimas Россия  
Дата: 18.12.05 14:00
Оценка:
Здравствуйте, Cyberax, Вы писали:


C>В итоге теперь мы прикрутили софтовый Mesa GL и при печати делаем

C>рендеринг изображения по кусочкам (100-200Мб размером) во внеэкранный
C>буффер. Эти изображения парраллельно отсылаем на принтер.

...

C>Вообще, принтеры умеют нормально растеризовать только небольшие

C>фрагменты векторных описаний — символы из шрифтов, например.

По моим экспериментам — это зависит от памяти принтера. Боролся как-то с цветным лазерным принтером — громадина старая на 64М памяти. Кое-какие фото A3 не выводит и все тут... Памяти не хватало...
Re[6]: О дизайне карандашей
От: Cyberax Марс  
Дата: 18.12.05 14:04
Оценка:
vdimas wrote:
> C>Вообще, принтеры умеют нормально растеризовать только небольшие
> C>фрагменты векторных описаний — символы из шрифтов, например.
> По моим экспериментам — это зависит от памяти принтера. Боролся как-то с
> цветным лазерным принтером — громадина старая на 64М памяти. Кое-какие
> фото A3 не выводит и все тут... Памяти не хватало...
Принтеры — существа нежные. Изображения надо печатать по кусочкам, чтобы
умешались в буффер принтера.

У нас печатаются полосками по 20-30Мб толщиной.

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[7]: О дизайне карандашей
От: McSeem2 США http://www.antigrain.com
Дата: 18.12.05 15:23
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Принтеры — существа нежные. Изображения надо печатать по кусочкам, чтобы

C>умешались в буффер принтера.

C>У нас печатаются полосками по 20-30Мб толщиной.


То есть, вы гоните через всю сеть эти толстые битмапы? А вообще, просто GDI на принтерный DC почему не работает? У меня вроде бы все работает, правда я не знаю, что делается там внутри — возможно тоже растеризуется в пямяти.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[8]: О дизайне карандашей
От: Cyberax Марс  
Дата: 18.12.05 15:51
Оценка:
McSeem2 wrote:
> C>У нас печатаются полосками по 20-30Мб толщиной.
> То есть, вы гоните через всю сеть эти толстые битмапы?
А что делать? На самом деле не так уж и тормозит на 100МБит или по USB2.

> А вообще, просто GDI на принтерный DC почему не работает?

Он принтеру напрямую передает только простейшие команды (рисование
текста, простых линий и т.п.)

> У меня вроде бы все работает, правда я не знаю, что делается там

> внутри — возможно тоже растеризуется в пямяти.
Так и делаем. Только внутри он все равно сам все растеризует, причем с
ограничением в 2Гб по возможному размеру картинки (у нас бывают и
намного больше).

--
С уважением,
Alex Besogonov (alexy@izh.com)
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[4]: О дизайне карандашей
От: McSeem2 США http://www.antigrain.com
Дата: 18.12.05 15:51
Оценка: +1
Здравствуйте, vdimas, Вы писали:


MS>>Как так "растровая"? Я чего-то не понимаю. Как только у нас возникают функции MoveTo/LineTo, все — мы уже имеем дело с векторными примитивами.


V>


V>Понимаешь, после выполнения операции MoveTo ты не можешь получить линию как объект. ТЫ получаешь ее растровое представление (в большинстве случаев, WMF — отдельный случай).


А здесь речь идет не о библиотеке как таковой, а о модели данных. Грубо говоря (сильно утрированно!), XML DOM имеет к этому вопросу большее отношение, чем GDI+. Не надо все в одну кучу валить. Есть модель данных, например, Flash. Есть проигрыватель Flash. И никому не приходит в голову требовать от проигрывателя векторные примитивы. Вот GDI+ — это и есть некий такой проигрыватель. И он — векторный, что характерно. Так понятней?

MS>>Смею заверить, что Transform это не свойство "графического примитива", это — свойство конвейера.


V>Почему? У меня есть некий овал. На конкретной сцене я его повернул как угодно. Так к чему мне привязать это св-во?


Начнем с вопроса — а зачем это "свойство" к чему-то привязывать? И почему поворот должен быть свойством? Вообще-то поворот — это операция.

V>Я же сказал, основные св-ва примитивов в графической сцене: Origin, Transform, Children. То, что ты называешь конвеером — это такой спецальный вид графического объекта, который генерирует другие объекты? Я же говорю об иерархии контейнеров. Это немного другой взглдя на вещи, более "традиционный". Смотрим тот же FreeHand. Они запоминают ОПЕРАЦИИ, но запомненная операция у них — это такой объект... Наверно, как твой конвеер.


Ну, во-первых, не надо путать модель данных (контейнер) с "рисовальщиком". Во-вторых, зачем надо запоминать ОПЕРАЦИИ? Чтобы Undo сделать? Ну так это еще более другая категория — категория редактирования данных.
И еще раз — что такое "графический примитив"?

Короче говоря, я так и не понял, чего же ты хочешь сказать. Есть лекторы двух типов. После речи первого все думают "надо же какой он умный — ничего не понятно". После речи второго — "какой лектор дурак — мне все понятно!". Я стремлюсь, чтобы меня относили ко второй категории.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[7]: О дизайне карандашей
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.12.05 16:31
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>GDI как и GDI+ будут эмулирваться в

CS>Windows Graphics Foundation которая есть "многоканальная" версия DirectX.

Вы оба неправы . WGF, когда (если) оно будет, будет предназначено скорее для игрушек и low level. Для десктопа будет использоваться System.Windows.Media, под которым может быть и GDI+, и теперешний DirectX, и будущий WGF, и специализированные, заточенные под конкретное устройство вывода, библиотеки..

P.S. Свойства Color в System.Windows.Media нет ни у Pen, ни у базового Brush.
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[8]: О дизайне карандашей
От: c-smile Канада http://terrainformatica.com
Дата: 18.12.05 18:48
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


CS>>GDI как и GDI+ будут эмулирваться в

CS>>Windows Graphics Foundation которая есть "многоканальная" версия DirectX.

AVK>Вы оба неправы . WGF, когда (если) оно будет, будет предназначено скорее для игрушек и low level. Для десктопа будет использоваться System.Windows.Media, под которым может быть и GDI+, и теперешний DirectX, и будущий WGF, и специализированные, заточенные под конкретное устройство вывода, библиотеки..


В данном случае речь идет не про то как в .NET будет видеть рисовательный слой.

Я отвечал на вопрос как будут выглядеть legacy native GDI/GDI+ интерфейсы.

И в данном конкретном контексте я прав .

Windows Graphics Overview
Re[8]: О дизайне карандашей
От: c-smile Канада http://terrainformatica.com
Дата: 18.12.05 18:53
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>c-smile wrote:

>> Только битмап то только на экран можно это самое... На принтере-то
>> пикселов нет...
C>Есть, есть. Только они маленькие....

Тебя обманули.

Есть dots перменного размера которые не привязаны к решетке.

Смотрим например что есть REt и думаем почему PS это родной формат ввода для принтеров.


C>--

C>С уважением,
C> Alex Besogonov (alexy@izh.com)
Re[9]: О дизайне карандашей
От: c-smile Канада http://terrainformatica.com
Дата: 18.12.05 19:31
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>McSeem2 wrote:

>> C>У нас печатаются полосками по 20-30Мб толщиной.
>> То есть, вы гоните через всю сеть эти толстые битмапы?
C>А что делать? На самом деле не так уж и тормозит на 100МБит или по USB2.

Как-то это все подозрительно выглядит.
Т.к. струйным нужен один тип "bitmap", лазерным нужно другой тип.


>> У меня вроде бы все работает, правда я не знаю, что делается там

>> внутри — возможно тоже растеризуется в пямяти.
C>Так и делаем. Только внутри он все равно сам все растеризует, причем с
C>ограничением в 2Гб по возможному размеру картинки (у нас бывают и
C>намного больше).

Это для лазерных принтеров как я понимаю?



C>--

C>С уважением,
C> Alex Besogonov (alexy@izh.com)
Re[9]: О дизайне карандашей
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.12.05 19:48
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>В данном случае речь идет не про то как в .NET будет видеть рисовательный слой.


Это не просто .NET, это WinFX.

CS>Я отвечал на вопрос как будут выглядеть legacy native GDI/GDI+ интерфейсы.


Точно так же, как они выглядят сейчас. Какой смысл это обсуждать? И насчет эмуляции все намного сложнее. Тут пока непонятно что в Висте с ними будет, особенно при работающем DCE, а там ведь пока никакого WGF не планируется.

CS>Windows Graphics Overview


Я ее смотрел. И ей уже 200 лет. На практике там наверняка уже все поменялось.
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[10]: О дизайне карандашей
От: c-smile Канада http://terrainformatica.com
Дата: 18.12.05 20:28
Оценка:
CS>>Windows Graphics Overview

AVK>Я ее смотрел. И ей уже 200 лет. На практике там наверняка уже все поменялось.


Это с WinHEC 2005 (Апрель)
Re[11]: О дизайне карандашей
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.12.05 20:36
Оценка:
Здравствуйте, c-smile, Вы писали:

AVK>>Я ее смотрел. И ей уже 200 лет. На практике там наверняка уже все поменялось.


CS>Это с WinHEC 2005 (Апрель)


Ну я и говорю — 200 лет в обед. Для сравнения — последний CTP WinFX — конец ноября и от апрельского он отличается как небо от земли.
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[12]: О дизайне карандашей
От: c-smile Канада http://terrainformatica.com
Дата: 18.12.05 20:48
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


AVK>>>Я ее смотрел. И ей уже 200 лет. На практике там наверняка уже все поменялось.


CS>>Это с WinHEC 2005 (Апрель)


AVK>Ну я и говорю — 200 лет в обед. Для сравнения — последний CTP WinFX — конец ноября и от апрельского он отличается как небо от земли.


Если за это время все поменялось настолько радикально то можно уже говорить о том что
реально в обозримые сроки ничего не будет.
Re[13]: О дизайне карандашей
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 18.12.05 20:52
Оценка:
Здравствуйте, c-smile, Вы писали:

AVK>>Ну я и говорю — 200 лет в обед. Для сравнения — последний CTP WinFX — конец ноября и от апрельского он отличается как небо от земли.


CS>Если за это время все поменялось настолько радикально то можно уже говорить о том что

CS>реально в обозримые сроки ничего не будет.

Это ты о чем?
... << RSDN@Home 1.2.0 alpha rev. 624 on Windows XP 5.1.2600.131072>>
AVK Blog
Re[6]: О дизайне карандашей
От: McSeem2 США http://www.antigrain.com
Дата: 19.12.05 00:29
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Прекрасно понимаем о чем ты, но не для того был разработан GDI, не для того... GDI — это абстракция устройства, а не графического редактора. А устройства всякие бывают. И как всегда при разработке оптимизировали самые критичные моменты, коими вывод на экран не является.


А что является? Что конкретно? Какие такие "устройства" и какими они бывают "разными"?

V>Если бы они сделали как предлагаешь ты, то от виндов отвернулись бы производители устройств в первую очередь, ибо — не было бы смысла вкладывать силы в реализацию сверхсложного АПИ, 99% из которого устройство не способно поддержать физически ...


Подобные заявления должны подкрепляться некими доказательствами. Перечисли хотя бы несколько устройств, напрямую поддерживающих GDI+. Или производителей устройств, которые бы "отвернулись от виндов, если бы было сложнее". Я верю, что такие имеются, но мне просто хотелось бы знать кого-то конкретно для примера. В противном случае эти заявления пахнут демагогоией.

Ну и потом — не вижу большой связи между неким API (GDI, GDI+) и интерфейсом устройства. Безусловно, связь присутствует, но требовать от устройства поддержки полной спецификации GDI+ — это маразм.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.