[2/14] gdiplus: added GdipSetPageScale/GdipGetPageScale
Evan Stade
estade at gmail.com
Tue Jul 24 19:18:39 CDT 2007
Hi,
changelog:
*added page scale attribute to GpGraphics stucture
*added GdipSetPageScale/GdipGetPageScale
*use page scale when drawing
dlls/gdiplus/gdiplus.spec | 4 ++--
dlls/gdiplus/gdiplus_private.h | 1 +
dlls/gdiplus/graphics.c | 25 +++++++++++++++++++++++++
include/gdiplusflat.h | 2 ++
4 files changed, 30 insertions(+), 2 deletions(-)
--
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 919efe6..59887a7 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -305,7 +305,7 @@
@ stub GdipGetMetafileHeaderFromStream
@ stub GdipGetMetafileHeaderFromWmf
@ stub GdipGetNearestColor
-@ stub GdipGetPageScale
+@ stdcall GdipGetPageScale(ptr ptr)
@ stdcall GdipGetPageUnit(ptr ptr)
@ stub GdipGetPathData
@ stdcall GdipGetPathFillMode(ptr ptr)
@@ -524,7 +524,7 @@
@ stub GdipSetLineWrapMode
@ stub GdipSetMatrixElements
@ stub GdipSetMetafileDownLevelRasterizationLimit
-@ stub GdipSetPageScale
+@ stdcall GdipSetPageScale(ptr long)
@ stdcall GdipSetPageUnit(ptr long)
@ stdcall GdipSetPathFillMode(ptr long)
@ stub GdipSetPathGradientBlend
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 72e2303..2e7fc2c 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -66,6 +66,7 @@ struct GpGraphics{
InterpolationMode interpolation;
PixelOffsetMode pixeloffset;
GpUnit unit; /* page unit */
+ REAL scale; /* page scale */
};
struct GpBrush{
diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c
index df481cd..3ed99ca 100644
--- a/dlls/gdiplus/graphics.c
+++ b/dlls/gdiplus/graphics.c
@@ -109,6 +109,10 @@ static void transform_and_round_points(G
break;
}
+ /* apply page scale */
+ if(graphics->unit != UnitDisplay)
+ unitscale *= graphics->scale;
+
for(i = 0; i < count; i++){
pti[i].x = roundr(unitscale * ptf[i].X);
pti[i].y = roundr(unitscale * ptf[i].Y);
@@ -746,6 +750,7 @@ GpStatus WINGDIPAPI GdipCreateFromHDC(HD
(*graphics)->interpolation = InterpolationModeDefault;
(*graphics)->pixeloffset = PixelOffsetModeDefault;
(*graphics)->unit = UnitDisplay;
+ (*graphics)->scale = 1.0;
return Ok;
}
@@ -1085,6 +1090,16 @@ GpStatus WINGDIPAPI GdipGetInterpolation
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)
{
if(!graphics || !unit)
@@ -1160,6 +1175,16 @@ GpStatus WINGDIPAPI GdipSetInterpolation
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)
{
if(!graphics || (unit == UnitWorld))
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index d0aae71..03def6f 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -62,6 +62,7 @@ GpStatus WINGDIPAPI GdipFillPolygonI(GpG
GpFillMode);
GpStatus WINGDIPAPI GdipGetCompositingQuality(GpGraphics*,CompositingQuality*);
GpStatus WINGDIPAPI GdipGetInterpolationMode(GpGraphics*,InterpolationMode*);
+GpStatus WINGDIPAPI GdipGetPageScale(GpGraphics*,REAL*);
GpStatus WINGDIPAPI GdipGetPageUnit(GpGraphics*,GpUnit*);
GpStatus WINGDIPAPI GdipGetPixelOffsetMode(GpGraphics*,PixelOffsetMode*);
GpStatus WINGDIPAPI GdipGetSmoothingMode(GpGraphics*,SmoothingMode*);
@@ -69,6 +70,7 @@ GpStatus WINGDIPAPI GdipRestoreGraphics(
GpStatus WINGDIPAPI GdipSaveGraphics(GpGraphics*,GraphicsState*);
GpStatus WINGDIPAPI GdipSetCompositingQuality(GpGraphics*,CompositingQuality);
GpStatus WINGDIPAPI GdipSetInterpolationMode(GpGraphics*,InterpolationMode);
+GpStatus WINGDIPAPI GdipSetPageScale(GpGraphics*,REAL);
GpStatus WINGDIPAPI GdipSetPageUnit(GpGraphics*,GpUnit);
GpStatus WINGDIPAPI GdipSetPixelOffsetMode(GpGraphics*,PixelOffsetMode);
GpStatus WINGDIPAPI GdipSetSmoothingMode(GpGraphics*,SmoothingMode);
--
1.4.1
More information about the wine-patches
mailing list