Record SetWorldTransform and ModifyWorldTransform in enhanced
metafiles.
This commit is contained in:
parent
635b09f98e
commit
10c3764058
|
@ -112,6 +112,7 @@ static struct graphics_driver *create_driver( HMODULE module )
|
||||||
GET_FUNC(InvertRgn);
|
GET_FUNC(InvertRgn);
|
||||||
GET_FUNC(LineTo);
|
GET_FUNC(LineTo);
|
||||||
GET_FUNC(MoveTo);
|
GET_FUNC(MoveTo);
|
||||||
|
GET_FUNC(ModifyWorldTransform);
|
||||||
GET_FUNC(OffsetClipRgn);
|
GET_FUNC(OffsetClipRgn);
|
||||||
GET_FUNC(OffsetViewportOrg);
|
GET_FUNC(OffsetViewportOrg);
|
||||||
GET_FUNC(OffsetWindowOrg);
|
GET_FUNC(OffsetWindowOrg);
|
||||||
|
@ -166,6 +167,7 @@ static struct graphics_driver *create_driver( HMODULE module )
|
||||||
GET_FUNC(SetViewportOrg);
|
GET_FUNC(SetViewportOrg);
|
||||||
GET_FUNC(SetWindowExt);
|
GET_FUNC(SetWindowExt);
|
||||||
GET_FUNC(SetWindowOrg);
|
GET_FUNC(SetWindowOrg);
|
||||||
|
GET_FUNC(SetWorldTransform);
|
||||||
GET_FUNC(StartDoc);
|
GET_FUNC(StartDoc);
|
||||||
GET_FUNC(StartPage);
|
GET_FUNC(StartPage);
|
||||||
GET_FUNC(StretchBlt);
|
GET_FUNC(StretchBlt);
|
||||||
|
|
|
@ -83,6 +83,7 @@ extern INT EMFDRV_IntersectClipRect( PHYSDEV dev, INT left, INT top, INT ri
|
||||||
INT bottom );
|
INT bottom );
|
||||||
extern BOOL EMFDRV_InvertRgn( PHYSDEV dev, HRGN hrgn );
|
extern BOOL EMFDRV_InvertRgn( PHYSDEV dev, HRGN hrgn );
|
||||||
extern BOOL EMFDRV_LineTo( PHYSDEV dev, INT x, INT y );
|
extern BOOL EMFDRV_LineTo( PHYSDEV dev, INT x, INT y );
|
||||||
|
extern BOOL EMFDRV_ModifyWorldTransform( PHYSDEV dev, const XFORM *xform, INT mode );
|
||||||
extern BOOL EMFDRV_MoveTo( PHYSDEV dev, INT x, INT y );
|
extern BOOL EMFDRV_MoveTo( PHYSDEV dev, INT x, INT y );
|
||||||
extern INT EMFDRV_OffsetClipRgn( PHYSDEV dev, INT x, INT y );
|
extern INT EMFDRV_OffsetClipRgn( PHYSDEV dev, INT x, INT y );
|
||||||
extern INT EMFDRV_OffsetViewportOrg( PHYSDEV dev, INT x, INT y );
|
extern INT EMFDRV_OffsetViewportOrg( PHYSDEV dev, INT x, INT y );
|
||||||
|
@ -134,6 +135,7 @@ extern INT EMFDRV_SetViewportExt( PHYSDEV dev, INT x, INT y );
|
||||||
extern INT EMFDRV_SetViewportOrg( PHYSDEV dev, INT x, INT y );
|
extern INT EMFDRV_SetViewportOrg( PHYSDEV dev, INT x, INT y );
|
||||||
extern INT EMFDRV_SetWindowExt( PHYSDEV dev, INT x, INT y );
|
extern INT EMFDRV_SetWindowExt( PHYSDEV dev, INT x, INT y );
|
||||||
extern INT EMFDRV_SetWindowOrg( PHYSDEV dev, INT x, INT y );
|
extern INT EMFDRV_SetWindowOrg( PHYSDEV dev, INT x, INT y );
|
||||||
|
extern BOOL EMFDRV_SetWorldTransform( PHYSDEV dev, const XFORM *xform );
|
||||||
extern BOOL EMFDRV_StretchBlt( PHYSDEV devDst, INT xDst, INT yDst,
|
extern BOOL EMFDRV_StretchBlt( PHYSDEV devDst, INT xDst, INT yDst,
|
||||||
INT widthDst, INT heightDst,
|
INT widthDst, INT heightDst,
|
||||||
PHYSDEV devSrc, INT xSrc, INT ySrc,
|
PHYSDEV devSrc, INT xSrc, INT ySrc,
|
||||||
|
|
|
@ -79,6 +79,7 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
|
||||||
EMFDRV_IntersectClipRect, /* pIntersectClipRect */
|
EMFDRV_IntersectClipRect, /* pIntersectClipRect */
|
||||||
EMFDRV_InvertRgn, /* pInvertRgn */
|
EMFDRV_InvertRgn, /* pInvertRgn */
|
||||||
EMFDRV_LineTo, /* pLineTo */
|
EMFDRV_LineTo, /* pLineTo */
|
||||||
|
EMFDRV_ModifyWorldTransform, /* pModifyWorldTransform */
|
||||||
EMFDRV_MoveTo, /* pMoveTo */
|
EMFDRV_MoveTo, /* pMoveTo */
|
||||||
EMFDRV_OffsetClipRgn, /* pOffsetClipRgn */
|
EMFDRV_OffsetClipRgn, /* pOffsetClipRgn */
|
||||||
NULL, /* pOffsetViewportOrg */
|
NULL, /* pOffsetViewportOrg */
|
||||||
|
@ -134,6 +135,7 @@ static const DC_FUNCTIONS EMFDRV_Funcs =
|
||||||
EMFDRV_SetViewportOrg, /* pSetViewportOrg */
|
EMFDRV_SetViewportOrg, /* pSetViewportOrg */
|
||||||
EMFDRV_SetWindowExt, /* pSetWindowExt */
|
EMFDRV_SetWindowExt, /* pSetWindowExt */
|
||||||
EMFDRV_SetWindowOrg, /* pSetWindowOrg */
|
EMFDRV_SetWindowOrg, /* pSetWindowOrg */
|
||||||
|
EMFDRV_SetWorldTransform, /* pSetWorldTransform */
|
||||||
NULL, /* pStartDoc */
|
NULL, /* pStartDoc */
|
||||||
NULL, /* pStartPage */
|
NULL, /* pStartPage */
|
||||||
NULL, /* pStretchBlt */
|
NULL, /* pStretchBlt */
|
||||||
|
|
|
@ -107,3 +107,26 @@ INT EMFDRV_ScaleWindowExt( PHYSDEV dev, INT xNum, INT xDenom, INT yNum,
|
||||||
|
|
||||||
return EMFDRV_WriteRecord( dev, &emr.emr );
|
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BOOL EMFDRV_SetWorldTransform( PHYSDEV dev, const XFORM *xform)
|
||||||
|
{
|
||||||
|
EMRSETWORLDTRANSFORM emr;
|
||||||
|
|
||||||
|
emr.emr.iType = EMR_SETWORLDTRANSFORM;
|
||||||
|
emr.emr.nSize = sizeof(emr);
|
||||||
|
emr.xform = *xform;
|
||||||
|
|
||||||
|
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||||
|
}
|
||||||
|
|
||||||
|
BOOL EMFDRV_ModifyWorldTransform( PHYSDEV dev, const XFORM *xform, INT mode)
|
||||||
|
{
|
||||||
|
EMRMODIFYWORLDTRANSFORM emr;
|
||||||
|
|
||||||
|
emr.emr.iType = EMR_MODIFYWORLDTRANSFORM;
|
||||||
|
emr.emr.nSize = sizeof(emr);
|
||||||
|
emr.xform = *xform;
|
||||||
|
emr.iMode = mode;
|
||||||
|
|
||||||
|
return EMFDRV_WriteRecord( dev, &emr.emr );
|
||||||
|
}
|
||||||
|
|
|
@ -80,6 +80,7 @@ static const DC_FUNCTIONS MFDRV_Funcs =
|
||||||
MFDRV_IntersectClipRect, /* pIntersectClipRect */
|
MFDRV_IntersectClipRect, /* pIntersectClipRect */
|
||||||
MFDRV_InvertRgn, /* pInvertRgn */
|
MFDRV_InvertRgn, /* pInvertRgn */
|
||||||
MFDRV_LineTo, /* pLineTo */
|
MFDRV_LineTo, /* pLineTo */
|
||||||
|
NULL, /* pModifyWorldTransform */
|
||||||
MFDRV_MoveTo, /* pMoveTo */
|
MFDRV_MoveTo, /* pMoveTo */
|
||||||
MFDRV_OffsetClipRgn, /* pOffsetClipRgn */
|
MFDRV_OffsetClipRgn, /* pOffsetClipRgn */
|
||||||
MFDRV_OffsetViewportOrg, /* pOffsetViewportOrg */
|
MFDRV_OffsetViewportOrg, /* pOffsetViewportOrg */
|
||||||
|
@ -135,6 +136,7 @@ static const DC_FUNCTIONS MFDRV_Funcs =
|
||||||
MFDRV_SetViewportOrg, /* pSetViewportOrg */
|
MFDRV_SetViewportOrg, /* pSetViewportOrg */
|
||||||
MFDRV_SetWindowExt, /* pSetWindowExt */
|
MFDRV_SetWindowExt, /* pSetWindowExt */
|
||||||
MFDRV_SetWindowOrg, /* pSetWindowOrg */
|
MFDRV_SetWindowOrg, /* pSetWindowOrg */
|
||||||
|
NULL, /* pSetWorldTransform */
|
||||||
NULL, /* pStartDoc */
|
NULL, /* pStartDoc */
|
||||||
NULL, /* pStartPage */
|
NULL, /* pStartPage */
|
||||||
MFDRV_StretchBlt, /* pStretchBlt */
|
MFDRV_StretchBlt, /* pStretchBlt */
|
||||||
|
|
|
@ -219,6 +219,7 @@ typedef struct tagDC_FUNCS
|
||||||
INT (*pIntersectClipRect)(PHYSDEV,INT,INT,INT,INT);
|
INT (*pIntersectClipRect)(PHYSDEV,INT,INT,INT,INT);
|
||||||
BOOL (*pInvertRgn)(PHYSDEV,HRGN);
|
BOOL (*pInvertRgn)(PHYSDEV,HRGN);
|
||||||
BOOL (*pLineTo)(PHYSDEV,INT,INT);
|
BOOL (*pLineTo)(PHYSDEV,INT,INT);
|
||||||
|
BOOL (*pModifyWorldTransform)(PHYSDEV,const XFORM*,INT);
|
||||||
BOOL (*pMoveTo)(PHYSDEV,INT,INT);
|
BOOL (*pMoveTo)(PHYSDEV,INT,INT);
|
||||||
INT (*pOffsetClipRgn)(PHYSDEV,INT,INT);
|
INT (*pOffsetClipRgn)(PHYSDEV,INT,INT);
|
||||||
INT (*pOffsetViewportOrg)(PHYSDEV,INT,INT);
|
INT (*pOffsetViewportOrg)(PHYSDEV,INT,INT);
|
||||||
|
@ -275,6 +276,7 @@ typedef struct tagDC_FUNCS
|
||||||
INT (*pSetViewportOrg)(PHYSDEV,INT,INT);
|
INT (*pSetViewportOrg)(PHYSDEV,INT,INT);
|
||||||
INT (*pSetWindowExt)(PHYSDEV,INT,INT);
|
INT (*pSetWindowExt)(PHYSDEV,INT,INT);
|
||||||
INT (*pSetWindowOrg)(PHYSDEV,INT,INT);
|
INT (*pSetWindowOrg)(PHYSDEV,INT,INT);
|
||||||
|
BOOL (*pSetWorldTransform)(PHYSDEV,const XFORM*);
|
||||||
INT (*pStartDoc)(PHYSDEV,const DOCINFOA*);
|
INT (*pStartDoc)(PHYSDEV,const DOCINFOA*);
|
||||||
INT (*pStartPage)(PHYSDEV);
|
INT (*pStartPage)(PHYSDEV);
|
||||||
BOOL (*pStretchBlt)(PHYSDEV,INT,INT,INT,INT,PHYSDEV,INT,INT,INT,INT,DWORD);
|
BOOL (*pStretchBlt)(PHYSDEV,INT,INT,INT,INT,PHYSDEV,INT,INT,INT,INT,DWORD);
|
||||||
|
|
12
objects/dc.c
12
objects/dc.c
|
@ -1014,6 +1014,12 @@ BOOL WINAPI SetWorldTransform( HDC hdc, const XFORM *xform )
|
||||||
/* Check that graphics mode is GM_ADVANCED */
|
/* Check that graphics mode is GM_ADVANCED */
|
||||||
if (dc->GraphicsMode!=GM_ADVANCED) goto done;
|
if (dc->GraphicsMode!=GM_ADVANCED) goto done;
|
||||||
|
|
||||||
|
if (dc->funcs->pSetWorldTransform)
|
||||||
|
{
|
||||||
|
ret = dc->funcs->pSetWorldTransform(dc->physDev, xform);
|
||||||
|
if (!ret) goto done;
|
||||||
|
}
|
||||||
|
|
||||||
dc->xformWorld2Wnd = *xform;
|
dc->xformWorld2Wnd = *xform;
|
||||||
DC_UpdateXforms( dc );
|
DC_UpdateXforms( dc );
|
||||||
ret = TRUE;
|
ret = TRUE;
|
||||||
|
@ -1058,6 +1064,12 @@ BOOL WINAPI ModifyWorldTransform( HDC hdc, const XFORM *xform,
|
||||||
/* Check that graphics mode is GM_ADVANCED */
|
/* Check that graphics mode is GM_ADVANCED */
|
||||||
if (dc->GraphicsMode!=GM_ADVANCED) goto done;
|
if (dc->GraphicsMode!=GM_ADVANCED) goto done;
|
||||||
|
|
||||||
|
if (dc->funcs->pModifyWorldTransform)
|
||||||
|
{
|
||||||
|
ret = dc->funcs->pModifyWorldTransform(dc->physDev, xform, iMode);
|
||||||
|
if (!ret) goto done;
|
||||||
|
}
|
||||||
|
|
||||||
switch (iMode)
|
switch (iMode)
|
||||||
{
|
{
|
||||||
case MWT_IDENTITY:
|
case MWT_IDENTITY:
|
||||||
|
|
Loading…
Reference in New Issue