Nikolay Sivov : gdiplus: Added Gdip[Get/Set]TextureWrapMode.
Alexandre Julliard
julliard at winehq.org
Wed Oct 22 08:00:13 CDT 2008
Module: wine
Branch: master
Commit: 37bbe9d4bc241b6cd92c776148554b103b4f1cc3
URL: http://source.winehq.org/git/wine.git/?a=commit;h=37bbe9d4bc241b6cd92c776148554b103b4f1cc3
Author: Nikolay Sivov <bunglehead at gmail.com>
Date: Tue Oct 21 19:39:21 2008 +0400
gdiplus: Added Gdip[Get/Set]TextureWrapMode.
---
dlls/gdiplus/brush.c | 33 +++++++++++++++++++++++++++
dlls/gdiplus/gdiplus.spec | 4 +-
dlls/gdiplus/gdiplus_private.h | 1 +
dlls/gdiplus/tests/brush.c | 49 ++++++++++++++++++++++++++++++++++++++++
include/gdiplusflat.h | 2 +
5 files changed, 87 insertions(+), 2 deletions(-)
diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c
index 8bf09ef..edccb10 100644
--- a/dlls/gdiplus/brush.c
+++ b/dlls/gdiplus/brush.c
@@ -605,6 +605,7 @@ GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage *image,
(*texture)->brush.gdibrush = CreateBrushIndirect(&(*texture)->brush.lb);
(*texture)->brush.bt = BrushTypeTextureFill;
+ (*texture)->wrap = imageattr->wrap;
GdipFree(dibits);
GdipFree(buff);
@@ -913,6 +914,21 @@ GpStatus WINGDIPAPI GdipGetTextureTransform(GpTexture *brush, GpMatrix *matrix)
}
/******************************************************************************
+ * GdipGetTextureWrapMode [GDIPLUS.@]
+ */
+GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture *brush, GpWrapMode *wrapmode)
+{
+ TRACE("(%p, %p)\n", brush, wrapmode);
+
+ if(!brush || !wrapmode)
+ return InvalidParameter;
+
+ *wrapmode = brush->wrap;
+
+ return Ok;
+}
+
+/******************************************************************************
* GdipResetTextureTransform [GDIPLUS.@]
*/
GpStatus WINGDIPAPI GdipResetTextureTransform(GpTexture* brush)
@@ -1138,6 +1154,23 @@ GpStatus WINGDIPAPI GdipSetTextureTransform(GpTexture *texture,
return Ok;
}
+/******************************************************************************
+ * GdipSetTextureWrapMode [GDIPLUS.@]
+ *
+ * WrapMode not used, only stored
+ */
+GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture *brush, GpWrapMode wrapmode)
+{
+ TRACE("(%p, %d)\n", brush, wrapmode);
+
+ if(!brush)
+ return InvalidParameter;
+
+ brush->wrap = wrapmode;
+
+ return Ok;
+}
+
GpStatus WINGDIPAPI GdipSetLineColors(GpLineGradient *brush, ARGB color1,
ARGB color2)
{
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 3ef4271..ef53b9b 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -399,7 +399,7 @@
@ stdcall GdipGetTextRenderingHint(ptr ptr)
@ stub GdipGetTextureImage
@ stdcall GdipGetTextureTransform(ptr ptr)
-@ stub GdipGetTextureWrapMode
+@ stdcall GdipGetTextureWrapMode(ptr ptr)
@ stub GdipGetVisibleClipBounds
@ stub GdipGetVisibleClipBoundsI
@ stdcall GdipGetWorldTransform(ptr ptr)
@@ -596,7 +596,7 @@
@ stub GdipSetTextContrast
@ stdcall GdipSetTextRenderingHint(ptr long)
@ stdcall GdipSetTextureTransform(ptr ptr)
-@ stub GdipSetTextureWrapMode
+@ stdcall GdipSetTextureWrapMode(ptr long)
@ stdcall GdipSetWorldTransform(ptr ptr)
@ stdcall GdipShearMatrix(ptr long long long)
@ stdcall GdipStartPathFigure(ptr)
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h
index 0ca2714..05549b4 100644
--- a/dlls/gdiplus/gdiplus_private.h
+++ b/dlls/gdiplus/gdiplus_private.h
@@ -139,6 +139,7 @@ struct GpLineGradient{
struct GpTexture{
GpBrush brush;
GpMatrix *transform;
+ WrapMode wrap; /* not used yet */
};
struct GpPath{
diff --git a/dlls/gdiplus/tests/brush.c b/dlls/gdiplus/tests/brush.c
index 9dd343b..ae83184 100644
--- a/dlls/gdiplus/tests/brush.c
+++ b/dlls/gdiplus/tests/brush.c
@@ -235,6 +235,54 @@ static void test_transform(void)
ReleaseDC(0, hdc);
}
+static void test_texturewrap(void)
+{
+ GpStatus status;
+ GpTexture *texture;
+ GpGraphics *graphics = NULL;
+ GpBitmap *bitmap;
+ HDC hdc = GetDC(0);
+ GpWrapMode wrap;
+
+ status = GdipCreateFromHDC(hdc, &graphics);
+ expect(Ok, status);
+ status = GdipCreateBitmapFromGraphics(1, 1, graphics, &bitmap);
+ expect(Ok, status);
+
+ status = GdipCreateTexture((GpImage*)bitmap, WrapModeTile, &texture);
+ expect(Ok, status);
+
+ /* NULL */
+ status = GdipGetTextureWrapMode(NULL, NULL);
+ expect(InvalidParameter, status);
+ status = GdipGetTextureWrapMode(texture, NULL);
+ expect(InvalidParameter, status);
+ status = GdipGetTextureWrapMode(NULL, &wrap);
+ expect(InvalidParameter, status);
+
+ /* get */
+ wrap = WrapModeClamp;
+ status = GdipGetTextureWrapMode(texture, &wrap);
+ expect(Ok, status);
+ expect(WrapModeTile, wrap);
+ /* set, then get */
+ wrap = WrapModeClamp;
+ status = GdipSetTextureWrapMode(texture, wrap);
+ expect(Ok, status);
+ wrap = WrapModeTile;
+ status = GdipGetTextureWrapMode(texture, &wrap);
+ expect(Ok, status);
+ expect(WrapModeClamp, wrap);
+
+ status = GdipDeleteBrush((GpBrush*)texture);
+ expect(Ok, status);
+ status = GdipDisposeImage((GpImage*)bitmap);
+ expect(Ok, status);
+ status = GdipDeleteGraphics(graphics);
+ expect(Ok, status);
+ ReleaseDC(0, hdc);
+}
+
START_TEST(brush)
{
struct GdiplusStartupInput gdiplusStartupInput;
@@ -254,6 +302,7 @@ START_TEST(brush)
test_getbounds();
test_getgamma();
test_transform();
+ test_texturewrap();
GdiplusShutdown(gdiplusToken);
}
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 8df65f4..4968792 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -208,6 +208,8 @@ GpStatus WINGDIPAPI GdipCreateTextureIA(GpImage*,GDIPCONST GpImageAttributes*,
REAL,REAL,REAL,REAL,GpTexture**);
GpStatus WINGDIPAPI GdipCreateTextureIAI(GpImage*,GDIPCONST GpImageAttributes*,
INT,INT,INT,INT,GpTexture**);
+GpStatus WINGDIPAPI GdipGetTextureWrapMode(GpTexture*, GpWrapMode*);
+GpStatus WINGDIPAPI GdipSetTextureWrapMode(GpTexture*, GpWrapMode);
GpStatus WINGDIPAPI GdipDeleteBrush(GpBrush*);
GpStatus WINGDIPAPI GdipGetBrushType(GpBrush*,GpBrushType*);
GpStatus WINGDIPAPI GdipGetLineGammaCorrection(GpLineGradient*,BOOL*);
More information about the wine-cvs
mailing list