gdiplus: Added GdipSetWorldTransform/GdipGetWorldTransform.

This commit is contained in:
Evan Stade 2007-07-24 17:18:47 -07:00 committed by Alexandre Julliard
parent eab427ee3f
commit f30732fdf9
4 changed files with 31 additions and 2 deletions

View file

@ -386,7 +386,7 @@
@ stub GdipGetTextureWrapMode
@ stub GdipGetVisibleClipBounds
@ stub GdipGetVisibleClipBoundsI
@ stub GdipGetWorldTransform
@ stdcall GdipGetWorldTransform(ptr ptr)
@ stub GdipGraphicsClear
@ stub GdipImageForceValidation
@ stub GdipImageGetFrameCount
@ -576,7 +576,7 @@
@ stub GdipSetTextRenderingHint
@ stub GdipSetTextureTransform
@ stub GdipSetTextureWrapMode
@ stub GdipSetWorldTransform
@ stdcall GdipSetWorldTransform(ptr ptr)
@ stub GdipShearMatrix
@ stdcall GdipStartPathFigure(ptr)
@ stub GdipStringFormatGetGenericDefault

View file

@ -67,6 +67,7 @@ struct GpGraphics{
PixelOffsetMode pixeloffset;
GpUnit unit; /* page unit */
REAL scale; /* page scale */
GpMatrix * worldtrans; /* world transform */
};
struct GpBrush{

View file

@ -734,6 +734,8 @@ end:
GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
{
GpStatus retval;
if(hdc == NULL)
return OutOfMemory;
@ -743,6 +745,11 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
*graphics = GdipAlloc(sizeof(GpGraphics));
if(!*graphics) return OutOfMemory;
if((retval = GdipCreateMatrix(&(*graphics)->worldtrans)) != Ok){
GdipFree(*graphics);
return retval;
}
(*graphics)->hdc = hdc;
(*graphics)->hwnd = NULL;
(*graphics)->smoothing = SmoothingModeDefault;
@ -773,6 +780,7 @@ GpStatus WINGDIPAPI GdipDeleteGraphics(GpGraphics *graphics)
if(graphics->hwnd)
ReleaseDC(graphics->hwnd, graphics->hdc);
GdipDeleteMatrix(graphics->worldtrans);
HeapFree(GetProcessHeap(), 0, graphics);
return Ok;
@ -1133,6 +1141,15 @@ GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics *graphics, SmoothingMode *mo
return Ok;
}
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics *graphics, GpMatrix *matrix)
{
if(!graphics || !matrix)
return InvalidParameter;
memcpy(matrix, graphics->worldtrans, sizeof(GpMatrix));
return Ok;
}
GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics *graphics, GraphicsState state)
{
if(!graphics)
@ -1215,3 +1232,12 @@ GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics *graphics, SmoothingMode mod
return Ok;
}
GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics *graphics, GpMatrix *matrix)
{
if(!graphics || !matrix)
return InvalidParameter;
GdipDeleteMatrix(graphics->worldtrans);
return GdipCloneMatrix(matrix, &graphics->worldtrans);
}

View file

@ -66,6 +66,7 @@ GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*);
GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
GpStatus WINGDIPAPI GdipGetWorldTransform(GpGraphics*,GpMatrix*);
GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
@ -74,6 +75,7 @@ GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit);
GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode);
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
GpStatus WINGDIPAPI GdipSetWorldTransform(GpGraphics*,GpMatrix*);
GpStatus WINGDIPAPI GdipCloneBrush(GpBrush*,GpBrush**);
GpStatus WINGDIPAPI GdipCreateSolidFill(ARGB,GpSolidFill**);