ReactOS.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
April
March
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
List overview
Download
Ros-diffs
November 2015
----- 2025 -----
April 2025
March 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
ros-diffs@reactos.org
14 participants
457 discussions
Start a n
N
ew thread
[akhaldi] 70064: [WBEMPROX_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:49:22 2015 New Revision: 70064 URL:
http://svn.reactos.org/svn/reactos?rev=70064&view=rev
Log: [WBEMPROX_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536 Modified: trunk/rostests/winetests/wbemprox/query.c Modified: trunk/rostests/winetests/wbemprox/query.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/wbemprox/query.…
============================================================================== --- trunk/rostests/winetests/wbemprox/query.c [iso-8859-1] (original) +++ trunk/rostests/winetests/wbemprox/query.c [iso-8859-1] Mon Nov 23 09:49:22 2015 @@ -98,7 +98,11 @@ '\"','\\','\\','\\','\\','.','\\','\\','P','H','Y','S','I','C','A','L','D','R','I','V','E','0','\"',0}; static const WCHAR query9[] = {'S','E','L','E','C','T','\n','a','\r','F','R','O','M','\t','b',0}; - static const WCHAR *test[] = { query1, query2, query3, query4, query5, query6, query7, query8, query9 }; + static const WCHAR query10[] = + {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','W','i','n','3','2','_', + 'P','r','o','c','e','s','s',' ','W','H','E','R','E',' ','C','a','p','t','i','o','n',' ', + 'L','I','K','E',' ','"','%','f','i','r','e','f','o','x','.','e','x','e','"',0}; + static const WCHAR *test[] = { query1, query2, query3, query4, query5, query6, query7, query8, query9, query10 }; HRESULT hr; IEnumWbemClassObject *result; BSTR wql = SysAllocString( wqlW ); @@ -237,6 +241,110 @@ out: SysFreeString( empty ); SysFreeString( class ); +} + +static void test_Win32_Bios( IWbemServices *services ) +{ + static const WCHAR queryW[] = + {'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ','W','i','n','3','2','_', 'B','i','o','s',0}; + static const WCHAR descriptionW[] = {'D','e','s','c','r','i','p','t','i','o','n',0}; + static const WCHAR identificationcodeW[] = {'I','d','e','n','t','i','f','i','c','a','t','i','o','n','C','o','d','e',0}; + static const WCHAR manufacturerW[] = {'M','a','n','u','f','a','c','t','u','r','e','r',0}; + static const WCHAR nameW[] = {'N','a','m','e',0}; + static const WCHAR releasedateW[] = {'R','e','l','e','a','s','e','D','a','t','e',0}; + static const WCHAR serialnumberW[] = {'S','e','r','i','a','l','N','u','m','b','e','r',0}; + static const WCHAR smbiosbiosversionW[] = {'S','M','B','I','O','S','B','I','O','S','V','e','r','s','i','o','n',0}; + static const WCHAR versionW[] = {'V','e','r','s','i','o','n',0}; + BSTR wql = SysAllocString( wqlW ), query = SysAllocString( queryW ); + IEnumWbemClassObject *result; + IWbemClassObject *obj; + CIMTYPE type; + ULONG count; + VARIANT val; + HRESULT hr; + + hr = IWbemServices_ExecQuery( services, wql, query, 0, NULL, &result ); + ok( hr == S_OK, "IWbemServices_ExecQuery failed %08x\n", hr ); + + hr = IEnumWbemClassObject_Next( result, 10000, 1, &obj, &count ); + ok( hr == S_OK, "IEnumWbemClassObject_Next failed %08x\n", hr ); + + type = 0xdeadbeef; + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, descriptionW, 0, &val, &type, NULL ); + ok( hr == S_OK, "failed to get description %08x\n", hr ); + ok( V_VT( &val ) == VT_BSTR, "unexpected variant type 0x%x\n", V_VT( &val ) ); + ok( type == CIM_STRING, "unexpected type 0x%x\n", type ); + trace( "description: %s\n", wine_dbgstr_w(V_BSTR( &val )) ); + VariantClear( &val ); + + type = 0xdeadbeef; + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, identificationcodeW, 0, &val, &type, NULL ); + ok( hr == S_OK, "failed to get identication code %08x\n", hr ); + todo_wine + ok( V_VT( &val ) == VT_NULL, "unexpected variant type 0x%x\n", V_VT( &val ) ); + ok( type == CIM_STRING, "unexpected type 0x%x\n", type ); + VariantClear( &val ); + + type = 0xdeadbeef; + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, manufacturerW, 0, &val, &type, NULL ); + ok( hr == S_OK, "failed to get manufacturer %08x\n", hr ); + ok( V_VT( &val ) == VT_BSTR, "unexpected variant type 0x%x\n", V_VT( &val ) ); + ok( type == CIM_STRING, "unexpected type 0x%x\n", type ); + trace( "manufacturer: %s\n", wine_dbgstr_w(V_BSTR( &val )) ); + VariantClear( &val ); + + type = 0xdeadbeef; + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, nameW, 0, &val, &type, NULL ); + ok( hr == S_OK, "failed to get name %08x\n", hr ); + ok( V_VT( &val ) == VT_BSTR, "unexpected variant type 0x%x\n", V_VT( &val ) ); + ok( type == CIM_STRING, "unexpected type 0x%x\n", type ); + trace( "name: %s\n", wine_dbgstr_w(V_BSTR( &val )) ); + VariantClear( &val ); + + type = 0xdeadbeef; + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, releasedateW, 0, &val, &type, NULL ); + ok( hr == S_OK, "failed to get release date %08x\n", hr ); + ok( V_VT( &val ) == VT_BSTR, "unexpected variant type 0x%x\n", V_VT( &val ) ); + ok( type == CIM_DATETIME, "unexpected type 0x%x\n", type ); + trace( "release date: %s\n", wine_dbgstr_w(V_BSTR( &val )) ); + VariantClear( &val ); + + type = 0xdeadbeef; + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, serialnumberW, 0, &val, &type, NULL ); + ok( hr == S_OK, "failed to get serial number %08x\n", hr ); + ok( V_VT( &val ) == VT_BSTR || V_VT( &val ) == VT_NULL /* Testbot VMs */, + "unexpected variant type 0x%x\n", V_VT( &val ) ); + ok( type == CIM_STRING, "unexpected type 0x%x\n", type ); + VariantClear( &val ); + + type = 0xdeadbeef; + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, smbiosbiosversionW, 0, &val, &type, NULL ); + ok( hr == S_OK, "failed to get bios version %08x\n", hr ); + ok( V_VT( &val ) == VT_BSTR, "unexpected variant type 0x%x\n", V_VT( &val ) ); + ok( type == CIM_STRING, "unexpected type 0x%x\n", type ); + trace( "bios version: %s\n", wine_dbgstr_w(V_BSTR( &val )) ); + VariantClear( &val ); + + type = 0xdeadbeef; + VariantInit( &val ); + hr = IWbemClassObject_Get( obj, versionW, 0, &val, &type, NULL ); + ok( hr == S_OK, "failed to get version %08x\n", hr ); + ok( V_VT( &val ) == VT_BSTR, "unexpected variant type 0x%x\n", V_VT( &val ) ); + ok( type == CIM_STRING, "unexpected type 0x%x\n", type ); + trace( "version: %s\n", wine_dbgstr_w(V_BSTR( &val )) ); + VariantClear( &val ); + + IWbemClassObject_Release( obj ); + IEnumWbemClassObject_Release( result ); + SysFreeString( query ); + SysFreeString( wql ); } static void test_Win32_Process( IWbemServices *services ) @@ -941,6 +1049,7 @@ ok( hr == S_OK, "failed to set proxy blanket %08x\n", hr ); test_select( services ); + test_Win32_Bios( services ); test_Win32_Process( services ); test_Win32_Service( services ); test_Win32_ComputerSystem( services );
9 years, 4 months
1
0
0
0
[akhaldi] 70063: [WBEMPROX] Sync with Wine Staging 1.7.55. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:48:39 2015 New Revision: 70063 URL:
http://svn.reactos.org/svn/reactos?rev=70063&view=rev
Log: [WBEMPROX] Sync with Wine Staging 1.7.55. CORE-10536 Modified: trunk/reactos/dll/win32/wbemprox/builtin.c trunk/reactos/dll/win32/wbemprox/class.c trunk/reactos/dll/win32/wbemprox/query.c trunk/reactos/dll/win32/wbemprox/service.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/wbemprox/builtin.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wbemprox/builtin…
============================================================================== --- trunk/reactos/dll/win32/wbemprox/builtin.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wbemprox/builtin.c [iso-8859-1] Mon Nov 23 09:48:39 2015 @@ -18,6 +18,7 @@ #include "wbemprox_private.h" +#include <winuser.h> #include <wingdi.h> #include <winsock2.h> #include <ws2tcpip.h> @@ -42,6 +43,8 @@ {'W','i','n','3','2','_','C','o','m','p','u','t','e','r','S','y','s','t','e','m','P','r','o','d','u','c','t',0}; static const WCHAR class_datafileW[] = {'C','I','M','_','D','a','t','a','F','i','l','e',0}; +static const WCHAR class_desktopmonitorW[] = + {'W','i','n','3','2','_','D','e','s','k','t','o','p','M','o','n','i','t','o','r',0}; static const WCHAR class_directoryW[] = {'W','i','n','3','2','_','D','i','r','e','c','t','o','r','y',0}; static const WCHAR class_diskdriveW[] = @@ -249,6 +252,8 @@ {'P','a','r','a','m','e','t','e','r',0}; static const WCHAR prop_physicaladapterW[] = {'P','h','y','s','i','c','a','l','A','d','a','p','t','e','r',0}; +static const WCHAR prop_pixelsperxlogicalinchW[] = + {'P','i','x','e','l','s','P','e','r','X','L','o','g','i','c','a','l','I','n','c','h',0}; static const WCHAR prop_pnpdeviceidW[] = {'P','N','P','D','e','v','i','c','e','I','D',0}; static const WCHAR prop_pprocessidW[] = @@ -352,6 +357,7 @@ { prop_descriptionW, CIM_STRING }, { prop_identificationcodeW, CIM_STRING }, { prop_manufacturerW, CIM_STRING }, + { prop_nameW, CIM_STRING }, { prop_releasedateW, CIM_DATETIME }, { prop_serialnumberW, CIM_STRING }, { prop_smbiosbiosversionW, CIM_STRING }, @@ -387,6 +393,10 @@ { { prop_nameW, CIM_STRING|COL_FLAG_DYNAMIC|COL_FLAG_KEY }, { prop_versionW, CIM_STRING|COL_FLAG_DYNAMIC } +}; +static const struct column col_desktopmonitor[] = +{ + { prop_pixelsperxlogicalinchW, CIM_UINT32 } }; static const struct column col_directory[] = { @@ -632,6 +642,8 @@ {'D','e','f','a','u','l','t',' ','S','y','s','t','e','m',' ','B','I','O','S',0}; static const WCHAR bios_manufacturerW[] = {'T','h','e',' ','W','i','n','e',' ','P','r','o','j','e','c','t',0}; +static const WCHAR bios_nameW[] = + {'W','I','N','E',' ','B','I','O','S',0}; static const WCHAR bios_releasedateW[] = {'2','0','1','2','0','6','0','8','0','0','0','0','0','0','.','0','0','0','0','0','0','+','0','0','0',0}; static const WCHAR bios_serialnumberW[] = @@ -735,6 +747,7 @@ const WCHAR *description; const WCHAR *identificationcode; const WCHAR *manufacturer; + const WCHAR *name; const WCHAR *releasedate; const WCHAR *serialnumber; const WCHAR *smbiosbiosversion; @@ -770,6 +783,10 @@ { const WCHAR *name; const WCHAR *version; +}; +struct record_desktopmonitor +{ + UINT32 pixelsperxlogicalinch; }; struct record_directory { @@ -1010,7 +1027,7 @@ }; static const struct record_bios data_bios[] = { - { bios_descriptionW, bios_descriptionW, bios_manufacturerW, bios_releasedateW, bios_serialnumberW, + { bios_descriptionW, bios_descriptionW, bios_manufacturerW, bios_nameW, bios_releasedateW, bios_serialnumberW, bios_smbiosbiosversionW, bios_versionW } }; static const struct record_computersystemproduct data_compsysproduct[] = @@ -1640,6 +1657,35 @@ return status; } +static UINT32 get_pixelsperxlogicalinch(void) +{ + HDC hdc = GetDC( NULL ); + UINT32 ret; + + if (!hdc) return 96; + ret = GetDeviceCaps( hdc, LOGPIXELSX ); + ReleaseDC( NULL, hdc ); + return ret; +} + +static enum fill_status fill_desktopmonitor( struct table *table, const struct expr *cond ) +{ + struct record_desktopmonitor *rec; + enum fill_status status = FILL_STATUS_UNFILTERED; + UINT row = 0; + + if (!resize_table( table, 1, sizeof(*rec) )) return FILL_STATUS_FAILED; + + rec = (struct record_desktopmonitor *)table->data; + rec->pixelsperxlogicalinch = get_pixelsperxlogicalinch(); + + if (match_row( table, row, cond, &status )) row++; + + TRACE("created %u rows\n", row); + table->num_rows = row; + return status; +} + static enum fill_status fill_directory( struct table *table, const struct expr *cond ) { static const WCHAR dotW[] = {'.',0}, dotdotW[] = {'.','.',0}; @@ -2845,6 +2891,7 @@ { class_compsysW, SIZEOF(col_compsys), col_compsys, 0, 0, NULL, fill_compsys }, { class_compsysproductW, SIZEOF(col_compsysproduct), col_compsysproduct, SIZEOF(data_compsysproduct), 0, (BYTE *)data_compsysproduct }, { class_datafileW, SIZEOF(col_datafile), col_datafile, 0, 0, NULL, fill_datafile }, + { class_desktopmonitorW, SIZEOF(col_desktopmonitor), col_desktopmonitor, 0, 0, NULL, fill_desktopmonitor }, { class_directoryW, SIZEOF(col_directory), col_directory, 0, 0, NULL, fill_directory }, { class_diskdriveW, SIZEOF(col_diskdrive), col_diskdrive, 0, 0, NULL, fill_diskdrive }, { class_diskpartitionW, SIZEOF(col_diskpartition), col_diskpartition, 0, 0, NULL, fill_diskpartition }, Modified: trunk/reactos/dll/win32/wbemprox/class.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wbemprox/class.c…
============================================================================== --- trunk/reactos/dll/win32/wbemprox/class.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wbemprox/class.c [iso-8859-1] Mon Nov 23 09:48:39 2015 @@ -101,17 +101,14 @@ { struct enum_class_object *ec = impl_from_IEnumWbemClassObject( iface ); struct view *view = ec->query->view; + static int once = 0; HRESULT hr; TRACE("%p, %d, %u, %p, %p\n", iface, lTimeout, uCount, apObjects, puReturned); if (!uCount) return WBEM_S_FALSE; if (!apObjects || !puReturned) return WBEM_E_INVALID_PARAMETER; - if (lTimeout != WBEM_INFINITE) - { - static int once; - if (!once++) FIXME("timeout not supported\n"); - } + if (lTimeout != WBEM_INFINITE && !once++) FIXME("timeout not supported\n"); *puReturned = 0; if (ec->index >= view->count) return WBEM_S_FALSE; @@ -153,10 +150,11 @@ { struct enum_class_object *ec = impl_from_IEnumWbemClassObject( iface ); struct view *view = ec->query->view; + static int once = 0; TRACE("%p, %d, %u\n", iface, lTimeout, nCount); - if (lTimeout != WBEM_INFINITE) FIXME("timeout not supported\n"); + if (lTimeout != WBEM_INFINITE && !once++) FIXME("timeout not supported\n"); if (!view->count) return WBEM_S_FALSE; Modified: trunk/reactos/dll/win32/wbemprox/query.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wbemprox/query.c…
============================================================================== --- trunk/reactos/dll/win32/wbemprox/query.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wbemprox/query.c [iso-8859-1] Mon Nov 23 09:48:39 2015 @@ -51,10 +51,10 @@ { while (*q == '%') q++; if (!*q) return TRUE; - while (*p && toupperW( p[1] ) != toupperW( q[1] )) p++; - if (!*p) return TRUE; - } - if (toupperW( *p++ ) != toupperW( *q++ )) return FALSE; + while (*p && *q && toupperW( *p ) == toupperW( *q )) { p++; q++; }; + if (!*p && !*q) return TRUE; + } + if (*q != '%' && toupperW( *p++ ) != toupperW( *q++ )) return FALSE; } return TRUE; } Modified: trunk/reactos/dll/win32/wbemprox/service.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/wbemprox/service…
============================================================================== --- trunk/reactos/dll/win32/wbemprox/service.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/wbemprox/service.c [iso-8859-1] Mon Nov 23 09:48:39 2015 @@ -56,11 +56,11 @@ goto done; } if (!ControlService( service, control, &status )) error = map_error( GetLastError() ); + CloseServiceHandle( service ); done: set_variant( VT_UI4, error, NULL, retval ); - CloseServiceHandle( service ); - CloseServiceHandle( manager ); + if (manager) CloseServiceHandle( manager ); return S_OK; } @@ -170,11 +170,11 @@ goto done; } if (!StartServiceW( service, 0, NULL )) error = map_error( GetLastError() ); + CloseServiceHandle( service ); done: set_variant( VT_UI4, error, NULL, retval ); - CloseServiceHandle( service ); - CloseServiceHandle( manager ); + if (manager) CloseServiceHandle( manager ); return S_OK; } Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Mon Nov 23 09:48:39 2015 @@ -199,7 +199,7 @@ reactos/dll/win32/version # Synced to WineStaging-1.7.55 reactos/dll/win32/vssapi # Synced to WineStaging-1.7.47 reactos/dll/win32/wbemdisp # Synced to WineStaging-1.7.47 -reactos/dll/win32/wbemprox # Synced to WineStaging-1.7.47 +reactos/dll/win32/wbemprox # Synced to WineStaging-1.7.55 reactos/dll/win32/windowscodecs # Synced to WineStaging-1.7.47 reactos/dll/win32/windowscodecsext # Synced to WineStaging-1.7.47 reactos/dll/win32/winemp3.acm # Synced to WineStaging-1.7.47
9 years, 4 months
1
0
0
0
[akhaldi] 70062: [USP10_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:46:44 2015 New Revision: 70062 URL:
http://svn.reactos.org/svn/reactos?rev=70062&view=rev
Log: [USP10_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536 Modified: trunk/rostests/winetests/usp10/usp10.c Modified: trunk/rostests/winetests/usp10/usp10.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/usp10/usp10.c?r…
============================================================================== --- trunk/rostests/winetests/usp10/usp10.c [iso-8859-1] (original) +++ trunk/rostests/winetests/usp10/usp10.c [iso-8859-1] Mon Nov 23 09:46:44 2015 @@ -931,6 +931,7 @@ int nb, outnItems; HFONT hfont, hfont_orig; int test_valid; + shapeTest_glyph glyph_test[4]; static const WCHAR test1[] = {'w', 'i', 'n', 'e',0}; static const shapeTest_char t1_c[] = {{0,{0,0}},{1,{0,0}},{2,{0,0}},{3,{0,0}}}; @@ -1189,7 +1190,16 @@ ScriptFreeCache(&sc); test_shape_ok(hdc, test1, 4, &Control, &State, 0, 4, t1_c, t1_g); - test_shape_ok(hdc, test2, 4, &Control, &State, 1, 4, t2_c, t2_g); + + /* newer Tahoma has zerowidth space glyphs for 0x202b and 0x202c */ + memcpy(glyph_test, t2_g, sizeof(glyph_test)); + GetGlyphIndicesW(hdc, test2, 4, glyphs, 0); + if (glyphs[0] != 0) + glyph_test[0].Glyph = 1; + if (glyphs[3] != 0) + glyph_test[3].Glyph = 1; + + test_shape_ok(hdc, test2, 4, &Control, &State, 1, 4, t2_c, glyph_test); test_valid = find_font_for_range(hdc, "Microsoft Sans Serif", 11, test_hebrew[0], &hfont, &hfont_orig); if (hfont != NULL) @@ -1334,10 +1344,10 @@ static const WCHAR test2[] = {0x202B, 'i', 'n', 0x202C,0}; HRESULT hr; SCRIPT_CACHE sc = NULL; - WORD glyphs[4], glyphs2[4], logclust[4]; + WORD glyphs[4], glyphs2[4], logclust[4], glyphs3[4]; SCRIPT_VISATTR attrs[4]; SCRIPT_ITEM items[2]; - int nb; + int nb, i, j; hr = ScriptItemize(test1, 4, 2, NULL, NULL, items, NULL); ok(hr == S_OK, "ScriptItemize should return S_OK not %08x\n", hr); @@ -1395,13 +1405,17 @@ sc = NULL; memset(glyphs2,-1,sizeof(glyphs2)); + memset(glyphs3,-1,sizeof(glyphs3)); memset(logclust,-1,sizeof(logclust)); memset(attrs,-1,sizeof(attrs)); + + GetGlyphIndicesW(hdc, test2, 4, glyphs3, 0); + hr = ScriptShape(hdc, &sc, test2, 4, 4, &items[0].a, glyphs2, logclust, attrs, &nb); ok(hr == S_OK, "ScriptShape should return S_OK not %08x\n", hr); ok(nb == 4, "Wrong number of items\n"); - ok(glyphs2[0] == 0 || broken(glyphs2[0] == 0x80), "Incorrect glyph for 0x202B\n"); - ok(glyphs2[3] == 0 || broken(glyphs2[3] == 0x80), "Incorrect glyph for 0x202C\n"); + ok(glyphs2[0] == glyphs3[0], "Incorrect glyph for 0x202B\n"); + ok(glyphs2[3] == glyphs3[3], "Incorrect glyph for 0x202C\n"); ok(logclust[0] == 0, "clusters out of order\n"); ok(logclust[1] == 1, "clusters out of order\n"); ok(logclust[2] == 2, "clusters out of order\n"); @@ -1457,6 +1471,47 @@ ok(attrs[3].fZeroWidth == 0, "fZeroWidth incorrect\n"); ScriptFreeCache(&sc); + + /* some control characters are shown as blank */ + for (i = 0; i < 2; i++) + { + static const WCHAR space[] = {' ', 0}; + static const WCHAR blanks[] = {'\t', '\r', '\n', 0x001C, 0x001D, 0x001E, 0x001F,0}; + HFONT font, oldfont = NULL; + LOGFONTA lf; + + font = GetCurrentObject(hdc, OBJ_FONT); + GetObjectA(font, sizeof(lf), &lf); + if (i == 1) { + lstrcpyA(lf.lfFaceName, "MS Sans Serif"); + font = CreateFontIndirectA(&lf); + oldfont = SelectObject(hdc, font); + } + + hr = ScriptItemize(space, 1, 2, NULL, NULL, items, NULL); + ok(hr == S_OK, "%s: expected S_OK, got %08x\n", lf.lfFaceName, hr); + + hr = ScriptShape(hdc, &sc, space, 1, 1, &items[0].a, glyphs, logclust, attrs, &nb); + ok(hr == S_OK, "%s: expected S_OK, got %08x\n", lf.lfFaceName, hr); + ok(nb == 1, "%s: expected 1, got %d\n", lf.lfFaceName, nb); + + for (j = 0; blanks[j]; j++) + { + hr = ScriptItemize(&blanks[j], 1, 2, NULL, NULL, items, NULL); + ok(hr == S_OK, "%s: [%02x] expected S_OK, got %08x\n", lf.lfFaceName, blanks[j], hr); + + hr = ScriptShape(hdc, &sc, &blanks[j], 1, 1, &items[0].a, glyphs2, logclust, attrs, &nb); + ok(hr == S_OK, "%s: [%02x] expected S_OK, got %08x\n", lf.lfFaceName, blanks[j], hr); + ok(nb == 1, "%s: [%02x] expected 1, got %d\n", lf.lfFaceName, blanks[j], nb); + + ok(glyphs[0] == glyphs2[0] || + broken(glyphs2[0] == blanks[j] && (blanks[j] < 0x10)), + "%s: [%02x] expected %04x, got %04x\n", lf.lfFaceName, blanks[j], glyphs[0], glyphs2[0]); + } + if (oldfont) + DeleteObject(SelectObject(hdc, oldfont)); + ScriptFreeCache(&sc); + } } static void test_ScriptPlace(HDC hdc) @@ -1774,13 +1829,19 @@ ScriptFreeCache( &psc); ok (!psc, "psc is not null after ScriptFreeCache\n"); + /* ScriptGetCMap returns whatever font defines, no special treatment for control chars */ cInChars = cChars = 4; + GetGlyphIndicesW(hdc, TestItem2, cInChars, pwOutGlyphs2, 0); + hr = ScriptGetCMap(hdc, &psc, TestItem2, cInChars, dwFlags, pwOutGlyphs3); - ok (hr == S_FALSE, "ScriptGetCMap should return S_FALSE not (%08x)\n", hr); - ok (psc != NULL, "psc should not be null and have SCRIPT_CACHE buffer address\n"); - ok(pwOutGlyphs3[0] == 0 || broken(pwOutGlyphs3[0] == 0x80), "Glyph 0 should be default glyph\n"); - ok(pwOutGlyphs3[3] == 0 || broken(pwOutGlyphs3[0] == 0x80), "Glyph 0 should be default glyph\n"); - + if (pwOutGlyphs3[0] == 0 || pwOutGlyphs3[3] == 0) + ok(hr == S_FALSE, "ScriptGetCMap should return S_FALSE not (%08x)\n", hr); + else + ok(hr == S_OK, "ScriptGetCMap should return S_OK not (%08x)\n", hr); + + ok(psc != NULL, "psc should not be null and have SCRIPT_CACHE buffer address\n"); + ok(pwOutGlyphs3[0] == pwOutGlyphs2[0], "expected glyph %d, got %d\n", pwOutGlyphs2[0], pwOutGlyphs3[0]); + ok(pwOutGlyphs3[3] == pwOutGlyphs2[3], "expected glyph %d, got %d\n", pwOutGlyphs2[3], pwOutGlyphs3[3]); cInChars = cChars = 9; hr = ScriptGetCMap(hdc, &psc, TestItem3b, cInChars, dwFlags, pwOutGlyphs2); @@ -1863,7 +1924,7 @@ /* U+0020: numeric space U+200B: zero width space U+F71B: unknown, found by black box testing */ - BOOL is_terminal, is_arial, is_times_new_roman, is_arabic = (system_lang_id == LANG_ARABIC); + BOOL is_arial, is_times_new_roman, is_arabic = (system_lang_id == LANG_ARABIC); /* Some sanity checks for ScriptGetFontProperties */ @@ -1935,6 +1996,11 @@ for (i = 0; i < efnd.total; i++) { + if (strlen((char *)efnd.elf[i].elfFullName) >= LF_FACESIZE) + { + trace("Font name to long to test: %s\n",(char *)efnd.elf[i].elfFullName); + continue; + } lstrcpyA(lf.lfFaceName, (char *)efnd.elf[i].elfFullName); font = CreateFontIndirectA(&lf); oldfont = SelectObject(hdc, font); @@ -1956,10 +2022,12 @@ ret = GetTextMetricsA(hdc, &tmA); ok(ret != 0, "GetTextMetricsA failed!\n"); - is_terminal = !(lstrcmpA(lf.lfFaceName, "Terminal") && lstrcmpA(lf.lfFaceName, "@Terminal")); - ok(sfp.wgBlank == tmA.tmBreakChar || broken(is_terminal) || broken(is_arabic), "bitmap font %s wgBlank %04x tmBreakChar %04x\n", lf.lfFaceName, sfp.wgBlank, tmA.tmBreakChar); - - ok(sfp.wgDefault == tmA.tmDefaultChar || broken(is_arabic), "bitmap font %s wgDefault %04x, tmDefaultChar %04x\n", lf.lfFaceName, sfp.wgDefault, tmA.tmDefaultChar); + ret = pGetGlyphIndicesW(hdc, invalids, 1, gi, GGI_MARK_NONEXISTING_GLYPHS); + ok(ret != GDI_ERROR, "GetGlyphIndicesW failed!\n"); + + ok(sfp.wgBlank == tmA.tmBreakChar || sfp.wgBlank == gi[0], "bitmap font %s wgBlank %04x tmBreakChar %04x Space %04x\n", lf.lfFaceName, sfp.wgBlank, tmA.tmBreakChar, gi[0]); + + ok(sfp.wgDefault == 0 || sfp.wgDefault == tmA.tmDefaultChar || broken(sfp.wgDefault == (0x100 | tmA.tmDefaultChar)), "bitmap font %s wgDefault %04x, tmDefaultChar %04x\n", lf.lfFaceName, sfp.wgDefault, tmA.tmDefaultChar); ok(sfp.wgInvalid == sfp.wgBlank || broken(is_arabic), "bitmap font %s wgInvalid %02x wgBlank %02x\n", lf.lfFaceName, sfp.wgInvalid, sfp.wgBlank); @@ -1976,6 +2044,11 @@ for (i = 0; i < efnd.total; i++) { + if (strlen((char *)efnd.elf[i].elfFullName) >= LF_FACESIZE) + { + trace("Font name to long to test: %s\n",(char *)efnd.elf[i].elfFullName); + continue; + } lstrcpyA(lf.lfFaceName, (char *)efnd.elf[i].elfFullName); font = CreateFontIndirectA(&lf); oldfont = SelectObject(hdc, font); @@ -2197,15 +2270,17 @@ ok (hr == S_OK, "ScriptShape should return S_OK not (%08x)\n", hr); ok (psc != NULL, "psc should not be null and have SCRIPT_CACHE buffer address\n"); ok (pcGlyphs == cChars, "Chars in (%d) should equal Glyphs out (%d)\n", cChars, pcGlyphs); - if (hr ==0) { + if (hr == S_OK) { + BOOL ret; + /* Note hdc is needed as glyph info is not yet in psc */ hr = ScriptPlace(hdc2, &psc, pwOutGlyphs1, pcGlyphs, psva, &pItem[0].a, piAdvance, pGoffset, pABC); ok (hr == S_OK, "Should return S_OK not (%08x)\n", hr); /* key part!!! cached dc is being deleted */ - hr = DeleteDC(hdc2); - ok(hr == 1, "DeleteDC should return 1 not %08x\n", hr); + ret = DeleteDC(hdc2); + ok(ret, "DeleteDC should return 1 not %d\n", ret); /* At this point the cached hdc (hdc2) has been destroyed, * however, we are passing in a *real* hdc (the original hdc). @@ -2488,6 +2563,12 @@ ReqWidth, NULL, NULL, Dx, NULL, &InClass, &ssa); ok(hr == E_PENDING, "ScriptStringAnalyse Stub should return E_PENDING not %08x\n", hr); + + /* Test that 0 length string returns E_INVALIDARG */ + hr = ScriptStringAnalyse( hdc, teststr, 0, Glyphs, Charset, Flags, + ReqWidth, NULL, NULL, Dx, NULL, + &InClass, &ssa); + ok(hr == E_INVALIDARG, "ScriptStringAnalyse should return E_INVALIDARG not %08x\n", hr); /* test with hdc, this should be a valid test */ hr = ScriptStringAnalyse( hdc, teststr, len, Glyphs, Charset, Flags,
9 years, 4 months
1
0
0
0
[akhaldi] 70061: [USP10] Sync with Wine Staging 1.7.55. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:46:04 2015 New Revision: 70061 URL:
http://svn.reactos.org/svn/reactos?rev=70061&view=rev
Log: [USP10] Sync with Wine Staging 1.7.55. CORE-10536 Modified: trunk/reactos/dll/win32/usp10/bracket.c trunk/reactos/dll/win32/usp10/indicsyllable.c trunk/reactos/dll/win32/usp10/linebreak.c trunk/reactos/dll/win32/usp10/mirror.c trunk/reactos/dll/win32/usp10/shape.c trunk/reactos/dll/win32/usp10/shaping.c trunk/reactos/dll/win32/usp10/usp10.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/usp10/bracket.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/usp10/bracket.c?…
============================================================================== --- trunk/reactos/dll/win32/usp10/bracket.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/usp10/bracket.c [iso-8859-1] Mon Nov 23 09:46:04 2015 @@ -1,5 +1,5 @@ /* Unicode Bidirectional Bracket table */ -/* generated from
http://www.unicode.org/Public/7.0.0/ucd/BidiBrackets.txt
*/ +/* generated from
http://www.unicode.org/Public/8.0.0/ucd/BidiBrackets.txt
*/ /* DO NOT EDIT!! */ const unsigned short bidi_bracket_table[768] = Modified: trunk/reactos/dll/win32/usp10/indicsyllable.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/usp10/indicsylla…
============================================================================== --- trunk/reactos/dll/win32/usp10/indicsyllable.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/usp10/indicsyllable.c [iso-8859-1] Mon Nov 23 09:46:04 2015 @@ -1,9 +1,9 @@ /* Unicode Indic Syllabic Category */ -/* generated from
http://www.unicode.org/Public/7.0.0/ucd/IndicSyllabicCategory.txt
*/ -/* and from
http://www.unicode.org/Public/7.0.0/ucd/IndicMatraCategory.txt
*/ +/* generated from
http://www.unicode.org/Public/8.0.0/ucd/IndicSyllabicCategory.txt
*/ +/* and from
http://www.unicode.org/Public/8.0.0/ucd/IndicPositionalCategory.txt
*/ /* DO NOT EDIT!! */ -const unsigned short indic_syllabic_table[2864] = +const unsigned short indic_syllabic_table[3088] = { /* level 1 offsets */ 0x0100, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, @@ -40,50 +40,50 @@ 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* level 2 offsets */ 0x0250, 0x0260, 0x0270, 0x0280, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0290, 0x0260, 0x0260, 0x02a0, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x02b0, 0x02c0, 0x02d0, 0x02e0, 0x02f0, 0x0300, 0x0310, 0x0320, - 0x0330, 0x0340, 0x0350, 0x0360, 0x0370, 0x0380, 0x0310, 0x0390, - 0x03a0, 0x0340, 0x0350, 0x03b0, 0x03c0, 0x03d0, 0x03e0, 0x03f0, - 0x0400, 0x0410, 0x0350, 0x0420, 0x0430, 0x0260, 0x0310, 0x0260, - 0x0330, 0x0340, 0x0350, 0x0440, 0x0450, 0x0460, 0x0310, 0x0470, - 0x0480, 0x0490, 0x04a0, 0x04b0, 0x04c0, 0x04d0, 0x03e0, 0x0260, - 0x04e0, 0x04f0, 0x0350, 0x0500, 0x0510, 0x0520, 0x0310, 0x0260, - 0x0530, 0x04f0, 0x0350, 0x0540, 0x0550, 0x0560, 0x0310, 0x0260, - 0x0530, 0x04f0, 0x02d0, 0x0570, 0x0580, 0x04d0, 0x0310, 0x0590, - 0x05a0, 0x05b0, 0x02d0, 0x05c0, 0x05d0, 0x05e0, 0x03e0, 0x05f0, - 0x0600, 0x02d0, 0x0610, 0x0620, 0x0630, 0x0280, 0x0260, 0x0260, - 0x0640, 0x0650, 0x0660, 0x0670, 0x0680, 0x0690, 0x0260, 0x0260, - 0x0260, 0x0260, 0x06a0, 0x06b0, 0x06c0, 0x02d0, 0x06d0, 0x06e0, - 0x06f0, 0x0700, 0x0710, 0x0720, 0x0260, 0x0260, 0x0260, 0x0260, - 0x02d0, 0x02d0, 0x0730, 0x0740, 0x0750, 0x0760, 0x0770, 0x0780, - 0x0790, 0x07a0, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x07b0, 0x07c0, 0x07d0, 0x07c0, 0x07d0, 0x07e0, 0x07b0, 0x07f0, - 0x02d0, 0x02d0, 0x0800, 0x0810, 0x0820, 0x0830, 0x0280, 0x0260, - 0x0840, 0x0610, 0x0850, 0x0860, 0x03e0, 0x02d0, 0x0870, 0x0880, - 0x0260, 0x0260, 0x0260, 0x0890, 0x08a0, 0x0260, 0x0260, 0x0260, - 0x0260, 0x08b0, 0x0260, 0x0260, 0x0260, 0x08c0, 0x08d0, 0x08e0, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x08f0, 0x0260, 0x0260, 0x0900, 0x0910, 0x0260, 0x0260, 0x0260, - 0x0920, 0x0260, 0x0930, 0x0940, 0x0260, 0x0260, 0x0950, 0x0960, - 0x0260, 0x0260, 0x0970, 0x0980, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0990, 0x09a0, - 0x09b0, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x09c0, 0x0260, 0x0260, 0x0260, - 0x09d0, 0x0260, 0x09e0, 0x0260, 0x0260, 0x0260, 0x09f0, 0x0a00, - 0x0a10, 0x0260, 0x0260, 0x0a20, 0x0a30, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0a40, 0x0a50, 0x0260, 0x0260, - 0x0a60, 0x0260, 0x0260, 0x0a70, 0x0a80, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0a90, 0x0aa0, 0x0ab0, 0x0260, 0x0260, 0x0ac0, - 0x0260, 0x0260, 0x0260, 0x0ad0, 0x0ae0, 0x0260, 0x0af0, 0x0b00, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, - 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0b10, 0x0b20, 0x0260, + 0x0260, 0x0260, 0x0290, 0x02a0, 0x0260, 0x02b0, 0x0260, 0x0260, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, + 0x02c0, 0x02d0, 0x02e0, 0x02f0, 0x0300, 0x0310, 0x0320, 0x0330, + 0x0340, 0x0350, 0x0360, 0x0370, 0x0380, 0x0390, 0x0320, 0x03a0, + 0x03b0, 0x0350, 0x0360, 0x03c0, 0x03d0, 0x03e0, 0x03f0, 0x0400, + 0x0410, 0x0420, 0x0360, 0x0430, 0x0440, 0x0260, 0x0320, 0x0450, + 0x0340, 0x0350, 0x0360, 0x0460, 0x0470, 0x0480, 0x0320, 0x0490, + 0x04a0, 0x04b0, 0x04c0, 0x04d0, 0x04e0, 0x04f0, 0x03f0, 0x0260, + 0x0500, 0x0510, 0x0360, 0x0520, 0x0530, 0x0540, 0x0320, 0x0260, + 0x0550, 0x0510, 0x0360, 0x0560, 0x0570, 0x0580, 0x0320, 0x0590, + 0x0550, 0x0510, 0x02e0, 0x05a0, 0x05b0, 0x05c0, 0x0320, 0x05d0, + 0x05e0, 0x05f0, 0x02e0, 0x0600, 0x0610, 0x0620, 0x03f0, 0x0630, + 0x0640, 0x02e0, 0x0650, 0x0660, 0x0670, 0x0280, 0x0260, 0x0260, + 0x0680, 0x0690, 0x06a0, 0x06b0, 0x06c0, 0x06d0, 0x0260, 0x0260, + 0x0260, 0x06e0, 0x06f0, 0x0700, 0x0710, 0x02e0, 0x0720, 0x0730, + 0x0740, 0x0750, 0x0760, 0x0770, 0x0780, 0x0260, 0x0260, 0x0260, + 0x02e0, 0x02e0, 0x0790, 0x07a0, 0x07b0, 0x07c0, 0x07d0, 0x07e0, + 0x07f0, 0x0800, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, + 0x0810, 0x0820, 0x0830, 0x0820, 0x0830, 0x0840, 0x0810, 0x0850, + 0x02e0, 0x02e0, 0x0860, 0x0870, 0x0880, 0x0890, 0x0280, 0x0260, + 0x08a0, 0x0650, 0x08b0, 0x08c0, 0x03f0, 0x02e0, 0x08d0, 0x08e0, + 0x0260, 0x0260, 0x0260, 0x08f0, 0x0900, 0x0260, 0x0260, 0x0260, + 0x0260, 0x0910, 0x0260, 0x0260, 0x0260, 0x0920, 0x0930, 0x0940, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, + 0x0950, 0x0260, 0x0260, 0x0960, 0x0970, 0x0260, 0x0980, 0x0990, + 0x09a0, 0x0260, 0x09b0, 0x09c0, 0x0260, 0x0260, 0x09d0, 0x09e0, + 0x0260, 0x0260, 0x09f0, 0x0a00, 0x0260, 0x0260, 0x0260, 0x0260, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0a10, 0x0a20, 0x0a30, + 0x0a40, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0a50, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0a60, 0x0260, 0x0260, 0x0260, + 0x0a70, 0x0260, 0x0a80, 0x0260, 0x0260, 0x0260, 0x0a90, 0x0aa0, + 0x0ab0, 0x0260, 0x0260, 0x0ac0, 0x0ad0, 0x0260, 0x0ae0, 0x0af0, + 0x0260, 0x0260, 0x0b00, 0x0260, 0x0b10, 0x0b20, 0x0260, 0x0260, + 0x0b30, 0x0260, 0x0260, 0x0b40, 0x0b50, 0x0260, 0x0b60, 0x0260, + 0x0260, 0x0260, 0x0b70, 0x0b80, 0x0b90, 0x0260, 0x0260, 0x0ba0, + 0x0260, 0x0260, 0x0260, 0x0bb0, 0x0bc0, 0x0260, 0x0bd0, 0x0be0, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, + 0x0260, 0x0260, 0x0260, 0x0260, 0x0260, 0x0bf0, 0x0c00, 0x0260, /* values */ - 0x5f00, 0x9900, 0x9200, 0x9200, 0x8300, 0x8300, 0x8300, 0x8300, - 0x7b00, 0x6b00, 0x5a00, 0x5100, 0x4200, 0x2d00, 0x1700, 0x0a00, + 0x5f00, 0x9c00, 0x9500, 0x9500, 0x8600, 0x8600, 0x8600, 0x8600, + 0x7e00, 0x6e00, 0x5d00, 0x5100, 0x4200, 0x2d00, 0x1700, 0x0a00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -92,67 +92,71 @@ 0x001d, 0x001d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0021, 0x0021, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0001, 0x0001, 0x0001, 0x0002, 0x0006, 0x0006, 0x0006, 0x0006, + 0x0501, 0x0501, 0x0501, 0x0102, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x0507, 0x0107, 0x0004, 0x0003, 0x0107, 0x0207, + 0x000a, 0x000a, 0x0507, 0x0107, 0x0604, 0x0003, 0x0107, 0x0207, 0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0507, 0x0507, 0x0507, 0x0507, 0x0107, 0x0107, 0x0107, 0x0107, 0x0605, 0x0207, 0x0107, - 0x0000, 0x0013, 0x0013, 0x0000, 0x0000, 0x0507, 0x0607, 0x0607, + 0x0000, 0x0519, 0x0619, 0x0500, 0x0500, 0x0507, 0x0607, 0x0607, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0006, 0x0006, 0x0607, 0x0607, 0x0000, 0x0000, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x0000, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0000, 0x0501, 0x0101, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0006, 0x0006, 0x0000, 0x0000, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, - 0x000a, 0x000a, 0x0000, 0x0000, 0x0004, 0x0003, 0x0107, 0x0207, + 0x000a, 0x000a, 0x0000, 0x0000, 0x0604, 0x0003, 0x0107, 0x0207, 0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0000, 0x0000, 0x0207, 0x0207, 0x0000, 0x0000, 0x0407, 0x0407, 0x0605, 0x000b, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0000, 0x0501, 0x0501, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x000a, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x0000, - 0x000a, 0x000a, 0x0000, 0x0000, 0x0004, 0x0000, 0x0107, 0x0207, + 0x000a, 0x000a, 0x0000, 0x0000, 0x0604, 0x0000, 0x0107, 0x0207, 0x0107, 0x0607, 0x0607, 0x0000, 0x0000, 0x0000, 0x0000, 0x0507, 0x0507, 0x0000, 0x0000, 0x0507, 0x0507, 0x0605, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x0001, 0x0518, 0x0009, 0x0009, 0x0000, 0x000e, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0501, 0x0518, 0x0009, 0x0009, 0x0000, 0x060e, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0501, 0x0501, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x0000, 0x0000, 0x0004, 0x0003, 0x0107, 0x0207, + 0x000a, 0x000a, 0x0000, 0x0000, 0x0604, 0x0003, 0x0107, 0x0207, 0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0507, 0x0000, 0x0507, 0x0507, 0x0007, 0x0000, 0x0107, 0x0107, 0x0605, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x0000, 0x0000, 0x0004, 0x0003, 0x0107, 0x0507, + 0x000a, 0x000a, 0x0000, 0x0000, 0x0604, 0x0003, 0x0107, 0x0507, 0x0107, 0x0607, 0x0607, 0x0607, 0x0607, 0x0000, 0x0000, 0x0207, 0x0007, 0x0000, 0x0000, 0x0007, 0x0007, 0x0605, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0507, 0x0007, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0001, 0x0011, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0000, 0x0000, 0x0501, 0x0011, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006, 0x0006, 0x000a, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000, 0x000a, 0x000a, @@ -160,11 +164,11 @@ 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, 0x0107, - 0x0507, 0x0607, 0x0607, 0x0000, 0x0000, 0x0000, 0x0207, 0x0207, + 0x0507, 0x0107, 0x0107, 0x0000, 0x0000, 0x0000, 0x0207, 0x0207, 0x0207, 0x0000, 0x0407, 0x0407, 0x0407, 0x0505, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0001, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0501, 0x0101, 0x0101, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, @@ -173,22 +177,26 @@ 0x0507, 0x0107, 0x0107, 0x0107, 0x0107, 0x0000, 0x0507, 0x0507, 0x0007, 0x0000, 0x0507, 0x0507, 0x0507, 0x0505, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0507, 0x0607, 0x0000, - 0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0001, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006, + 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0501, 0x0101, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x0000, 0x0000, 0x0004, 0x0003, 0x0107, 0x0507, + 0x000a, 0x000a, 0x0000, 0x0000, 0x0604, 0x0003, 0x0107, 0x0507, 0x0007, 0x0107, 0x0107, 0x0107, 0x0107, 0x0000, 0x0507, 0x0807, 0x0807, 0x0000, 0x0807, 0x0807, 0x0507, 0x0505, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0000, + 0x0000, 0x001f, 0x001f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0003, 0x0107, 0x0107, 0x0107, 0x0107, 0x0107, 0x0607, 0x0607, 0x0000, 0x0207, 0x0207, 0x0207, 0x0000, 0x0407, 0x0407, 0x0407, 0x0505, 0x0015, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0107, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, 0x000b, - 0x0000, 0x0000, 0x0001, 0x0002, 0x0000, 0x0006, 0x0006, 0x0006, + 0x0000, 0x0000, 0x0101, 0x0102, 0x0000, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, @@ -207,7 +215,7 @@ 0x0107, 0x0507, 0x0107, 0x0107, 0x0507, 0x0507, 0x0507, 0x0507, 0x0607, 0x0607, 0x0616, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0107, 0x0000, 0x0507, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0000, 0x0001, 0x0516, 0x0000, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0522, 0x0501, 0x0516, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000, 0x0000, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, @@ -215,45 +223,49 @@ 0x0000, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x0000, 0x000a, 0x0000, 0x0000, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x0000, 0x0107, 0x0507, 0x0107, 0x0107, 0x0507, 0x0507, 0x0507, 0x0507, - 0x0607, 0x0607, 0x0000, 0x0507, 0x000e, 0x000e, 0x0000, 0x0000, + 0x0607, 0x0607, 0x0000, 0x0507, 0x060e, 0x000e, 0x0000, 0x0000, 0x0307, 0x0307, 0x0307, 0x0307, 0x0307, 0x0000, 0x0000, 0x0000, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0513, 0x0513, 0x0513, 0x0513, 0x0500, 0x0501, 0x0000, 0x0000, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x0000, 0x0621, 0x0000, 0x0621, + 0x0000, 0x0504, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0200, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x0000, 0x0000, 0x0000, 0x0607, 0x0507, 0x0007, 0x0607, 0x0607, 0x0707, 0x0707, - 0x0707, 0x0707, 0x0507, 0x0507, 0x0507, 0x0507, 0x0001, 0x0002, - 0x0507, 0x0007, 0x0001, 0x0001, 0x0616, 0x0003, 0x0000, 0x0000, - 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x0000, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, - 0x000d, 0x000d, 0x000d, 0x000d, 0x000d, 0x0000, 0x0000, 0x0000, + 0x0707, 0x0707, 0x0507, 0x0507, 0x0507, 0x0507, 0x0501, 0x0102, + 0x0507, 0x0007, 0x0501, 0x0501, 0x0616, 0x0003, 0x0500, 0x0500, + 0x0010, 0x0010, 0x0010, 0x0010, 0x0010, 0x060d, 0x060d, 0x060d, + 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, + 0x0000, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, + 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, + 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, + 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, + 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0621, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0107, 0x0107, 0x0507, 0x0507, 0x0607, - 0x0607, 0x0207, 0x0507, 0x0507, 0x0507, 0x0507, 0x0001, 0x0013, - 0x0002, 0x0017, 0x0516, 0x000e, 0x000e, 0x000e, 0x000e, 0x000a, + 0x0607, 0x0207, 0x0507, 0x0507, 0x0507, 0x0507, 0x0501, 0x0613, + 0x0102, 0x0017, 0x0516, 0x010e, 0x000e, 0x060e, 0x060e, 0x000a, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x000a, 0x000a, 0x0006, 0x0006, 0x0006, 0x0006, 0x0107, 0x0107, - 0x0607, 0x0607, 0x000a, 0x000a, 0x000a, 0x000a, 0x000e, 0x000e, - 0x000e, 0x000a, 0x0107, 0x0013, 0x0013, 0x000a, 0x000a, 0x0107, - 0x0107, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x000a, 0x000a, + 0x0607, 0x0607, 0x000a, 0x000a, 0x000a, 0x000a, 0x060e, 0x060e, + 0x060e, 0x000a, 0x0107, 0x0113, 0x0113, 0x000a, 0x000a, 0x0107, + 0x0107, 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x000a, 0x000a, 0x000a, 0x0507, 0x0507, 0x0507, 0x0507, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, - 0x000a, 0x000a, 0x000e, 0x0107, 0x0207, 0x0507, 0x0507, 0x0013, - 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x0013, 0x000a, 0x0013, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x0013, 0x0013, 0x0107, 0x0507, 0x0000, 0x0000, + 0x000a, 0x000a, 0x060e, 0x0107, 0x0207, 0x0507, 0x0507, 0x0113, + 0x0113, 0x0113, 0x0113, 0x0113, 0x0113, 0x0613, 0x000a, 0x0113, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x0113, 0x0113, 0x0107, 0x0507, 0x0000, 0x0000, 0x0006, 0x0006, 0x0006, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0000, 0x000a, 0x000a, 0x000a, 0x000a, 0x0507, 0x0607, 0x0616, 0x0000, 0x0000, 0x0000, @@ -268,102 +280,118 @@ 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0006, 0x0000, 0x0000, 0x0107, 0x0507, 0x0507, 0x0507, 0x0507, 0x0607, 0x0607, 0x0607, 0x0007, 0x0007, - 0x0007, 0x0207, 0x0207, 0x0207, 0x0407, 0x0407, 0x0001, 0x0002, - 0x0107, 0x0514, 0x0514, 0x0514, 0x050c, 0x0500, 0x0500, 0x0500, - 0x0500, 0x0516, 0x0017, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0000, 0x0000, 0x0000, + 0x0007, 0x0207, 0x0207, 0x0207, 0x0407, 0x0407, 0x0501, 0x0102, + 0x0107, 0x0514, 0x0514, 0x0521, 0x050c, 0x0522, 0x0521, 0x0521, + 0x0521, 0x0516, 0x0017, 0x0521, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0500, 0x0000, 0x0000, 0x0009, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x000a, 0x0507, 0x0507, 0x0607, 0x0107, 0x0107, 0x0807, 0x0807, 0x0507, - 0x0507, 0x000d, 0x000d, 0x000d, 0x0000, 0x0000, 0x0000, 0x0000, - 0x000f, 0x000f, 0x0001, 0x000f, 0x000f, 0x000f, 0x000f, 0x000f, - 0x000f, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0507, 0x010d, 0x010d, 0x010d, 0x0000, 0x0000, 0x0000, 0x0000, + 0x010f, 0x010f, 0x0601, 0x010f, 0x010f, 0x010f, 0x010f, 0x010f, + 0x010f, 0x060f, 0x0507, 0x0621, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x000a, 0x000a, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0008, 0x0000, 0x0000, 0x0012, 0x0012, 0x0012, 0x0012, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0200, 0x0200, 0x0200, - 0x0100, 0x0100, 0x0200, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0300, 0x0300, 0x0300, + 0x0100, 0x0100, 0x0000, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x0600, 0x0200, 0x0100, 0x0507, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x020e, 0x000e, 0x000f, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x020e, 0x060e, 0x010f, + 0x0500, 0x0500, 0x0500, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, 0x0017, 0x0107, 0x0507, 0x0100, 0x0100, 0x0500, 0x0500, 0x0500, 0x0500, 0x0600, 0x0600, 0x0500, 0x0600, 0x0100, 0x0200, 0x0200, - 0x0200, 0x0200, 0x0200, 0x0500, 0x0500, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000c, 0x0002, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0107, 0x0500, 0x0500, + 0x0200, 0x0200, 0x0200, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, + 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0000, 0x0000, 0x0621, + 0x0500, 0x0500, 0x0500, 0x050c, 0x0102, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0504, 0x0107, 0x0500, 0x0500, 0x0600, 0x0600, 0x0600, 0x0007, 0x0007, 0x0000, 0x0200, 0x0200, 0x0400, 0x0400, 0x0507, 0x0007, 0x0105, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0001, 0x000c, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x000d, 0x0000, 0x0000, 0x0500, 0x0600, 0x0200, 0x0100, - 0x0500, 0x0500, 0x0116, 0x0017, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0500, 0x0600, 0x0500, 0x0500, 0x0500, + 0x0500, 0x0500, 0x0500, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0501, 0x050c, 0x0102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x010d, 0x0600, 0x0600, 0x0500, 0x0600, 0x0200, 0x0100, + 0x0500, 0x0500, 0x0116, 0x0017, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0003, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0004, 0x0107, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0504, 0x0107, 0x0500, 0x0500, 0x0100, 0x0100, 0x0100, 0x0507, 0x0107, 0x0507, - 0x0000, 0x0000, 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0200, - 0x0200, 0x0000, 0x0100, 0x0100, 0x0607, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0200, 0x0200, 0x0000, 0x0004, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0013, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0013, 0x0000, 0x0000, 0x0000, + 0x0500, 0x0500, 0x0100, 0x0100, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0100, 0x0100, 0x0200, + 0x0200, 0x0000, 0x0100, 0x0100, 0x0607, 0x0500, 0x0500, 0x0500, + 0x0500, 0x0500, 0x0500, 0x0500, 0x0200, 0x0200, 0x0521, 0x0604, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0500, 0x0500, 0x0500, 0x0000, 0x0d00, 0x0600, 0x0600, 0x0600, + 0x0600, 0x0600, 0x0500, 0x0500, 0x0600, 0x0600, 0x0600, 0x0600, + 0x0500, 0x0119, 0x0d00, 0x0d00, 0x0d00, 0x0d00, 0x0d00, 0x0d00, + 0x0d00, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0519, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x001a, 0x001b, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0021, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0516, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0501, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0100, 0x0600, 0x0500, 0x0107, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0008, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000d, 0x000a, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0001, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x0100, 0x0100, 0x0100, + 0x0101, 0x0102, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x010f, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0605, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, + 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, 0x0500, + 0x0500, 0x0500, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0600, 0x0600, 0x0600, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0600, - 0x0600, 0x0600, 0x0500, 0x0600, 0x0600, 0x0600, 0x0600, 0x0000, - 0x0000, 0x0000, 0x000f, 0x0116, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000c, 0x0002, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0004, 0x0100, 0x0100, 0x0500, 0x0500, - 0x0600, 0x0600, 0x0200, 0x0200, 0x0507, 0x000d, 0x0000, 0x0000, + 0x0600, 0x0600, 0x0500, 0x0600, 0x0600, 0x0600, 0x0600, 0x0500, + 0x0500, 0x0500, 0x010f, 0x0116, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0500, 0x0500, 0x050c, 0x0102, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0504, 0x0100, 0x0100, 0x0500, 0x0500, + 0x0600, 0x0600, 0x0200, 0x0200, 0x0507, 0x010d, 0x0100, 0x0100, 0x0005, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0507, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0500, 0x0500, 0x0500, 0x0500, 0x0600, 0x0500, 0x0200, - 0x0200, 0x0500, 0x0600, 0x0000, 0x0200, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x000f, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x000f, 0x000f, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x000a, 0x0013, 0x0013, 0x0013, 0x0000, 0x0000, + 0x0200, 0x0500, 0x0600, 0x0100, 0x0200, 0x0600, 0x0600, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x050f, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x050f, 0x010f, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x000a, 0x0113, 0x0513, 0x0113, 0x0000, 0x0000, 0x0507, 0x0107, 0x0500, 0x0500, 0x0600, 0x0300, 0x0300, 0x0500, - 0x0500, 0x0000, 0x0100, 0x0300, 0x0300, 0x0100, 0x0507, 0x0013, - 0x0012, 0x0013, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0500, 0x0000, 0x0100, 0x0300, 0x0300, 0x0100, 0x0507, 0x0513, + 0x0012, 0x0513, 0x0012, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0207, 0x0600, 0x0500, 0x0200, 0x0100, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0017, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0102, 0x0017, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x000a, 0x0006, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0100, 0x0100, 0x0507, 0x0100, 0x0100, - 0x0607, 0x0100, 0x0100, 0x0000, 0x0013, 0x0616, 0x0000, 0x0000 + 0x0607, 0x0100, 0x0100, 0x0000, 0x0113, 0x0616, 0x0000, 0x0000 }; Modified: trunk/reactos/dll/win32/usp10/linebreak.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/usp10/linebreak.…
============================================================================== --- trunk/reactos/dll/win32/usp10/linebreak.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/usp10/linebreak.c [iso-8859-1] Mon Nov 23 09:46:04 2015 @@ -1,8 +1,8 @@ /* Unicode Line Break Properties */ -/* generated from
http://www.unicode.org/Public/7.0.0/ucd/LineBreak.txt
*/ +/* generated from
http://www.unicode.org/Public/8.0.0/ucd/LineBreak.txt
*/ /* DO NOT EDIT!! */ -const unsigned short wine_linebreak_table[7232] = +const unsigned short wine_linebreak_table[7216] = { /* level 1 offsets */ 0x0100, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, 0x0170, @@ -96,19 +96,19 @@ 0x0860, 0x0860, 0x0860, 0x0860, 0x0a30, 0x10a0, 0x10b0, 0x10c0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x0580, 0x0580, 0x0580, 0x10d0, - 0x05b0, 0x10e0, 0x05b0, 0x05b0, 0x10e0, 0x10f0, 0x05b0, 0x1100, - 0x05b0, 0x05b0, 0x05b0, 0x1110, 0x1110, 0x1120, 0x05b0, 0x1130, - 0x1140, 0x1150, 0x1160, 0x1170, 0x1180, 0x1190, 0x11a0, 0x11b0, - 0x11c0, 0x0ce0, 0x11d0, 0x11e0, 0x11f0, 0x0580, 0x0580, 0x1200, - 0x1210, 0x1220, 0x1230, 0x05b0, 0x05b0, 0x1240, 0x1250, 0x1260, - 0x1270, 0x1260, 0x05b0, 0x05b0, 0x05b0, 0x1280, 0x05b0, 0x05b0, - 0x1290, 0x12a0, 0x12b0, 0x12c0, 0x12d0, 0x12e0, 0x12f0, 0x05b0, - 0x1300, 0x1310, 0x1320, 0x1330, 0x05b0, 0x05b0, 0x05b0, 0x05b0, + 0x05b0, 0x0e40, 0x05b0, 0x05b0, 0x0e40, 0x10e0, 0x05b0, 0x10f0, + 0x05b0, 0x05b0, 0x05b0, 0x1100, 0x1100, 0x1110, 0x05b0, 0x1120, + 0x1130, 0x1140, 0x1150, 0x1160, 0x1170, 0x1180, 0x1190, 0x11a0, + 0x11b0, 0x0ce0, 0x11c0, 0x11d0, 0x11e0, 0x0580, 0x0580, 0x11f0, + 0x1200, 0x1210, 0x1220, 0x05b0, 0x05b0, 0x1230, 0x1240, 0x1250, + 0x1260, 0x1250, 0x05b0, 0x05b0, 0x05b0, 0x1270, 0x05b0, 0x05b0, + 0x1280, 0x1290, 0x12a0, 0x12b0, 0x12c0, 0x12d0, 0x12e0, 0x05b0, + 0x12f0, 0x1300, 0x1310, 0x1320, 0x05b0, 0x05b0, 0x1330, 0x05b0, 0x1340, 0x1350, 0x1360, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1370, 0x05b0, 0x05b0, 0x1380, 0x0860, 0x1390, 0x0860, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x13b0, - 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x1250, 0x13a0, 0x13a0, 0x13c0, + 0x13a0, 0x13a0, 0x13a0, 0x13a0, 0x1240, 0x13a0, 0x13a0, 0x13c0, 0x13a0, 0x13d0, 0x13e0, 0x13f0, 0x1400, 0x1410, 0x1420, 0x05b0, 0x1430, 0x1440, 0x05b0, 0x1450, 0x1460, 0x05b0, 0x1470, 0x1480, 0x05b0, 0x1490, 0x05b0, 0x14a0, 0x14b0, 0x14c0, 0x14d0, 0x14e0, @@ -117,41 +117,41 @@ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1560, 0x1570, 0x05b0, 0x05b0, 0x05b0, 0x1340, 0x05b0, 0x1580, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1590, 0x05b0, 0x15a0, - 0x05b0, 0x15b0, 0x05b0, 0x15c0, 0x08f0, 0x15d0, 0x0860, 0x0860, + 0x05b0, 0x15b0, 0x05b0, 0x15c0, 0x08f0, 0x15d0, 0x15e0, 0x0860, 0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0, 0x0840, 0x05b0, 0x05b0, - 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15e0, 0x15f0, - 0x05b0, 0x05b0, 0x0d70, 0x05b0, 0x05b0, 0x05b0, 0x1600, 0x1610, - 0x05b0, 0x1380, 0x1620, 0x1620, 0x1620, 0x1620, 0x0580, 0x0580, - 0x1630, 0x1640, 0x1650, 0x1660, 0x1670, 0x0860, 0x0860, 0x0860, - 0x1680, 0x1690, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x16a0, - 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, - 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x16b0, 0x0860, 0x16c0, - 0x16d0, 0x16e0, 0x16f0, 0x1700, 0x1710, 0x1680, 0x1720, 0x1680, - 0x1730, 0x1740, 0x1750, 0x1680, 0x1720, 0x1680, 0x1730, 0x1760, - 0x1770, 0x1680, 0x1780, 0x1790, 0x1680, 0x1680, 0x1680, 0x1680, - 0x17a0, 0x1680, 0x1680, 0x17b0, 0x1680, 0x1680, 0x16a0, 0x17c0, - 0x1680, 0x17a0, 0x1680, 0x1680, 0x17d0, 0x1680, 0x1680, 0x1680, - 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x17a0, - 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, - 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, - 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, - 0x1680, 0x1680, 0x1680, 0x1680, 0x05b0, 0x05b0, 0x05b0, 0x05b0, - 0x1680, 0x17e0, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, - 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, - 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, 0x1680, - 0x17f0, 0x1680, 0x1680, 0x1680, 0x1800, 0x05b0, 0x05b0, 0x1090, - 0x1810, 0x05b0, 0x1820, 0x0860, 0x05b0, 0x05b0, 0x15e0, 0x1830, - 0x05b0, 0x1840, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1850, + 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15f0, 0x1600, + 0x05b0, 0x05b0, 0x0d70, 0x05b0, 0x05b0, 0x05b0, 0x1610, 0x1620, + 0x05b0, 0x1380, 0x1630, 0x1630, 0x1630, 0x1630, 0x0580, 0x0580, + 0x1640, 0x1650, 0x1660, 0x1670, 0x1680, 0x0860, 0x0860, 0x0860, + 0x1690, 0x16a0, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x16b0, + 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, + 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x16c0, 0x0860, 0x16d0, + 0x16e0, 0x16f0, 0x1700, 0x1710, 0x1720, 0x1690, 0x1730, 0x1690, + 0x1740, 0x1750, 0x1760, 0x1690, 0x1730, 0x1690, 0x1740, 0x1770, + 0x1780, 0x1690, 0x1790, 0x17a0, 0x1690, 0x1690, 0x1690, 0x1690, + 0x17b0, 0x1690, 0x1690, 0x17c0, 0x1690, 0x1690, 0x16b0, 0x17d0, + 0x1690, 0x17b0, 0x1690, 0x1690, 0x17e0, 0x1690, 0x1690, 0x1690, + 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x17b0, + 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, + 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, + 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, + 0x1690, 0x1690, 0x1690, 0x1690, 0x05b0, 0x05b0, 0x05b0, 0x05b0, + 0x1690, 0x17f0, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, + 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, + 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, 0x1690, + 0x1800, 0x1690, 0x1690, 0x1690, 0x1810, 0x05b0, 0x05b0, 0x1090, + 0x1820, 0x05b0, 0x1830, 0x0860, 0x05b0, 0x05b0, 0x15f0, 0x1840, + 0x05b0, 0x1850, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1860, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, - 0x0840, 0x05b0, 0x1100, 0x15d0, 0x0860, 0x0860, 0x0860, 0x1860, - 0x1870, 0x05b0, 0x1880, 0x1890, 0x05b0, 0x05b0, 0x05b0, 0x18a0, - 0x18b0, 0x05b0, 0x05b0, 0x0ff0, 0x18c0, 0x0ef0, 0x0580, 0x18d0, - 0x07b0, 0x05b0, 0x18e0, 0x05b0, 0x18f0, 0x1900, 0x0d80, 0x1910, - 0x0890, 0x05b0, 0x05b0, 0x1920, 0x1930, 0x1940, 0x0c00, 0x1950, - 0x05b0, 0x05b0, 0x1960, 0x1970, 0x1980, 0x1990, 0x0c00, 0x0c00, - 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x19a0, 0x19b0, 0x0760, 0x19c0, - 0x19d0, 0x19e0, 0x1620, 0x05b0, 0x05b0, 0x05b0, 0x19f0, 0x0860, - 0x0860, 0x0860, 0x0860, 0x0860, 0x05b0, 0x05b0, 0x1a00, 0x0ef0, + 0x05b0, 0x05b0, 0x10f0, 0x0a30, 0x0860, 0x0860, 0x0860, 0x1870, + 0x1880, 0x05b0, 0x1890, 0x18a0, 0x05b0, 0x05b0, 0x05b0, 0x18b0, + 0x18c0, 0x05b0, 0x05b0, 0x0ff0, 0x18d0, 0x0ef0, 0x0580, 0x18e0, + 0x07b0, 0x05b0, 0x18f0, 0x05b0, 0x1900, 0x1910, 0x0d80, 0x1920, + 0x0890, 0x05b0, 0x05b0, 0x1930, 0x1940, 0x1950, 0x0c00, 0x1960, + 0x05b0, 0x05b0, 0x1970, 0x1980, 0x1990, 0x19a0, 0x0c00, 0x0c00, + 0x0c00, 0x0c00, 0x0c00, 0x0c00, 0x19b0, 0x19c0, 0x0760, 0x19d0, + 0x19e0, 0x19f0, 0x1630, 0x05b0, 0x05b0, 0x05b0, 0x0f20, 0x05b0, + 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1a00, 0x0ef0, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, 0x1a40, 0x1a30, 0x1a50, 0x1a30, 0x1a10, 0x1a20, 0x1a30, @@ -176,10 +176,10 @@ 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x15d0, 0x1ae0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1af0, 0x0860, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1b00, 0x05b0, 0x05b0, 0x0a30, 0x0860, 0x0860, 0x1b10, - 0x0580, 0x1b20, 0x1b30, 0x1b40, 0x1b50, 0x1b60, 0x1b70, 0x1110, - 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1b80, - 0x1b90, 0x1ba0, 0x1680, 0x1bb0, 0x1680, 0x1bc0, 0x1bd0, 0x1be0, - 0x05b0, 0x1bf0, 0x05b0, 0x0840, 0x1c00, 0x1c10, 0x1c20, 0x1c30, + 0x0580, 0x1b20, 0x0580, 0x1b30, 0x1b40, 0x1b50, 0x1b60, 0x1100, + 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x05b0, 0x1b70, + 0x1b80, 0x1b90, 0x1690, 0x1ba0, 0x1690, 0x1bb0, 0x1bc0, 0x1bd0, + 0x05b0, 0x1be0, 0x05b0, 0x0840, 0x1bf0, 0x1c00, 0x1c10, 0x1c20, /* values */ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0022, 0x0003, 0x0001, 0x0001, 0x0002, 0x0004, 0x0004, @@ -277,9 +277,9 @@ 0x001d, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, @@ -326,7 +326,7 @@ 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001a, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0004, @@ -358,7 +358,7 @@ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0011, - 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d, @@ -374,7 +374,7 @@ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0004, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001b, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0004, 0x0004, 0x0011, 0x001d, 0x001d, 0x001d, @@ -463,8 +463,8 @@ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0022, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, @@ -547,8 +547,6 @@ 0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0004, 0x0004, 0x0004, 0x0004, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, @@ -580,7 +578,7 @@ 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001b, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001b, 0x001a, - 0x001a, 0x001a, 0x001a, 0x001b, 0x001a, 0x001a, 0x001a, 0x001a, + 0x001a, 0x001a, 0x001a, 0x001b, 0x001a, 0x001a, 0x001b, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x001a, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, @@ -598,7 +596,7 @@ 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x0024, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x0024, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x001d, 0x0024, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x0024, 0x001d, 0x0024, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0024, 0x001d, 0x0024, 0x0024, 0x001d, 0x001d, 0x001d, 0x0024, @@ -623,6 +621,8 @@ 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0024, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001f, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0012, 0x0013, 0x0012, 0x0013, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0024, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, @@ -707,6 +707,8 @@ 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, + 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, @@ -784,7 +786,7 @@ 0x0004, 0x0004, 0x0004, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0004, + 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x001d, 0x0022, 0x0022, 0x0022, 0x0022, 0x0022, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, @@ -802,7 +804,7 @@ 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0022, 0x0022, 0x0004, 0x0004, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, - 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, + 0x001d, 0x001d, 0x001d, 0x001d, 0x0021, 0x001d, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0022, 0x0022, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0004, @@ -836,8 +838,6 @@ 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x001d, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x001d, 0x001d, 0x001d, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0022, 0x0004, 0x0004, 0x0011, 0x0011, @@ -877,8 +877,6 @@ 0x001d, 0x001d, 0x001d, 0x001d, 0x001b, 0x001d, 0x0011, 0x0011, 0x0019, 0x0013, 0x0013, 0x0019, 0x0019, 0x0017, 0x0017, 0x0012, 0x0013, 0x001f, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, 0x0011, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, - 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0011, 0x0011, 0x001e, 0x001e, 0x001e, 0x001e, 0x001e, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x0012, 0x0013, 0x001e, 0x001e, 0x0012, Modified: trunk/reactos/dll/win32/usp10/mirror.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/usp10/mirror.c?r…
============================================================================== --- trunk/reactos/dll/win32/usp10/mirror.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/usp10/mirror.c [iso-8859-1] Mon Nov 23 09:46:04 2015 @@ -1,5 +1,5 @@ /* Unicode BiDi mirroring */ -/* generated from
http://www.unicode.org/Public/7.0.0/ucd/BidiMirroring.txt
*/ +/* generated from
http://www.unicode.org/Public/8.0.0/ucd/BidiMirroring.txt
*/ /* DO NOT EDIT!! */ #include <windef.h> Modified: trunk/reactos/dll/win32/usp10/shape.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/usp10/shape.c?re…
============================================================================== --- trunk/reactos/dll/win32/usp10/shape.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/usp10/shape.c [iso-8859-1] Mon Nov 23 09:46:04 2015 @@ -938,7 +938,10 @@ { switch (pwcChars[i]) { - case 0x000D: pwOutGlyphs[i] = psc->sfp.wgBlank; break; + case 0x000A: + case 0x000D: + pwOutGlyphs[i] = psc->sfp.wgBlank; + break; default: if (pwcChars[i] < 0x1C) pwOutGlyphs[i] = psc->sfp.wgDefault; Modified: trunk/reactos/dll/win32/usp10/shaping.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/usp10/shaping.c?…
============================================================================== --- trunk/reactos/dll/win32/usp10/shaping.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/usp10/shaping.c [iso-8859-1] Mon Nov 23 09:46:04 2015 @@ -1,8 +1,8 @@ /* Unicode Arabic shaping */ -/* generated from
http://www.unicode.org/Public/7.0.0/ucd/ArabicShaping.txt
*/ +/* generated from
http://www.unicode.org/Public/8.0.0/ucd/ArabicShaping.txt
*/ /* DO NOT EDIT!! */ -const unsigned short wine_shaping_table[2864] = +const unsigned short wine_shaping_table[2848] = { /* level 1 offsets */ 0x0100, 0x0110, 0x0110, 0x0120, 0x0130, 0x0140, 0x0150, 0x0160, @@ -95,7 +95,7 @@ 0x0340, 0x0340, 0x0a00, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0a10, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0a20, - 0x0340, 0x0490, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0940, + 0x0340, 0x06d0, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0940, 0x0a30, 0x0340, 0x06f0, 0x0340, 0x0530, 0x0530, 0x0530, 0x0a40, 0x0340, 0x0340, 0x0340, 0x0340, 0x0a50, 0x0340, 0x0360, 0x0940, 0x0340, 0x0340, 0x0a60, 0x0340, 0x0a70, 0x0940, 0x0340, 0x0340, @@ -106,10 +106,10 @@ 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0af0, 0x0340, 0x0340, 0x0b00, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, - 0x0360, 0x0340, 0x0b10, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, + 0x0360, 0x0340, 0x0360, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0490, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, - 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b20, + 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0340, 0x0b10, /* values */ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -183,15 +183,15 @@ 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, - 0x0002, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0002, 0x0004, - 0x0004, 0x0002, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0002, + 0x0002, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0002, 0x0002, + 0x0004, 0x0002, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0002, 0x0004, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0404, 0x0404, 0x0604, 0x0b04, 0x0f04, 0x1004, 0x1204, 0x1304, 0x0104, 0x0104, 0x0802, 0x0302, 0x3402, 0x0000, 0x0702, 0x0a04, - 0x0d04, 0x3502, 0x0802, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, - 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0d04, 0x3502, 0x0802, 0x0c04, 0x1104, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, @@ -361,8 +361,6 @@ 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, - 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, - 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000 }; Modified: trunk/reactos/dll/win32/usp10/usp10.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/usp10/usp10.c?re…
============================================================================== --- trunk/reactos/dll/win32/usp10/usp10.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/usp10/usp10.c [iso-8859-1] Mon Nov 23 09:46:04 2015 @@ -1466,7 +1466,8 @@ } } - while ((!levels || (levels && levels[cnt+1] == levels[0])) && (pwcInChars[cnt] == Numeric_space) && cnt < cInChars) + while ((!levels || (levels && cnt+1 < cInChars && levels[cnt+1] == levels[0])) + && (cnt < cInChars && pwcInChars[cnt] == Numeric_space)) cnt++; if (cnt == cInChars) /* All Spaces */ @@ -2956,6 +2957,15 @@ /* No mirroring done here */ if (rtl) idx = cChars - 1 - i; pwOutGlyphs[i] = pwcChars[idx]; + + /* overwrite some basic control glyphs to blank */ + if (psa && psa->eScript == Script_Control && + pwcChars[idx] < ((ScriptCache *)*psc)->tm.tmFirstChar) + { + if (pwcChars[idx] == 0x0009 || pwcChars[idx] == 0x000A || + pwcChars[idx] == 0x000D || pwcChars[idx] >= 0x001C) + pwOutGlyphs[i] = ((ScriptCache *)*psc)->sfp.wgBlank; + } } } Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Mon Nov 23 09:46:04 2015 @@ -193,7 +193,7 @@ reactos/dll/win32/updspapi # Synced to WineStaging-1.7.47 reactos/dll/win32/url # Synced to WineStaging-1.7.47 reactos/dll/win32/urlmon # Synced to WineStaging-1.7.55 -reactos/dll/win32/usp10 # Synced to WineStaging-1.7.47 +reactos/dll/win32/usp10 # Synced to WineStaging-1.7.55 reactos/dll/win32/uxtheme # Forked reactos/dll/win32/vbscript # Synced to WineStaging-1.7.47 reactos/dll/win32/version # Synced to WineStaging-1.7.55
9 years, 4 months
1
0
0
0
[akhaldi] 70060: [PSDK] Add some missing FILE_* structures. Add missing PRIORITY_HINT.
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:44:29 2015 New Revision: 70060 URL:
http://svn.reactos.org/svn/reactos?rev=70060&view=rev
Log: [PSDK] Add some missing FILE_* structures. Add missing PRIORITY_HINT. Modified: trunk/reactos/include/psdk/winbase.h Modified: trunk/reactos/include/psdk/winbase.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/include/psdk/winbase.h?rev…
============================================================================== --- trunk/reactos/include/psdk/winbase.h [iso-8859-1] (original) +++ trunk/reactos/include/psdk/winbase.h [iso-8859-1] Mon Nov 23 09:44:29 2015 @@ -988,6 +988,88 @@ WCHAR FileName[1]; } FILE_ID_BOTH_DIR_INFO, *PFILE_ID_BOTH_DIR_INFO; +typedef struct _FILE_BASIC_INFO { + LARGE_INTEGER CreationTime; + LARGE_INTEGER LastAccessTime; + LARGE_INTEGER LastWriteTime; + LARGE_INTEGER ChangeTime; + DWORD FileAttributes; +} FILE_BASIC_INFO, *PFILE_BASIC_INFO; + +typedef struct _FILE_STANDARD_INFO { + LARGE_INTEGER AllocationSize; + LARGE_INTEGER EndOfFile; + DWORD NumberOfLinks; + BOOLEAN DeletePending; + BOOLEAN Directory; +} FILE_STANDARD_INFO, *PFILE_STANDARD_INFO; + +typedef struct _FILE_NAME_INFO { + DWORD FileNameLength; + WCHAR FileName[1]; +} FILE_NAME_INFO, *PFILE_NAME_INFO; + +typedef enum _PRIORITY_HINT { + IoPriorityHintVeryLow, + IoPriorityHintLow, + IoPriorityHintNormal, + MaximumIoPriorityHintType +} PRIORITY_HINT; + +typedef struct _FILE_IO_PRIORITY_HINT_INFO { + PRIORITY_HINT PriorityHint; +} FILE_IO_PRIORITY_HINT_INFO; + +typedef struct _FILE_ALLOCATION_INFO { + LARGE_INTEGER AllocationSize; +} FILE_ALLOCATION_INFO, *PFILE_ALLOCATION_INFO; + +typedef struct _FILE_DISPOSITION_INFO { + BOOLEAN DeleteFile; +} FILE_DISPOSITION_INFO, *PFILE_DISPOSITION_INFO; + +typedef struct _FILE_END_OF_FILE_INFO { + LARGE_INTEGER EndOfFile; +} FILE_END_OF_FILE_INFO, *PFILE_END_OF_FILE_INFO; + +typedef struct _FILE_RENAME_INFO { + BOOLEAN ReplaceIfExists; + HANDLE RootDirectory; + DWORD FileNameLength; + WCHAR FileName[1]; +} FILE_RENAME_INFO, *PFILE_RENAME_INFO; + +typedef struct _FILE_ATTRIBUTE_TAG_INFO { + DWORD FileAttributes; + DWORD ReparseTag; +} FILE_ATTRIBUTE_TAG_INFO, *PFILE_ATTRIBUTE_TAG_INFO; + +typedef struct _FILE_COMPRESSION_INFO { + LARGE_INTEGER CompressedFileSize; + WORD CompressionFormat; + UCHAR CompressionUnitShift; + UCHAR ChunkShift; + UCHAR ClusterShift; + UCHAR Reserved[3]; +} FILE_COMPRESSION_INFO, *PFILE_COMPRESSION_INFO; + +typedef struct _FILE_REMOTE_PROTOCOL_INFO { + USHORT StructureVersion; + USHORT StructureSize; + ULONG Protocol; + USHORT ProtocolMajorVersion; + USHORT ProtocolMinorVersion; + USHORT ProtocolRevision; + USHORT Reserved; + ULONG Flags; + struct { + ULONG Reserved[8]; + } GenericReserved; + struct { + ULONG Reserved[16]; + } ProtocolSpecificReserved; +} FILE_REMOTE_PROTOCOL_INFO, *PFILE_REMOTE_PROTOCOL_INFO; + #endif typedef enum _FINDEX_INFO_LEVELS {
9 years, 4 months
1
0
0
0
[akhaldi] 70059: [SHLWAPI_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:43:14 2015 New Revision: 70059 URL:
http://svn.reactos.org/svn/reactos?rev=70059&view=rev
Log: [SHLWAPI_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536 Modified: trunk/rostests/winetests/shlwapi/ordinal.c trunk/rostests/winetests/shlwapi/path.c trunk/rostests/winetests/shlwapi/shreg.c Modified: trunk/rostests/winetests/shlwapi/ordinal.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/ordinal…
============================================================================== --- trunk/rostests/winetests/shlwapi/ordinal.c [iso-8859-1] (original) +++ trunk/rostests/winetests/shlwapi/ordinal.c [iso-8859-1] Mon Nov 23 09:43:14 2015 @@ -1639,20 +1639,18 @@ out = 0xfeedface; rc = pSHPropertyBag_ReadLONG(NULL, szName1, &out); - ok(rc == E_INVALIDARG || broken(rc == 0), "incorrect return %x\n",rc); + ok(rc == E_INVALIDARG || broken(rc == S_OK), "incorrect return %x\n",rc); ok(out == 0xfeedface, "value should not have changed\n"); rc = pSHPropertyBag_ReadLONG(&pb->IPropertyBag_iface, NULL, &out); - ok(rc == E_INVALIDARG || broken(rc == 0) || broken(rc == 1), "incorrect return %x\n",rc); + ok(rc == E_INVALIDARG || broken(rc == S_OK) || broken(rc == S_FALSE), "incorrect return %x\n",rc); ok(out == 0xfeedface, "value should not have changed\n"); rc = pSHPropertyBag_ReadLONG(&pb->IPropertyBag_iface, szName1, NULL); - ok(rc == E_INVALIDARG || broken(rc == 0) || broken(rc == 1), "incorrect return %x\n",rc); + ok(rc == E_INVALIDARG || broken(rc == S_OK) || broken(rc == S_FALSE), "incorrect return %x\n",rc); rc = pSHPropertyBag_ReadLONG(&pb->IPropertyBag_iface, szName1, &out); - ok(rc == DISP_E_BADVARTYPE || broken(rc == 0) || broken(rc == 1), "incorrect return %x\n",rc); + ok(rc == DISP_E_BADVARTYPE || broken(rc == S_OK) || broken(rc == S_FALSE), "incorrect return %x\n",rc); ok(out == 0xfeedface || broken(out == 0xfeedfa00), "value should not have changed %x\n",out); IUnknown_Release((IUnknown*)pb); } - - static void test_SHSetWindowBits(void) { Modified: trunk/rostests/winetests/shlwapi/path.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/path.c?…
============================================================================== --- trunk/rostests/winetests/shlwapi/path.c [iso-8859-1] (original) +++ trunk/rostests/winetests/shlwapi/path.c [iso-8859-1] Mon Nov 23 09:43:14 2015 @@ -32,8 +32,8 @@ #include <shlwapi.h> #include <wininet.h> -static HRESULT (WINAPI *pPathIsValidCharA)(char,DWORD); -static HRESULT (WINAPI *pPathIsValidCharW)(WCHAR,DWORD); +static BOOL (WINAPI *pPathIsValidCharA)(char,DWORD); +static BOOL (WINAPI *pPathIsValidCharW)(WCHAR,DWORD); static LPWSTR (WINAPI *pPathCombineW)(LPWSTR, LPCWSTR, LPCWSTR); static HRESULT (WINAPI *pPathCreateFromUrlA)(LPCSTR, LPSTR, LPDWORD, DWORD); static HRESULT (WINAPI *pPathCreateFromUrlW)(LPCWSTR, LPWSTR, LPDWORD, DWORD); @@ -1644,6 +1644,19 @@ } } +static void test_PathStripPathA(void) +{ + const char const_path[] = "test"; + char path[] = "short//path\\file.txt"; + + PathStripPathA(path); + ok(!strcmp(path, "file.txt"), "path = %s\n", path); + + /* following test should not crash */ + /* LavView 2013 depends on that behaviour */ + PathStripPathA((char*)const_path); +} + START_TEST(path) { HMODULE hShlwapi = GetModuleHandleA("shlwapi.dll"); @@ -1689,4 +1702,5 @@ test_PathUnExpandEnvStrings(); test_PathIsRelativeA(); test_PathIsRelativeW(); -} + test_PathStripPathA(); +} Modified: trunk/rostests/winetests/shlwapi/shreg.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/shlwapi/shreg.c…
============================================================================== --- trunk/rostests/winetests/shlwapi/shreg.c [iso-8859-1] (original) +++ trunk/rostests/winetests/shlwapi/shreg.c [iso-8859-1] Mon Nov 23 09:43:14 2015 @@ -42,6 +42,8 @@ static DWORD (WINAPI *pSHRegGetPathA)(HKEY,LPCSTR,LPCSTR,LPSTR,DWORD); static LSTATUS (WINAPI *pSHRegGetValueA)(HKEY,LPCSTR,LPCSTR,SRRF,LPDWORD,LPVOID,LPDWORD); static LSTATUS (WINAPI *pSHRegCreateUSKeyW)(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,DWORD); +static LSTATUS (WINAPI *pSHRegOpenUSKeyW)(LPCWSTR,REGSAM,HUSKEY,PHUSKEY,BOOL); +static LSTATUS (WINAPI *pSHRegCloseUSKey)(HUSKEY); static const char sTestpath1[] = "%LONGSYSTEMVAR%\\subdir1"; static const char sTestpath2[] = "%FOO%\\subdir1"; @@ -462,6 +464,35 @@ ok(ret == ERROR_INVALID_PARAMETER, "got %d\n", ret); } +static void test_SHRegCloseUSKey(void) +{ + static const WCHAR localW[] = {'S','o','f','t','w','a','r','e',0}; + LONG ret; + HUSKEY key; + + if (!pSHRegOpenUSKeyW || !pSHRegCloseUSKey) + { + win_skip("SHRegOpenUSKeyW or SHRegCloseUSKey not available\n"); + return; + } + + ret = pSHRegCloseUSKey(NULL); + ok(ret == ERROR_INVALID_PARAMETER, "got %d\n", ret); + + ret = pSHRegOpenUSKeyW(localW, KEY_ALL_ACCESS, NULL, &key, FALSE); + ok(ret == ERROR_SUCCESS, "got %d\n", ret); + + ret = pSHRegCloseUSKey(key); + ok(ret == ERROR_SUCCESS, "got %d\n", ret); + + /* Test with limited rights, specially without KEY_SET_VALUE */ + ret = pSHRegOpenUSKeyW(localW, KEY_QUERY_VALUE, NULL, &key, FALSE); + ok(ret == ERROR_SUCCESS, "got %d\n", ret); + + ret = pSHRegCloseUSKey(key); + ok(ret == ERROR_SUCCESS, "got %d\n", ret); +} + START_TEST(shreg) { HKEY hkey = create_test_entries(); @@ -480,6 +511,8 @@ pSHRegGetPathA = (void*)GetProcAddress(hshlwapi,"SHRegGetPathA"); pSHRegGetValueA = (void*)GetProcAddress(hshlwapi,"SHRegGetValueA"); pSHRegCreateUSKeyW = (void*)GetProcAddress(hshlwapi, "SHRegCreateUSKeyW"); + pSHRegOpenUSKeyW = (void*)GetProcAddress(hshlwapi, "SHRegOpenUSKeyW"); + pSHRegCloseUSKey = (void*)GetProcAddress(hshlwapi, "SHRegCloseUSKey"); test_SHGetValue(); test_SHRegGetValue(); @@ -488,6 +521,7 @@ test_SHCopyKey(); test_SHDeleteKey(); test_SHRegCreateUSKeyW(); + test_SHRegCloseUSKey(); delete_key( hkey, "Software\\Wine", "Test" ); }
9 years, 4 months
1
0
0
0
[akhaldi] 70058: [SHLWAPI] Sync with Wine Staging 1.7.55. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:42:20 2015 New Revision: 70058 URL:
http://svn.reactos.org/svn/reactos?rev=70058&view=rev
Log: [SHLWAPI] Sync with Wine Staging 1.7.55. CORE-10536 Modified: trunk/reactos/dll/win32/shlwapi/ordinal.c trunk/reactos/dll/win32/shlwapi/path.c trunk/reactos/dll/win32/shlwapi/reg.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/shlwapi/ordinal.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/ordinal.…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/ordinal.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/ordinal.c [iso-8859-1] Mon Nov 23 09:42:20 2015 @@ -5167,9 +5167,9 @@ * pValue: address to receive the property value as a 32-bit signed integer * * RETURNS - * 0 for Success - */ -BOOL WINAPI SHPropertyBag_ReadLONG(IPropertyBag *ppb, LPCWSTR pszPropName, LPLONG pValue) + * HRESULT codes + */ +HRESULT WINAPI SHPropertyBag_ReadLONG(IPropertyBag *ppb, LPCWSTR pszPropName, LPLONG pValue) { VARIANT var; HRESULT hr; Modified: trunk/reactos/dll/win32/shlwapi/path.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/path.c?r…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/path.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/path.c [iso-8859-1] Mon Nov 23 09:42:20 2015 @@ -650,7 +650,7 @@ if (lpszPath) { LPSTR lpszFileName = PathFindFileNameA(lpszPath); - if(lpszFileName) + if(lpszFileName != lpszPath) RtlMoveMemory(lpszPath, lpszFileName, strlen(lpszFileName)+1); } } @@ -666,7 +666,7 @@ TRACE("(%s)\n", debugstr_w(lpszPath)); lpszFileName = PathFindFileNameW(lpszPath); - if(lpszFileName) + if(lpszFileName != lpszPath) RtlMoveMemory(lpszPath, lpszFileName, (strlenW(lpszFileName)+1)*sizeof(WCHAR)); } Modified: trunk/reactos/dll/win32/shlwapi/reg.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/shlwapi/reg.c?re…
============================================================================== --- trunk/reactos/dll/win32/shlwapi/reg.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/shlwapi/reg.c [iso-8859-1] Mon Nov 23 09:42:20 2015 @@ -181,6 +181,9 @@ { LPSHUSKEY hKey = hUSKey; LONG ret = ERROR_SUCCESS; + + if (!hKey) + return ERROR_INVALID_PARAMETER; if (hKey->HKCUkey) ret = RegCloseKey(hKey->HKCUkey); Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Mon Nov 23 09:42:20 2015 @@ -178,7 +178,7 @@ reactos/dll/win32/shdocvw # Synced to WineStaging-1.7.47 reactos/dll/win32/shell32 # Forked at Wine-20071011 reactos/dll/win32/shfolder # Synced to WineStaging-1.7.47 -reactos/dll/win32/shlwapi # Synced to WineStaging-1.7.47 +reactos/dll/win32/shlwapi # Synced to WineStaging-1.7.55 reactos/dll/win32/slbcsp # Synced to WineStaging-1.7.47 reactos/dll/win32/snmpapi # Synced to WineStaging-1.7.47 reactos/dll/win32/softpub # Synced to WineStaging-1.7.47
9 years, 4 months
1
0
0
0
[akhaldi] 70057: [SECUR32] Reduce difference with Wine Staging 1.7.55. NFC. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:39:40 2015 New Revision: 70057 URL:
http://svn.reactos.org/svn/reactos?rev=70057&view=rev
Log: [SECUR32] Reduce difference with Wine Staging 1.7.55. NFC. CORE-10536 Modified: trunk/reactos/dll/win32/secur32/thunks.c trunk/reactos/dll/win32/secur32/wrapper.c Modified: trunk/reactos/dll/win32/secur32/thunks.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/secur32/thunks.c…
============================================================================== --- trunk/reactos/dll/win32/secur32/thunks.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/secur32/thunks.c [iso-8859-1] Mon Nov 23 09:39:40 2015 @@ -890,4 +890,3 @@ HeapFree(GetProcessHeap(), 0, package); return ret; } - Modified: trunk/reactos/dll/win32/secur32/wrapper.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/secur32/wrapper.…
============================================================================== --- trunk/reactos/dll/win32/secur32/wrapper.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/secur32/wrapper.c [iso-8859-1] Mon Nov 23 09:39:40 2015 @@ -54,7 +54,7 @@ } /*********************************************************************** - * AcquireCredentialsHandleA (SECUR32.@) + * AcquireCredentialsHandleA (SECUR32.@) */ SECURITY_STATUS WINAPI AcquireCredentialsHandleA( SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialsUse, @@ -100,7 +100,7 @@ } /*********************************************************************** - * AcquireCredentialsHandleW (SECUR32.@) + * AcquireCredentialsHandleW (SECUR32.@) */ SECURITY_STATUS WINAPI AcquireCredentialsHandleW( SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialsUse, @@ -146,7 +146,7 @@ } /*********************************************************************** - * FreeCredentialsHandle (SECUR32.@) + * FreeCredentialsHandle (SECUR32.@) */ SECURITY_STATUS WINAPI FreeCredentialsHandle( PCredHandle phCredential) @@ -172,7 +172,7 @@ } /*********************************************************************** - * QueryCredentialsAttributesA (SECUR32.@) + * QueryCredentialsAttributesA (SECUR32.@) */ SECURITY_STATUS WINAPI QueryCredentialsAttributesA( PCredHandle phCredential, ULONG ulAttribute, void *pBuffer) @@ -202,7 +202,7 @@ } /*********************************************************************** - * QueryCredentialsAttributesW (SECUR32.@) + * QueryCredentialsAttributesW (SECUR32.@) */ SECURITY_STATUS WINAPI QueryCredentialsAttributesW( PCredHandle phCredential, ULONG ulAttribute, void *pBuffer) @@ -232,7 +232,7 @@ } /*********************************************************************** - * InitializeSecurityContextA (SECUR32.@) + * InitializeSecurityContextA (SECUR32.@) */ SECURITY_STATUS WINAPI InitializeSecurityContextA( PCredHandle phCredential, PCtxtHandle phContext, @@ -296,7 +296,7 @@ } /*********************************************************************** - * InitializeSecurityContextW (SECUR32.@) + * InitializeSecurityContextW (SECUR32.@) */ SECURITY_STATUS WINAPI InitializeSecurityContextW( PCredHandle phCredential, PCtxtHandle phContext, @@ -360,7 +360,7 @@ } /*********************************************************************** - * AcceptSecurityContext (SECUR32.@) + * AcceptSecurityContext (SECUR32.@) */ SECURITY_STATUS WINAPI AcceptSecurityContext( PCredHandle phCredential, PCtxtHandle phContext, PSecBufferDesc pInput, @@ -390,7 +390,7 @@ myCtxt.dwUpper = realCtxt->dwUpper; myCtxt.dwLower = realCtxt->dwLower; } - + ret = package->provider->fnTableW.AcceptSecurityContext( cred, phContext ? &myCtxt : NULL, pInput, fContextReq, TargetDataRep, &myCtxt, pOutput, pfContextAttr, ptsExpiry); @@ -415,7 +415,7 @@ } /*********************************************************************** - * CompleteAuthToken (SECUR32.@) + * CompleteAuthToken (SECUR32.@) */ SECURITY_STATUS WINAPI CompleteAuthToken(PCtxtHandle phContext, PSecBufferDesc pToken) @@ -445,7 +445,7 @@ } /*********************************************************************** - * DeleteSecurityContext (SECUR32.@) + * DeleteSecurityContext (SECUR32.@) */ SECURITY_STATUS WINAPI DeleteSecurityContext(PCtxtHandle phContext) { @@ -470,7 +470,7 @@ } /*********************************************************************** - * ApplyControlToken (SECUR32.@) + * ApplyControlToken (SECUR32.@) */ SECURITY_STATUS WINAPI ApplyControlToken(PCtxtHandle phContext, PSecBufferDesc pInput) @@ -500,7 +500,7 @@ } /*********************************************************************** - * QueryContextAttributesA (SECUR32.@) + * QueryContextAttributesA (SECUR32.@) */ SECURITY_STATUS WINAPI QueryContextAttributesA(PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer) @@ -530,7 +530,7 @@ } /*********************************************************************** - * QueryContextAttributesW (SECUR32.@) + * QueryContextAttributesW (SECUR32.@) */ SECURITY_STATUS WINAPI QueryContextAttributesW(PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer) @@ -560,7 +560,7 @@ } /*********************************************************************** - * ImpersonateSecurityContext (SECUR32.@) + * ImpersonateSecurityContext (SECUR32.@) */ SECURITY_STATUS WINAPI ImpersonateSecurityContext(PCtxtHandle phContext) { @@ -589,7 +589,7 @@ } /*********************************************************************** - * RevertSecurityContext (SECUR32.@) + * RevertSecurityContext (SECUR32.@) */ SECURITY_STATUS WINAPI RevertSecurityContext(PCtxtHandle phContext) { @@ -618,7 +618,7 @@ } /*********************************************************************** - * MakeSignature (SECUR32.@) + * MakeSignature (SECUR32.@) */ SECURITY_STATUS WINAPI MakeSignature(PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo) @@ -648,7 +648,7 @@ } /*********************************************************************** - * VerifySignature (SECUR32.@) + * VerifySignature (SECUR32.@) */ SECURITY_STATUS WINAPI VerifySignature(PCtxtHandle phContext, PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP) @@ -678,13 +678,13 @@ } /*********************************************************************** - * QuerySecurityPackageInfoA (SECUR32.@) + * QuerySecurityPackageInfoA (SECUR32.@) */ SECURITY_STATUS WINAPI QuerySecurityPackageInfoA(SEC_CHAR *pszPackageName, PSecPkgInfoA *ppPackageInfo) { SECURITY_STATUS ret; - + TRACE("%s %p\n", debugstr_a(pszPackageName), ppPackageInfo); if (pszPackageName) { @@ -745,7 +745,7 @@ } /*********************************************************************** - * QuerySecurityPackageInfoW (SECUR32.@) + * QuerySecurityPackageInfoW (SECUR32.@) */ SECURITY_STATUS WINAPI QuerySecurityPackageInfoW(SEC_WCHAR *pszPackageName, PSecPkgInfoW *ppPackageInfo) @@ -802,7 +802,7 @@ } /*********************************************************************** - * ExportSecurityContext (SECUR32.@) + * ExportSecurityContext (SECUR32.@) */ SECURITY_STATUS WINAPI ExportSecurityContext(PCtxtHandle phContext, ULONG fFlags, PSecBuffer pPackedContext, void **pToken) @@ -832,14 +832,14 @@ } /*********************************************************************** - * ImportSecurityContextA (SECUR32.@) + * ImportSecurityContextA (SECUR32.@) */ SECURITY_STATUS WINAPI ImportSecurityContextA(SEC_CHAR *pszPackage, PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext) { SECURITY_STATUS ret; SecurePackage *package = SECUR32_findPackageA(pszPackage); - + TRACE("%s %p %p %p\n", debugstr_a(pszPackage), pPackedContext, Token, phContext); if (package && package->provider) @@ -867,7 +867,7 @@ } /*********************************************************************** - * ImportSecurityContextW (SECUR32.@) + * ImportSecurityContextW (SECUR32.@) */ SECURITY_STATUS WINAPI ImportSecurityContextW(SEC_WCHAR *pszPackage, PSecBuffer pPackedContext, void *Token, PCtxtHandle phContext) @@ -901,7 +901,7 @@ } /*********************************************************************** - * AddCredentialsA (SECUR32.@) + * AddCredentialsA (SECUR32.@) */ SECURITY_STATUS WINAPI AddCredentialsA(PCredHandle hCredentials, SEC_CHAR *pszPrincipal, SEC_CHAR *pszPackage, ULONG fCredentialUse, @@ -936,7 +936,7 @@ } /*********************************************************************** - * AddCredentialsW (SECUR32.@) + * AddCredentialsW (SECUR32.@) */ SECURITY_STATUS WINAPI AddCredentialsW(PCredHandle hCredentials, SEC_WCHAR *pszPrincipal, SEC_WCHAR *pszPackage, ULONG fCredentialUse, @@ -971,7 +971,7 @@ } /*********************************************************************** - * QuerySecurityContextToken (SECUR32.@) + * QuerySecurityContextToken (SECUR32.@) */ SECURITY_STATUS WINAPI QuerySecurityContextToken(PCtxtHandle phContext, HANDLE *phToken) @@ -1001,7 +1001,7 @@ } /*********************************************************************** - * EncryptMessage (SECUR32.@) + * EncryptMessage (SECUR32.@) */ SECURITY_STATUS WINAPI EncryptMessage(PCtxtHandle phContext, ULONG fQOP, PSecBufferDesc pMessage, ULONG MessageSeqNo) @@ -1031,7 +1031,7 @@ } /*********************************************************************** - * DecryptMessage (SECUR32.@) + * DecryptMessage (SECUR32.@) */ SECURITY_STATUS WINAPI DecryptMessage(PCtxtHandle phContext, PSecBufferDesc pMessage, ULONG MessageSeqNo, PULONG pfQOP) @@ -1061,7 +1061,7 @@ } /*********************************************************************** - * SetContextAttributesA (SECUR32.@) + * SetContextAttributesA (SECUR32.@) */ SECURITY_STATUS WINAPI SetContextAttributesA(PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer, ULONG cbBuffer) @@ -1091,7 +1091,7 @@ } /*********************************************************************** - * SetContextAttributesW (SECUR32.@) + * SetContextAttributesW (SECUR32.@) */ SECURITY_STATUS WINAPI SetContextAttributesW(PCtxtHandle phContext, ULONG ulAttribute, void *pBuffer, ULONG cbBuffer)
9 years, 4 months
1
0
0
0
[akhaldi] 70056: [RICHED20_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:37:40 2015 New Revision: 70056 URL:
http://svn.reactos.org/svn/reactos?rev=70056&view=rev
Log: [RICHED20_WINETEST] Sync with Wine Staging 1.7.55. CORE-10536 Modified: trunk/rostests/winetests/riched20/editor.c trunk/rostests/winetests/riched20/richole.c Modified: trunk/rostests/winetests/riched20/editor.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/riched20/editor…
============================================================================== --- trunk/rostests/winetests/riched20/editor.c [iso-8859-1] (original) +++ trunk/rostests/winetests/riched20/editor.c [iso-8859-1] Mon Nov 23 09:37:40 2015 @@ -3307,6 +3307,8 @@ DestroyWindow(hwndRichEdit); } +LONG streamout_written = 0; + static DWORD CALLBACK test_WM_SETTEXT_esCallback(DWORD_PTR dwCookie, LPBYTE pbBuff, LONG cb, @@ -3318,6 +3320,7 @@ memcpy(*str, pbBuff, *pcb); *str += *pcb; } + streamout_written = *pcb; return 0; } @@ -3442,6 +3445,7 @@ EDITSTREAM es; char buf[1024] = {0}; char * p; + LRESULT result; const char * TestItem1 = "TestSomeText"; const char * TestItem2 = "TestSomeText\r"; @@ -3453,24 +3457,28 @@ es.dwError = 0; es.pfnCallback = test_WM_SETTEXT_esCallback; memset(buf, 0, sizeof(buf)); - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es); r = strlen(buf); ok(r == 12, "streamed text length is %d, expecting 12\n", r); ok(strcmp(buf, TestItem1) == 0, "streamed text different, got %s\n", buf); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); /* RTF mode writes the final end of para \r if it's part of the selection */ p = buf; - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF, (LPARAM)&es); ok (count_pars(buf) == 1, "got %s\n", buf); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); p = buf; SendMessageA(hwndRichEdit, EM_SETSEL, 0, 12); - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es); ok (count_pars(buf) == 0, "got %s\n", buf); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); p = buf; SendMessageA(hwndRichEdit, EM_SETSEL, 0, -1); - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es); ok (count_pars(buf) == 1, "got %s\n", buf); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)TestItem2); p = buf; @@ -3478,7 +3486,8 @@ es.dwError = 0; es.pfnCallback = test_WM_SETTEXT_esCallback; memset(buf, 0, sizeof(buf)); - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); r = strlen(buf); /* Here again, \r gets converted to \r\n, like WM_GETTEXT */ ok(r == 14, "streamed text length is %d, expecting 14\n", r); @@ -3487,16 +3496,19 @@ /* And again RTF mode writes the final end of para \r if it's part of the selection */ p = buf; - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF, (LPARAM)&es); ok (count_pars(buf) == 2, "got %s\n", buf); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); p = buf; SendMessageA(hwndRichEdit, EM_SETSEL, 0, 13); - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es); ok (count_pars(buf) == 1, "got %s\n", buf); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); p = buf; SendMessageA(hwndRichEdit, EM_SETSEL, 0, -1); - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_RTF|SFF_SELECTION, (LPARAM)&es); ok (count_pars(buf) == 2, "got %s\n", buf); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); SendMessageA(hwndRichEdit, WM_SETTEXT, 0, (LPARAM)TestItem3); p = buf; @@ -3504,7 +3516,8 @@ es.dwError = 0; es.pfnCallback = test_WM_SETTEXT_esCallback; memset(buf, 0, sizeof(buf)); - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es); + ok(result == streamout_written, "got %ld expected %d\n", result, streamout_written); r = strlen(buf); ok(r == 14, "streamed text length is %d, expecting 14\n", r); ok(strcmp(buf, TestItem3) == 0, @@ -3516,11 +3529,12 @@ es.dwError = 0; es.pfnCallback = test_esCallback_written_1; memset(buf, 0, sizeof(buf)); - SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es); + result = SendMessageA(hwndRichEdit, EM_STREAMOUT, SF_TEXT, (LPARAM)&es); r = strlen(buf); ok(r == 14, "streamed text length is %d, expecting 14\n", r); ok(strcmp(buf, TestItem3) == 0, "streamed text different, got %s\n", buf); + ok(result == 0, "got %ld expected 0\n", result); DestroyWindow(hwndRichEdit); @@ -7857,6 +7871,170 @@ DestroyWindow(richedit); } +static inline LONG twips2points(LONG value) +{ + return value / 20; +} + +#define TEST_EM_SETFONTSIZE(hwnd,size,expected_size,expected_res,expected_undo) \ + _test_font_size(__LINE__,hwnd,size,expected_size,expected_res,expected_undo) +static void _test_font_size(unsigned line, HWND hwnd, LONG size, LONG expected_size, + LRESULT expected_res, BOOL expected_undo) +{ + CHARFORMAT2A cf; + LRESULT res; + BOOL isundo; + + cf.cbSize = sizeof(cf); + cf.dwMask = CFM_SIZE; + + res = SendMessageA(hwnd, EM_SETFONTSIZE, size, 0); + SendMessageA(hwnd, EM_GETCHARFORMAT, SCF_SELECTION, (LPARAM)&cf); + isundo = SendMessageA(hwnd, EM_CANUNDO, 0, 0); + ok_(__FILE__,line)(res == expected_res, "EM_SETFONTSIZE unexpected return value: %lx.\n", res); + ok_(__FILE__,line)(twips2points(cf.yHeight) == expected_size, "got wrong font size: %d, expected: %d\n", + twips2points(cf.yHeight), expected_size); + ok_(__FILE__,line)(isundo == expected_undo, "get wrong undo mark: %d, expected: %d.\n", + isundo, expected_undo); +} + +static void test_EM_SETFONTSIZE(void) +{ + HWND richedit = new_richedit(NULL); + CHAR text[] = "wine"; + CHARFORMAT2A tmp_cf; + LONG default_size; + + tmp_cf.cbSize = sizeof(tmp_cf); + tmp_cf.dwMask = CFM_SIZE; + tmp_cf.yHeight = 9 * 20.0; + SendMessageA(richedit, EM_SETCHARFORMAT, SCF_DEFAULT, (LPARAM)&tmp_cf); + + SendMessageA(richedit, WM_SETTEXT, 0, (LPARAM)text); + + SendMessageA(richedit, EM_SETMODIFY, FALSE, 0); + /* without selection */ + TEST_EM_SETFONTSIZE(richedit, 1, 10, TRUE, FALSE); /* 9 + 1 -> 10 */ + SendMessageA(richedit, EM_GETCHARFORMAT, SCF_DEFAULT, (LPARAM)&tmp_cf); + default_size = twips2points(tmp_cf.yHeight); + ok(default_size == 9, "Default font size should not be changed.\n"); + ok(SendMessageA(richedit, EM_SETMODIFY, 0, 0) == FALSE, "Modify flag should not be changed.\n"); + + SendMessageA(richedit, EM_SETSEL, 0, 2); + + TEST_EM_SETFONTSIZE(richedit, 0, 9, TRUE, TRUE); /* 9 + 0 -> 9 */ + + SendMessageA(richedit, EM_SETMODIFY, FALSE, 0); + TEST_EM_SETFONTSIZE(richedit, 3, 12, TRUE, TRUE); /* 9 + 3 -> 12 */ + ok(SendMessageA(richedit, EM_SETMODIFY, 0, 0) == FALSE, "Modify flag should not be changed.\n"); + + TEST_EM_SETFONTSIZE(richedit, 1, 14, TRUE, TRUE); /* 12 + 1 + 1 -> 14 */ + TEST_EM_SETFONTSIZE(richedit, -1, 12, TRUE, TRUE); /* 14 - 1 - 1 -> 12 */ + TEST_EM_SETFONTSIZE(richedit, 4, 16, TRUE, TRUE); /* 12 + 4 -> 16 */ + TEST_EM_SETFONTSIZE(richedit, 3, 20, TRUE, TRUE); /* 16 + 3 + 1 -> 20 */ + TEST_EM_SETFONTSIZE(richedit, 0, 20, TRUE, TRUE); /* 20 + 0 -> 20 */ + TEST_EM_SETFONTSIZE(richedit, 8, 28, TRUE, TRUE); /* 20 + 8 -> 28 */ + TEST_EM_SETFONTSIZE(richedit, 0, 28, TRUE, TRUE); /* 28 + 0 -> 28 */ + TEST_EM_SETFONTSIZE(richedit, 1, 36, TRUE, TRUE); /* 28 + 1 -> 36 */ + TEST_EM_SETFONTSIZE(richedit, 0, 36, TRUE, TRUE); /* 36 + 0 -> 36 */ + TEST_EM_SETFONTSIZE(richedit, 1, 48, TRUE, TRUE); /* 36 + 1 -> 48 */ + TEST_EM_SETFONTSIZE(richedit, 0, 48, TRUE, TRUE); /* 48 + 0 -> 48 */ + TEST_EM_SETFONTSIZE(richedit, 1, 72, TRUE, TRUE); /* 48 + 1 -> 72 */ + TEST_EM_SETFONTSIZE(richedit, 0, 72, TRUE, TRUE); /* 72 + 0 -> 72 */ + TEST_EM_SETFONTSIZE(richedit, 1, 80, TRUE, TRUE); /* 72 + 1 -> 80 */ + TEST_EM_SETFONTSIZE(richedit, 0, 80, TRUE, TRUE); /* 80 + 0 -> 80 */ + TEST_EM_SETFONTSIZE(richedit, 1, 90, TRUE, TRUE); /* 80 + 1 -> 90 */ + TEST_EM_SETFONTSIZE(richedit, 0, 90, TRUE, TRUE); /* 90 + 0 -> 90 */ + TEST_EM_SETFONTSIZE(richedit, 1, 100, TRUE, TRUE); /* 90 + 1 -> 100 */ + TEST_EM_SETFONTSIZE(richedit, 25, 130, TRUE, TRUE); /* 100 + 25 -> 130 */ + TEST_EM_SETFONTSIZE(richedit, -1, 120, TRUE, TRUE); /* 130 - 1 -> 120 */ + TEST_EM_SETFONTSIZE(richedit, -35, 80, TRUE, TRUE); /* 120 - 35 -> 80 */ + TEST_EM_SETFONTSIZE(richedit, -7, 72, TRUE, TRUE); /* 80 - 7 -> 72 */ + TEST_EM_SETFONTSIZE(richedit, -42, 28, TRUE, TRUE); /* 72 - 42 -> 28 */ + TEST_EM_SETFONTSIZE(richedit, -16, 12, TRUE, TRUE); /* 28 - 16 -> 12 */ + TEST_EM_SETFONTSIZE(richedit, -3, 9, TRUE, TRUE); /* 12 - 3 -> 9 */ + TEST_EM_SETFONTSIZE(richedit, -8, 1, TRUE, TRUE); /* 9 - 8 -> 1 */ + TEST_EM_SETFONTSIZE(richedit, -111, 1, TRUE, TRUE); /* 1 - 111 -> 1 */ + TEST_EM_SETFONTSIZE(richedit, 10086, 1638, TRUE, TRUE); /* 1 + 10086 -> 1638 */ + + /* return FALSE when richedit is TM_PLAINTEXT mode */ + SendMessageA(richedit, WM_SETTEXT, 0, (LPARAM)""); + SendMessageA(richedit, EM_SETTEXTMODE, (WPARAM)TM_PLAINTEXT, 0); + TEST_EM_SETFONTSIZE(richedit, 0, 9, FALSE, FALSE); + + DestroyWindow(richedit); +} + +static void test_alignment_style(void) +{ + HWND richedit = NULL; + PARAFORMAT2 pf; + DWORD align_style[] = {ES_LEFT, ES_CENTER, ES_RIGHT, ES_RIGHT | ES_CENTER, + ES_LEFT | ES_CENTER, ES_LEFT | ES_RIGHT, + ES_LEFT | ES_RIGHT | ES_CENTER}; + DWORD align_mask[] = {PFA_LEFT, PFA_CENTER, PFA_RIGHT, PFA_CENTER, PFA_CENTER, + PFA_RIGHT, PFA_CENTER}; + const char * streamtext = + "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang12298{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 System;}}\r\n" + "\\viewkind4\\uc1\\pard\\f0\\fs17 TestSomeText\\par\r\n" + "}\r\n"; + EDITSTREAM es; + int i; + + for (i = 0; i < sizeof(align_style) / sizeof(align_style[0]); i++) + { + DWORD dwStyle, new_align; + + richedit = new_windowW(RICHEDIT_CLASS20W, align_style[i], NULL); + memset(&pf, 0, sizeof(pf)); + pf.cbSize = sizeof(PARAFORMAT2); + pf.dwMask = -1; + + SendMessageW(richedit, EM_GETPARAFORMAT, 0, (LPARAM)&pf); + ok(pf.wAlignment == align_mask[i], "(i = %d) got %d expected %d\n", + i, pf.wAlignment, align_mask[i]); + dwStyle = GetWindowLongW(richedit, GWL_STYLE); + ok((i ? (dwStyle & align_style[i]) : (!(dwStyle & 0x0000000f))) , + "(i = %d) didn't set right align style: 0x%x\n", i, dwStyle); + + + /* Based on test_reset_default_para_fmt() */ + new_align = (align_mask[i] == PFA_LEFT) ? PFA_RIGHT : PFA_LEFT; + simulate_typing_characters(richedit, "123"); + + SendMessageW(richedit, EM_SETSEL, 0, -1); + pf.dwMask = PFM_ALIGNMENT; + pf.wAlignment = new_align; + SendMessageW(richedit, EM_SETPARAFORMAT, 0, (LPARAM)&pf); + + SendMessageW(richedit, EM_GETPARAFORMAT, 0, (LPARAM)&pf); + ok(pf.wAlignment == new_align, "got %d expect %d\n", pf.wAlignment, new_align); + + SendMessageW(richedit, EM_SETSEL, 0, -1); + SendMessageW(richedit, WM_CUT, 0, 0); + + SendMessageW(richedit, EM_GETPARAFORMAT, 0, (LPARAM)&pf); + ok(pf.wAlignment == align_mask[i], "got %d exppect %d\n", pf.wAlignment, align_mask[i]); + + DestroyWindow(richedit); + } + + /* test with EM_STREAMIN */ + richedit = new_windowW(RICHEDIT_CLASS20W, ES_CENTER, NULL); + simulate_typing_characters(richedit, "abc"); + es.dwCookie = (DWORD_PTR)&streamtext; + es.dwError = 0; + es.pfnCallback = test_EM_STREAMIN_esCallback; + SendMessageW(richedit, EM_STREAMIN, SF_RTF, (LPARAM)&es); + SendMessageW(richedit, EM_SETSEL, 0, -1); + memset(&pf, 0, sizeof(pf)); + pf.cbSize = sizeof(PARAFORMAT2); + pf.dwMask = -1; + SendMessageW(richedit, EM_GETPARAFORMAT, SCF_SELECTION, (LPARAM)&pf); + ok(pf.wAlignment == ES_CENTER, "got %d expected ES_CENTER\n", pf.wAlignment); + DestroyWindow(richedit); +} + START_TEST( editor ) { BOOL ret; @@ -7922,6 +8100,8 @@ test_WM_CREATE(); test_reset_default_para_fmt(); test_EM_SETREADONLY(); + test_EM_SETFONTSIZE(); + test_alignment_style(); /* Set the environment variable WINETEST_RICHED20 to keep windows * responsive and open for 30 seconds. This is useful for debugging. Modified: trunk/rostests/winetests/riched20/richole.c URL:
http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/riched20/richol…
============================================================================== --- trunk/rostests/winetests/riched20/richole.c [iso-8859-1] (original) +++ trunk/rostests/winetests/riched20/richole.c [iso-8859-1] Mon Nov 23 09:37:40 2015 @@ -2361,7 +2361,7 @@ ok(hr == S_OK, "got 0x%08x\n", hr); ok(value != tomUndefined, "got %d\n", value); - /* reset to undefined for deatached font */ + /* reset to undefined for detached font */ hr = ITextFont_Reset(font2, tomUndefined); ok(hr == S_OK, "got 0x%08x\n", hr); test_textfont_undefined(font2); @@ -3034,7 +3034,7 @@ EXPECT_REF(range2, 2); EXPECT_REF(range, 2); - /* originaly range 0-4 is non-italic */ + /* originally range 0-4 is non-italic */ value = tomTrue; hr = ITextFont_GetItalic(font, &value); ok(hr == S_OK, "got 0x%08x\n", hr);
9 years, 4 months
1
0
0
0
[akhaldi] 70055: [RICHED20] Sync with Wine Staging 1.7.55. CORE-10536
by akhaldi@svn.reactos.org
Author: akhaldi Date: Mon Nov 23 09:36:58 2015 New Revision: 70055 URL:
http://svn.reactos.org/svn/reactos?rev=70055&view=rev
Log: [RICHED20] Sync with Wine Staging 1.7.55. CORE-10536 Modified: trunk/reactos/dll/win32/riched20/caret.c trunk/reactos/dll/win32/riched20/editor.c trunk/reactos/dll/win32/riched20/editor.h trunk/reactos/dll/win32/riched20/editstr.h trunk/reactos/dll/win32/riched20/list.c trunk/reactos/dll/win32/riched20/para.c trunk/reactos/dll/win32/riched20/reader.c trunk/reactos/dll/win32/riched20/rtf.h trunk/reactos/dll/win32/riched20/run.c trunk/reactos/dll/win32/riched20/style.c trunk/reactos/dll/win32/riched20/txthost.c trunk/reactos/dll/win32/riched20/txtsrv.c trunk/reactos/dll/win32/riched20/undo.c trunk/reactos/dll/win32/riched20/writer.c trunk/reactos/media/doc/README.WINE Modified: trunk/reactos/dll/win32/riched20/caret.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/caret.c…
============================================================================== --- trunk/reactos/dll/win32/riched20/caret.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/caret.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -446,7 +446,7 @@ continue; } } - if (delete_all) ME_SetDefaultParaFormat( start_para->member.para.pFmt ); + if (delete_all) ME_SetDefaultParaFormat( editor, start_para->member.para.pFmt ); return TRUE; } Modified: trunk/reactos/dll/win32/riched20/editor.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/editor.…
============================================================================== --- trunk/reactos/dll/win32/riched20/editor.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/editor.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -96,7 +96,7 @@ + EM_SETCHARFORMAT (partly done, no ANSI) - EM_SETEDITSTYLE + EM_SETEVENTMASK (few notifications supported) - - EM_SETFONTSIZE + + EM_SETFONTSIZE - EM_SETIMECOLOR 1.0asian - EM_SETIMEOPTIONS 1.0asian - EM_SETIMESTATUS @@ -172,14 +172,14 @@ - ES_AUTOHSCROLL - ES_AUTOVSCROLL - - ES_CENTER + + ES_CENTER + ES_DISABLENOSCROLL (scrollbar is always visible) - ES_EX_NOCALLOLEINIT - - ES_LEFT + + ES_LEFT - ES_MULTILINE (currently single line controls aren't supported) - ES_NOIME - ES_READONLY (I'm not sure if beeping is the proper behaviour) - - ES_RIGHT + + ES_RIGHT - ES_SAVESEL - ES_SELFIME - ES_SUNKEN @@ -530,7 +530,7 @@ ME_Style *style2; RTFFlushOutputBuffer(info); /* FIXME too slow ? how come ? */ - style2 = ME_ApplyStyle(info->style, &fmt); + style2 = ME_ApplyStyle(info->editor, info->style, &fmt); ME_ReleaseStyle(info->style); info->style = style2; info->styleChanged = TRUE; @@ -1233,136 +1233,191 @@ return ret; } +static void ME_RTFReadShpPictGroup( RTF_Info *info ) +{ + int level = 1; + + for (;;) + { + RTFGetToken (info); + + if (info->rtfClass == rtfEOF) return; + if (RTFCheckCM( info, rtfGroup, rtfEndGroup )) + { + if (--level == 0) break; + } + else if (RTFCheckCM( info, rtfGroup, rtfBeginGroup )) + { + level++; + } + else + { + RTFRouteToken( info ); + if (RTFCheckCM( info, rtfGroup, rtfEndGroup )) + level--; + } + } + + RTFRouteToken( info ); /* feed "}" back to router */ + return; +} + +static DWORD read_hex_data( RTF_Info *info, BYTE **out ) +{ + DWORD read = 0, size = 1024; + BYTE *buf, val; + BOOL flip; + + *out = NULL; + + if (info->rtfClass != rtfText) + { + ERR("Called with incorrect token\n"); + return 0; + } + + buf = HeapAlloc( GetProcessHeap(), 0, size ); + if (!buf) return 0; + + val = info->rtfMajor; + for (flip = TRUE;; flip = !flip) + { + RTFGetToken( info ); + if (info->rtfClass == rtfEOF) + { + HeapFree( GetProcessHeap(), 0, buf ); + return 0; + } + if (info->rtfClass != rtfText) break; + if (flip) + { + if (read >= size) + { + size *= 2; + buf = HeapReAlloc( GetProcessHeap(), 0, buf, size ); + if (!buf) return 0; + } + buf[read++] = RTFCharToHex(val) * 16 + RTFCharToHex(info->rtfMajor); + } + else + val = info->rtfMajor; + } + if (flip) FIXME("wrong hex string\n"); + + *out = buf; + return read; +} + static void ME_RTFReadPictGroup(RTF_Info *info) { - SIZEL sz; - BYTE* buffer = NULL; - unsigned bufsz, bufidx; - BOOL flip; - BYTE val; - METAFILEPICT mfp; - HENHMETAFILE hemf; - HBITMAP hbmp; - enum gfxkind {gfx_unknown = 0, gfx_enhmetafile, gfx_metafile, gfx_dib} gfx = gfx_unknown; - - RTFGetToken (info); - if (info->rtfClass == rtfEOF) + SIZEL sz; + BYTE *buffer = NULL; + DWORD size = 0; + METAFILEPICT mfp; + HENHMETAFILE hemf; + HBITMAP hbmp; + enum gfxkind {gfx_unknown = 0, gfx_enhmetafile, gfx_metafile, gfx_dib} gfx = gfx_unknown; + int level = 1; + + mfp.mm = MM_TEXT; + sz.cx = sz.cy = 0; + + for (;;) + { + RTFGetToken( info ); + + if (info->rtfClass == rtfText) + { + if (level == 1) + { + if (!buffer) + size = read_hex_data( info, &buffer ); + } + else + { + RTFSkipGroup( info ); + } + } /* We potentially have a new token so fall through. */ + + if (info->rtfClass == rtfEOF) return; + + if (RTFCheckCM( info, rtfGroup, rtfEndGroup )) + { + if (--level == 0) break; + continue; + } + if (RTFCheckCM( info, rtfGroup, rtfBeginGroup )) + { + level++; + continue; + } + if (!RTFCheckCM( info, rtfControl, rtfPictAttr )) + { + RTFRouteToken( info ); + if (RTFCheckCM( info, rtfGroup, rtfEndGroup )) + level--; + continue; + } + + if (RTFCheckMM( info, rtfPictAttr, rtfWinMetafile )) + { + mfp.mm = info->rtfParam; + gfx = gfx_metafile; + } + else if (RTFCheckMM( info, rtfPictAttr, rtfDevIndBitmap )) + { + if (info->rtfParam != 0) FIXME("dibitmap should be 0 (%d)\n", info->rtfParam); + gfx = gfx_dib; + } + else if (RTFCheckMM( info, rtfPictAttr, rtfEmfBlip )) + gfx = gfx_enhmetafile; + else if (RTFCheckMM( info, rtfPictAttr, rtfPicWid )) + mfp.xExt = info->rtfParam; + else if (RTFCheckMM( info, rtfPictAttr, rtfPicHt )) + mfp.yExt = info->rtfParam; + else if (RTFCheckMM( info, rtfPictAttr, rtfPicGoalWid )) + sz.cx = info->rtfParam; + else if (RTFCheckMM( info, rtfPictAttr, rtfPicGoalHt )) + sz.cy = info->rtfParam; + else + FIXME("Non supported attribute: %d %d %d\n", info->rtfClass, info->rtfMajor, info->rtfMinor); + } + + if (buffer) + { + switch (gfx) + { + case gfx_enhmetafile: + if ((hemf = SetEnhMetaFileBits( size, buffer ))) + ME_RTFInsertOleObject( info, hemf, NULL, &sz ); + break; + case gfx_metafile: + if ((hemf = SetWinMetaFileBits( size, buffer, NULL, &mfp ))) + ME_RTFInsertOleObject( info, hemf, NULL, &sz ); + break; + case gfx_dib: + { + BITMAPINFO *bi = (BITMAPINFO*)buffer; + HDC hdc = GetDC(0); + unsigned nc = bi->bmiHeader.biClrUsed; + + /* not quite right, especially for bitfields type of compression */ + if (!nc && bi->bmiHeader.biBitCount <= 8) + nc = 1 << bi->bmiHeader.biBitCount; + if ((hbmp = CreateDIBitmap( hdc, &bi->bmiHeader, + CBM_INIT, (char*)(bi + 1) + nc * sizeof(RGBQUAD), + bi, DIB_RGB_COLORS)) ) + ME_RTFInsertOleObject( info, NULL, hbmp, &sz ); + ReleaseDC( 0, hdc ); + break; + } + default: + break; + } + } + HeapFree( GetProcessHeap(), 0, buffer ); + RTFRouteToken( info ); /* feed "}" back to router */ return; - mfp.mm = MM_TEXT; - /* fetch picture type */ - if (RTFCheckMM (info, rtfPictAttr, rtfWinMetafile)) - { - mfp.mm = info->rtfParam; - gfx = gfx_metafile; - } - else if (RTFCheckMM (info, rtfPictAttr, rtfDevIndBitmap)) - { - if (info->rtfParam != 0) FIXME("dibitmap should be 0 (%d)\n", info->rtfParam); - gfx = gfx_dib; - } - else if (RTFCheckMM (info, rtfPictAttr, rtfEmfBlip)) - { - gfx = gfx_enhmetafile; - } - else - { - FIXME("%d %d\n", info->rtfMajor, info->rtfMinor); - goto skip_group; - } - sz.cx = sz.cy = 0; - /* fetch picture attributes */ - for (;;) - { - RTFGetToken (info); - if (info->rtfClass == rtfEOF) - return; - if (info->rtfClass == rtfText) - break; - if (!RTFCheckCM (info, rtfControl, rtfPictAttr)) - { - ERR("Expected picture attribute (%d %d)\n", - info->rtfClass, info->rtfMajor); - goto skip_group; - } - else if (RTFCheckMM (info, rtfPictAttr, rtfPicWid)) - { - if (gfx == gfx_metafile) mfp.xExt = info->rtfParam; - } - else if (RTFCheckMM (info, rtfPictAttr, rtfPicHt)) - { - if (gfx == gfx_metafile) mfp.yExt = info->rtfParam; - } - else if (RTFCheckMM (info, rtfPictAttr, rtfPicGoalWid)) - sz.cx = info->rtfParam; - else if (RTFCheckMM (info, rtfPictAttr, rtfPicGoalHt)) - sz.cy = info->rtfParam; - else - FIXME("Non supported attribute: %d %d %d\n", info->rtfClass, info->rtfMajor, info->rtfMinor); - } - /* fetch picture data */ - bufsz = 1024; - bufidx = 0; - buffer = HeapAlloc(GetProcessHeap(), 0, bufsz); - val = info->rtfMajor; - for (flip = TRUE;; flip = !flip) - { - RTFGetToken (info); - if (info->rtfClass == rtfEOF) - { - HeapFree(GetProcessHeap(), 0, buffer); - return; /* Warn ?? */ - } - if (RTFCheckCM(info, rtfGroup, rtfEndGroup)) - break; - if (info->rtfClass != rtfText) goto skip_group; - if (flip) - { - if (bufidx >= bufsz && - !(buffer = HeapReAlloc(GetProcessHeap(), 0, buffer, bufsz += 1024))) - goto skip_group; - buffer[bufidx++] = RTFCharToHex(val) * 16 + RTFCharToHex(info->rtfMajor); - } - else - val = info->rtfMajor; - } - if (flip) FIXME("wrong hex string\n"); - - switch (gfx) - { - case gfx_enhmetafile: - if ((hemf = SetEnhMetaFileBits(bufidx, buffer))) - ME_RTFInsertOleObject(info, hemf, NULL, &sz); - break; - case gfx_metafile: - if ((hemf = SetWinMetaFileBits(bufidx, buffer, NULL, &mfp))) - ME_RTFInsertOleObject(info, hemf, NULL, &sz); - break; - case gfx_dib: - { - BITMAPINFO* bi = (BITMAPINFO*)buffer; - HDC hdc = GetDC(0); - unsigned nc = bi->bmiHeader.biClrUsed; - - /* not quite right, especially for bitfields type of compression */ - if (!nc && bi->bmiHeader.biBitCount <= 8) - nc = 1 << bi->bmiHeader.biBitCount; - if ((hbmp = CreateDIBitmap(hdc, &bi->bmiHeader, - CBM_INIT, (char*)(bi + 1) + nc * sizeof(RGBQUAD), - bi, DIB_RGB_COLORS))) - ME_RTFInsertOleObject(info, NULL, hbmp, &sz); - ReleaseDC(0, hdc); - } - break; - default: - break; - } - HeapFree(GetProcessHeap(), 0, buffer); - RTFRouteToken (info); /* feed "}" back to router */ - return; -skip_group: - HeapFree(GetProcessHeap(), 0, buffer); - RTFSkipGroup(info); - RTFRouteToken(info); /* feed "}" back to router */ } /* for now, lookup the \result part and use it, whatever the object */ @@ -1506,7 +1561,7 @@ ME_GetTextLength(editor), FALSE); from = to = 0; ME_ClearTempStyle(editor); - ME_SetDefaultParaFormat(editor->pCursors[0].pPara->member.para.pFmt); + ME_SetDefaultParaFormat(editor, editor->pCursors[0].pPara->member.para.pFmt); } @@ -1551,6 +1606,7 @@ WriterInit(&parser); RTFInit(&parser); RTFSetReadHook(&parser, ME_RTFReadHook); + RTFSetDestinationCallback(&parser, rtfShpPict, ME_RTFReadShpPictGroup); RTFSetDestinationCallback(&parser, rtfPict, ME_RTFReadPictGroup); RTFSetDestinationCallback(&parser, rtfObject, ME_RTFReadObjectGroup); if (!parser.editor->bEmulateVersion10) /* v4.1 */ @@ -2306,7 +2362,7 @@ ME_InsertTextFromCursor(editor, 0, &endl, 1, editor->pCursors[0].pRun->member.run.style); para = editor->pBuffer->pFirst->member.para.next_para; - ME_SetDefaultParaFormat(para->member.para.pFmt); + ME_SetDefaultParaFormat(editor, para->member.para.pFmt); para->member.para.nFlags = MEPF_REWRAP; editor->pCursors[0].pPara = para; editor->pCursors[0].pRun = ME_FindItemFwd(para, diRun); @@ -2732,7 +2788,7 @@ return TRUE; } -ME_TextEditor *ME_MakeEditor(ITextHost *texthost, BOOL bEmulateVersion10) +ME_TextEditor *ME_MakeEditor(ITextHost *texthost, BOOL bEmulateVersion10, DWORD csStyle) { ME_TextEditor *ed = ALLOC_OBJ(ME_TextEditor); int i; @@ -2746,6 +2802,11 @@ ed->reOle = NULL; ed->bEmulateVersion10 = bEmulateVersion10; ed->styleFlags = 0; + ed->alignStyle = PFA_LEFT; + if (csStyle & ES_RIGHT) + ed->alignStyle = PFA_RIGHT; + if (csStyle & ES_CENTER) + ed->alignStyle = PFA_CENTER; ITextHost_TxGetPropertyBits(texthost, (TXTBIT_RICHTEXT|TXTBIT_MULTILINE| TXTBIT_READONLY|TXTBIT_USEPASSWORD| @@ -2857,6 +2918,7 @@ ed->wheel_remain = 0; + list_init( &ed->style_list ); OleInitialize(NULL); return ed; @@ -2866,6 +2928,7 @@ { ME_DisplayItem *pFirst = editor->pBuffer->pFirst; ME_DisplayItem *p = pFirst, *pNext = NULL; + ME_Style *s, *cursor2; int i; ME_ClearTempStyle(editor); @@ -2875,6 +2938,10 @@ ME_DestroyDisplayItem(p); p = pNext; } + + LIST_FOR_EACH_ENTRY_SAFE( s, cursor2, &editor->style_list, ME_Style, entry ) + ME_DestroyStyle( s ); + ME_ReleaseStyle(editor->pBuffer->pDefaultStyle); for (i=0; i<HFONT_CACHE_SIZE; i++) { @@ -3262,7 +3329,6 @@ UNSUPPORTED_MSG(EM_SELECTIONTYPE) UNSUPPORTED_MSG(EM_SETBIDIOPTIONS) UNSUPPORTED_MSG(EM_SETEDITSTYLE) - UNSUPPORTED_MSG(EM_SETFONTSIZE) UNSUPPORTED_MSG(EM_SETLANGOPTIONS) UNSUPPORTED_MSG(EM_SETMARGINS) UNSUPPORTED_MSG(EM_SETPALETTE) @@ -3337,6 +3403,48 @@ DWORD settings = editor->styleFlags & mask; return settings; + } + case EM_SETFONTSIZE: + { + CHARFORMAT2W cf; + LONG tmp_size, size; + BOOL is_increase = ((LONG)wParam > 0); + + if (editor->mode & TM_PLAINTEXT) + return FALSE; + + cf.cbSize = sizeof(cf); + cf.dwMask = CFM_SIZE; + ME_GetSelectionCharFormat(editor, &cf); + tmp_size = (cf.yHeight / 20) + wParam; + + if (tmp_size <= 1) + size = 1; + else if (tmp_size > 12 && tmp_size < 28 && tmp_size % 2) + size = tmp_size + (is_increase ? 1 : -1); + else if (tmp_size > 28 && tmp_size < 36) + size = is_increase ? 36 : 28; + else if (tmp_size > 36 && tmp_size < 48) + size = is_increase ? 48 : 36; + else if (tmp_size > 48 && tmp_size < 72) + size = is_increase ? 72 : 48; + else if (tmp_size > 72 && tmp_size < 80) + size = is_increase ? 80 : 72; + else if (tmp_size > 80 && tmp_size < 1638) + size = 10 * (is_increase ? (tmp_size / 10 + 1) : (tmp_size / 10)); + else if (tmp_size >= 1638) + size = 1638; + else + size = tmp_size; + + cf.yHeight = size * 20; /* convert twips to points */ + ME_SetSelectionCharFormat(editor, &cf); + ME_CommitUndo(editor); + ME_WrapMarkedParagraphs(editor); + ME_UpdateScrollBar(editor); + ME_Repaint(editor); + + return TRUE; } case EM_SETOPTIONS: { @@ -3723,7 +3831,10 @@ if (!wParam) wParam = (WPARAM)GetStockObject(SYSTEM_FONT); - GetObjectW((HGDIOBJ)wParam, sizeof(LOGFONTW), &lf); + + if (!GetObjectW((HGDIOBJ)wParam, sizeof(LOGFONTW), &lf)) + return 0; + hDC = ITextHost_TxGetDC(editor->texthost); ME_CharFormatFromLogFont(hDC, &lf, &fmt); ITextHost_TxReleaseDC(editor->texthost, hDC); Modified: trunk/reactos/dll/win32/riched20/editor.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/editor.…
============================================================================== --- trunk/reactos/dll/win32/riched20/editor.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/editor.h [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -104,9 +104,10 @@ /* style.c */ ME_Style *ME_MakeStyle(CHARFORMAT2W *style) DECLSPEC_HIDDEN; void ME_AddRefStyle(ME_Style *item) DECLSPEC_HIDDEN; +void ME_DestroyStyle(ME_Style *item) DECLSPEC_HIDDEN; void ME_ReleaseStyle(ME_Style *item) DECLSPEC_HIDDEN; ME_Style *ME_GetInsertStyle(ME_TextEditor *editor, int nCursor) DECLSPEC_HIDDEN; -ME_Style *ME_ApplyStyle(ME_Style *sSrc, CHARFORMAT2W *style) DECLSPEC_HIDDEN; +ME_Style *ME_ApplyStyle(ME_TextEditor *ed, ME_Style *sSrc, CHARFORMAT2W *style) DECLSPEC_HIDDEN; HFONT ME_SelectStyleFont(ME_Context *c, ME_Style *s) DECLSPEC_HIDDEN; void ME_UnselectStyleFont(ME_Context *c, ME_Style *s, HFONT hOldFont) DECLSPEC_HIDDEN; void ME_InitCharFormat2W(CHARFORMAT2W *pFmt) DECLSPEC_HIDDEN; @@ -248,7 +249,7 @@ BOOL ME_SetSelectionParaFormat(ME_TextEditor *editor, const PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN; void ME_GetSelectionParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN; void ME_MarkAllForWrapping(ME_TextEditor *editor) DECLSPEC_HIDDEN; -void ME_SetDefaultParaFormat(PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN; +void ME_SetDefaultParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt) DECLSPEC_HIDDEN; /* paint.c */ void ME_PaintContent(ME_TextEditor *editor, HDC hDC, const RECT *rcUpdate) DECLSPEC_HIDDEN; @@ -284,7 +285,7 @@ void ME_GetITextDocumentInterface(IRichEditOle *iface, LPVOID *ppvObj) DECLSPEC_HIDDEN; /* editor.c */ -ME_TextEditor *ME_MakeEditor(ITextHost *texthost, BOOL bEmulateVersion10) DECLSPEC_HIDDEN; +ME_TextEditor *ME_MakeEditor(ITextHost *texthost, BOOL bEmulateVersion10, DWORD csStyle) DECLSPEC_HIDDEN; void ME_DestroyEditor(ME_TextEditor *editor) DECLSPEC_HIDDEN; LRESULT ME_HandleMessage(ME_TextEditor *editor, UINT msg, WPARAM wParam, LPARAM lParam, BOOL unicode, HRESULT* phresult) DECLSPEC_HIDDEN; Modified: trunk/reactos/dll/win32/riched20/editstr.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/editstr…
============================================================================== --- trunk/reactos/dll/win32/riched20/editstr.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/editstr.h [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -31,14 +31,25 @@ int nLen, nBuffer; } ME_String; +typedef struct tagME_FontCacheItem +{ + LOGFONTW lfSpecs; + HFONT hFont; + int nRefs; + int nAge; +} ME_FontCacheItem; + +#define HFONT_CACHE_SIZE 10 + typedef struct tagME_Style { CHARFORMAT2W fmt; - HFONT hFont; /* cached font for the style */ + ME_FontCacheItem *font_cache; /* cached font for the style */ TEXTMETRICW tm; /* cached font metrics for the style */ int nRefs; /* reference count */ SCRIPT_CACHE script_cache; + struct list entry; } ME_Style; typedef enum { @@ -343,16 +354,6 @@ UINT nNestingLevel; } ME_OutStream; -typedef struct tagME_FontCacheItem -{ - LOGFONTW lfSpecs; - HFONT hFont; - int nRefs; - int nAge; -} ME_FontCacheItem; - -#define HFONT_CACHE_SIZE 10 - typedef struct tagME_TextEditor { HWND hWnd, hwndParent; @@ -362,6 +363,7 @@ ME_TextBuffer *pBuffer; ME_Cursor *pCursors; DWORD styleFlags; + DWORD alignStyle; DWORD exStyleFlags; int nCursors; SIZE sizeWindow; @@ -414,6 +416,7 @@ BOOL bMouseCaptured; int wheel_remain; + struct list style_list; } ME_TextEditor; typedef struct tagME_Context Modified: trunk/reactos/dll/win32/riched20/list.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/list.c?…
============================================================================== --- trunk/reactos/dll/win32/riched20/list.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/list.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -179,13 +179,6 @@ ZeroMemory(item, sizeof(ME_DisplayItem)); item->type = type; item->prev = item->next = NULL; - if (type == diParagraph) - { - item->member.para.pFmt = ALLOC_OBJ(PARAFORMAT2); - ME_SetDefaultParaFormat(item->member.para.pFmt); - item->member.para.nFlags = MEPF_REWRAP; - } - return item; } Modified: trunk/reactos/dll/win32/riched20/para.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/para.c?…
============================================================================== --- trunk/reactos/dll/win32/riched20/para.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/para.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -23,6 +23,16 @@ WINE_DEFAULT_DEBUG_CHANNEL(richedit); +static ME_DisplayItem *make_para(ME_TextEditor *editor) +{ + ME_DisplayItem *item = ME_MakeDI(diParagraph); + + item->member.para.pFmt = ALLOC_OBJ(PARAFORMAT2); + ME_SetDefaultParaFormat(editor, item->member.para.pFmt); + item->member.para.nFlags = MEPF_REWRAP; + return item; +} + void ME_MakeFirstParagraph(ME_TextEditor *editor) { ME_Context c; @@ -30,7 +40,7 @@ LOGFONTW lf; HFONT hf; ME_TextBuffer *text = editor->pBuffer; - ME_DisplayItem *para = ME_MakeDI(diParagraph); + ME_DisplayItem *para = make_para(editor); ME_DisplayItem *run; ME_Style *style; int eol_len; @@ -196,7 +206,7 @@ { ME_DisplayItem *next_para = NULL; ME_DisplayItem *run_para = NULL; - ME_DisplayItem *new_para = ME_MakeDI(diParagraph); + ME_DisplayItem *new_para = make_para(editor); ME_DisplayItem *end_run; int ofs, i; ME_DisplayItem *pp; @@ -619,12 +629,12 @@ } } -void ME_SetDefaultParaFormat(PARAFORMAT2 *pFmt) +void ME_SetDefaultParaFormat(ME_TextEditor *editor, PARAFORMAT2 *pFmt) { ZeroMemory(pFmt, sizeof(PARAFORMAT2)); pFmt->cbSize = sizeof(PARAFORMAT2); pFmt->dwMask = PFM_ALL2; - pFmt->wAlignment = PFA_LEFT; + pFmt->wAlignment = editor->alignStyle; pFmt->sStyle = -1; pFmt->bOutlineLevel = TRUE; } Modified: trunk/reactos/dll/win32/riched20/reader.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/reader.…
============================================================================== --- trunk/reactos/dll/win32/riched20/reader.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/reader.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -1797,6 +1797,8 @@ { rtfDestination, rtfNeXTGraphic, "NeXTGraphic", 0 }, { rtfDestination, rtfNestTableProps, "nesttableprops", 0 }, { rtfDestination, rtfNoNestTables, "nonesttables", 0 }, + { rtfDestination, rtfShpPict, "shppict", 0 }, + { rtfDestination, rtfNonShpPict, "nonshppict", 0 }, /* * Font families Modified: trunk/reactos/dll/win32/riched20/rtf.h URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/rtf.h?r…
============================================================================== --- trunk/reactos/dll/win32/riched20/rtf.h [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/rtf.h [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -174,7 +174,9 @@ # define rtfGenerator 74 # define rtfNestTableProps 75 # define rtfNoNestTables 76 -# define rtfMaxDestination 77 /* highest dest + 1 */ +# define rtfShpPict 77 +# define rtfNonShpPict 78 +# define rtfMaxDestination 79 /* highest dest + 1 */ # define rtfFontFamily 4 # define rtfFFNil 0 Modified: trunk/reactos/dll/win32/riched20/run.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/run.c?r…
============================================================================== --- trunk/reactos/dll/win32/riched20/run.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/run.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -700,7 +700,7 @@ ME_Style *s; if (!editor->pBuffer->pCharStyle) editor->pBuffer->pCharStyle = ME_GetInsertStyle(editor, 0); - s = ME_ApplyStyle(editor->pBuffer->pCharStyle, pFmt); + s = ME_ApplyStyle(editor, editor->pBuffer->pCharStyle, pFmt); ME_ReleaseStyle(editor->pBuffer->pCharStyle); editor->pBuffer->pCharStyle = s; } else { @@ -758,7 +758,7 @@ for (run = start_run; run != end_run; run = ME_FindItemFwd( run, diRun )) { - ME_Style *new_style = ME_ApplyStyle(run->member.run.style, pFmt); + ME_Style *new_style = ME_ApplyStyle(editor, run->member.run.style, pFmt); add_undo_set_char_fmt( editor, run->member.run.para->nCharOfs + run->member.run.nCharOfs, run->member.run.len, &run->member.run.style->fmt ); @@ -766,25 +766,6 @@ run->member.run.style = new_style; run->member.run.para->nFlags |= MEPF_REWRAP; } -} - -/****************************************************************************** - * ME_SetDefaultCharFormat - * - * Applies a style change to the default character style. - */ -void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod) -{ - ME_Style *style; - - assert(mod->cbSize == sizeof(CHARFORMAT2W)); - style = ME_ApplyStyle(editor->pBuffer->pDefaultStyle, mod); - editor->pBuffer->pDefaultStyle->fmt = style->fmt; - editor->pBuffer->pDefaultStyle->tm = style->tm; - ScriptFreeCache( &editor->pBuffer->pDefaultStyle->script_cache ); - ME_ReleaseStyle(style); - ME_MarkAllForWrapping(editor); - /* pcf = editor->pBuffer->pDefaultStyle->fmt; */ } static void ME_GetRunCharFormat(ME_TextEditor *editor, ME_DisplayItem *run, CHARFORMAT2W *pFmt) Modified: trunk/reactos/dll/win32/riched20/style.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/style.c…
============================================================================== --- trunk/reactos/dll/win32/riched20/style.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/style.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -146,25 +146,26 @@ assert(style->cbSize == sizeof(CHARFORMAT2W)); s->fmt = *style; s->nRefs = 1; - s->hFont = NULL; + s->font_cache = NULL; memset(&s->tm, 0, sizeof(s->tm)); s->tm.tmAscent = -1; s->script_cache = NULL; + list_init(&s->entry); all_refs++; TRACE_(richedit_style)("ME_MakeStyle %p, total refs=%d\n", s, all_refs); return s; } #define COPY_STYLE_ITEM(mask, member) \ - if (style->dwMask & mask) { \ - s->fmt.dwMask |= mask;\ - s->fmt.member = style->member;\ + if (mod->dwMask & mask) { \ + fmt.dwMask |= mask;\ + fmt.member = mod->member;\ } #define COPY_STYLE_ITEM_MEMCPY(mask, member) \ - if (style->dwMask & mask) { \ - s->fmt.dwMask |= mask;\ - CopyMemory(s->fmt.member, style->member, sizeof(style->member));\ + if (mod->dwMask & mask) { \ + fmt.dwMask |= mask;\ + CopyMemory(fmt.member, mod->member, sizeof(mod->member));\ } void ME_InitCharFormat2W(CHARFORMAT2W *pFmt) @@ -173,10 +174,12 @@ pFmt->cbSize = sizeof(CHARFORMAT2W); } -ME_Style *ME_ApplyStyle(ME_Style *sSrc, CHARFORMAT2W *style) -{ - ME_Style *s = ME_MakeStyle(&sSrc->fmt); - assert(style->cbSize == sizeof(CHARFORMAT2W)); +ME_Style *ME_ApplyStyle(ME_TextEditor *editor, ME_Style *sSrc, CHARFORMAT2W *mod) +{ + CHARFORMAT2W fmt = sSrc->fmt; + ME_Style *s; + + assert(mod->cbSize == sizeof(CHARFORMAT2W)); COPY_STYLE_ITEM(CFM_ANIMATION, bAnimation); COPY_STYLE_ITEM(CFM_BACKCOLOR, crBackColor); COPY_STYLE_ITEM(CFM_CHARSET, bCharSet); @@ -186,9 +189,9 @@ COPY_STYLE_ITEM(CFM_LCID, lcid); COPY_STYLE_ITEM(CFM_OFFSET, yOffset); COPY_STYLE_ITEM(CFM_REVAUTHOR, bRevAuthor); - if (style->dwMask & CFM_SIZE) { - s->fmt.dwMask |= CFM_SIZE; - s->fmt.yHeight = min(style->yHeight, yHeightCharPtsMost * 20); + if (mod->dwMask & CFM_SIZE) { + fmt.dwMask |= CFM_SIZE; + fmt.yHeight = min(mod->yHeight, yHeightCharPtsMost * 20); } COPY_STYLE_ITEM(CFM_SPACING, sSpacing); COPY_STYLE_ITEM(CFM_STYLE, sStyle); @@ -197,31 +200,46 @@ /* FIXME: this is not documented this way, but that's the more logical */ COPY_STYLE_ITEM(CFM_FACE, bPitchAndFamily); - s->fmt.dwEffects &= ~(style->dwMask); - s->fmt.dwEffects |= style->dwEffects & style->dwMask; - s->fmt.dwMask |= style->dwMask; - if (style->dwMask & CFM_COLOR) - { - if (style->dwEffects & CFE_AUTOCOLOR) - s->fmt.dwEffects |= CFE_AUTOCOLOR; + fmt.dwEffects &= ~(mod->dwMask); + fmt.dwEffects |= mod->dwEffects & mod->dwMask; + fmt.dwMask |= mod->dwMask; + if (mod->dwMask & CFM_COLOR) + { + if (mod->dwEffects & CFE_AUTOCOLOR) + fmt.dwEffects |= CFE_AUTOCOLOR; else - s->fmt.dwEffects &= ~CFE_AUTOCOLOR; - } - if (style->dwMask & CFM_UNDERLINE) - { - s->fmt.dwMask |= CFM_UNDERLINETYPE; - s->fmt.bUnderlineType = (style->dwEffects & CFM_UNDERLINE) ? + fmt.dwEffects &= ~CFE_AUTOCOLOR; + } + if (mod->dwMask & CFM_UNDERLINE) + { + fmt.dwMask |= CFM_UNDERLINETYPE; + fmt.bUnderlineType = (mod->dwEffects & CFM_UNDERLINE) ? CFU_CF1UNDERLINE : CFU_UNDERLINENONE; } - if (style->dwMask & CFM_BOLD && !(style->dwMask & CFM_WEIGHT)) - { - s->fmt.wWeight = (style->dwEffects & CFE_BOLD) ? FW_BOLD : FW_NORMAL; - } else if (style->dwMask & CFM_WEIGHT && !(style->dwMask & CFM_BOLD)) { - if (style->wWeight > FW_NORMAL) - s->fmt.dwEffects |= CFE_BOLD; + if (mod->dwMask & CFM_BOLD && !(mod->dwMask & CFM_WEIGHT)) + { + fmt.wWeight = (mod->dwEffects & CFE_BOLD) ? FW_BOLD : FW_NORMAL; + } else if (mod->dwMask & CFM_WEIGHT && !(mod->dwMask & CFM_BOLD)) { + if (mod->wWeight > FW_NORMAL) + fmt.dwEffects |= CFE_BOLD; else - s->fmt.dwEffects &= ~CFE_BOLD; - } + fmt.dwEffects &= ~CFE_BOLD; + } + + LIST_FOR_EACH_ENTRY(s, &editor->style_list, ME_Style, entry) + { + if (!memcmp( &s->fmt, &fmt, sizeof(fmt) )) + { + TRACE_(richedit_style)("found existing style %p\n", s); + ME_AddRefStyle( s ); + return s; + } + } + + s = ME_MakeStyle( &fmt ); + if (s) + list_add_head( &editor->style_list, &s->entry ); + TRACE_(richedit_style)("created new style %p\n", s); return s; } @@ -383,8 +401,6 @@ { item = &c->editor->pFontCache[i]; TRACE_(richedit_style)("font reused %d\n", i); - - s->hFont = item->hFont; item->nRefs++; } else @@ -397,44 +413,41 @@ DeleteObject(item->hFont); item->hFont = NULL; } - s->hFont = CreateFontIndirectW(&lf); - assert(s->hFont); + item->hFont = CreateFontIndirectW(&lf); TRACE_(richedit_style)("font created %d\n", nEmpty); - item->hFont = s->hFont; item->nRefs = 1; item->lfSpecs = lf; } - hOldFont = SelectObject(c->hDC, s->hFont); + s->font_cache = item; + hOldFont = SelectObject(c->hDC, item->hFont); /* should be cached too, maybe ? */ GetTextMetricsW(c->hDC, &s->tm); return hOldFont; } +static void release_font_cache(ME_FontCacheItem *item) +{ + if (item->nRefs > 0) + { + item->nRefs--; + item->nAge = 0; + } +} + void ME_UnselectStyleFont(ME_Context *c, ME_Style *s, HFONT hOldFont) { - int i; - - assert(s); SelectObject(c->hDC, hOldFont); - for (i=0; i<HFONT_CACHE_SIZE; i++) - { - ME_FontCacheItem *pItem = &c->editor->pFontCache[i]; - if (pItem->hFont == s->hFont && pItem->nRefs > 0) - { - pItem->nRefs--; - pItem->nAge = 0; - s->hFont = NULL; - return; - } - } - assert(0 == "UnselectStyleFont without SelectStyleFont"); -} - -static void ME_DestroyStyle(ME_Style *s) { - if (s->hFont) - { - DeleteObject(s->hFont); - s->hFont = NULL; + release_font_cache(s->font_cache); + s->font_cache = NULL; +} + +void ME_DestroyStyle(ME_Style *s) +{ + list_remove( &s->entry ); + if (s->font_cache) + { + release_font_cache( s->font_cache ); + s->font_cache = NULL; } ScriptFreeCache( &s->script_cache ); FREE_OBJ(s); @@ -514,3 +527,31 @@ ME_ReleaseStyle(editor->pBuffer->pCharStyle); editor->pBuffer->pCharStyle = NULL; } + +/****************************************************************************** + * ME_SetDefaultCharFormat + * + * Applies a style change to the default character style. + * + * The default style is special in that it is mutable - runs + * in the document that have this style should change if the + * default style changes. That means we need to fix up this + * style manually. + */ +void ME_SetDefaultCharFormat(ME_TextEditor *editor, CHARFORMAT2W *mod) +{ + ME_Style *style, *def = editor->pBuffer->pDefaultStyle; + + assert(mod->cbSize == sizeof(CHARFORMAT2W)); + style = ME_ApplyStyle(editor, def, mod); + def->fmt = style->fmt; + def->tm = style->tm; + if (def->font_cache) + { + release_font_cache( def->font_cache ); + def->font_cache = NULL; + } + ScriptFreeCache( &def->script_cache ); + ME_ReleaseStyle( style ); + ME_MarkAllForWrapping( editor ); +} Modified: trunk/reactos/dll/win32/riched20/txthost.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/txthost…
============================================================================== --- trunk/reactos/dll/win32/riched20/txthost.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/txthost.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -44,7 +44,7 @@ texthost->hWnd = hwnd; texthost->bEmulateVersion10 = bEmulateVersion10; - editor = ME_MakeEditor(&texthost->ITextHost_iface, bEmulateVersion10); + editor = ME_MakeEditor(&texthost->ITextHost_iface, bEmulateVersion10, cs->style); editor->exStyleFlags = GetWindowLongW(hwnd, GWL_EXSTYLE); editor->styleFlags |= GetWindowLongW(hwnd, GWL_STYLE) & ES_WANTRETURN; editor->hWnd = hwnd; /* FIXME: Remove editor's dependence on hWnd */ Modified: trunk/reactos/dll/win32/riched20/txtsrv.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/txtsrv.…
============================================================================== --- trunk/reactos/dll/win32/riched20/txtsrv.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/txtsrv.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -402,7 +402,7 @@ ITextImpl->pMyHost = pITextHost; ITextImpl->IUnknown_inner.lpVtbl = &textservices_inner_vtbl; ITextImpl->ITextServices_iface.lpVtbl = &textservices_vtbl; - ITextImpl->editor = ME_MakeEditor(pITextHost, FALSE); + ITextImpl->editor = ME_MakeEditor(pITextHost, FALSE, ES_LEFT); ITextImpl->editor->exStyleFlags = 0; ITextImpl->editor->rcFormat.left = 0; ITextImpl->editor->rcFormat.top = 0; Modified: trunk/reactos/dll/win32/riched20/undo.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/undo.c?…
============================================================================== --- trunk/reactos/dll/win32/riched20/undo.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/undo.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -341,6 +341,7 @@ add_undo_set_para_fmt( editor, ¶->member.para ); *para->member.para.pFmt = undo->u.set_para_fmt.fmt; para->member.para.border = undo->u.set_para_fmt.border; + para->member.para.nFlags |= MEPF_REWRAP; break; } case undo_set_char_fmt: Modified: trunk/reactos/dll/win32/riched20/writer.c URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/riched20/writer.…
============================================================================== --- trunk/reactos/dll/win32/riched20/writer.c [iso-8859-1] (original) +++ trunk/reactos/dll/win32/riched20/writer.c [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -59,6 +59,8 @@ return FALSE; /* Don't resend partial chunks if nWritten < pStream->pos */ } + if (nWritten == pStream->pos) + pStream->written += nWritten; pStream->pos = 0; return TRUE; } Modified: trunk/reactos/media/doc/README.WINE URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
============================================================================== --- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original) +++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Mon Nov 23 09:36:58 2015 @@ -162,7 +162,7 @@ reactos/dll/win32/query # Synced to WineStaging-1.7.47 reactos/dll/win32/rasapi32 # Synced to WineStaging-1.7.47 reactos/dll/win32/resutils # Synced to WineStaging-1.7.47 -reactos/dll/win32/riched20 # Synced to WineStaging-1.7.47 +reactos/dll/win32/riched20 # Synced to WineStaging-1.7.55 reactos/dll/win32/riched32 # Synced to WineStaging-1.7.47 reactos/dll/win32/rpcrt4 # Synced to WineStaging-1.7.55 reactos/dll/win32/rsabase # Synced to WineStaging-1.7.47
9 years, 4 months
1
0
0
0
← Newer
1
...
14
15
16
17
18
19
20
...
46
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
Results per page:
10
25
50
100
200