Module: wine Branch: master Commit: 37bbe9d4bc241b6cd92c776148554b103b4f1cc3 URL: http://source.winehq.org/git/wine.git/?a=commit;h=37bbe9d4bc241b6cd92c776148...
Author: Nikolay Sivov bunglehead@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*);