Bug 4254

Summary: Проблемы с Clip функциями в Гаранте при печати
Product: WINE@Etersoft Reporter: Илья Шпигорь <shpigor>
Component: Графика GDI / DIB / GDIPLUSAssignee: Илья Шпигорь <shpigor>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: major    
Priority: P3 CC: lav, shpigor, svzhu, vitperov
Version: 1.0.11   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 419, 769, 3932, 7387, 8867    
Attachments: Тестовое приложение

Description Илья Шпигорь 2009-08-27 16:19:40 MSD
Из письма:

По поводу печати - смотрел и тестировал на последней версии 7.3. Нашел такое отличие в поведении под Windows и WinE. При печати у нас активно пользуется
ClipRect. Под WinE регион для отсечения создается и устанавливается успешно
(вызов SelectClipRgn завершается успешно). Но для hDC подготовки превью
последующий вызов GetClipBox (сразу после SelectClipRgn) завершается с
ошибкой и возвращает ERROR. Хотя работа с ClipRect на hDC от окна вполне
успешно работает.
Comment 1 Илья Шпигорь 2009-08-27 16:21:00 MSD
Created attachment 1302 [details]
Тестовое приложение

При нажатии на кнопку пытается начать виртуальную отрисовку превью.
В окно выводит размер установленного ClipRect.
Также создает/дополняет файл с расширением .log куда пишет переданные 
размеры ClipRect и получившиеся (если они отличаются).
Comment 2 Vitaly Lipatov 2009-08-27 19:37:54 MSD
Я думаю, надо делать нормальный тест.
Comment 3 Илья Шпигорь 2009-09-03 16:56:39 MSD
Выложил патч в нашу рассылку.

Проблема заключается в том, что SelectClipRgn, в случае работы с метафайлом, вызывает соответствующую функцию драйвера (EMFDRV_ExtSelectClipRgn), после чего возвращает управление. При этом никакие изменения в DC структуре не происходят. Т.е. в случае работы с метафайлом изменения Clip/Visible регионов никак не сохраняются, в отличие от работы с DC экрана. Поэтому при попытке получить Clip регион возвращается пустой регион.

Решение заключается в том, чтобы вносить необходимые изменения в DC структуру при вызове SelectClipRgn независимо от того есть ExtSelectClipRgn функция драйвера или нет, как было раньше.

Есть тест для этой ошибки, но с его отправкой на winehq возникли проблемы.
Comment 4 Денис Баранов 2009-10-13 18:38:00 MSD
Принято.
WINE@Etersoft 1.0.11 eter9/eter5
Comment 5 Svetlana Zhukova 2013-10-03 15:41:24 MSK
-