Commit eb478be8 authored by Evan Stade's avatar Evan Stade Committed by Alexandre Julliard

gdiplus: Added GdipRotateMatrix.

parent 47787479
......@@ -466,7 +466,7 @@
@ stdcall GdipRestoreGraphics(ptr long)
@ stub GdipReversePath
@ stub GdipRotateLineTransform
@ stub GdipRotateMatrix
@ stdcall GdipRotateMatrix(ptr long long)
@ stub GdipRotatePathGradientTransform
@ stub GdipRotatePenTransform
@ stub GdipRotateTextureTransform
......
......@@ -17,6 +17,7 @@
*/
#include <stdarg.h>
#include <math.h>
#include "windef.h"
#include "winbase.h"
......@@ -93,6 +94,33 @@ GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix *matrix, GpMatrix* matrix2,
return Ok;
}
GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix *matrix, REAL angle,
GpMatrixOrder order)
{
REAL cos_theta, sin_theta, rotate[6];
if(!matrix)
return InvalidParameter;
angle = deg2rad(angle);
cos_theta = cos(angle);
sin_theta = sin(angle);
rotate[0] = cos_theta;
rotate[1] = sin_theta;
rotate[2] = -sin_theta;
rotate[3] = cos_theta;
rotate[4] = 0.0;
rotate[5] = 0.0;
if(order == MatrixOrderAppend)
matrix_multiply(matrix->matrix, rotate, matrix->matrix);
else
matrix_multiply(rotate, matrix->matrix, matrix->matrix);
return Ok;
}
GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix *matrix, REAL scaleX, REAL scaleY,
GpMatrixOrder order)
{
......
......@@ -88,6 +88,7 @@ GpStatus WINGDIPAPI GdipTransformPath(GpPath*,GpMatrix*);
GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**);
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*);
GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix*,GpMatrix*,GpMatrixOrder);
GpStatus WINGDIPAPI GdipRotateMatrix(GpMatrix*,REAL,GpMatrixOrder);
GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
......
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