Added two new subroutines in support for writing data to and from user space. Fixed calc in CoordCnvP to use float not fixed.

svn path=/trunk/; revision=28296
This commit is contained in:
James Tabor 2007-08-12 07:34:23 +00:00
parent 66469de606
commit fcd3ddadc4
3 changed files with 46 additions and 3 deletions

View file

@ -70,18 +70,20 @@ VOID FASTCALL
CoordCnvP(MATRIX_S * mx, LPPOINT Point)
{
FLOAT x, y;
gxf_long a, b;
gxf_long a, b, c;
x = (FLOAT)Point->x;
y = (FLOAT)Point->y;
a.l = EFtoF( &mx->efM11 );
b.l = EFtoF( &mx->efM21 );
x = x * a.f + y * b.f + mx->fxDx;
c.l = EFtoF( &mx->efDx );
x = x * a.f + y * b.f + c.f;
a.l = EFtoF( &mx->efM12 );
b.l = EFtoF( &mx->efM22 );
y = x * a.f + y * b.f + mx->fxDy;
c.l = EFtoF( &mx->efDy );
y = x * a.f + y * b.f + c.f;
FLOAT_TO_INT(x, Point->x );
FLOAT_TO_INT(y, Point->y );

View file

@ -198,6 +198,43 @@ FLOATOBJ_AddFloat(
#endif
}
VOID FASTCALL
XForm2MatrixS( MATRIX_S * Matrix, PXFORM XForm)
{
gxf_long f;
f.f = XForm->eM11;
FtoEF( &Matrix->efM11, f.l);
f.f = XForm->eM12;
FtoEF( &Matrix->efM12, f.l);
f.f = XForm->eM21;
FtoEF( &Matrix->efM21, f.l);
f.f = XForm->eM22;
FtoEF( &Matrix->efM22, f.l);
f.f = XForm->eDx;
FtoEF( &Matrix->efDx, f.l);
f.f = XForm->eDy;
FtoEF( &Matrix->efDy, f.l);
}
VOID FASTCALL
MatrixS2XForm( PXFORM XForm, MATRIX_S * Matrix)
{
gxf_long f;
f.l = EFtoF(&Matrix->efM11);
XForm->eM11 = f.f;
f.l = EFtoF(&Matrix->efM12);
XForm->eM12 = f.f;
f.l = EFtoF(&Matrix->efM21);
XForm->eM21 = f.f;
f.l = EFtoF(&Matrix->efM22);
XForm->eM22 = f.f;
f.l = EFtoF(&Matrix->efDx);
XForm->eDx = f.f;
f.l = EFtoF(&Matrix->efDy);
XForm->eDy = f.f;
}
VOID
STDCALL
FLOATOBJ_AddLong(

View file

@ -101,3 +101,7 @@ static __inline void INTERNAL_LPTODP(DC *dc, LPPOINT point)
MulDiv((ty), (dc)->Dc_Attr.szlViewportExt.cy, (dc)->Dc_Attr.szlWindowExt.cy)
#endif
VOID FASTCALL XForm2MatrixS( MATRIX_S *, PXFORM);
VOID FASTCALL MatrixS2XForm( PXFORM, MATRIX_S *);