gdiplus: Implement GdipScalePenTransform().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Vincent Povirk <vincent@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
b4516a2f1f
commit
417e94f199
@ -470,17 +470,12 @@ GpStatus WINGDIPAPI GdipTranslatePenTransform(GpPen *pen, REAL dx, REAL dy, GpMa
|
|||||||
|
|
||||||
GpStatus WINGDIPAPI GdipScalePenTransform(GpPen *pen, REAL sx, REAL sy, GpMatrixOrder order)
|
GpStatus WINGDIPAPI GdipScalePenTransform(GpPen *pen, REAL sx, REAL sy, GpMatrixOrder order)
|
||||||
{
|
{
|
||||||
static int calls;
|
|
||||||
|
|
||||||
TRACE("(%p,%0.2f,%0.2f,%u)\n", pen, sx, sy, order);
|
TRACE("(%p,%0.2f,%0.2f,%u)\n", pen, sx, sy, order);
|
||||||
|
|
||||||
if(!pen)
|
if(!pen)
|
||||||
return InvalidParameter;
|
return InvalidParameter;
|
||||||
|
|
||||||
if(!(calls++))
|
return GdipScaleMatrix(&pen->transform, sx, sy, order);
|
||||||
FIXME("(%p, %.2f, %.2f, %d) stub\n", pen, sx, sy, order);
|
|
||||||
|
|
||||||
return NotImplemented;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
GpStatus WINGDIPAPI GdipRotatePenTransform(GpPen *pen, REAL angle, GpMatrixOrder order)
|
GpStatus WINGDIPAPI GdipRotatePenTransform(GpPen *pen, REAL angle, GpMatrixOrder order)
|
||||||
|
@ -389,6 +389,22 @@ todo_wine {
|
|||||||
GdipDeletePen(pen);
|
GdipDeletePen(pen);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void get_pen_transform(GpPen *pen, REAL *values)
|
||||||
|
{
|
||||||
|
GpMatrix *matrix;
|
||||||
|
GpStatus status;
|
||||||
|
|
||||||
|
status = GdipCreateMatrix(&matrix);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
status = GdipGetPenTransform(pen, matrix);
|
||||||
|
expect(Ok, status);
|
||||||
|
status = GdipGetMatrixElements(matrix, values);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
GdipDeleteMatrix(matrix);
|
||||||
|
}
|
||||||
|
|
||||||
static void test_transform(void)
|
static void test_transform(void)
|
||||||
{
|
{
|
||||||
GpStatus status;
|
GpStatus status;
|
||||||
@ -478,6 +494,65 @@ static void test_transform(void)
|
|||||||
expectf(0.0, values[4]);
|
expectf(0.0, values[4]);
|
||||||
expectf(0.0, values[5]);
|
expectf(0.0, values[5]);
|
||||||
|
|
||||||
|
/* Scale */
|
||||||
|
status = GdipScalePenTransform(NULL, 1.0, 1.0, MatrixOrderPrepend);
|
||||||
|
expect(InvalidParameter, status);
|
||||||
|
|
||||||
|
status = GdipScalePenTransform(pen, 1.0, 1.0, MatrixOrderPrepend);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
get_pen_transform(pen, values);
|
||||||
|
expectf(1.0, values[0]);
|
||||||
|
expectf(0.0, values[1]);
|
||||||
|
expectf(0.0, values[2]);
|
||||||
|
expectf(1.0, values[3]);
|
||||||
|
expectf(0.0, values[4]);
|
||||||
|
expectf(0.0, values[5]);
|
||||||
|
|
||||||
|
status = GdipScalePenTransform(pen, 2.0, -10.0, MatrixOrderPrepend);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
get_pen_transform(pen, values);
|
||||||
|
expectf(2.0, values[0]);
|
||||||
|
expectf(0.0, values[1]);
|
||||||
|
expectf(0.0, values[2]);
|
||||||
|
expectf(-10.0, values[3]);
|
||||||
|
expectf(0.0, values[4]);
|
||||||
|
expectf(0.0, values[5]);
|
||||||
|
|
||||||
|
status = GdipScalePenTransform(pen, 2.0, -10.0, MatrixOrderAppend);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
get_pen_transform(pen, values);
|
||||||
|
expectf(4.0, values[0]);
|
||||||
|
expectf(0.0, values[1]);
|
||||||
|
expectf(0.0, values[2]);
|
||||||
|
expectf(100.0, values[3]);
|
||||||
|
expectf(0.0, values[4]);
|
||||||
|
expectf(0.0, values[5]);
|
||||||
|
|
||||||
|
status = GdipTranslatePenTransform(pen, 1.0, -2.0, MatrixOrderAppend);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
get_pen_transform(pen, values);
|
||||||
|
expectf(4.0, values[0]);
|
||||||
|
expectf(0.0, values[1]);
|
||||||
|
expectf(0.0, values[2]);
|
||||||
|
expectf(100.0, values[3]);
|
||||||
|
expectf(1.0, values[4]);
|
||||||
|
expectf(-2.0, values[5]);
|
||||||
|
|
||||||
|
status = GdipScalePenTransform(pen, 2.0, -10.0, MatrixOrderPrepend);
|
||||||
|
expect(Ok, status);
|
||||||
|
|
||||||
|
get_pen_transform(pen, values);
|
||||||
|
expectf(8.0, values[0]);
|
||||||
|
expectf(0.0, values[1]);
|
||||||
|
expectf(0.0, values[2]);
|
||||||
|
expectf(-1000.0, values[3]);
|
||||||
|
expectf(1.0, values[4]);
|
||||||
|
expectf(-2.0, values[5]);
|
||||||
|
|
||||||
GdipDeletePen(pen);
|
GdipDeletePen(pen);
|
||||||
|
|
||||||
GdipDeleteMatrix(matrix);
|
GdipDeleteMatrix(matrix);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user