Commit ae9fe5e3 authored by Dmitry Timoshkov's avatar Dmitry Timoshkov Committed by Alexandre Julliard

winedump: Print contents of EMR_INTERSECTCLIPRECT and EMR_EXTSELECTCLIPRGN.

parent b807c619
...@@ -112,7 +112,18 @@ static int dump_emfrecord(void) ...@@ -112,7 +112,18 @@ static int dump_emfrecord(void)
EMRCASE(EMR_MOVETOEX); EMRCASE(EMR_MOVETOEX);
EMRCASE(EMR_SETMETARGN); EMRCASE(EMR_SETMETARGN);
EMRCASE(EMR_EXCLUDECLIPRECT); EMRCASE(EMR_EXCLUDECLIPRECT);
EMRCASE(EMR_INTERSECTCLIPRECT);
case EMR_INTERSECTCLIPRECT:
{
const EMRINTERSECTCLIPRECT *clip = (const EMRINTERSECTCLIPRECT *)PRD(offset, sizeof(*clip));
printf("%-20s %08x\n", "EMR_INTERSECTCLIPRECT", length);
printf("rect %d,%d - %d, %d\n",
clip->rclClip.left, clip->rclClip.top,
clip->rclClip.right, clip->rclClip.bottom);
break;
}
EMRCASE(EMR_SCALEVIEWPORTEXTEX); EMRCASE(EMR_SCALEVIEWPORTEXTEX);
EMRCASE(EMR_SCALEWINDOWEXTEX); EMRCASE(EMR_SCALEWINDOWEXTEX);
EMRCASE(EMR_SAVEDC); EMRCASE(EMR_SAVEDC);
...@@ -156,7 +167,25 @@ static int dump_emfrecord(void) ...@@ -156,7 +167,25 @@ static int dump_emfrecord(void)
EMRCASE(EMR_FRAMERGN); EMRCASE(EMR_FRAMERGN);
EMRCASE(EMR_INVERTRGN); EMRCASE(EMR_INVERTRGN);
EMRCASE(EMR_PAINTRGN); EMRCASE(EMR_PAINTRGN);
EMRCASE(EMR_EXTSELECTCLIPRGN);
case EMR_EXTSELECTCLIPRGN:
{
const EMREXTSELECTCLIPRGN *clip = (const EMREXTSELECTCLIPRGN *)PRD(offset, sizeof(*clip));
const RGNDATA *data = (RGNDATA *)clip->RgnData;
DWORD i, rc_count = 0;
RECT *rc;
if (length >= sizeof(*clip) + sizeof(*data))
rc_count = data->rdh.nCount;
printf("%-20s %08x\n", "EMREXTSELECTCLIPRGN", length);
printf("mode %d, rects %d\n", clip->iMode, rc_count);
for (i = 0, rc = (RECT *)data->Buffer; i < rc_count; i++, rc++)
printf(" (%d,%d)-(%d,%d)", rc->left, rc->top, rc->right, rc->bottom);
if (rc_count != 0) printf("\n");
break;
}
EMRCASE(EMR_BITBLT); EMRCASE(EMR_BITBLT);
EMRCASE(EMR_STRETCHBLT); EMRCASE(EMR_STRETCHBLT);
EMRCASE(EMR_MASKBLT); EMRCASE(EMR_MASKBLT);
...@@ -166,7 +195,7 @@ static int dump_emfrecord(void) ...@@ -166,7 +195,7 @@ static int dump_emfrecord(void)
case EMR_EXTCREATEFONTINDIRECTW: case EMR_EXTCREATEFONTINDIRECTW:
{ {
const EMREXTCREATEFONTINDIRECTW *pf = (const EMREXTCREATEFONTINDIRECTW *)PRD(offset, 4); const EMREXTCREATEFONTINDIRECTW *pf = (const EMREXTCREATEFONTINDIRECTW *)PRD(offset, sizeof(*pf));
const LOGFONTW *plf = &pf->elfw.elfLogFont; const LOGFONTW *plf = &pf->elfw.elfLogFont;
printf("%-20s %08x\n", "EMR_EXTCREATEFONTINDIRECTW", length); printf("%-20s %08x\n", "EMR_EXTCREATEFONTINDIRECTW", length);
...@@ -187,7 +216,7 @@ static int dump_emfrecord(void) ...@@ -187,7 +216,7 @@ static int dump_emfrecord(void)
case EMR_EXTTEXTOUTW: case EMR_EXTTEXTOUTW:
{ {
const EMREXTTEXTOUTW *etoW = (const EMREXTTEXTOUTW *)PRD(offset, 4); const EMREXTTEXTOUTW *etoW = (const EMREXTTEXTOUTW *)PRD(offset, sizeof(*etoW));
printf("%-20s %08x\n", "EMR_EXTTEXTOUTW", length); printf("%-20s %08x\n", "EMR_EXTTEXTOUTW", length);
printf("pt (%d,%d) rect (%d,%d - %d,%d) flags %#x, %s\n", printf("pt (%d,%d) rect (%d,%d - %d,%d) flags %#x, %s\n",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment