winehq.org
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
May
April
March
February
January
2006
December
November
October
September
August
July
June
May
April
March
February
January
2005
December
November
October
September
August
July
June
May
April
March
February
January
2004
December
November
October
September
August
July
June
May
April
March
February
January
2003
December
November
October
September
August
July
June
May
April
March
February
January
2002
December
November
October
September
August
July
June
May
April
March
February
January
2001
December
November
October
September
August
July
June
May
April
March
February
List overview
wine-commits
June 2011
----- 2025 -----
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
May 2007
April 2007
March 2007
February 2007
January 2007
----- 2006 -----
December 2006
November 2006
October 2006
September 2006
August 2006
July 2006
June 2006
May 2006
April 2006
March 2006
February 2006
January 2006
----- 2005 -----
December 2005
November 2005
October 2005
September 2005
August 2005
July 2005
June 2005
May 2005
April 2005
March 2005
February 2005
January 2005
----- 2004 -----
December 2004
November 2004
October 2004
September 2004
August 2004
July 2004
June 2004
May 2004
April 2004
March 2004
February 2004
January 2004
----- 2003 -----
December 2003
November 2003
October 2003
September 2003
August 2003
July 2003
June 2003
May 2003
April 2003
March 2003
February 2003
January 2003
----- 2002 -----
December 2002
November 2002
October 2002
September 2002
August 2002
July 2002
June 2002
May 2002
April 2002
March 2002
February 2002
January 2002
----- 2001 -----
December 2001
November 2001
October 2001
September 2001
August 2001
July 2001
June 2001
May 2001
April 2001
March 2001
February 2001
wine-commits@winehq.org
2 participants
809 discussions
Start a n
N
ew thread
André Hentschel : dbghelp: Only declare deltapc for i386.
by Alexandre Julliard
29 Jun '11
29 Jun '11
Module: wine Branch: master Commit: 3a183a42df95c915254ae1ca6f2d51e505082b2d URL:
http://source.winehq.org/git/wine.git/?a=commit;h=3a183a42df95c915254ae1ca6…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Tue Jun 28 23:11:02 2011 +0200 dbghelp: Only declare deltapc for i386. --- dlls/dbghelp/cpu_i386.c | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/dbghelp/cpu_i386.c b/dlls/dbghelp/cpu_i386.c index 8fe5eac..70ee9e6 100644 --- a/dlls/dbghelp/cpu_i386.c +++ b/dlls/dbghelp/cpu_i386.c @@ -157,8 +157,8 @@ static BOOL i386_stack_walk(struct cpu_stack_walk* csw, LPSTACKFRAME64 frame, CO WORD val16; DWORD val32; BOOL do_switch; - unsigned deltapc; #ifdef __i386__ + unsigned deltapc; CONTEXT _context; #endif @@ -174,6 +174,7 @@ static BOOL i386_stack_walk(struct cpu_stack_walk* csw, LPSTACKFRAME64 frame, CO wine_dbgstr_longlong(curr_count), (void*)(DWORD_PTR)curr_switch, (void*)(DWORD_PTR)next_switch); +#ifdef __i386__ /* if we're at first call (which doesn't actually unwind, it just computes ReturnPC, * or if we're doing the first real unwind (count == 1), then we can directly use * eip. otherwise, eip is *after* the insn that actually made the call to @@ -184,7 +185,6 @@ static BOOL i386_stack_walk(struct cpu_stack_walk* csw, LPSTACKFRAME64 frame, CO */ deltapc = curr_count <= 1 ? 0 : 1; -#ifdef __i386__ if (!context) { /* setup a pseudo context for the rest of the code (esp. unwinding) */
1
0
0
0
Vincent Povirk : gdiplus: Use DrawDriverString to draw the text in DrawString.
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: d59c3d45e34817e08e68305d3e5f632e3c8523a3 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=d59c3d45e34817e08e68305d3…
Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Mon Jun 27 14:40:59 2011 -0500 gdiplus: Use DrawDriverString to draw the text in DrawString. --- dlls/gdiplus/graphics.c | 77 +++++++++++++++++++--------------------------- 1 files changed, 32 insertions(+), 45 deletions(-) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index d756c0b..be25653 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -4608,9 +4608,9 @@ GpStatus WINGDIPAPI GdipMeasureString(GpGraphics *graphics, } struct draw_string_args { - POINT drawbase; - UINT drawflags; - REAL ang_cos, ang_sin; + GpGraphics *graphics; + GDIPCONST GpBrush *brush; + REAL x, y, rel_width, rel_height, ascent; }; static GpStatus draw_string_callback(HDC hdc, @@ -4619,14 +4619,14 @@ static GpStatus draw_string_callback(HDC hdc, INT lineno, const RectF *bounds, void *user_data) { struct draw_string_args *args = user_data; - RECT drawcoord; + PointF position; - drawcoord.left = drawcoord.right = args->drawbase.x + roundr(args->ang_sin * bounds->Y); - drawcoord.top = drawcoord.bottom = args->drawbase.y + roundr(args->ang_cos * bounds->Y); + position.X = args->x + bounds->X / args->rel_width; + position.Y = args->y + bounds->Y / args->rel_height + args->ascent; - DrawTextW(hdc, string + index, length, &drawcoord, args->drawflags); - - return Ok; + return GdipDrawDriverString(args->graphics, &string[index], length, font, + args->brush, &position, + DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, NULL); } GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string, @@ -4637,10 +4637,12 @@ GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string HFONT gdifont; GpPointF pt[3], rectcpy[4]; POINT corners[4]; - REAL angle, rel_width, rel_height; + REAL rel_width, rel_height; INT offsety = 0, save_state; struct draw_string_args args; RectF scaled_rect; + HDC hdc, temp_hdc=NULL; + TEXTMETRICW textmetric; TRACE("(%p, %s, %i, %p, %s, %p, %p)\n", graphics, debugstr_wn(string, length), length, font, debugstr_rectf(rect), format, brush); @@ -4648,15 +4650,13 @@ GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string if(!graphics || !string || !font || !brush || !rect) return InvalidParameter; - if((brush->bt != BrushTypeSolidColor)){ - FIXME("not implemented for given parameters\n"); - return NotImplemented; + if(graphics->hdc) + { + hdc = graphics->hdc; } - - if(!graphics->hdc) + else { - FIXME("graphics object has no HDC\n"); - return Ok; + hdc = temp_hdc = CreateCompatibleDC(0); } if(format){ @@ -4675,9 +4675,7 @@ GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string } } - save_state = SaveDC(graphics->hdc); - SetBkMode(graphics->hdc, TRANSPARENT); - SetTextColor(graphics->hdc, brush->lb.lbColor); + save_state = SaveDC(hdc); pt[0].X = 0.0; pt[0].Y = 0.0; @@ -4686,9 +4684,6 @@ GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string pt[2].X = 0.0; pt[2].Y = 1.0; GdipTransformPoints(graphics, CoordinateSpaceDevice, CoordinateSpaceWorld, pt, 3); - angle = -gdiplus_atan2((pt[1].Y - pt[0].Y), (pt[1].X - pt[0].X)); - args.ang_cos = cos(angle); - args.ang_sin = sin(angle); rel_width = sqrt((pt[1].Y-pt[0].Y)*(pt[1].Y-pt[0].Y)+ (pt[1].X-pt[0].X)*(pt[1].X-pt[0].X)); rel_height = sqrt((pt[2].Y-pt[0].Y)*(pt[2].Y-pt[0].Y)+ @@ -4709,38 +4704,30 @@ GpStatus WINGDIPAPI GdipDrawString(GpGraphics *graphics, GDIPCONST WCHAR *string { /* FIXME: If only the width or only the height is 0, we should probably still clip */ rgn = CreatePolygonRgn(corners, 4, ALTERNATE); - SelectClipRgn(graphics->hdc, rgn); + SelectClipRgn(hdc, rgn); } get_font_hfont(graphics, font, &gdifont); - SelectObject(graphics->hdc, gdifont); + SelectObject(hdc, gdifont); - if (!format || format->align == StringAlignmentNear) - { - args.drawbase.x = corners[0].x; - args.drawbase.y = corners[0].y; - args.drawflags = DT_NOCLIP | DT_EXPANDTABS; - } - else if (format->align == StringAlignmentCenter) - { - args.drawbase.x = (corners[0].x + corners[1].x)/2; - args.drawbase.y = (corners[0].y + corners[1].y)/2; - args.drawflags = DT_NOCLIP | DT_EXPANDTABS | DT_CENTER; - } - else /* (format->align == StringAlignmentFar) */ - { - args.drawbase.x = corners[1].x; - args.drawbase.y = corners[1].y; - args.drawflags = DT_NOCLIP | DT_EXPANDTABS | DT_RIGHT; - } + args.graphics = graphics; + args.brush = brush; - gdip_format_string(graphics->hdc, string, length, font, &scaled_rect, format, + args.rel_width = rel_width; + args.rel_height = rel_height; + + GetTextMetricsW(hdc, &textmetric); + args.ascent = textmetric.tmAscent / rel_height; + + gdip_format_string(hdc, string, length, font, &scaled_rect, format, draw_string_callback, &args); DeleteObject(rgn); DeleteObject(gdifont); - RestoreDC(graphics->hdc, save_state); + RestoreDC(hdc, save_state); + + DeleteDC(temp_hdc); return Ok; }
1
0
0
0
Rico Schüller : d3dx9: Fix ID3DXEffect:: SetStateManager().
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: 32bba812dfcdf373a82c882b5d46d599c48068ef URL:
http://source.winehq.org/git/wine.git/?a=commit;h=32bba812dfcdf373a82c882b5…
Author: Rico Schüller <kgbricola(a)web.de> Date: Tue Jun 28 22:49:44 2011 +0200 d3dx9: Fix ID3DXEffect::SetStateManager(). --- dlls/d3dx9_36/effect.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/dlls/d3dx9_36/effect.c b/dlls/d3dx9_36/effect.c index 756163a..4253863 100644 --- a/dlls/d3dx9_36/effect.c +++ b/dlls/d3dx9_36/effect.c @@ -2944,8 +2944,8 @@ static HRESULT WINAPI ID3DXEffectImpl_SetStateManager(ID3DXEffect *iface, LPD3DX TRACE("iface %p, manager %p\n", This, manager); - if (This->manager) IUnknown_Release(This->manager); if (manager) IUnknown_AddRef(manager); + if (This->manager) IUnknown_Release(This->manager); This->manager = manager;
1
0
0
0
Vincent Povirk : gdiplus: Implement GdipMeasureDriverString.
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: 6cc7e7f7c4b353257e18cd6356c58df2d00e2923 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=6cc7e7f7c4b353257e18cd635…
Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Mon Jun 27 13:24:39 2011 -0500 gdiplus: Implement GdipMeasureDriverString. --- dlls/gdiplus/graphics.c | 108 ++++++++++++++++++++++++++++++++++++++++- dlls/gdiplus/tests/graphics.c | 34 ++++++------ 2 files changed, 123 insertions(+), 19 deletions(-) diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 8c6a042..d756c0b 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -5624,8 +5624,112 @@ GpStatus WINGDIPAPI GdipMeasureDriverString(GpGraphics *graphics, GDIPCONST UINT GDIPCONST GpFont *font, GDIPCONST PointF *positions, INT flags, GDIPCONST GpMatrix *matrix, RectF *boundingBox) { - FIXME("(%p %p %d %p %p %d %p %p): stub\n", graphics, text, length, font, positions, flags, matrix, boundingBox); - return NotImplemented; + static const INT unsupported_flags = ~(DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance); + HFONT hfont; + HDC hdc; + REAL min_x, min_y, max_x, max_y, x, y; + int i; + TEXTMETRICW textmetric; + const WORD *glyph_indices; + WORD *dynamic_glyph_indices=NULL; + REAL rel_width, rel_height, ascent, descent; + GpPointF pt[3]; + + TRACE("(%p %p %d %p %p %d %p %p)\n", graphics, text, length, font, positions, flags, matrix, boundingBox); + + if (!graphics || !text || !font || !positions || !boundingBox) + return InvalidParameter; + + if (length == -1) + length = strlenW(text); + + if (length == 0) + { + boundingBox->X = 0.0; + boundingBox->Y = 0.0; + boundingBox->Width = 0.0; + boundingBox->Height = 0.0; + } + + if (flags & unsupported_flags) + FIXME("Ignoring flags %x\n", flags & unsupported_flags); + + if (matrix) + FIXME("Ignoring matrix\n"); + + get_font_hfont(graphics, font, &hfont); + + hdc = CreateCompatibleDC(0); + SelectObject(hdc, hfont); + + GetTextMetricsW(hdc, &textmetric); + + pt[0].X = 0.0; + pt[0].Y = 0.0; + pt[1].X = 1.0; + pt[1].Y = 0.0; + pt[2].X = 0.0; + pt[2].Y = 1.0; + GdipTransformPoints(graphics, CoordinateSpaceDevice, CoordinateSpaceWorld, pt, 3); + rel_width = sqrt((pt[1].Y-pt[0].Y)*(pt[1].Y-pt[0].Y)+ + (pt[1].X-pt[0].X)*(pt[1].X-pt[0].X)); + rel_height = sqrt((pt[2].Y-pt[0].Y)*(pt[2].Y-pt[0].Y)+ + (pt[2].X-pt[0].X)*(pt[2].X-pt[0].X)); + + if (flags & DriverStringOptionsCmapLookup) + { + glyph_indices = dynamic_glyph_indices = GdipAlloc(sizeof(WORD) * length); + if (!glyph_indices) + { + DeleteDC(hdc); + DeleteObject(hfont); + return OutOfMemory; + } + + GetGlyphIndicesW(hdc, text, length, dynamic_glyph_indices, 0); + } + else + glyph_indices = text; + + min_x = max_x = x = positions[0].X; + min_y = max_y = y = positions[0].Y; + + ascent = textmetric.tmAscent / rel_height; + descent = textmetric.tmDescent / rel_height; + + for (i=0; i<length; i++) + { + int char_width; + ABC abc; + + if (!(flags & DriverStringOptionsRealizedAdvance)) + { + x = positions[i].X; + y = positions[i].Y; + } + + GetCharABCWidthsW(hdc, glyph_indices[i], glyph_indices[i], &abc); + char_width = abc.abcA + abc.abcB + abc.abcB; + + if (min_y > y - ascent) min_y = y - ascent; + if (max_y < y + descent) max_y = y + descent; + if (min_x > x) min_x = x; + + x += char_width / rel_width; + + if (max_x < x) max_x = x; + } + + GdipFree(dynamic_glyph_indices); + DeleteDC(hdc); + DeleteObject(hfont); + + boundingBox->X = min_x; + boundingBox->Y = min_y; + boundingBox->Width = max_x - min_x; + boundingBox->Height = max_y - min_y; + + return Ok; } static GpStatus GDI32_GdipDrawDriverString(GpGraphics *graphics, GDIPCONST UINT16 *text, INT length, diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c index 0ab570d..bbca69f 100644 --- a/dlls/gdiplus/tests/graphics.c +++ b/dlls/gdiplus/tests/graphics.c @@ -3048,36 +3048,36 @@ static void test_string_functions(void) status = GdipMeasureDriverString(NULL, teststring, 6, font, &position, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, identity, &rc); - todo_wine expect(InvalidParameter, status); + expect(InvalidParameter, status); status = GdipMeasureDriverString(graphics, NULL, 6, font, &position, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, identity, &rc); - todo_wine expect(InvalidParameter, status); + expect(InvalidParameter, status); status = GdipMeasureDriverString(graphics, teststring, 6, NULL, &position, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, identity, &rc); - todo_wine expect(InvalidParameter, status); + expect(InvalidParameter, status); status = GdipMeasureDriverString(graphics, teststring, 6, font, NULL, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, identity, &rc); - todo_wine expect(InvalidParameter, status); + expect(InvalidParameter, status); status = GdipMeasureDriverString(graphics, teststring, 6, font, &position, 0x100, identity, &rc); - todo_wine expect(Ok, status); + expect(Ok, status); status = GdipMeasureDriverString(graphics, teststring, 6, font, &position, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, NULL, &rc); - todo_wine expect(Ok, status); + expect(Ok, status); status = GdipMeasureDriverString(graphics, teststring, 6, font, &position, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, identity, NULL); - todo_wine expect(InvalidParameter, status); + expect(InvalidParameter, status); rc.X = 0; rc.Y = 0; @@ -3086,12 +3086,12 @@ static void test_string_functions(void) status = GdipMeasureDriverString(graphics, teststring, 6, font, &position, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, identity, &rc); - todo_wine expect(Ok, status); + expect(Ok, status); expectf(0.0, rc.X); - todo_wine ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); - todo_wine ok(rc.Width > 0.0, "unexpected Width %0.2f\n", rc.Width); - todo_wine ok(rc.Height > 0.0, "unexpected Y %0.2f\n", rc.Y); + ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); + ok(rc.Width > 0.0, "unexpected Width %0.2f\n", rc.Width); + ok(rc.Height > 0.0, "unexpected Y %0.2f\n", rc.Y); char_width = rc.Width; char_height = rc.Height; @@ -3103,11 +3103,11 @@ static void test_string_functions(void) status = GdipMeasureDriverString(graphics, teststring, 4, font, &position, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, identity, &rc); - todo_wine expect(Ok, status); + expect(Ok, status); expectf(0.0, rc.X); - todo_wine ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); - todo_wine ok(rc.Width < char_width, "got Width %0.2f, expecting less than %0.2f\n", rc.Width, char_width); + ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); + ok(rc.Width < char_width, "got Width %0.2f, expecting less than %0.2f\n", rc.Width, char_width); expectf(char_height, rc.Height); rc.X = 0; @@ -3117,11 +3117,11 @@ static void test_string_functions(void) status = GdipMeasureDriverString(graphics, teststring2, 1, font, &position, DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, identity, &rc); - todo_wine expect(Ok, status); + expect(Ok, status); expectf(rc.X, 0.0); - todo_wine ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); - todo_wine ok(rc.Width > 0, "unexpected Width %0.2f\n", rc.Width); + ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); + ok(rc.Width > 0, "unexpected Width %0.2f\n", rc.Width); expectf(rc.Height, char_height); GdipDeleteMatrix(identity);
1
0
0
0
Vincent Povirk : gdiplus: Test MeasureDriverString with a character that has an underhang.
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: 640c7b5e4ffcdad40efc2dde2496484c609edc66 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=640c7b5e4ffcdad40efc2dde2…
Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Tue Jun 28 13:57:23 2011 -0500 gdiplus: Test MeasureDriverString with a character that has an underhang. --- dlls/gdiplus/tests/graphics.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c index 64472f4..0ab570d 100644 --- a/dlls/gdiplus/tests/graphics.c +++ b/dlls/gdiplus/tests/graphics.c @@ -2827,6 +2827,7 @@ static void test_string_functions(void) HDC hdc = GetDC( hwnd ); const WCHAR fontname[] = {'T','a','h','o','m','a',0}; const WCHAR teststring[] = {'M','M',' ','M','\n','M',0}; + const WCHAR teststring2[] = {'j',0}; REAL char_width, char_height; INT codepointsfitted, linesfilled; GpStringFormat *format; @@ -3109,6 +3110,20 @@ static void test_string_functions(void) todo_wine ok(rc.Width < char_width, "got Width %0.2f, expecting less than %0.2f\n", rc.Width, char_width); expectf(char_height, rc.Height); + rc.X = 0; + rc.Y = 0; + rc.Width = 0; + rc.Height = 0; + status = GdipMeasureDriverString(graphics, teststring2, 1, font, &position, + DriverStringOptionsCmapLookup|DriverStringOptionsRealizedAdvance, + identity, &rc); + todo_wine expect(Ok, status); + + expectf(rc.X, 0.0); + todo_wine ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); + todo_wine ok(rc.Width > 0, "unexpected Width %0.2f\n", rc.Width); + expectf(rc.Height, char_height); + GdipDeleteMatrix(identity); GdipDeleteStringFormat(format); GdipDeleteBrush(brush);
1
0
0
0
Vincent Povirk : gdiplus: Fix the order of arguments to expectf in test_string_functions.
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: 0ec9d398a57351b65806b6975dab2cd79523d328 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=0ec9d398a57351b65806b6975…
Author: Vincent Povirk <vincent(a)codeweavers.com> Date: Tue Jun 28 13:53:41 2011 -0500 gdiplus: Fix the order of arguments to expectf in test_string_functions. --- dlls/gdiplus/tests/graphics.c | 6 +++--- 1 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dlls/gdiplus/tests/graphics.c b/dlls/gdiplus/tests/graphics.c index 49f6815..64472f4 100644 --- a/dlls/gdiplus/tests/graphics.c +++ b/dlls/gdiplus/tests/graphics.c @@ -3087,7 +3087,7 @@ static void test_string_functions(void) identity, &rc); todo_wine expect(Ok, status); - expectf(rc.X, 0.0); + expectf(0.0, rc.X); todo_wine ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); todo_wine ok(rc.Width > 0.0, "unexpected Width %0.2f\n", rc.Width); todo_wine ok(rc.Height > 0.0, "unexpected Y %0.2f\n", rc.Y); @@ -3104,10 +3104,10 @@ static void test_string_functions(void) identity, &rc); todo_wine expect(Ok, status); - expectf(rc.X, 0.0); + expectf(0.0, rc.X); todo_wine ok(rc.Y < 0.0, "unexpected Y %0.2f\n", rc.Y); todo_wine ok(rc.Width < char_width, "got Width %0.2f, expecting less than %0.2f\n", rc.Width, char_width); - expectf(rc.Height, char_height); + expectf(char_height, rc.Height); GdipDeleteMatrix(identity); GdipDeleteStringFormat(format);
1
0
0
0
Marcus Meissner : explorer: Remove useless array NULL check (Coverity).
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: 436ec812401b87a1b0e2f4567d5fe24de0d303d9 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=436ec812401b87a1b0e2f4567…
Author: Marcus Meissner <marcus(a)jet.franken.de> Date: Tue Jun 28 08:31:31 2011 +0200 explorer: Remove useless array NULL check (Coverity). --- programs/explorer/explorer.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/programs/explorer/explorer.c b/programs/explorer/explorer.c index d04457b..0dc82cf 100644 --- a/programs/explorer/explorer.c +++ b/programs/explorer/explorer.c @@ -167,7 +167,7 @@ static IShellFolder* get_starting_shell_folder(parameters_struct* params) HRESULT hres; SHGetDesktopFolder(&desktop); - if(!params->root || (strlenW(params->root)==0)) + if (!params->root[0]) { return desktop; }
1
0
0
0
Dylan Smith : ddraw: Partially revert a struct copy change to fix a regression.
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: ced4c383241a1069eca094408d288fbc3784c094 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ced4c383241a1069eca094408…
Author: Dylan Smith <dylan.ah.smith(a)gmail.com> Date: Tue Jun 28 12:41:21 2011 -0400 ddraw: Partially revert a struct copy change to fix a regression. Commit 3871329872afe3976e0b2b85330e3a7c47301658 caused the regression. --- dlls/ddraw/ddraw_private.h | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/dlls/ddraw/ddraw_private.h b/dlls/ddraw/ddraw_private.h index c73743a..0f3864a 100644 --- a/dlls/ddraw/ddraw_private.h +++ b/dlls/ddraw/ddraw_private.h @@ -585,10 +585,11 @@ typedef struct #define DD_STRUCT_COPY_BYSIZE_(to,from,from_size) \ do { \ DWORD __size = (to)->dwSize; \ - DWORD __copysize = min(__size, from_size); \ + DWORD __resetsize = min(__size, sizeof(*to)); \ + DWORD __copysize = min(__resetsize, from_size); \ assert(to != from); \ memcpy(to, from, __copysize); \ - memset((char*)(to) + __copysize, 0, __size - __copysize); \ + memset((char*)(to) + __copysize, 0, __resetsize - __copysize); \ (to)->dwSize = __size; /* restore size */ \ } while (0)
1
0
0
0
André Hentschel : tools: Preserve ordinal when updating specfiles.
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: ed3a2765915e5bead74585285532ff880e5bb147 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=ed3a2765915e5bead74585285…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Thu Jun 23 00:02:30 2011 +0200 tools: Preserve ordinal when updating specfiles. --- tools/make_specfiles | 4 ++-- 1 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/make_specfiles b/tools/make_specfiles index 9e9b8e8..ff21ca8 100755 --- a/tools/make_specfiles +++ b/tools/make_specfiles @@ -214,7 +214,7 @@ sub update_spec_file($) { my $callconv = $parent{callconv} ne "stub" ? $parent{callconv} : $parent{spec} =~ /msvc/ ? "cdecl" : "stdcall"; # hack - $_ = sprintf "@ %s %s%s", $callconv, $flags, $func; + $_ = sprintf "$descr{ordinal} %s %s%s", $callconv, $flags, $func; if ($parent{target} =~ /$group_head\./) # use the same forward as parent if possible { @@ -227,7 +227,7 @@ sub update_spec_file($) } else { - $_ = sprintf "@ stub %s%s", $flags, $func; + $_ = sprintf "$descr{ordinal} stub %s%s", $flags, $func; } $_ .= $descr{comment} || "";
1
0
0
0
André Hentschel : shdocvw: Add ITaskbarList2 Interface .
by Alexandre Julliard
28 Jun '11
28 Jun '11
Module: wine Branch: master Commit: 84d68639be45080429a184da85cb94744c924b66 URL:
http://source.winehq.org/git/wine.git/?a=commit;h=84d68639be45080429a184da8…
Author: André Hentschel <nerv(a)dawncrow.de> Date: Mon Jun 20 22:01:51 2011 +0200 shdocvw: Add ITaskbarList2 Interface. --- dlls/shdocvw/taskbarlist.c | 52 +++++++++++++++++++++++++++---------------- include/shobjidl.idl | 15 ++++++++++++ 2 files changed, 48 insertions(+), 19 deletions(-) diff --git a/dlls/shdocvw/taskbarlist.c b/dlls/shdocvw/taskbarlist.c index d853506..a053cff 100644 --- a/dlls/shdocvw/taskbarlist.c +++ b/dlls/shdocvw/taskbarlist.c @@ -27,23 +27,24 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); struct taskbar_list { - ITaskbarList ITaskbarList_iface; + ITaskbarList2 ITaskbarList2_iface; LONG refcount; }; -static inline struct taskbar_list *impl_from_ITaskbarList(ITaskbarList *iface) +static inline struct taskbar_list *impl_from_ITaskbarList2(ITaskbarList2 *iface) { - return CONTAINING_RECORD(iface, struct taskbar_list, ITaskbarList_iface); + return CONTAINING_RECORD(iface, struct taskbar_list, ITaskbarList2_iface); } /* IUnknown methods */ -static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList *iface, REFIID riid, void **object) +static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList2 *iface, REFIID riid, void **object) { TRACE("iface %p, riid %s, object %p\n", iface, debugstr_guid(riid), object); - if (IsEqualGUID(riid, &IID_ITaskbarList) - || IsEqualGUID(riid, &IID_IUnknown)) + if (IsEqualGUID(riid, &IID_ITaskbarList) || + IsEqualGUID(riid, &IID_ITaskbarList2) || + IsEqualGUID(riid, &IID_IUnknown)) { IUnknown_AddRef(iface); *object = iface; @@ -56,9 +57,9 @@ static HRESULT STDMETHODCALLTYPE taskbar_list_QueryInterface(ITaskbarList *iface return E_NOINTERFACE; } -static ULONG STDMETHODCALLTYPE taskbar_list_AddRef(ITaskbarList *iface) +static ULONG STDMETHODCALLTYPE taskbar_list_AddRef(ITaskbarList2 *iface) { - struct taskbar_list *This = impl_from_ITaskbarList(iface); + struct taskbar_list *This = impl_from_ITaskbarList2(iface); ULONG refcount = InterlockedIncrement(&This->refcount); TRACE("%p increasing refcount to %u\n", This, refcount); @@ -66,9 +67,9 @@ static ULONG STDMETHODCALLTYPE taskbar_list_AddRef(ITaskbarList *iface) return refcount; } -static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList *iface) +static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList2 *iface) { - struct taskbar_list *This = impl_from_ITaskbarList(iface); + struct taskbar_list *This = impl_from_ITaskbarList2(iface); ULONG refcount = InterlockedDecrement(&This->refcount); TRACE("%p decreasing refcount to %u\n", This, refcount); @@ -84,42 +85,53 @@ static ULONG STDMETHODCALLTYPE taskbar_list_Release(ITaskbarList *iface) /* ITaskbarList methods */ -static HRESULT STDMETHODCALLTYPE taskbar_list_HrInit(ITaskbarList *iface) +static HRESULT STDMETHODCALLTYPE taskbar_list_HrInit(ITaskbarList2 *iface) { TRACE("iface %p\n", iface); return S_OK; } -static HRESULT STDMETHODCALLTYPE taskbar_list_AddTab(ITaskbarList *iface, HWND hwnd) +static HRESULT STDMETHODCALLTYPE taskbar_list_AddTab(ITaskbarList2 *iface, HWND hwnd) { FIXME("iface %p, hwnd %p stub!\n", iface, hwnd); return E_NOTIMPL; } -static HRESULT STDMETHODCALLTYPE taskbar_list_DeleteTab(ITaskbarList *iface, HWND hwnd) +static HRESULT STDMETHODCALLTYPE taskbar_list_DeleteTab(ITaskbarList2 *iface, HWND hwnd) { FIXME("iface %p, hwnd %p stub!\n", iface, hwnd); return E_NOTIMPL; } -static HRESULT STDMETHODCALLTYPE taskbar_list_ActivateTab(ITaskbarList *iface, HWND hwnd) +static HRESULT STDMETHODCALLTYPE taskbar_list_ActivateTab(ITaskbarList2 *iface, HWND hwnd) { FIXME("iface %p, hwnd %p stub!\n", iface, hwnd); return E_NOTIMPL; } -static HRESULT STDMETHODCALLTYPE taskbar_list_SetActiveAlt(ITaskbarList *iface, HWND hwnd) +static HRESULT STDMETHODCALLTYPE taskbar_list_SetActiveAlt(ITaskbarList2 *iface, HWND hwnd) { FIXME("iface %p, hwnd %p stub!\n", iface, hwnd); return E_NOTIMPL; } -static const struct ITaskbarListVtbl taskbar_list_vtbl = +/* ITaskbarList2 method */ + +static HRESULT STDMETHODCALLTYPE taskbar_list_MarkFullscreenWindow(ITaskbarList2 *iface, + HWND hwnd, + BOOL fullscreen) +{ + FIXME("iface %p, hwnd %p, fullscreen %s stub!\n", iface, hwnd, (fullscreen)?"true":"false"); + + return E_NOTIMPL; +} + +static const struct ITaskbarList2Vtbl taskbar_list_vtbl = { /* IUnknown methods */ taskbar_list_QueryInterface, @@ -131,6 +143,8 @@ static const struct ITaskbarListVtbl taskbar_list_vtbl = taskbar_list_DeleteTab, taskbar_list_ActivateTab, taskbar_list_SetActiveAlt, + /* ITaskbarList2 method */ + taskbar_list_MarkFullscreenWindow, }; HRESULT TaskbarList_Create(IUnknown *outer, REFIID riid, void **taskbar_list) @@ -155,12 +169,12 @@ HRESULT TaskbarList_Create(IUnknown *outer, REFIID riid, void **taskbar_list) return E_OUTOFMEMORY; } - object->ITaskbarList_iface.lpVtbl = &taskbar_list_vtbl; + object->ITaskbarList2_iface.lpVtbl = &taskbar_list_vtbl; object->refcount = 0; - TRACE("Created ITaskbarList %p\n", object); + TRACE("Created ITaskbarList2 %p\n", object); - hr = ITaskbarList_QueryInterface(&object->ITaskbarList_iface, riid, taskbar_list); + hr = ITaskbarList2_QueryInterface(&object->ITaskbarList2_iface, riid, taskbar_list); if (FAILED(hr)) { HeapFree(GetProcessHeap(), 0, object); diff --git a/include/shobjidl.idl b/include/shobjidl.idl index 53afd68..8dd9926 100644 --- a/include/shobjidl.idl +++ b/include/shobjidl.idl @@ -1857,6 +1857,21 @@ interface ITaskbarList : IUnknown cpp_quote("EXTERN_C const CLSID CLSID_TaskbarList;") /***************************************************************************** + * ITaskbarList2 interface + */ +[ + object, + uuid(602D4995-B13A-429B-A66E-1935E44F4317), + pointer_default(unique) +] +interface ITaskbarList2 : ITaskbarList +{ + HRESULT MarkFullscreenWindow( + [in] HWND hwnd, + [in] BOOL fullscreen); +} + +/***************************************************************************** * IAutoCompleteDropDown interface */ [
1
0
0
0
← Newer
1
2
3
4
5
6
...
81
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
Results per page:
10
25
50
100
200