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
April 2022
----- 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
1024 discussions
Start a n
N
ew thread
Jacek Caban : winex11: Directly use win32u in import_image_bmp.
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: bfa51809e44439586eb1cce1390162f17d3f164c URL:
https://source.winehq.org/git/wine.git/?a=commit;h=bfa51809e44439586eb1cce1…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Apr 27 14:01:13 2022 +0100 winex11: Directly use win32u in import_image_bmp. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winex11.drv/clipboard.c | 45 +++++++++++++++++++++++++++++--------------- 1 file changed, 30 insertions(+), 15 deletions(-) diff --git a/dlls/winex11.drv/clipboard.c b/dlls/winex11.drv/clipboard.c index 7640308fadd..b36b9a002a3 100644 --- a/dlls/winex11.drv/clipboard.c +++ b/dlls/winex11.drv/clipboard.c @@ -511,7 +511,7 @@ static void *create_dib_from_bitmap( HBITMAP hBmp, size_t *size ) int nLinesCopied; char *ret; - if (!GetObjectW( hBmp, sizeof(bmp), &bmp )) return 0; + if (!NtGdiExtGetObjectW( hBmp, sizeof(bmp), &bmp )) return 0; /* * A packed DIB contains a BITMAPINFO structure followed immediately by @@ -551,15 +551,10 @@ static void *create_dib_from_bitmap( HBITMAP hBmp, size_t *size ) /* Retrieve the DIB bits from the bitmap and fill in the * DIB color table if present */ - hdc = GetDC( 0 ); - nLinesCopied = GetDIBits(hdc, /* Handle to device context */ - hBmp, /* Handle to bitmap */ - 0, /* First scan line to set in dest bitmap */ - bmp.bmHeight, /* Number of scan lines to copy */ - ret + OffsetBits, /* [out] Address of array for bitmap bits */ - (LPBITMAPINFO) pbmiHeader, /* [out] Address of BITMAPINFO structure */ - 0); /* RGB or palette index */ - ReleaseDC( 0, hdc ); + hdc = NtUserGetDCEx( 0, 0, DCX_CACHE | DCX_WINDOW ); + nLinesCopied = NtGdiGetDIBitsInternal( hdc, hBmp, 0, bmp.bmHeight, ret + OffsetBits, + (LPBITMAPINFO) pbmiHeader, 0, 0, 0 ); + NtUserReleaseDC( 0, hdc ); /* Cleanup if GetDIBits failed */ if (nLinesCopied != bmp.bmHeight) @@ -845,16 +840,36 @@ static void *import_image_bmp( Atom type, const void *data, size_t size, size_t bfh->bfType == 0x4d42 /* "BM" */) { const BITMAPINFO *bmi = (const BITMAPINFO *)(bfh + 1); + int width, height; HBITMAP hbmp; - HDC hdc = GetDC(0); + HDC hdc; - if ((hbmp = CreateDIBitmap( hdc, &bmi->bmiHeader, CBM_INIT, - (const BYTE *)data + bfh->bfOffBits, bmi, DIB_RGB_COLORS ))) + if (bmi->bmiHeader.biSize == sizeof(BITMAPCOREHEADER)) + { + const BITMAPCOREHEADER *core = (const BITMAPCOREHEADER *)bmi; + width = core->bcWidth; + height = core->bcHeight; + } + else if (bmi->bmiHeader.biSize >= sizeof(BITMAPINFOHEADER)) + { + const BITMAPINFOHEADER *header = &bmi->bmiHeader; + if (header->biCompression == BI_JPEG || header->biCompression == BI_PNG) return 0; + width = header->biWidth; + height = header->biHeight; + } + else return NULL; + if (!width || !height) return NULL; + + hdc = NtUserGetDCEx( 0, 0, DCX_CACHE | DCX_WINDOW ); + + if ((hbmp = NtGdiCreateDIBitmapInternal( hdc, width, height, CBM_INIT, + (const BYTE *)data + bfh->bfOffBits, bmi, + DIB_RGB_COLORS, 0, 0, 0, 0 ))) { ret = create_dib_from_bitmap( hbmp, ret_size ); - DeleteObject(hbmp); + NtGdiDeleteObjectApp( hbmp ); } - ReleaseDC(0, hdc); + NtUserReleaseDC(0, hdc); } return ret; }
1
0
0
0
Jacek Caban : winex11: Use NtUserSetClipboardData to import clipboard data.
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: 3c05f3b24704cb09389960b8c6ee584db9a61759 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=3c05f3b24704cb09389960b8…
Author: Jacek Caban <jacek(a)codeweavers.com> Date: Wed Apr 27 14:01:12 2022 +0100 winex11: Use NtUserSetClipboardData to import clipboard data. Signed-off-by: Jacek Caban <jacek(a)codeweavers.com> Signed-off-by: Huw Davies <huw(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winex11.drv/clipboard.c | 192 ++++++++++++++++++++++--------------------- 1 file changed, 100 insertions(+), 92 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=3c05f3b24704cb093899…
1
0
0
0
Fabian Maurer : mfplat: Prevent use after free (Coverity).
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: f5d41f28f6442bd7e074efa17785b40ad3c65ba4 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f5d41f28f6442bd7e074efa1…
Author: Fabian Maurer <dark.shadow4(a)web.de> Date: Tue Apr 26 21:03:22 2022 +0200 mfplat: Prevent use after free (Coverity). Signed-off-by: Fabian Maurer <dark.shadow4(a)web.de> Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfplat/mediatype.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/dlls/mfplat/mediatype.c b/dlls/mfplat/mediatype.c index 71d55e2d232..b36a44d1e1c 100644 --- a/dlls/mfplat/mediatype.c +++ b/dlls/mfplat/mediatype.c @@ -976,6 +976,7 @@ static const MFVIDEOFORMAT * WINAPI video_mediatype_GetVideoFormat(IMFVideoMedia TRACE("%p.\n", iface); CoTaskMemFree(media_type->video_format); + media_type->video_format = NULL; if (FAILED(hr = MFCreateMFVideoFormatFromMFMediaType(&media_type->IMFMediaType_iface, &media_type->video_format, &size))) WARN("Failed to create format description, hr %#lx.\n", hr); @@ -1376,6 +1377,7 @@ static const WAVEFORMATEX * WINAPI audio_mediatype_GetAudioFormat(IMFAudioMediaT TRACE("%p.\n", iface); CoTaskMemFree(media_type->audio_format); + media_type->audio_format = NULL; if (FAILED(hr = MFCreateWaveFormatExFromMFMediaType(&media_type->IMFMediaType_iface, &media_type->audio_format, &size, MFWaveFormatExConvertFlag_Normal))) {
1
0
0
0
Fabian Maurer : mfplay: Prevent usage of uninitialized pointer in error case (Coverity).
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: 312e0d518f37065fb566a7f17efd49cdaa3f3e27 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=312e0d518f37065fb566a7f1…
Author: Fabian Maurer <dark.shadow4(a)web.de> Date: Wed Apr 27 14:44:40 2022 +0300 mfplay: Prevent usage of uninitialized pointer in error case (Coverity). Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/mfplay/player.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/dlls/mfplay/player.c b/dlls/mfplay/player.c index 7d9a4da8649..c500717b8d0 100644 --- a/dlls/mfplay/player.c +++ b/dlls/mfplay/player.c @@ -1378,7 +1378,6 @@ static HRESULT media_item_create_sink_node(IUnknown *sink, IMFTopologyNode **nod static HRESULT media_item_create_topology(struct media_player *player, struct media_item *item, IMFTopology **out) { - IMFTopologyNode *src_node, *sink_node; BOOL selected, video_added = FALSE; IMFStreamDescriptor *sd; IMFTopology *topology; @@ -1421,6 +1420,8 @@ static HRESULT media_item_create_topology(struct media_player *player, struct me if (sink) { + IMFTopologyNode *src_node = NULL, *sink_node = NULL; + hr = media_item_create_source_node(item, sd, &src_node); if (SUCCEEDED(hr)) hr = media_item_create_sink_node(sink, &sink_node);
1
0
0
0
Alexandre Julliard : user32/tests: Use the standard INPUT type definition.
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: b67d66f58304db1da73d0f7eda9027f5939178e7 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b67d66f58304db1da73d0f7e…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 27 15:37:30 2022 +0200 user32/tests: Use the standard INPUT type definition. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/user32/tests/input.c | 132 +++++++++++++++++++++------------------------- dlls/user32/tests/menu.c | 37 +++++-------- 2 files changed, 72 insertions(+), 97 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=b67d66f58304db1da73d…
1
0
0
0
Alexandre Julliard : winecrt0: Avoid A->W conversion in initialization code.
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: 7c6f6d27756687c3e2a3b8ca743f886e694142a2 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=7c6f6d27756687c3e2a3b8ca…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 27 15:52:42 2022 +0200 winecrt0: Avoid A->W conversion in initialization code. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/winecrt0/debug.c | 2 +- dlls/winecrt0/unix_lib.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dlls/winecrt0/debug.c b/dlls/winecrt0/debug.c index 6e1866c7568..918fb67b140 100644 --- a/dlls/winecrt0/debug.c +++ b/dlls/winecrt0/debug.c @@ -51,7 +51,7 @@ static void load_func( void **func, const char *name, void *def ) if (!*func) { DWORD err = GetLastError(); - HMODULE module = GetModuleHandleA( "ntdll.dll" ); + HMODULE module = GetModuleHandleW( L"ntdll.dll" ); void *proc = GetProcAddress( module, name ); InterlockedExchangePointer( func, proc ? proc : def ); SetLastError( err ); diff --git a/dlls/winecrt0/unix_lib.c b/dlls/winecrt0/unix_lib.c index 2e9b521a1e7..c86897b9905 100644 --- a/dlls/winecrt0/unix_lib.c +++ b/dlls/winecrt0/unix_lib.c @@ -35,7 +35,7 @@ static void load_func( void **func, const char *name, void *def ) { if (!*func) { - HMODULE module = GetModuleHandleA( "ntdll.dll" ); + HMODULE module = GetModuleHandleW( L"ntdll.dll" ); void *proc = GetProcAddress( module, name ); InterlockedExchangePointer( func, proc ? proc : def ); }
1
0
0
0
Alexandre Julliard : kernel32/tests: Mark a failing test as broken.
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: f68cccc82579ebedf6f9961f3bc30b2eb9307e63 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f68cccc82579ebedf6f9961f…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 27 16:13:39 2022 +0200 kernel32/tests: Mark a failing test as broken. Wine-Bug:
https://bugs.winehq.org/show_bug.cgi?id=52861
Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernel32/tests/locale.c | 48 +++++++++++++++++++++++--------------------- 1 file changed, 25 insertions(+), 23 deletions(-) diff --git a/dlls/kernel32/tests/locale.c b/dlls/kernel32/tests/locale.c index 8dc5814162a..65687313fbb 100644 --- a/dlls/kernel32/tests/locale.c +++ b/dlls/kernel32/tests/locale.c @@ -4435,29 +4435,31 @@ static void test_GetCPInfo(void) ok( ret, "UnmapViewOfFile failed err %lu\n", GetLastError() ); status = pNtGetNlsSectionPtr( 11, 65001, NULL, &ptr, &size ); - ok( status == STATUS_OBJECT_NAME_NOT_FOUND, "failed %lx\n", status ); - if (pRtlInitCodePageTable) - { - static USHORT utf8[20] = { 0, CP_UTF8 }; - - memset( &table, 0xcc, sizeof(table) ); - pRtlInitCodePageTable( utf8, &table ); - ok( table.CodePage == CP_UTF8, "wrong codepage %u\n", table.CodePage ); - if (table.MaximumCharacterSize) - { - ok( table.MaximumCharacterSize == 4, "wrong char size %u\n", table.MaximumCharacterSize ); - ok( table.DefaultChar == '?', "wrong default char %x\n", table.DefaultChar ); - ok( table.UniDefaultChar == 0xfffd, "wrong default char %x\n", table.UniDefaultChar ); - ok( table.TransDefaultChar == '?', "wrong default char %x\n", table.TransDefaultChar ); - ok( table.TransUniDefaultChar == '?', "wrong default char %x\n", table.TransUniDefaultChar ); - ok( !table.DBCSCodePage, "wrong dbcs %u\n", table.DBCSCodePage ); - ok( !table.MultiByteTable, "wrong mbtable %p\n", table.MultiByteTable ); - ok( !table.WideCharTable, "wrong wctable %p\n", table.WideCharTable ); - ok( !table.DBCSRanges, "wrong ranges %p\n", table.DBCSRanges ); - ok( !table.DBCSOffsets, "wrong offsets %p\n", table.DBCSOffsets ); - } - else win_skip( "utf-8 codepage not supported\n" ); - } + ok( status == STATUS_OBJECT_NAME_NOT_FOUND || broken(!status), /* win10 1709 */ + "failed %lx\n", status ); + if (!status) UnmapViewOfFile( ptr ); + if (pRtlInitCodePageTable) + { + static USHORT utf8[20] = { 0, CP_UTF8 }; + + memset( &table, 0xcc, sizeof(table) ); + pRtlInitCodePageTable( utf8, &table ); + ok( table.CodePage == CP_UTF8, "wrong codepage %u\n", table.CodePage ); + if (table.MaximumCharacterSize) + { + ok( table.MaximumCharacterSize == 4, "wrong char size %u\n", table.MaximumCharacterSize ); + ok( table.DefaultChar == '?', "wrong default char %x\n", table.DefaultChar ); + ok( table.UniDefaultChar == 0xfffd, "wrong default char %x\n", table.UniDefaultChar ); + ok( table.TransDefaultChar == '?', "wrong default char %x\n", table.TransDefaultChar ); + ok( table.TransUniDefaultChar == '?', "wrong default char %x\n", table.TransUniDefaultChar ); + ok( !table.DBCSCodePage, "wrong dbcs %u\n", table.DBCSCodePage ); + ok( !table.MultiByteTable, "wrong mbtable %p\n", table.MultiByteTable ); + ok( !table.WideCharTable, "wrong wctable %p\n", table.WideCharTable ); + ok( !table.DBCSRanges, "wrong ranges %p\n", table.DBCSRanges ); + ok( !table.DBCSOffsets, "wrong offsets %p\n", table.DBCSOffsets ); + } + else win_skip( "utf-8 codepage not supported\n" ); + } /* normalization tables */
1
0
0
0
Alexandre Julliard : kernelbase: Add support for storing LOCALE_SINTLSYMBOL in the registry.
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: d6effa7282ba58e0c38158e4ffe7e613b9d6defa URL:
https://source.winehq.org/git/wine.git/?a=commit;h=d6effa7282ba58e0c38158e4…
Author: Alexandre Julliard <julliard(a)winehq.org> Date: Wed Apr 27 14:00:34 2022 +0200 kernelbase: Add support for storing LOCALE_SINTLSYMBOL in the registry. Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/kernelbase/locale.c | 125 +++++++++++++++++++++++++++-------------------- 1 file changed, 73 insertions(+), 52 deletions(-) Diff:
https://source.winehq.org/git/wine.git/?a=commitdiff;h=d6effa7282ba58e0c381…
1
0
0
0
Nikolay Sivov : dwrite/opentype: Use stdint types for font file structures.
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: f5e33215ee2e6f9af05185e6519aa4f2620b2bf1 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=f5e33215ee2e6f9af05185e6…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Wed Apr 27 14:22:55 2022 +0300 dwrite/opentype: Use stdint types for font file structures. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dwrite/opentype.c | 194 ++++++++++++++++++++++++++----------------------- 1 file changed, 104 insertions(+), 90 deletions(-) diff --git a/dlls/dwrite/opentype.c b/dlls/dwrite/opentype.c index 9aeef88c92c..7df0d207bc6 100644 --- a/dlls/dwrite/opentype.c +++ b/dlls/dwrite/opentype.c @@ -73,39 +73,43 @@ WINE_DEFAULT_DEBUG_CHANNEL(dwrite); #define GLYPH_CONTEXT_MAX_LENGTH 64 #define SHAPE_MAX_NESTING_LEVEL 6 -typedef struct { - CHAR TTCTag[4]; - DWORD Version; - DWORD numFonts; - DWORD OffsetTable[1]; -} TTC_Header_V1; - -typedef struct { - DWORD version; - WORD numTables; - WORD searchRange; - WORD entrySelector; - WORD rangeShift; -} TTC_SFNT_V1; - -typedef struct { - DWORD tag; - DWORD checkSum; - DWORD offset; - DWORD length; -} TT_TableRecord; +struct ttc_header +{ + uint32_t tag; + uint16_t major_version; + uint16_t minor_version; + uint32_t num_fonts; + uint32_t offsets[1]; +}; + +struct ot_table_dir +{ + uint32_t version; + uint16_t numTables; + uint16_t searchRange; + uint16_t entrySelector; + uint16_t rangeShift; +}; + +struct ot_table_record +{ + uint32_t tag; + uint32_t checksum; + uint32_t offset; + uint32_t length; +}; struct cmap_encoding_record { - WORD platformID; - WORD encodingID; - DWORD offset; + uint16_t platformID; + uint16_t encodingID; + uint32_t offset; }; struct cmap_header { - WORD version; - WORD num_tables; + uint16_t version; + uint16_t num_tables; struct cmap_encoding_record tables[1]; }; @@ -224,21 +228,21 @@ struct tt_os2 struct tt_hhea { - USHORT majorVersion; - USHORT minorVersion; - SHORT ascender; - SHORT descender; - SHORT linegap; - USHORT advanceWidthMax; - SHORT minLeftSideBearing; - SHORT minRightSideBearing; - SHORT xMaxExtent; - SHORT caretSlopeRise; - SHORT caretSlopeRun; - SHORT caretOffset; - SHORT reserved[4]; - SHORT metricDataFormat; - USHORT numberOfHMetrics; + uint16_t majorVersion; + uint16_t minorVersion; + int16_t ascender; + int16_t descender; + int16_t linegap; + uint16_t advanceWidthMax; + int16_t minLeftSideBearing; + int16_t minRightSideBearing; + int16_t xMaxExtent; + int16_t caretSlopeRise; + int16_t caretSlopeRun; + int16_t caretOffset; + int16_t reserved[4]; + int16_t metricDataFormat; + uint16_t numberOfHMetrics; }; struct sbix_header @@ -337,49 +341,49 @@ enum OS2_FSSELECTION { struct name_record { - WORD platformID; - WORD encodingID; - WORD languageID; - WORD nameID; - WORD length; - WORD offset; + uint16_t platformID; + uint16_t encodingID; + uint16_t languageID; + uint16_t nameID; + uint16_t length; + uint16_t offset; }; struct name_header { - WORD format; - WORD count; - WORD stringOffset; + uint16_t format; + uint16_t count; + uint16_t stringOffset; struct name_record records[1]; }; struct vdmx_header { - WORD version; - WORD num_recs; - WORD num_ratios; + uint16_t version; + uint16_t num_recs; + uint16_t num_ratios; }; struct vdmx_ratio { - BYTE bCharSet; - BYTE xRatio; - BYTE yStartRatio; - BYTE yEndRatio; + uint8_t bCharSet; + uint8_t xRatio; + uint8_t yStartRatio; + uint8_t yEndRatio; }; struct vdmx_vtable { - WORD yPelHeight; - SHORT yMax; - SHORT yMin; + uint16_t yPelHeight; + int16_t yMax; + int16_t yMin; }; struct vdmx_group { - WORD recs; - BYTE startsz; - BYTE endsz; + uint16_t recs; + uint8_t startsz; + uint8_t endsz; struct vdmx_vtable entries[1]; }; @@ -1257,17 +1261,17 @@ struct colr_layer_record struct meta_data_map { - DWORD tag; - DWORD offset; - DWORD length; + uint32_t tag; + uint32_t offset; + uint32_t length; }; struct meta_header { - DWORD version; - DWORD flags; - DWORD reserved; - DWORD data_maps_count; + uint32_t version; + uint32_t flags; + uint32_t reserved; + uint32_t data_maps_count; struct meta_data_map maps[1]; }; @@ -1338,8 +1342,7 @@ typedef HRESULT (*dwrite_fontfile_analyzer)(IDWriteFontFileStream *stream, UINT3 static HRESULT opentype_ttc_analyzer(IDWriteFontFileStream *stream, UINT32 *font_count, DWRITE_FONT_FILE_TYPE *file_type, DWRITE_FONT_FACE_TYPE *face_type) { - static const DWORD ttctag = MS_TTCF_TAG; - const TTC_Header_V1 *header; + const struct ttc_header *header; void *context; HRESULT hr; @@ -1347,8 +1350,9 @@ static HRESULT opentype_ttc_analyzer(IDWriteFontFileStream *stream, UINT32 *font if (FAILED(hr)) return hr; - if (!memcmp(header->TTCTag, &ttctag, sizeof(ttctag))) { - *font_count = GET_BE_DWORD(header->numFonts); + if (header->tag == MS_TTCF_TAG) + { + *font_count = GET_BE_DWORD(header->num_fonts); *file_type = DWRITE_FONT_FILE_TYPE_OPENTYPE_COLLECTION; *face_type = DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION; } @@ -1519,8 +1523,8 @@ HRESULT opentype_try_get_font_table(const struct file_stream_desc *stream_desc, void **table_context, UINT32 *table_size, BOOL *found) { void *table_directory_context, *sfnt_context; - TT_TableRecord *table_record = NULL; - TTC_SFNT_V1 *font_header = NULL; + const struct ot_table_record *table_record = NULL; + const struct ot_table_dir *table_dir = NULL; UINT32 table_offset = 0; UINT16 table_count; HRESULT hr; @@ -1531,38 +1535,48 @@ HRESULT opentype_try_get_font_table(const struct file_stream_desc *stream_desc, *table_data = NULL; *table_context = NULL; - if (stream_desc->face_type == DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION) { - const TTC_Header_V1 *ttc_header; + if (stream_desc->face_type == DWRITE_FONT_FACE_TYPE_OPENTYPE_COLLECTION) + { + const struct ttc_header *ttc_header; void * ttc_context; - hr = IDWriteFontFileStream_ReadFileFragment(stream_desc->stream, (const void**)&ttc_header, 0, sizeof(*ttc_header), &ttc_context); - if (SUCCEEDED(hr)) { - if (stream_desc->face_index >= GET_BE_DWORD(ttc_header->numFonts)) + + hr = IDWriteFontFileStream_ReadFileFragment(stream_desc->stream, (const void **)&ttc_header, 0, + sizeof(*ttc_header), &ttc_context); + if (SUCCEEDED(hr)) + { + if (stream_desc->face_index >= GET_BE_DWORD(ttc_header->num_fonts)) hr = E_INVALIDARG; - else { - table_offset = GET_BE_DWORD(ttc_header->OffsetTable[stream_desc->face_index]); - hr = IDWriteFontFileStream_ReadFileFragment(stream_desc->stream, (const void**)&font_header, table_offset, sizeof(*font_header), &sfnt_context); + else + { + table_offset = GET_BE_DWORD(ttc_header->offsets[stream_desc->face_index]); + hr = IDWriteFontFileStream_ReadFileFragment(stream_desc->stream, (const void **)&table_dir, table_offset, + sizeof(*table_dir), &sfnt_context); } IDWriteFontFileStream_ReleaseFileFragment(stream_desc->stream, ttc_context); } } else - hr = IDWriteFontFileStream_ReadFileFragment(stream_desc->stream, (const void**)&font_header, 0, sizeof(*font_header), &sfnt_context); + hr = IDWriteFontFileStream_ReadFileFragment(stream_desc->stream, (const void **)&table_dir, 0, + sizeof(*table_dir), &sfnt_context); if (FAILED(hr)) return hr; - table_count = GET_BE_WORD(font_header->numTables); - table_offset += sizeof(*font_header); + table_count = GET_BE_WORD(table_dir->numTables); + table_offset += sizeof(*table_dir); IDWriteFontFileStream_ReleaseFileFragment(stream_desc->stream, sfnt_context); hr = IDWriteFontFileStream_ReadFileFragment(stream_desc->stream, (const void **)&table_record, table_offset, table_count * sizeof(*table_record), &table_directory_context); - if (hr == S_OK) { + if (hr == S_OK) + { UINT16 i; - for (i = 0; i < table_count; i++) { - if (table_record->tag == tag) { + for (i = 0; i < table_count; ++i) + { + if (table_record->tag == tag) + { UINT32 offset = GET_BE_DWORD(table_record->offset); UINT32 length = GET_BE_DWORD(table_record->length);
1
0
0
0
Nikolay Sivov : dwrite/opentype: Use stdint type for color font structures.
by Alexandre Julliard
27 Apr '22
27 Apr '22
Module: wine Branch: master Commit: b3291c80fb23b8d42b4272644df4d675fba06960 URL:
https://source.winehq.org/git/wine.git/?a=commit;h=b3291c80fb23b8d42b427264…
Author: Nikolay Sivov <nsivov(a)codeweavers.com> Date: Wed Apr 27 14:22:54 2022 +0300 dwrite/opentype: Use stdint type for color font structures. Signed-off-by: Nikolay Sivov <nsivov(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/dwrite/opentype.c | 110 +++++++++++++++++++++++++++---------------------- 1 file changed, 61 insertions(+), 49 deletions(-) diff --git a/dlls/dwrite/opentype.c b/dlls/dwrite/opentype.c index 195607aa67f..9aeef88c92c 100644 --- a/dlls/dwrite/opentype.c +++ b/dlls/dwrite/opentype.c @@ -243,25 +243,25 @@ struct tt_hhea struct sbix_header { - WORD version; - WORD flags; - DWORD num_strikes; - DWORD strike_offset[1]; + uint16_t version; + uint16_t flags; + uint32_t num_strikes; + uint32_t strike_offset[1]; }; struct sbix_strike { - WORD ppem; - WORD ppi; - DWORD glyphdata_offsets[1]; + uint16_t ppem; + uint16_t ppi; + uint32_t glyphdata_offsets[1]; }; struct sbix_glyph_data { - WORD originOffsetX; - WORD originOffsetY; - DWORD graphic_type; - BYTE data[1]; + int16_t originOffsetX; + int16_t originOffsetY; + uint32_t graphic_type; + uint8_t data[1]; }; struct maxp @@ -272,29 +272,41 @@ struct maxp struct cblc_header { - WORD major_version; - WORD minor_version; - DWORD num_sizes; + uint16_t major_version; + uint16_t minor_version; + uint32_t num_sizes; }; -typedef struct { - BYTE res[12]; -} sbitLineMetrics; +struct sbit_line_metrics +{ + int8_t ascender; + int8_t descender; + uint8_t widthMax; + int8_t caretSlopeNumerator; + int8_t caretSlopeDenominator; + int8_t caretOffset; + int8_t minOriginSB; + int8_t minAdvanceSB; + int8_t maxBeforeBL; + int8_t minAfterBL; + int8_t pad1; + int8_t pad2; +}; struct cblc_bitmapsize_table { - DWORD indexSubTableArrayOffset; - DWORD indexTablesSize; - DWORD numberofIndexSubTables; - DWORD colorRef; - sbitLineMetrics hori; - sbitLineMetrics vert; - WORD startGlyphIndex; - WORD endGlyphIndex; - BYTE ppemX; - BYTE ppemY; - BYTE bit_depth; - BYTE flags; + uint32_t indexSubTableArrayOffset; + uint32_t indexTablesSize; + uint32_t numberofIndexSubTables; + uint32_t colorRef; + struct sbit_line_metrics hori; + struct sbit_line_metrics vert; + uint16_t startGlyphIndex; + uint16_t endGlyphIndex; + uint8_t ppemX; + uint8_t ppemY; + uint8_t bit_depth; + int8_t flags; }; struct gasp_range @@ -1204,43 +1216,43 @@ static const UINT16 dwriteid_to_opentypeid[DWRITE_INFORMATIONAL_STRING_WEIGHT_ST /* CPAL table */ struct cpal_header_0 { - USHORT version; - USHORT num_palette_entries; - USHORT num_palettes; - USHORT num_color_records; - ULONG offset_first_color_record; - USHORT color_record_indices[1]; + uint16_t version; + uint16_t num_palette_entries; + uint16_t num_palettes; + uint16_t num_color_records; + uint32_t offset_first_color_record; + uint16_t color_record_indices[1]; }; struct cpal_color_record { - BYTE blue; - BYTE green; - BYTE red; - BYTE alpha; + uint8_t blue; + uint8_t green; + uint8_t red; + uint8_t alpha; }; /* COLR table */ struct colr_header { - USHORT version; - USHORT num_baseglyph_records; - ULONG offset_baseglyph_records; - ULONG offset_layer_records; - USHORT num_layer_records; + uint16_t version; + uint16_t num_baseglyph_records; + uint32_t offset_baseglyph_records; + uint32_t offset_layer_records; + uint16_t num_layer_records; }; struct colr_baseglyph_record { - USHORT glyph; - USHORT first_layer_index; - USHORT num_layers; + uint16_t glyph; + uint16_t first_layer_index; + uint16_t num_layers; }; struct colr_layer_record { - USHORT glyph; - USHORT palette_index; + uint16_t glyph; + uint16_t palette_index; }; struct meta_data_map
1
0
0
0
← Newer
1
...
8
9
10
11
12
13
14
...
103
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
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Results per page:
10
25
50
100
200