[Wine-devel] DIB engine, gdi и драйвер принтера
Konstantin Kondratyuk
=?iso-8859-1?q?kondratyuk_=CE=C1_etersoft=2Eru?=
Пт Апр 10 11:09:36 MSD 2009
Первое знакомство с DIB вызвало ряд вопросов по архитектуре, реализации и
работе:
1. Расположение dibengine.
Вероятно, это должно быть dlls/dibengine? Ведь DIB - это драйвер, так же, как
winex11 и psdrv.
2. Момент переключения DC на функции dib_funcs. Сейчас это в
BITMAP_SelectObject, тогда как про "контекст в памяти" может быть известно
уже на этапе создания DC с помощью CreateCompatibleDC. Возможно, ошибаюсь.
Если ошибаюсь, то хочу понять - где.
3. Попробовал запустить свой тест по работе с совместимым контекстом принтера.
/* ================================================*/
hCompatibleDC = CreateCompatibleDC (hDC);
if(!hCompatibleDC) printf("Error\n");
bitmap = CreateCompatibleBitmap(hDC, rect.right, rect.bottom);
SelectObject (hCompatibleDC, bitmap);
pen = CreatePen (BS_SOLID, 1, RGB(0,0,0));
SelectObject (hCompatibleDC, pen);
Rectangle(hCompatibleDC, rect.left + 200, rect.top + 200, rect.right -
200, rect.bottom - 200);
if ( StartDoc( hDC, &di ) != SP_ERROR )
{
StartPage( hDC );
if (!BitBlt (hDC, 0, 0, rect.right, rect.bottom,
hCompatibleDC, rect.left, rect.top, SRCCOPY))
printf ("BitBlt error!\n");
EndPage( hDC );
EndDoc( hDC );
}
DeleteDC(hCompatibleDC);
/* ================================================*/
Функция CreateCompatibleBitmap не создаёт bitmap, достаточный для того, чтобы
SelectObject переключился на DIB. Возможно, это ошибка в самой функции, но
она вроде бы работает с тем же CreateDIBSection, что и дисплейный тест...
--
Best regards,
Konstantin Kondratyuk.
Подробная информация о списке рассылки Wine-devel