Добро пожаловать, Гость. Пожалуйста авторизуйтесь здесь.
FGHIGate на GaNJa NeTWoRK ST@Ti0N - Просмотр сообщения в эхоконференции RU.LINUX
Введите FGHI ссылку:


Присутствуют сообщения из эхоконференции RU.LINUX с датами от 24 Jan 02 06:01:34 до 28 May 24 10:58:34, всего сообщений: 8392
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 6769 из 8392 ========================================= RU.LINUX =
От   : Ilya Anfimov                     2:5020/400         28 Dec 02 20:38:44
Кому : Oleg Goodyckov                                      28 Dec 02 20:38:44
Тема : Re: XCreateImage и XPutImage
FGHI : area://RU.LINUX?msgid=adt.ru+4aaf68b8
На   : area://RU.LINUX?msgid=videoproject.kiev.ua+3dbc6baf
= Кодировка сообщения определена как: IBM866 =================================
==============================================================================
From: ilan@adt.ru (Ilya Anfimov)

On Sat, 28 Dec 2002 08:07:25 +0000 (UTC),
Oleg Goodyckov <og@videoproject.kiev.ua> wrote:
>On Wed, Dec 25, 2002 at 02:39:34PM +0000, Ilya Anfimov wrote:
>> On Mon, 23 Dec 2002 10:18:23 +0000 (UTC),

[грустное skipped]

>> >  src1_win.c_image = XCreateImage (XtDisplay (src1_win.root),
>> >            DefaultVisual (XtDisplay(src1_win.root), 0), 24, ZPixmap,0,
>> >     (char*)src1_win.source->channels(1)->frame,
>> >            src1_win.source->vfmt.fmt.pix.width,      // исх. ширина - 768
>> >            src1_win.source->vfmt.fmt.pix.height,16,  // исх. высота - 576
>> >            src1_win.source->vfmt.fmt.pix.width*3*4); // 768/192=4 - новая
>>
>>  Последней  строчки совсем не понял. Откуда тут ещё "*4" взялось?
>
>Hу так строка ведь должна быть в четверо длиннее, если я хочу сжать
>картинку по вертикали вчетверо.

 Во-первых,  на  XCreateImage  то,  что ты потом будешь делать не
влияет. Во-вторых... Hу об этом после.

>
>>  И два момента кстати: во-первых, я всегда опасался XCreateImage.
>
>А что использовать взамен?

 XInitImage

>
>> Там  же  вроде написано, что он byte_order и bits_order с сервера
>> берёт? С этим же заколебёшься разбирать, если картинка не с  того
>> же  сервера  получена.  Хотя это, конечно, может быть и враньё. И
>> по этому же поводу: bitmap_unit для TrueColor у XFree обычно  32.
>> То    есть    "r,g,b,пропуск".   А   ты   случайно   там   подряд
>> "r,g,b,r,g,b,..."  не зафигачил? Если так,  то  многое  стало  бы
>> понятнее.
>>  Во-вторых,  а  чего  у  тебя bitmap_pad всего 16? Hе, это мелочь
>> вроде и рояли не играет, но все вроде сейчас тоже в 32  на  True-
>> Color ставят. Хотя это совсем мелочь, насколько я понимаю.
>
>Проверял. Hе играет.
>Да и не понял, что это за цифра такая? В доке ну очень кратенько о ней
>сказано.
>
>Кстати, проблема преодолена путем установки у объекта XImage поля
>bits_per_pixel в 24. Сразу после вызова XCreateImage оно равнялось 32.

 Угу.  Примерно то, что я сказал "во-первых". Только, разумеется,
bits_per_pixel, а не bitmap_unit. Запамятовал за давностью.

 Так вот: так делать нельзя. После вызова XCreateImage/XInitImage
поля  в  структуре  ximage  менять нельзя. Без добавочных вызовов
XInitImage/XDestroyImage.

>
>
>Hо проблема переродилась в другую. Цвета-то теперь нормальные, но получаю
>я картинку размерами 768 х 576, а отображать ее надо в окно размерами
>192 х 144. То есть, в четверо сжатой по обеим размерностям. Сжимать ее
>самому на месте - медленно выходит. Hо специальных возможностей - типа
>создать XImage с исходными размерами, а отобразить через XPutImage с
>требуемыми, и чтобы оно там само с максимальной скоростью это сделало -
>нету. Hашел только одну фишку - регионы. Hо, во-первых, это дополнительная
>операция, а во-вторых, никак не пойму, как этот регион из моей картинки
>создать. В документации об этом - ни слова. Или я не нашел. Читаю штатное
>описание /usr/share/doc/XFree86-doc-4.2.0/X11/xlib.PS, приходящее вместе с
>X11.

 Так  вот,  регионы  здесь не при чём. Способов изменять размеры/
поворачивать картинки в CORE Protocol нет. Так что в любом случае
реализовывать  (хотя  бы  в  качестве fall-back) это самое сжатие
тебе придётся. Кстати, в четыре-то  раза  --  что  ты  там  такое
делаешь,  что  оно  тормозит? Современные машины запросто метелят
произвольное сжатие софтом на фильмах, а уж здесь-то?

 Hо если  так  хочется  аппаратного  ускорения,  то  это  есть  в
некоторых  расширениях,  самые  известные из них -- glx, XIE. Про
glx ты наверное и сам более-менее  знаешь,  есть  она  далеко  не
везде,  но  иногда  уже работает. Иногда даже с ускорением, но по
крайней  мере  в  XFree  --   это   только   если   видеокарточка
поддерживает 3d-акселерацию.
 Hесколько  интереснее ситуация с XIE. Эта вещь уже больше десяти
лет  входит  в  комплект  X11,  расширение  таким  образом  очень
стандартное.  Приличный  набор  манипуляций с 2d изображениями --
аффинные   преобразования,   сложение/умножение/экспоненцирование
картинок,  в общем насколько я помню -- почти всё, что давали нам
в курсе машинной графики по преобразованию двумерных изображений.
Hо  в XFree этим целенаправленно никто не занимался, ускорения ни
для каких (кажется) карточек не сделали. И на определённом  этапе
какой-то  альтернативно  одарённый  из  команды  решил,  что  XIE
устарел и по умолчанию оно XFree не собирается.
 Вообще,  одарённость   команды,   отвечающей   за   ядро   XFree
по-видимому   исключительно   альтернативная  --  столько  всякой
радости они понаделали в последний пару-тройку лет.

--- ifmail v.2.15dev5
* Origin: Demos online service (2:5020/400)

К главной странице гейта
Powered by NoSFeRaTU`s FGHIGate
Открытие страницы: 0.051768 секунды