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

gdiplus: Added GdipSetPageScale/GdipGetPageScale.

parent 827f979b
...@@ -305,7 +305,7 @@ ...@@ -305,7 +305,7 @@
@ stub GdipGetMetafileHeaderFromStream @ stub GdipGetMetafileHeaderFromStream
@ stub GdipGetMetafileHeaderFromWmf @ stub GdipGetMetafileHeaderFromWmf
@ stub GdipGetNearestColor @ stub GdipGetNearestColor
@ stub GdipGetPageScale @ stdcall GdipGetPageScale(ptr ptr)
@ stdcall GdipGetPageUnit(ptr ptr) @ stdcall GdipGetPageUnit(ptr ptr)
@ stub GdipGetPathData @ stub GdipGetPathData
@ stdcall GdipGetPathFillMode(ptr ptr) @ stdcall GdipGetPathFillMode(ptr ptr)
...@@ -524,7 +524,7 @@ ...@@ -524,7 +524,7 @@
@ stub GdipSetLineWrapMode @ stub GdipSetLineWrapMode
@ stub GdipSetMatrixElements @ stub GdipSetMatrixElements
@ stub GdipSetMetafileDownLevelRasterizationLimit @ stub GdipSetMetafileDownLevelRasterizationLimit
@ stub GdipSetPageScale @ stdcall GdipSetPageScale(ptr long)
@ stdcall GdipSetPageUnit(ptr long) @ stdcall GdipSetPageUnit(ptr long)
@ stdcall GdipSetPathFillMode(ptr long) @ stdcall GdipSetPathFillMode(ptr long)
@ stub GdipSetPathGradientBlend @ stub GdipSetPathGradientBlend
......
...@@ -66,6 +66,7 @@ struct GpGraphics{ ...@@ -66,6 +66,7 @@ struct GpGraphics{
InterpolationMode interpolation; InterpolationMode interpolation;
PixelOffsetMode pixeloffset; PixelOffsetMode pixeloffset;
GpUnit unit; /* page unit */ GpUnit unit; /* page unit */
REAL scale; /* page scale */
}; };
struct GpBrush{ struct GpBrush{
......
...@@ -109,6 +109,10 @@ static void transform_and_round_points(GpGraphics *graphics, POINT *pti, ...@@ -109,6 +109,10 @@ static void transform_and_round_points(GpGraphics *graphics, POINT *pti,
break; break;
} }
/* apply page scale */
if(graphics->unit != UnitDisplay)
unitscale *= graphics->scale;
for(i = 0; i < count; i++){ for(i = 0; i < count; i++){
pti[i].x = roundr(unitscale * ptf[i].X); pti[i].x = roundr(unitscale * ptf[i].X);
pti[i].y = roundr(unitscale * ptf[i].Y); pti[i].y = roundr(unitscale * ptf[i].Y);
...@@ -746,6 +750,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics) ...@@ -746,6 +750,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HDC hdc, GpGraphics **graphics)
(*graphics)->interpolation = InterpolationModeDefault; (*graphics)->interpolation = InterpolationModeDefault;
(*graphics)->pixeloffset = PixelOffsetModeDefault; (*graphics)->pixeloffset = PixelOffsetModeDefault;
(*graphics)->unit = UnitDisplay; (*graphics)->unit = UnitDisplay;
(*graphics)->scale = 1.0;
return Ok; return Ok;
} }
...@@ -1085,6 +1090,16 @@ GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics *graphics, ...@@ -1085,6 +1090,16 @@ GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics *graphics,
return Ok; return Ok;
} }
GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics *graphics, REAL *scale)
{
if(!graphics || !scale)
return InvalidParameter;
*scale = graphics->scale;
return Ok;
}
GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics *graphics, GpUnit *unit) GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics *graphics, GpUnit *unit)
{ {
if(!graphics || !unit) if(!graphics || !unit)
...@@ -1160,6 +1175,16 @@ GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics *graphics, ...@@ -1160,6 +1175,16 @@ GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics *graphics,
return Ok; return Ok;
} }
GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics *graphics, REAL scale)
{
if(!graphics || (scale <= 0.0))
return InvalidParameter;
graphics->scale = scale;
return Ok;
}
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics *graphics, GpUnit unit) GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics *graphics, GpUnit unit)
{ {
if(!graphics || (unit == UnitWorld)) if(!graphics || (unit == UnitWorld))
......
...@@ -62,6 +62,7 @@ GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT ...@@ -62,6 +62,7 @@ GpStatus WINGDIPAPI GdipFillPolygonI(GpGraphics*,GpBrush*,GDIPCONST GpPoint*,INT
GpFillMode); GpFillMode);
GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*); GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*); GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*); GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*);
GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*); GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*); GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
...@@ -69,6 +70,7 @@ GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState); ...@@ -69,6 +70,7 @@ GpStatus WINGDIPAPI GdipRestoreGraphics(GpGraphics*,GraphicsState);
GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*); GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality); GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode); GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode);
GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit); GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit);
GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode); GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode);
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode); GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
......
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