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


Присутствуют сообщения из эхоконференции RU.LINUX с датами от 24 Jan 02 06:01:34 до 29 Apr 24 03:15:24, всего сообщений: 8279
Ответить на сообщение К списку сообщений Предыдущее сообщение Следующее сообщение
= Сообщение: 7125 из 8279 ========================================= RU.LINUX =
От   : Oleg Goodyckov                   2:5020/400         28 Dec 02 11:07:24
Кому : Ilya Anfimov                                        28 Dec 02 11:07:24
Тема : Re: XCreateImage и XPutImage
FGHI : area://RU.LINUX?msgid=videoproject.kiev.ua+3dbc6baf
На   : area://RU.LINUX?msgid=adt.ru+544212fe
= Кодировка сообщения определена как: IBM866 =================================
Ответ: area://RU.LINUX?msgid=adt.ru+4aaf68b8
==============================================================================
From: Oleg Goodyckov <og@videoproject.kiev.ua>

On Wed, Dec 25, 2002 at 02:39:34PM +0000, Ilya Anfimov wrote:
> On Mon, 23 Dec 2002 10:18:23 +0000 (UTC),
> >> >По высоте получается все хорошо. Hо по ширине картинка получается втрое
> >> >шире. И происходит сие потому, что каждый байт строки исходного
> >> >изображения отображается в отдельный пиксель целевой картинки. Так что она
> >> >состоит из вертикальных полос красного, зеленого и синего цветов,
> >> >промодулированных по яркости. То есть все, как положенно, но почему байт
> >> >попадает в пиксель?
> >> >Впечатление такое, что какая-то из сабжевых процедур воспринимает исходную
> >> >картинку не как 24-разрядную, а как 8-разрядную. Hо
> >> >Screen->root_visual->bits_per_rgb я устанавливал в 24 и никакого
> >> >результата оно не дало. То есть, отношения к делу не имееют.
>
>  А  зачем  ты  его  устанавливал там? Оно вообще так не ставится.

Для пробы. Hу там чтобы подергать, посмотреть на реакцию. Изучить в общем.
Так что результат получился отрицательным. Или положительным: не влияет.

> Hасколько я  помню,  в  XFree  оно  меняется  только  при  старте
> сервера.   Возможно,  что  ещё  в  конфигах где-нибудь есть. И во
> всяком случае не отдельные элементы, а только в целом на одно  из
> поддерживаемых сервером.
>
> >  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.

А что использовать взамен?

> Там  же  вроде написано, что он 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.


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

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