gdiplus: Added basic matrix implementation.
This commit is contained in:
parent
6f4ab52824
commit
f28262b47d
|
@ -11,6 +11,7 @@ C_SRCS = \
|
||||||
gdiplus.c \
|
gdiplus.c \
|
||||||
graphics.c \
|
graphics.c \
|
||||||
graphicspath.c \
|
graphicspath.c \
|
||||||
|
matrix.c \
|
||||||
pen.c
|
pen.c
|
||||||
|
|
||||||
@MAKE_DLL_RULES@
|
@MAKE_DLL_RULES@
|
||||||
|
|
|
@ -95,7 +95,7 @@
|
||||||
@ stub GdipCreateLineBrushFromRectWithAngle
|
@ stub GdipCreateLineBrushFromRectWithAngle
|
||||||
@ stub GdipCreateLineBrushFromRectWithAngleI
|
@ stub GdipCreateLineBrushFromRectWithAngleI
|
||||||
@ stub GdipCreateLineBrushI
|
@ stub GdipCreateLineBrushI
|
||||||
@ stub GdipCreateMatrix2
|
@ stdcall GdipCreateMatrix2(long long long long long long ptr)
|
||||||
@ stub GdipCreateMatrix3
|
@ stub GdipCreateMatrix3
|
||||||
@ stub GdipCreateMatrix3I
|
@ stub GdipCreateMatrix3I
|
||||||
@ stub GdipCreateMatrix
|
@ stub GdipCreateMatrix
|
||||||
|
@ -133,7 +133,7 @@
|
||||||
@ stub GdipDeleteFont
|
@ stub GdipDeleteFont
|
||||||
@ stub GdipDeleteFontFamily
|
@ stub GdipDeleteFontFamily
|
||||||
@ stdcall GdipDeleteGraphics(ptr)
|
@ stdcall GdipDeleteGraphics(ptr)
|
||||||
@ stub GdipDeleteMatrix
|
@ stdcall GdipDeleteMatrix(ptr)
|
||||||
@ stdcall GdipDeletePath(ptr)
|
@ stdcall GdipDeletePath(ptr)
|
||||||
@ stub GdipDeletePathIter
|
@ stub GdipDeletePathIter
|
||||||
@ stdcall GdipDeletePen(ptr)
|
@ stdcall GdipDeletePen(ptr)
|
||||||
|
|
|
@ -71,4 +71,8 @@ struct GpPath{
|
||||||
INT datalen; /* size of the arrays in pathdata */
|
INT datalen; /* size of the arrays in pathdata */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct GpMatrix{
|
||||||
|
REAL matrix[6];
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
/*
|
||||||
|
* Copyright (C) 2007 Google (Evan Stade)
|
||||||
|
*
|
||||||
|
* This library is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU Lesser General Public
|
||||||
|
* License as published by the Free Software Foundation; either
|
||||||
|
* version 2.1 of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This library is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
* Lesser General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU Lesser General Public
|
||||||
|
* License along with this library; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdarg.h>
|
||||||
|
|
||||||
|
#include "windef.h"
|
||||||
|
#include "winbase.h"
|
||||||
|
#include "wingdi.h"
|
||||||
|
|
||||||
|
#include "gdiplus.h"
|
||||||
|
#include "gdiplus_private.h"
|
||||||
|
|
||||||
|
GpStatus WINGDIPAPI GdipCreateMatrix2(REAL m11, REAL m12, REAL m21, REAL m22,
|
||||||
|
REAL dx, REAL dy, GpMatrix **matrix)
|
||||||
|
{
|
||||||
|
if(!matrix)
|
||||||
|
return InvalidParameter;
|
||||||
|
|
||||||
|
*matrix = GdipAlloc(sizeof(GpMatrix));
|
||||||
|
if(!*matrix) return OutOfMemory;
|
||||||
|
|
||||||
|
/* first row */
|
||||||
|
(*matrix)->matrix[0] = m11;
|
||||||
|
(*matrix)->matrix[1] = m12;
|
||||||
|
/* second row */
|
||||||
|
(*matrix)->matrix[2] = m21;
|
||||||
|
(*matrix)->matrix[3] = m22;
|
||||||
|
/* third row */
|
||||||
|
(*matrix)->matrix[4] = dx;
|
||||||
|
(*matrix)->matrix[5] = dy;
|
||||||
|
|
||||||
|
return Ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix *matrix)
|
||||||
|
{
|
||||||
|
if(!matrix)
|
||||||
|
return InvalidParameter;
|
||||||
|
|
||||||
|
GdipFree(matrix);
|
||||||
|
|
||||||
|
return Ok;
|
||||||
|
}
|
|
@ -60,6 +60,9 @@ GpStatus WINGDIPAPI GdipGetPathTypes(GpPath*,BYTE*,INT);
|
||||||
GpStatus WINGDIPAPI GdipGetPointCount(GpPath*,INT*);
|
GpStatus WINGDIPAPI GdipGetPointCount(GpPath*,INT*);
|
||||||
GpStatus WINGDIPAPI GdipStartPathFigure(GpPath*);
|
GpStatus WINGDIPAPI GdipStartPathFigure(GpPath*);
|
||||||
|
|
||||||
|
GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**);
|
||||||
|
GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -26,6 +26,7 @@ class GpGraphics {};
|
||||||
class GpBrush {};
|
class GpBrush {};
|
||||||
class GpSolidFill {};
|
class GpSolidFill {};
|
||||||
class GpPath {};
|
class GpPath {};
|
||||||
|
class GpMatrix {};
|
||||||
|
|
||||||
#else /* end of c++ declarations */
|
#else /* end of c++ declarations */
|
||||||
|
|
||||||
|
@ -34,6 +35,7 @@ typedef struct GpPen GpPen;
|
||||||
typedef struct GpBrush GpBrush;
|
typedef struct GpBrush GpBrush;
|
||||||
typedef struct GpSolidFill GpSolidFill;
|
typedef struct GpSolidFill GpSolidFill;
|
||||||
typedef struct GpPath GpPath;
|
typedef struct GpPath GpPath;
|
||||||
|
typedef struct GpMatrix GpMatrix;
|
||||||
|
|
||||||
#endif /* end of c declarations */
|
#endif /* end of c declarations */
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue