diff --git a/reactos/dll/directx/devenum/createdevenum.c b/reactos/dll/directx/devenum/createdevenum.c index 19b41c9fbd6..5a20da58b1e 100644 --- a/reactos/dll/directx/devenum/createdevenum.c +++ b/reactos/dll/directx/devenum/createdevenum.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES ON THIS FILE: * - Implements ICreateDevEnum interface which creates an IEnumMoniker @@ -26,29 +26,12 @@ #define NONAMELESSSTRUCT #define NONAMELESSUNION - -#define DUMMYSTRUCTNAME s -#define DUMMYSTRUCTNAME1 s1 -#define DUMMYSTRUCTNAME2 s2 -#define DUMMYSTRUCTNAME3 s3 -#define DUMMYSTRUCTNAME4 s4 -#define DUMMYSTRUCTNAME5 s5 - -#define DUMMYUNIONNAME u -#define DUMMYUNIONNAME1 u1 -#define DUMMYUNIONNAME2 u2 -#define DUMMYUNIONNAME3 u3 -#define DUMMYUNIONNAME4 u4 -#define DUMMYUNIONNAME5 u5 -#define DUMMYUNIONNAME6 u6 -#define DUMMYUNIONNAME7 u7 -#define DUMMYUNIONNAME8 u8 - #include "devenum_private.h" +#include "vfw.h" #include "wine/debug.h" +#include "wine/unicode.h" #include "mmddk.h" -#include WINE_DEFAULT_DEBUG_CHANNEL(devenum); @@ -61,6 +44,14 @@ static const WCHAR wszActiveMovieKey[] = {'S','o','f','t','w','a','r','e','\\', 'M','i','c','r','o','s','o','f','t','\\', 'A','c','t','i','v','e','M','o','v','i','e','\\', 'd','e','v','e','n','u','m','\\',0}; +static const WCHAR wszFilterKeyName[] = {'F','i','l','t','e','r',0}; +static const WCHAR wszMeritName[] = {'M','e','r','i','t',0}; +static const WCHAR wszPins[] = {'P','i','n','s',0}; +static const WCHAR wszAllowedMany[] = {'A','l','l','o','w','e','d','M','a','n','y',0}; +static const WCHAR wszAllowedZero[] = {'A','l','l','o','w','e','d','Z','e','r','o',0}; +static const WCHAR wszDirection[] = {'D','i','r','e','c','t','i','o','n',0}; +static const WCHAR wszIsRendered[] = {'I','s','R','e','n','d','e','r','e','d',0}; +static const WCHAR wszTypes[] = {'T','y','p','e','s',0}; static ULONG WINAPI DEVENUM_ICreateDevEnum_AddRef(ICreateDevEnum * iface); static HRESULT DEVENUM_CreateSpecialCategories(void); @@ -80,12 +71,12 @@ static HRESULT WINAPI DEVENUM_ICreateDevEnum_QueryInterface( if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_ICreateDevEnum)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; DEVENUM_ICreateDevEnum_AddRef(iface); return S_OK; } - FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + FIXME("- no interface IID: %s\n", debugstr_guid(riid)); return E_NOINTERFACE; } @@ -113,10 +104,356 @@ static ULONG WINAPI DEVENUM_ICreateDevEnum_Release(ICreateDevEnum * iface) return 1; /* non-heap based object */ } +HRESULT DEVENUM_GetCategoryKey(REFCLSID clsidDeviceClass, HKEY *pBaseKey, WCHAR *wszRegKeyName, UINT maxLen) +{ + if (IsEqualGUID(clsidDeviceClass, &CLSID_AudioRendererCategory) || + IsEqualGUID(clsidDeviceClass, &CLSID_AudioInputDeviceCategory) || + IsEqualGUID(clsidDeviceClass, &CLSID_VideoInputDeviceCategory) || + IsEqualGUID(clsidDeviceClass, &CLSID_MidiRendererCategory)) + { + *pBaseKey = HKEY_CURRENT_USER; + strcpyW(wszRegKeyName, wszActiveMovieKey); + + if (!StringFromGUID2(clsidDeviceClass, wszRegKeyName + strlenW(wszRegKeyName), maxLen - strlenW(wszRegKeyName))) + return E_OUTOFMEMORY; + } + else + { + *pBaseKey = HKEY_CLASSES_ROOT; + strcpyW(wszRegKeyName, clsid_keyname); + strcatW(wszRegKeyName, wszRegSeparator); + + if (!StringFromGUID2(clsidDeviceClass, wszRegKeyName + CLSID_STR_LEN, maxLen - CLSID_STR_LEN)) + return E_OUTOFMEMORY; + + strcatW(wszRegKeyName, wszRegSeparator); + strcatW(wszRegKeyName, wszInstanceKeyName); + } + + return S_OK; +} + +static void DEVENUM_ReadPinTypes(HKEY hkeyPinKey, REGFILTERPINS *rgPin) +{ + HKEY hkeyTypes = NULL; + DWORD dwMajorTypes, i; + REGPINTYPES *lpMediaType = NULL; + DWORD dwMediaTypeSize = 0; + + if (RegOpenKeyExW(hkeyPinKey, wszTypes, 0, KEY_READ, &hkeyTypes) != ERROR_SUCCESS) + return ; + + if (RegQueryInfoKeyW(hkeyTypes, NULL, NULL, NULL, &dwMajorTypes, NULL, NULL, NULL, NULL, NULL, NULL, NULL) + != ERROR_SUCCESS) + { + RegCloseKey(hkeyTypes); + return ; + } + + for (i = 0; i < dwMajorTypes; i++) + { + HKEY hkeyMajorType = NULL; + WCHAR wszMajorTypeName[64]; + DWORD cName = sizeof(wszMajorTypeName) / sizeof(WCHAR); + DWORD dwMinorTypes, i1; + + if (RegEnumKeyExW(hkeyTypes, i, wszMajorTypeName, &cName, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) continue; + + if (RegOpenKeyExW(hkeyTypes, wszMajorTypeName, 0, KEY_READ, &hkeyMajorType) != ERROR_SUCCESS) continue; + + if (RegQueryInfoKeyW(hkeyMajorType, NULL, NULL, NULL, &dwMinorTypes, NULL, NULL, NULL, NULL, NULL, NULL, NULL) + != ERROR_SUCCESS) + { + RegCloseKey(hkeyMajorType); + continue; + } + + for (i1 = 0; i1 < dwMinorTypes; i1++) + { + WCHAR wszMinorTypeName[64]; + DWORD cName = sizeof(wszMinorTypeName) / sizeof(WCHAR); + CLSID *clsMajorType = NULL, *clsMinorType = NULL; + HRESULT hr; + + if (RegEnumKeyExW(hkeyMajorType, i1, wszMinorTypeName, &cName, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) continue; + + clsMinorType = CoTaskMemAlloc(sizeof(CLSID)); + if (!clsMinorType) continue; + + clsMajorType = CoTaskMemAlloc(sizeof(CLSID)); + if (!clsMajorType) goto error_cleanup_types; + + hr = CLSIDFromString(wszMinorTypeName, clsMinorType); + if (FAILED(hr)) goto error_cleanup_types; + + hr = CLSIDFromString(wszMajorTypeName, clsMajorType); + if (FAILED(hr)) goto error_cleanup_types; + + if (rgPin->nMediaTypes == dwMediaTypeSize) + { + DWORD dwNewSize = dwMediaTypeSize + (dwMediaTypeSize < 2 ? 1 : dwMediaTypeSize / 2); + REGPINTYPES *lpNewMediaType; + + lpNewMediaType = CoTaskMemRealloc(lpMediaType, sizeof(REGPINTYPES) * dwNewSize); + if (!lpNewMediaType) goto error_cleanup_types; + + lpMediaType = lpNewMediaType; + dwMediaTypeSize = dwNewSize; + } + + lpMediaType[rgPin->nMediaTypes].clsMajorType = clsMajorType; + lpMediaType[rgPin->nMediaTypes].clsMinorType = clsMinorType; + rgPin->nMediaTypes++; + continue; + + error_cleanup_types: + + if (clsMajorType) CoTaskMemFree(clsMajorType); + if (clsMinorType) CoTaskMemFree(clsMinorType); + } + + RegCloseKey(hkeyMajorType); + } + + RegCloseKey(hkeyTypes); + + if (lpMediaType && !rgPin->nMediaTypes) + { + CoTaskMemFree(lpMediaType); + lpMediaType = NULL; + } + + rgPin->lpMediaType = lpMediaType; +} + +static void DEVENUM_ReadPins(HKEY hkeyFilterClass, REGFILTER2 *rgf2) +{ + HKEY hkeyPins = NULL; + DWORD dwPinsSubkeys, i; + REGFILTERPINS *rgPins = NULL; + + if (RegOpenKeyExW(hkeyFilterClass, wszPins, 0, KEY_READ, &hkeyPins) != ERROR_SUCCESS) + return ; + + if (RegQueryInfoKeyW(hkeyPins, NULL, NULL, NULL, &dwPinsSubkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL) + != ERROR_SUCCESS) + { + RegCloseKey(hkeyPins); + return ; + } + + if (dwPinsSubkeys) + { + rgPins = CoTaskMemAlloc(sizeof(REGFILTERPINS) * dwPinsSubkeys); + if (!rgPins) + { + RegCloseKey(hkeyPins); + return ; + } + } + + for (i = 0; i < dwPinsSubkeys; i++) + { + HKEY hkeyPinKey = NULL; + WCHAR wszPinName[MAX_PATH]; + DWORD cName = sizeof(wszPinName) / sizeof(WCHAR); + DWORD Type, cbData; + REGFILTERPINS *rgPin = &rgPins[rgf2->u.s.cPins]; + LONG lRet; + + rgPin->strName = NULL; + rgPin->clsConnectsToFilter = &GUID_NULL; + rgPin->strConnectsToPin = NULL; + rgPin->nMediaTypes = 0; + rgPin->lpMediaType = NULL; + + if (RegEnumKeyExW(hkeyPins, i, wszPinName, &cName, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) continue; + + if (RegOpenKeyExW(hkeyPins, wszPinName, 0, KEY_READ, &hkeyPinKey) != ERROR_SUCCESS) continue; + + rgPin->strName = CoTaskMemAlloc((strlenW(wszPinName) + 1) * sizeof(WCHAR)); + if (!rgPin->strName) goto error_cleanup; + + strcpyW(rgPin->strName, wszPinName); + + cbData = sizeof(rgPin->bMany); + lRet = RegQueryValueExW(hkeyPinKey, wszAllowedMany, NULL, &Type, (LPBYTE)&rgPin->bMany, &cbData); + if (lRet != ERROR_SUCCESS || Type != REG_DWORD) + goto error_cleanup; + + cbData = sizeof(rgPin->bZero); + lRet = RegQueryValueExW(hkeyPinKey, wszAllowedZero, NULL, &Type, (LPBYTE)&rgPin->bZero, &cbData); + if (lRet != ERROR_SUCCESS || Type != REG_DWORD) + goto error_cleanup; + + cbData = sizeof(rgPin->bOutput); + lRet = RegQueryValueExW(hkeyPinKey, wszDirection, NULL, &Type, (LPBYTE)&rgPin->bOutput, &cbData); + if (lRet != ERROR_SUCCESS || Type != REG_DWORD) + goto error_cleanup; + + cbData = sizeof(rgPin->bRendered); + lRet = RegQueryValueExW(hkeyPinKey, wszIsRendered, NULL, &Type, (LPBYTE)&rgPin->bRendered, &cbData); + if (lRet != ERROR_SUCCESS || Type != REG_DWORD) + goto error_cleanup; + + DEVENUM_ReadPinTypes(hkeyPinKey, rgPin); + + ++rgf2->u.s.cPins; + continue; + + error_cleanup: + + RegCloseKey(hkeyPinKey); + if (rgPin->strName) CoTaskMemFree(rgPin->strName); + } + + RegCloseKey(hkeyPins); + + if (rgPins && !rgf2->u.s.cPins) + { + CoTaskMemFree(rgPins); + rgPins = NULL; + } + + rgf2->u.s.rgPins = rgPins; +} + +static HRESULT DEVENUM_RegisterLegacyAmFilters(void) +{ + HKEY hkeyFilter = NULL; + DWORD dwFilterSubkeys, i; + LONG lRet; + IFilterMapper2 *pMapper = NULL; + HRESULT hr; + + hr = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC, + &IID_IFilterMapper2, (void **) &pMapper); + if (SUCCEEDED(hr)) + { + lRet = RegOpenKeyExW(HKEY_CLASSES_ROOT, wszFilterKeyName, 0, KEY_READ, &hkeyFilter); + hr = HRESULT_FROM_WIN32(lRet); + } + + if (SUCCEEDED(hr)) + { + lRet = RegQueryInfoKeyW(hkeyFilter, NULL, NULL, NULL, &dwFilterSubkeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL); + hr = HRESULT_FROM_WIN32(lRet); + } + + if (SUCCEEDED(hr)) + { + for (i = 0; i < dwFilterSubkeys; i++) + { + WCHAR wszFilterSubkeyName[64]; + DWORD cName = sizeof(wszFilterSubkeyName) / sizeof(WCHAR); + HKEY hkeyCategoryBaseKey; + WCHAR wszRegKey[MAX_PATH]; + HKEY hkeyInstance = NULL; + HRESULT hr; + + if (RegEnumKeyExW(hkeyFilter, i, wszFilterSubkeyName, &cName, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) continue; + + hr = DEVENUM_GetCategoryKey(&CLSID_LegacyAmFilterCategory, &hkeyCategoryBaseKey, wszRegKey, MAX_PATH); + if (FAILED(hr)) continue; + + strcatW(wszRegKey, wszRegSeparator); + strcatW(wszRegKey, wszFilterSubkeyName); + + if (RegOpenKeyExW(HKEY_CLASSES_ROOT, wszRegKey, 0, KEY_READ, &hkeyInstance) == ERROR_SUCCESS) + { + RegCloseKey(hkeyInstance); + } + else + { + /* Filter is registered the IFilterMapper(1)-way in HKCR\Filter. Needs to be added to + * legacy am filter category. */ + HKEY hkeyFilterClass = NULL; + REGFILTER2 rgf2; + CLSID clsidFilter; + WCHAR wszFilterName[MAX_PATH]; + DWORD Type; + DWORD cbData; + HRESULT res; + IMoniker *pMoniker = NULL; + + TRACE("Registering %s\n", debugstr_w(wszFilterSubkeyName)); + + strcpyW(wszRegKey, clsid_keyname); + strcatW(wszRegKey, wszRegSeparator); + strcatW(wszRegKey, wszFilterSubkeyName); + + if (RegOpenKeyExW(HKEY_CLASSES_ROOT, wszRegKey, 0, KEY_READ, &hkeyFilterClass) != ERROR_SUCCESS) + continue; + + rgf2.dwVersion = 1; + rgf2.dwMerit = 0; + rgf2.u.s.cPins = 0; + rgf2.u.s.rgPins = NULL; + + cbData = sizeof(wszFilterName); + if (RegQueryValueExW(hkeyFilterClass, NULL, NULL, &Type, (LPBYTE)wszFilterName, &cbData) != ERROR_SUCCESS || + Type != REG_SZ) + goto cleanup; + + cbData = sizeof(rgf2.dwMerit); + if (RegQueryValueExW(hkeyFilterClass, wszMeritName, NULL, &Type, (LPBYTE)&rgf2.dwMerit, &cbData) != ERROR_SUCCESS || + Type != REG_DWORD) + goto cleanup; + + DEVENUM_ReadPins(hkeyFilterClass, &rgf2); + + res = CLSIDFromString(wszFilterSubkeyName, &clsidFilter); + if (FAILED(res)) goto cleanup; + + IFilterMapper2_RegisterFilter(pMapper, &clsidFilter, wszFilterName, &pMoniker, NULL, NULL, &rgf2); + + if (pMoniker) + IMoniker_Release(pMoniker); + + cleanup: + + if (hkeyFilterClass) RegCloseKey(hkeyFilterClass); + + if (rgf2.u.s.rgPins) + { + UINT iPin; + + for (iPin = 0; iPin < rgf2.u.s.cPins; iPin++) + { + CoTaskMemFree(rgf2.u.s.rgPins[iPin].strName); + + if (rgf2.u.s.rgPins[iPin].lpMediaType) + { + UINT iType; + + for (iType = 0; iType < rgf2.u.s.rgPins[iPin].nMediaTypes; iType++) + { + CoTaskMemFree((void*)rgf2.u.s.rgPins[iPin].lpMediaType[iType].clsMajorType); + CoTaskMemFree((void*)rgf2.u.s.rgPins[iPin].lpMediaType[iType].clsMinorType); + } + + CoTaskMemFree((void*)rgf2.u.s.rgPins[iPin].lpMediaType); + } + } + + CoTaskMemFree((void*)rgf2.u.s.rgPins); + } + } + } + } + + if (hkeyFilter) RegCloseKey(hkeyFilter); + + if (pMapper) + IFilterMapper2_Release(pMapper); + + return S_OK; +} + /********************************************************************** * DEVENUM_ICreateDevEnum_CreateClassEnumerator */ -HRESULT WINAPI DEVENUM_ICreateDevEnum_CreateClassEnumerator( +static HRESULT WINAPI DEVENUM_ICreateDevEnum_CreateClassEnumerator( ICreateDevEnum * iface, REFCLSID clsidDeviceClass, IEnumMoniker **ppEnumMoniker, @@ -125,80 +462,53 @@ HRESULT WINAPI DEVENUM_ICreateDevEnum_CreateClassEnumerator( WCHAR wszRegKey[MAX_PATH]; HKEY hkey; HKEY hbasekey; - BOOL bInterface = FALSE; + HRESULT hr; CreateDevEnumImpl *This = (CreateDevEnumImpl *)iface; - TRACE("(%p)->(%s, %p, %lx)\n\tDeviceClass:\t%s\n", This, debugstr_guid(clsidDeviceClass), ppEnumMoniker, dwFlags, debugstr_guid(clsidDeviceClass)); + TRACE("(%p)->(%s, %p, %x)\n\tDeviceClass:\t%s\n", This, debugstr_guid(clsidDeviceClass), ppEnumMoniker, dwFlags, debugstr_guid(clsidDeviceClass)); if (!ppEnumMoniker) return E_POINTER; *ppEnumMoniker = NULL; + if (IsEqualGUID(clsidDeviceClass, &CLSID_LegacyAmFilterCategory)) + { + DEVENUM_RegisterLegacyAmFilters(); + } + + hr = DEVENUM_GetCategoryKey(clsidDeviceClass, &hbasekey, wszRegKey, MAX_PATH); + if (FAILED(hr)) + return hr; + if (IsEqualGUID(clsidDeviceClass, &CLSID_AudioRendererCategory) || IsEqualGUID(clsidDeviceClass, &CLSID_AudioInputDeviceCategory) || + IsEqualGUID(clsidDeviceClass, &CLSID_VideoInputDeviceCategory) || IsEqualGUID(clsidDeviceClass, &CLSID_MidiRendererCategory)) { - hbasekey = HKEY_CURRENT_USER; - strcpyW(wszRegKey, wszActiveMovieKey); - - if (!StringFromGUID2(clsidDeviceClass, wszRegKey + strlenW(wszRegKey), MAX_PATH - strlenW(wszRegKey))) - return E_OUTOFMEMORY; + hr = DEVENUM_CreateSpecialCategories(); + if (FAILED(hr)) + return hr; + if (RegOpenKeyW(hbasekey, wszRegKey, &hkey) != ERROR_SUCCESS) + { + ERR("Couldn't open registry key for special device: %s\n", + debugstr_guid(clsidDeviceClass)); + return S_FALSE; + } } - else + else if (RegOpenKeyW(hbasekey, wszRegKey, &hkey) != ERROR_SUCCESS) { - hbasekey = HKEY_CLASSES_ROOT; - strcpyW(wszRegKey, clsid_keyname); - strcatW(wszRegKey, wszRegSeparator); - - if (!StringFromGUID2(clsidDeviceClass, wszRegKey + CLSID_STR_LEN, MAX_PATH - CLSID_STR_LEN)) - return E_OUTOFMEMORY; - - strcatW(wszRegKey, wszRegSeparator); - strcatW(wszRegKey, wszInstanceKeyName); + FIXME("Category %s not found\n", debugstr_guid(clsidDeviceClass)); + return S_FALSE; } - if (RegOpenKeyW(hbasekey, wszRegKey, &hkey) != ERROR_SUCCESS) - { - if (IsEqualGUID(clsidDeviceClass, &CLSID_AudioRendererCategory) || - IsEqualGUID(clsidDeviceClass, &CLSID_AudioInputDeviceCategory) || - IsEqualGUID(clsidDeviceClass, &CLSID_MidiRendererCategory)) - { - HRESULT hr = DEVENUM_CreateSpecialCategories(); - if (FAILED(hr)) - return hr; - if (RegOpenKeyW(hbasekey, wszRegKey, &hkey) != ERROR_SUCCESS) - { - ERR("Couldn't open registry key for special device: %s\n", - debugstr_guid(clsidDeviceClass)); - return S_FALSE; - } - } - else - { - wcscpy(wszRegKey, REGSTR_PATH_DEVICE_CLASSES); - wcscat(wszRegKey, L"\\"); - - if (!StringFromGUID2(clsidDeviceClass, wszRegKey + wcslen(wszRegKey), MAX_PATH - CLSID_STR_LEN)) - return E_OUTOFMEMORY; - - if (RegOpenKeyExW(HKEY_LOCAL_MACHINE, wszRegKey, 0, KEY_READ, &hkey) != ERROR_SUCCESS) - { - FIXME("Category %s not found\n", debugstr_guid(clsidDeviceClass)); - return S_FALSE; - } - - bInterface = TRUE; - } - } - - return DEVENUM_IEnumMoniker_Construct(hkey, ppEnumMoniker, bInterface); + return DEVENUM_IEnumMoniker_Construct(hkey, ppEnumMoniker); } /********************************************************************** * ICreateDevEnum_Vtbl */ -static ICreateDevEnumVtbl ICreateDevEnum_Vtbl = +static const ICreateDevEnumVtbl ICreateDevEnum_Vtbl = { DEVENUM_ICreateDevEnum_QueryInterface, DEVENUM_ICreateDevEnum_AddRef, @@ -229,8 +539,10 @@ static HRESULT DEVENUM_CreateAMCategoryKey(const CLSID * clsidCategory) res = E_INVALIDARG; if (SUCCEEDED(res)) - res = HRESULT_FROM_WIN32( - RegCreateKeyW(HKEY_CURRENT_USER, wszRegKey, &hkeyDummy)); + { + LONG lRes = RegCreateKeyW(HKEY_CURRENT_USER, wszRegKey, &hkeyDummy); + res = HRESULT_FROM_WIN32(lRes); + } if (hkeyDummy) RegCloseKey(hkeyDummy); @@ -241,12 +553,18 @@ static HRESULT DEVENUM_CreateAMCategoryKey(const CLSID * clsidCategory) return res; } +static HANDLE DEVENUM_populate_handle; +static const WCHAR DEVENUM_populate_handle_nameW[] = + {'_','_','W','I','N','E','_', + 'D','e','v','e','n','u','m','_', + 'P','o','p','u','l','a','t','e',0}; + /********************************************************************** * DEVENUM_CreateSpecialCategories (INTERNAL) * * Creates the keys in the registry for the dynamic categories */ -static HRESULT DEVENUM_CreateSpecialCategories() +static HRESULT DEVENUM_CreateSpecialCategories(void) { HRESULT res; WCHAR szDSoundNameFormat[MAX_PATH + 1]; @@ -256,12 +574,40 @@ static HRESULT DEVENUM_CreateSpecialCategories() IFilterMapper2 * pMapper = NULL; REGFILTER2 rf2; REGFILTERPINS2 rfp2; + WCHAR path[MAX_PATH]; + HKEY basekey; + + if (DEVENUM_populate_handle) + return S_OK; + DEVENUM_populate_handle = CreateEventW(NULL, TRUE, FALSE, DEVENUM_populate_handle_nameW); + if (GetLastError() == ERROR_ALREADY_EXISTS) + { + /* Webcams can take some time to scan if the driver is badly written and it enables them, + * so have a 10 s timeout here + */ + if (WaitForSingleObject(DEVENUM_populate_handle, 10000) == WAIT_TIMEOUT) + WARN("Waiting for object timed out\n"); + TRACE("No need to rescan\n"); + return S_OK; + } + TRACE("Scanning for devices\n"); + + /* Since devices can change between session, for example because you just plugged in a webcam + * or switched from pulseaudio to alsa, delete all old devices first + */ + if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_AudioRendererCategory, &basekey, path, MAX_PATH))) + RegDeleteTreeW(basekey, path); + if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_AudioInputDeviceCategory, &basekey, path, MAX_PATH))) + RegDeleteTreeW(basekey, path); + if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_VideoInputDeviceCategory, &basekey, path, MAX_PATH))) + RegDeleteTreeW(basekey, path); + if (SUCCEEDED(DEVENUM_GetCategoryKey(&CLSID_MidiRendererCategory, &basekey, path, MAX_PATH))) + RegDeleteTreeW(basekey, path); rf2.dwVersion = 2; rf2.dwMerit = MERIT_PREFERRED; rf2.u.s1.cPins2 = 1; rf2.u.s1.rgPins2 = &rfp2; - rfp2.dwFlags = REG_PINFLAG_B_RENDERER; rfp2.cInstances = 1; rfp2.nMediums = 0; rfp2.lpMedium = NULL; @@ -269,7 +615,7 @@ static HRESULT DEVENUM_CreateSpecialCategories() if (!LoadStringW(DEVENUM_hInstance, IDS_DEVENUM_DS, szDSoundNameFormat, sizeof(szDSoundNameFormat)/sizeof(szDSoundNameFormat[0])-1)) { - ERR("Couldn't get string resource (GetLastError() is %ld)\n", GetLastError()); + ERR("Couldn't get string resource (GetLastError() is %d)\n", GetLastError()); return HRESULT_FROM_WIN32(GetLastError()); } @@ -292,6 +638,7 @@ static HRESULT DEVENUM_CreateSpecialCategories() if (FAILED(res)) /* can't register any devices in this category */ numDevs = 0; + rfp2.dwFlags = REG_PINFLAG_B_RENDERER; for (i = 0; i < numDevs; i++) { if (waveOutGetDevCapsW(i, &wocaps, sizeof(WAVEOUTCAPSW)) @@ -355,6 +702,7 @@ static HRESULT DEVENUM_CreateSpecialCategories() if (FAILED(res)) /* can't register any devices in this category */ numDevs = 0; + rfp2.dwFlags = REG_PINFLAG_B_OUTPUT; for (i = 0; i < numDevs; i++) { if (waveInGetDevCapsW(i, &wicaps, sizeof(WAVEINCAPSW)) @@ -399,6 +747,7 @@ static HRESULT DEVENUM_CreateSpecialCategories() if (FAILED(res)) /* can't register any devices in this category */ numDevs = 0; + rfp2.dwFlags = REG_PINFLAG_B_RENDERER; for (i = 0; i < numDevs; i++) { if (midiOutGetDevCapsW(i, &mocaps, sizeof(MIDIOUTCAPSW)) @@ -442,9 +791,61 @@ static HRESULT DEVENUM_CreateSpecialCategories() CoTaskMemFree(pTypes); } } + res = DEVENUM_CreateAMCategoryKey(&CLSID_VideoInputDeviceCategory); + if (SUCCEEDED(res)) + for (i = 0; i < 10; i++) + { + WCHAR szDeviceName[32], szDeviceVersion[32], szDevicePath[10]; + + if (capGetDriverDescriptionW ((WORD) i, + szDeviceName, sizeof(szDeviceName)/sizeof(WCHAR), + szDeviceVersion, sizeof(szDeviceVersion)/sizeof(WCHAR))) + { + IMoniker * pMoniker = NULL; + IPropertyBag * pPropBag = NULL; + WCHAR dprintf[] = { 'v','i','d','e','o','%','d',0 }; + snprintfW(szDevicePath, sizeof(szDevicePath)/sizeof(WCHAR), dprintf, i); + /* The above code prevents 1 device with a different ID overwriting another */ + + rfp2.nMediaTypes = 1; + pTypes = CoTaskMemAlloc(rfp2.nMediaTypes * sizeof(REGPINTYPES)); + if (!pTypes) { + IFilterMapper2_Release(pMapper); + return E_OUTOFMEMORY; + } + + pTypes[0].clsMajorType = &MEDIATYPE_Video; + pTypes[0].clsMinorType = &MEDIASUBTYPE_None; + + rfp2.lpMediaType = pTypes; + + res = IFilterMapper2_RegisterFilter(pMapper, + &CLSID_VfwCapture, + szDeviceName, + &pMoniker, + &CLSID_VideoInputDeviceCategory, + szDevicePath, + &rf2); + + if (pMoniker) { + OLECHAR wszVfwIndex[] = { 'V','F','W','I','n','d','e','x',0 }; + VARIANT var; + V_VT(&var) = VT_I4; + V_UNION(&var, ulVal) = i; + res = IMoniker_BindToStorage(pMoniker, NULL, NULL, &IID_IPropertyBag, (LPVOID)&pPropBag); + if (SUCCEEDED(res)) + res = IPropertyBag_Write(pPropBag, wszVfwIndex, &var); + IMoniker_Release(pMoniker); + } + + if (i == iDefaultDevice) FIXME("Default device\n"); + CoTaskMemFree(pTypes); + } + } } if (pMapper) IFilterMapper2_Release(pMapper); + SetEvent(DEVENUM_populate_handle); return res; } diff --git a/reactos/dll/directx/devenum/devenum.rbuild b/reactos/dll/directx/devenum/devenum.rbuild index 319a5a746fe..3ca2d48c1c7 100644 --- a/reactos/dll/directx/devenum/devenum.rbuild +++ b/reactos/dll/directx/devenum/devenum.rbuild @@ -3,6 +3,7 @@ + 0x600 . include/reactos/wine wine @@ -15,6 +16,7 @@ dxguid strmiids user32 + avicap32 devenum.rc createdevenum.c devenum_main.c diff --git a/reactos/dll/directx/devenum/devenum.rc b/reactos/dll/directx/devenum/devenum.rc index 25184f2ddb9..89844bfc096 100644 --- a/reactos/dll/directx/devenum/devenum.rc +++ b/reactos/dll/directx/devenum/devenum.rc @@ -15,9 +15,11 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#pragma code_page(65001) + #include "windef.h" #include "winbase.h" #include "winnls.h" @@ -32,48 +34,3 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #define WINE_PRODUCTVERSION_STR "6.5" #include "wine/wine_common_ver.rc" - -STRINGTABLE DISCARDABLE -LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US -BEGIN - 7 "Default DirectSound" - 8 "DirectSound: %s" - 9 "Default WaveOut Device" - 10 "Default MidiOut Device" -END - -STRINGTABLE DISCARDABLE -LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL -BEGIN - 7 "Standard DirectSound" - 8 "DirectSound: %s" - 9 "Standard WaveOut - Gert" - 10 "Standard MidiOut - Gert" -END - -STRINGTABLE DISCARDABLE -LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL -BEGIN - 7 "DirectSound di Default" - 8 "DirectSound: %s" - 9 "Dispositivo WaveOut di Default" - 10 "Dispositivo MidiOut di Default" -END - -STRINGTABLE DISCARDABLE -LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL -BEGIN - 7 "DirectSound padro" - 8 "DirectSound: %s" - 9 "Dispositivo padro WaveOut" - 10 "Dispositivo padro MidiOut" -END - -STRINGTABLE DISCARDABLE -LANGUAGE LANG_SPANISH, SUBLANG_NEUTRAL -BEGIN - 7 "DirectSound por defecto" - 8 "DirectSound: %s" - 9 "Dispositivo WaveOut por defecto" - 10 "Dispositivo MidiOut por defecto" -END diff --git a/reactos/dll/directx/devenum/devenum.spec b/reactos/dll/directx/devenum/devenum.spec index c3a12dca90a..b16365d0c9f 100644 --- a/reactos/dll/directx/devenum/devenum.spec +++ b/reactos/dll/directx/devenum/devenum.spec @@ -1,4 +1,4 @@ -@ stdcall -private DllCanUnloadNow() DEVENUM_DllCanUnloadNow -@ stdcall -private DllGetClassObject(ptr ptr ptr) DEVENUM_DllGetClassObject -@ stdcall -private DllRegisterServer() DEVENUM_DllRegisterServer -@ stdcall -private DllUnregisterServer() DEVENUM_DllUnregisterServer +@ stdcall -private DllCanUnloadNow() +@ stdcall -private DllGetClassObject(ptr ptr ptr) +@ stdcall -private DllRegisterServer() +@ stdcall -private DllUnregisterServer() diff --git a/reactos/dll/directx/devenum/devenum_main.c b/reactos/dll/directx/devenum/devenum_main.c index 1f65126748c..32caa7e2490 100644 --- a/reactos/dll/directx/devenum/devenum_main.c +++ b/reactos/dll/directx/devenum/devenum_main.c @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "devenum_private.h" @@ -48,7 +48,7 @@ const WCHAR clsid_keyname[6] = { 'C', 'L', 'S', 'I', 'D', 0 }; */ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) { - TRACE("%p 0x%lx %p\n", hinstDLL, fdwReason, fImpLoad); + TRACE("%p 0x%x %p\n", hinstDLL, fdwReason, fImpLoad); switch(fdwReason) { case DLL_PROCESS_ATTACH: @@ -66,7 +66,7 @@ BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad) /*********************************************************************** * DllGetClassObject (DEVENUM.@) */ -HRESULT WINAPI DEVENUM_DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv) +HRESULT WINAPI DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *ppv) { TRACE("(%s, %s, %p)\n", debugstr_guid(rclsid), debugstr_guid(iid), ppv); @@ -78,14 +78,14 @@ HRESULT WINAPI DEVENUM_DllGetClassObject(REFCLSID rclsid, REFIID iid, LPVOID *pp IsEqualGUID(rclsid, &CLSID_CDeviceMoniker)) return IClassFactory_QueryInterface((IClassFactory*)&DEVENUM_ClassFactory, iid, ppv); - FIXME("\n\tCLSID:\t%s,\n\tIID:\t%s\n",debugstr_guid(rclsid),debugstr_guid(iid)); + FIXME("CLSID: %s, IID: %s\n", debugstr_guid(rclsid), debugstr_guid(iid)); return CLASS_E_CLASSNOTAVAILABLE; } /*********************************************************************** * DllCanUnloadNow (DEVENUM.@) */ -HRESULT WINAPI DEVENUM_DllCanUnloadNow(void) +HRESULT WINAPI DllCanUnloadNow(void) { return dll_refs != 0 ? S_FALSE : S_OK; } @@ -93,7 +93,7 @@ HRESULT WINAPI DEVENUM_DllCanUnloadNow(void) /*********************************************************************** * DllRegisterServer (DEVENUM.@) */ -HRESULT WINAPI DEVENUM_DllRegisterServer(void) +HRESULT WINAPI DllRegisterServer(void) { HRESULT res; HKEY hkeyClsid = NULL; @@ -139,7 +139,7 @@ HRESULT WINAPI DEVENUM_DllRegisterServer(void) /*** ActiveMovieFilter Categories ***/ CoInitialize(NULL); - + res = CoCreateInstance(&CLSID_FilterMapper2, NULL, CLSCTX_INPROC, &IID_IFilterMapper2, &mapvptr); if (SUCCEEDED(res)) @@ -154,7 +154,7 @@ HRESULT WINAPI DEVENUM_DllRegisterServer(void) static const WCHAR friendlyextrend[] = {'E','x','t','e','r','n','a','l',' ','R','e','n','d','e','r','e','r','s',0}; static const WCHAR friendlydevctrl[] = {'D','e','v','i','c','e',' ','C','o','n','t','r','o','l',' ','F','i','l','t','e','r','s',0}; - pMapper = (IFilterMapper2*)mapvptr; + pMapper = mapvptr; IFilterMapper2_CreateCategory(pMapper, &CLSID_VideoInputDeviceCategory, MERIT_DO_NOT_USE, friendlyvidcap); IFilterMapper2_CreateCategory(pMapper, &CLSID_LegacyAmFilterCategory, MERIT_NORMAL, friendlydshow); @@ -278,9 +278,7 @@ HRESULT WINAPI DEVENUM_DllRegisterServer(void) if (hkeyClsid) RegCloseKey(hkeyClsid); - if (pszClsidDevMon) - CoTaskMemFree(pszClsidDevMon); - + CoTaskMemFree(pszClsidDevMon); CoUninitialize(); return res; @@ -289,7 +287,7 @@ HRESULT WINAPI DEVENUM_DllRegisterServer(void) /*********************************************************************** * DllUnregisterServer (DEVENUM.@) */ -HRESULT WINAPI DEVENUM_DllUnregisterServer(void) +HRESULT WINAPI DllUnregisterServer(void) { FIXME("stub!\n"); return E_FAIL; @@ -298,7 +296,6 @@ HRESULT WINAPI DEVENUM_DllUnregisterServer(void) static HRESULT register_clsids(int count, const register_info * pRegInfo, LPCWSTR pszThreadingModel) { HRESULT res = S_OK; - WCHAR dll_module[MAX_PATH]; LPOLESTR clsidString = NULL; HKEY hkeyClsid; HKEY hkeySub; @@ -307,18 +304,11 @@ static HRESULT register_clsids(int count, const register_info * pRegInfo, LPCWST int i; static const WCHAR wcszInproc32[] = {'I','n','p','r','o','c','S','e','r','v','e','r','3','2',0}; static const WCHAR wcszThreadingModel[] = {'T','h','r','e','a','d','i','n','g','M','o','d','e','l',0}; + static const WCHAR dll_module[] = {'d','e','v','e','n','u','m','.','d','l','l',0}; res = RegOpenKeyW(HKEY_CLASSES_ROOT, clsid_keyname, &hkeyClsid) == ERROR_SUCCESS ? S_OK : E_FAIL; - TRACE("HModule = %p\n", DEVENUM_hInstance); - i = GetModuleFileNameW(DEVENUM_hInstance, dll_module, - sizeof(dll_module) / sizeof(WCHAR)); - if (!i) - return HRESULT_FROM_WIN32(GetLastError()); - if (i >= sizeof(dll_module) / sizeof(WCHAR)) - return HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER); - for (i = 0; i < count; i++) { hkeySub = 0; @@ -375,7 +365,7 @@ static HRESULT register_clsids(int count, const register_info * pRegInfo, LPCWST typedef HRESULT (WINAPI *DllRegisterServer_func)(void); /* calls DllRegisterServer() for the Quartz DLL */ -static void DEVENUM_RegisterQuartz() +static void DEVENUM_RegisterQuartz(void) { HANDLE hDLL = LoadLibraryA("quartz.dll"); DllRegisterServer_func pDllRegisterServer = NULL; @@ -385,6 +375,6 @@ static void DEVENUM_RegisterQuartz() { HRESULT hr = pDllRegisterServer(); if (FAILED(hr)) - ERR("Failed to register Quartz. Error was 0x%lx)\n", hr); + ERR("Failed to register Quartz. Error was 0x%x)\n", hr); } } diff --git a/reactos/dll/directx/devenum/devenum_private.h b/reactos/dll/directx/devenum/devenum_private.h index 8914aef9f08..da65add3c8a 100644 --- a/reactos/dll/directx/devenum/devenum_private.h +++ b/reactos/dll/directx/devenum/devenum_private.h @@ -16,13 +16,15 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES ON FILE: * - Private file where devenum globals are declared */ +#ifndef RC_INVOKED #include +#endif #include "windef.h" #include "winbase.h" @@ -32,19 +34,22 @@ #include "winerror.h" #define COBJMACROS -#define COM_NO_WINDOWS_H #include "ole2.h" -#include "olectl.h" -#include "wine/unicode.h" -#include "uuids.h" #include "strmif.h" +#include "olectl.h" +#include "uuids.h" + +#ifndef RC_INVOKED +#include "wine/unicode.h" +#endif + /********************************************************************** * Dll lifetime tracking declaration for devenum.dll */ extern LONG dll_refs; -static __inline void DEVENUM_LockModule(void) { InterlockedIncrement(&dll_refs); } -static __inline void DEVENUM_UnlockModule(void) { InterlockedDecrement(&dll_refs); } +static inline void DEVENUM_LockModule(void) { InterlockedIncrement(&dll_refs); } +static inline void DEVENUM_UnlockModule(void) { InterlockedDecrement(&dll_refs); } /********************************************************************** @@ -52,49 +57,46 @@ static __inline void DEVENUM_UnlockModule(void) { InterlockedDecrement(&dll_refs */ typedef struct { - IClassFactoryVtbl *lpVtbl; + const IClassFactoryVtbl *lpVtbl; } ClassFactoryImpl; typedef struct { - ICreateDevEnumVtbl *lpVtbl; + const ICreateDevEnumVtbl *lpVtbl; } CreateDevEnumImpl; typedef struct { - IParseDisplayNameVtbl *lpVtbl; + const IParseDisplayNameVtbl *lpVtbl; } ParseDisplayNameImpl; typedef struct { - IEnumMonikerVtbl *lpVtbl; + const IEnumMonikerVtbl *lpVtbl; LONG ref; DWORD index; HKEY hkey; - BOOL bInterface; } EnumMonikerImpl; typedef struct { - IMonikerVtbl *lpVtbl; - + const IMonikerVtbl *lpVtbl; LONG ref; HKEY hkey; - BOOL bInterface; } MediaCatMoniker; MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct(void); -HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, IEnumMoniker ** ppEnumMoniker, BOOL bInterface); -HRESULT WINAPI DEVENUM_ICreateDevEnum_CreateClassEnumerator( - ICreateDevEnum * iface, - REFCLSID clsidDeviceClass, - IEnumMoniker **ppEnumMoniker, - DWORD dwFlags); +HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, IEnumMoniker ** ppEnumMoniker); extern ClassFactoryImpl DEVENUM_ClassFactory; extern CreateDevEnumImpl DEVENUM_CreateDevEnum; extern ParseDisplayNameImpl DEVENUM_ParseDisplayName; +/********************************************************************** + * Private helper function to get AM filter category key location + */ +HRESULT DEVENUM_GetCategoryKey(REFCLSID clsidDeviceClass, HKEY *pBaseKey, WCHAR *wszRegKeyName, UINT maxLen); + /********************************************************************** * Global string constant declarations */ diff --git a/reactos/dll/directx/devenum/factory.c b/reactos/dll/directx/devenum/factory.c index d93e62d43dd..09861fa0315 100644 --- a/reactos/dll/directx/devenum/factory.c +++ b/reactos/dll/directx/devenum/factory.c @@ -16,7 +16,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ #include "devenum_private.h" @@ -40,7 +40,7 @@ static HRESULT WINAPI DEVENUM_IClassFactory_QueryInterface( if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IClassFactory)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; IClassFactory_AddRef(iface); return S_OK; } @@ -49,7 +49,7 @@ static HRESULT WINAPI DEVENUM_IClassFactory_QueryInterface( return IClassFactory_CreateInstance(iface, NULL, riid, ppvObj); } - FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + FIXME("- no interface IID: %s\n", debugstr_guid(riid)); return E_NOINTERFACE; } @@ -126,7 +126,7 @@ static HRESULT WINAPI DEVENUM_IClassFactory_LockServer( /********************************************************************** * IClassFactory_Vtbl */ -static IClassFactoryVtbl IClassFactory_Vtbl = +static const IClassFactoryVtbl IClassFactory_Vtbl = { DEVENUM_IClassFactory_QueryInterface, DEVENUM_IClassFactory_AddRef, diff --git a/reactos/dll/directx/devenum/mediacatenum.c b/reactos/dll/directx/devenum/mediacatenum.c index d14cd9aba1e..349ea7d6e43 100644 --- a/reactos/dll/directx/devenum/mediacatenum.c +++ b/reactos/dll/directx/devenum/mediacatenum.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES ON THIS FILE: * - Implements IEnumMoniker interface which enumerates through moniker @@ -23,14 +23,11 @@ */ #include "devenum_private.h" -#include "vfwmsgs.h" #include "oleauto.h" +#include "ocidl.h" #include "wine/debug.h" - -/* #define ICOM_THIS_From_IROTData(class, name) class* This = (class*)(((char*)name)-sizeof(void*)) */ - WINE_DEFAULT_DEBUG_CHANNEL(devenum); static ULONG WINAPI DEVENUM_IEnumMoniker_AddRef(LPENUMMONIKER iface); @@ -39,10 +36,9 @@ static ULONG WINAPI DEVENUM_IPropertyBag_AddRef(LPPROPERTYBAG iface); typedef struct { - IPropertyBagVtbl *lpVtbl; + const IPropertyBagVtbl *lpVtbl; LONG ref; HKEY hkey; - BOOL bInterface; } RegPropBagImpl; @@ -52,19 +48,20 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_QueryInterface( LPVOID *ppvObj) { RegPropBagImpl *This = (RegPropBagImpl *)iface; - TRACE("\n\tIID:\t%s\n",debugstr_guid(riid)); + + TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppvObj); if (This == NULL || ppvObj == NULL) return E_POINTER; if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IPropertyBag)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; DEVENUM_IPropertyBag_AddRef(iface); return S_OK; } - FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + FIXME("- no interface IID: %s\n", debugstr_guid(riid)); return E_NOINTERFACE; } @@ -74,7 +71,8 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_QueryInterface( static ULONG WINAPI DEVENUM_IPropertyBag_AddRef(LPPROPERTYBAG iface) { RegPropBagImpl *This = (RegPropBagImpl *)iface; - TRACE("\n"); + + TRACE("(%p)->() AddRef from %d\n", iface, This->ref); return InterlockedIncrement(&This->ref); } @@ -85,16 +83,17 @@ static ULONG WINAPI DEVENUM_IPropertyBag_AddRef(LPPROPERTYBAG iface) static ULONG WINAPI DEVENUM_IPropertyBag_Release(LPPROPERTYBAG iface) { RegPropBagImpl *This = (RegPropBagImpl *)iface; + ULONG ref; - TRACE("\n"); + TRACE("(%p)->() ReleaseThis->ref from %d\n", iface, This->ref); - if (InterlockedDecrement(&This->ref) == 0) { + ref = InterlockedDecrement(&This->ref); + if (ref == 0) { RegCloseKey(This->hkey); CoTaskMemFree(This); DEVENUM_UnlockModule(); - return 0; } - return This->ref; + return ref; } static HRESULT WINAPI DEVENUM_IPropertyBag_Read( @@ -109,31 +108,13 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Read( RegPropBagImpl *This = (RegPropBagImpl *)iface; HRESULT res = S_OK; LONG reswin32; - WCHAR buffer[MAX_PATH]; - HKEY hkey; - LPCOLESTR pszName; TRACE("(%p)->(%s, %p, %p)\n", This, debugstr_w(pszPropName), pVar, pErrorLog); if (!pszPropName || !pVar) return E_POINTER; - hkey = This->hkey; - pszName = pszPropName; - if (This->bInterface) - { - buffer[0] = 0; - received = sizeof(buffer)/sizeof(WCHAR); - reswin32 = RegEnumKeyEx(This->hkey, 0, buffer, &received, NULL, NULL, NULL, NULL); - - reswin32 = RegOpenKeyExW(This->hkey, buffer, 0, KEY_READ, &hkey); - - if (!wcsicmp(pszPropName, L"DevicePath")) - pszName = L"SymbolicLink"; - - } - - reswin32 = RegQueryValueExW(hkey, pszName, NULL, NULL, NULL, &received); + reswin32 = RegQueryValueExW(This->hkey, pszPropName, NULL, NULL, NULL, &received); res = HRESULT_FROM_WIN32(reswin32); if (SUCCEEDED(res)) @@ -141,7 +122,7 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Read( pData = HeapAlloc(GetProcessHeap(), 0, received); /* work around a GCC bug that occurs here unless we use the reswin32 variable as well */ - reswin32 = RegQueryValueExW(hkey, pszName, NULL, &type, pData, &received); + reswin32 = RegQueryValueExW(This->hkey, pszPropName, NULL, &type, pData, &received); res = HRESULT_FROM_WIN32(reswin32); } @@ -149,7 +130,7 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Read( { res = E_INVALIDARG; /* assume we cannot coerce into right type */ - TRACE("Read %ld bytes (%s)\n", received, type == REG_SZ ? debugstr_w((LPWSTR)pData) : "binary data"); + TRACE("Read %d bytes (%s)\n", received, type == REG_SZ ? debugstr_w(pData) : "binary data"); switch (type) { @@ -158,20 +139,20 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Read( { case VT_LPWSTR: V_UNION(pVar, bstrVal) = CoTaskMemAlloc(received); - memcpy(V_UNION(pVar, bstrVal), (LPWSTR)pData, received); + memcpy(V_UNION(pVar, bstrVal), pData, received); res = S_OK; break; case VT_EMPTY: V_VT(pVar) = VT_BSTR; /* fall through */ case VT_BSTR: - V_UNION(pVar, bstrVal) = SysAllocStringLen((LPWSTR)pData, received/sizeof(WCHAR) - 1); + V_UNION(pVar, bstrVal) = SysAllocStringLen(pData, received/sizeof(WCHAR) - 1); res = S_OK; break; } break; case REG_DWORD: - TRACE("REG_DWORD: %lx\n", *(DWORD *)pData); + TRACE("REG_DWORD: %x\n", *(DWORD *)pData); switch (V_VT(pVar)) { case VT_EMPTY: @@ -190,14 +171,17 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Read( void * pArrayElements; bound.lLbound = 0; bound.cElements = received; - TRACE("REG_BINARY: len = %ld\n", received); + TRACE("REG_BINARY: len = %d\n", received); switch (V_VT(pVar)) { case VT_EMPTY: + V_VT(pVar) = VT_ARRAY | VT_UI1; + /* fall through */ case VT_ARRAY | VT_UI1: if (!(V_UNION(pVar, parray) = SafeArrayCreate(VT_UI1, 1, &bound))) res = E_OUTOFMEMORY; - res = S_OK; + else + res = S_OK; break; } @@ -214,16 +198,12 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Read( } } if (res == E_INVALIDARG) - FIXME("Variant type %x not supported for regtype %lx\n", V_VT(pVar), type); + FIXME("Variant type %x not supported for regtype %x\n", V_VT(pVar), type); } - if (pData) - HeapFree(GetProcessHeap(), 0, pData); + HeapFree(GetProcessHeap(), 0, pData); - if (This->bInterface) - RegCloseKey(hkey); - - TRACE("<- %lx\n", res); + TRACE("<- %x\n", res); return res; } @@ -244,14 +224,14 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Write( { case VT_BSTR: TRACE("writing %s\n", debugstr_w(V_UNION(pVar, bstrVal))); - lpData = (LPVOID)V_UNION(pVar, bstrVal); + lpData = V_UNION(pVar, bstrVal); dwType = REG_SZ; cbData = (lstrlenW(V_UNION(pVar, bstrVal)) + 1) * sizeof(WCHAR); break; case VT_I4: case VT_UI4: - TRACE("writing %lu\n", V_UNION(pVar, ulVal)); - lpData = (LPVOID)&V_UNION(pVar, ulVal); + TRACE("writing %u\n", V_UNION(pVar, ulVal)); + lpData = &V_UNION(pVar, ulVal); dwType = REG_DWORD; cbData = sizeof(DWORD); break; @@ -263,7 +243,7 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Write( res = SafeArrayGetLBound(V_UNION(pVar, parray), 1, &lLbound); res = SafeArrayGetUBound(V_UNION(pVar, parray), 1, &lUbound); cbData = (lUbound - lLbound + 1) /* * sizeof(BYTE)*/; - TRACE("cbData: %ld\n", cbData); + TRACE("cbData: %d\n", cbData); res = SafeArrayAccessData(V_UNION(pVar, parray), &lpData); break; } @@ -283,7 +263,7 @@ static HRESULT WINAPI DEVENUM_IPropertyBag_Write( return res; } -static IPropertyBagVtbl IPropertyBag_Vtbl = +static const IPropertyBagVtbl IPropertyBag_Vtbl = { DEVENUM_IPropertyBag_QueryInterface, DEVENUM_IPropertyBag_AddRef, @@ -292,7 +272,7 @@ static IPropertyBagVtbl IPropertyBag_Vtbl = DEVENUM_IPropertyBag_Write }; -static HRESULT DEVENUM_IPropertyBag_Construct(HANDLE hkey, IPropertyBag **ppBag, BOOL bInterface) +static HRESULT DEVENUM_IPropertyBag_Construct(HANDLE hkey, IPropertyBag **ppBag) { RegPropBagImpl * rpb = CoTaskMemAlloc(sizeof(RegPropBagImpl)); if (!rpb) @@ -300,8 +280,6 @@ static HRESULT DEVENUM_IPropertyBag_Construct(HANDLE hkey, IPropertyBag **ppBag, rpb->lpVtbl = &IPropertyBag_Vtbl; rpb->ref = 1; rpb->hkey = hkey; - rpb->bInterface = bInterface; - *ppBag = (IPropertyBag*)rpb; DEVENUM_LockModule(); return S_OK; @@ -325,12 +303,12 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_QueryInterface( IsEqualGUID(riid, &IID_IPersistStream) || IsEqualGUID(riid, &IID_IMoniker)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; DEVENUM_IMediaCatMoniker_AddRef(iface); return S_OK; } - FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + FIXME("- no interface IID: %s\n", debugstr_guid(riid)); return E_NOINTERFACE; } @@ -368,7 +346,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetClassID( CLSID* pClassID) { MediaCatMoniker *This = (MediaCatMoniker *)iface; - FIXME("(%p)->(%p)\n", This, pClassID); + FIXME("(%p)->(%p): stub\n", This, pClassID); if (pClassID == NULL) return E_POINTER; @@ -378,21 +356,21 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetClassID( static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsDirty(LPMONIKER iface) { - FIXME("()\n"); + FIXME("(%p)->(): stub\n", iface); return S_FALSE; } static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Load(LPMONIKER iface, IStream* pStm) { - FIXME("(%p)\n", pStm); + FIXME("(%p)->(%p): stub\n", iface, pStm); return E_NOTIMPL; } static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Save(LPMONIKER iface, IStream* pStm, BOOL fClearDirty) { - FIXME("(%p, %s)\n", pStm, fClearDirty ? "true" : "false"); + FIXME("(%p)->(%p, %s): stub\n", iface, pStm, fClearDirty ? "true" : "false"); return STG_E_CANTSAVE; } @@ -401,7 +379,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetSizeMax( LPMONIKER iface, ULARGE_INTEGER* pcbSize) { - FIXME("(%p)\n", pcbSize); + FIXME("(%p)->(%p): stub\n", iface, pcbSize); ZeroMemory(pcbSize, sizeof(*pcbSize)); @@ -417,14 +395,13 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToObject( { IUnknown * pObj = NULL; IPropertyBag * pProp = NULL; - IPersistPropertyBag * pBag; CLSID clsID; VARIANT var; HRESULT res = E_FAIL; MediaCatMoniker *This = (MediaCatMoniker *)iface; - VariantClear(&var); + VariantInit(&var); TRACE("(%p)->(%p, %p, %s, %p)\n", This, pbc, pmkToLeft, debugstr_guid(riidResult), ppvResult); @@ -435,7 +412,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToObject( /* first activation of this class */ LPVOID pvptr; res=IMoniker_BindToStorage(iface, NULL, NULL, &IID_IPropertyBag, &pvptr); - pProp = (IPropertyBag*)pvptr; + pProp = pvptr; if (SUCCEEDED(res)) { V_VT(&var) = VT_LPWSTR; @@ -449,23 +426,26 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToObject( if (SUCCEEDED(res)) { res=CoCreateInstance(&clsID,NULL,CLSCTX_ALL,&IID_IUnknown,&pvptr); - pObj = (IUnknown*)pvptr; + pObj = pvptr; } } if (pObj!=NULL) { - if (This->bInterface) - { - res = IUnknown_QueryInterface(pObj, &IID_IPersistPropertyBag, (void**)&pBag); - if (SUCCEEDED(res)) - { - res = IPersistPropertyBag_Load(pBag, pProp, NULL); /* FIXME */ - IPersistPropertyBag_Release(pBag); - } - } /* get the requested interface from the loaded class */ - res= IUnknown_QueryInterface(pObj,riidResult,ppvResult); + res = S_OK; + if (pProp) { + HRESULT res2; + LPVOID ppv = NULL; + res2 = IUnknown_QueryInterface(pObj, &IID_IPersistPropertyBag, &ppv); + if (SUCCEEDED(res2)) { + res = IPersistPropertyBag_Load((IPersistPropertyBag *) ppv, pProp, NULL); + IPersistPropertyBag_Release((IPersistPropertyBag *) ppv); + } + } + if (SUCCEEDED(res)) + res= IUnknown_QueryInterface(pObj,riidResult,ppvResult); + IUnknown_Release(pObj); } if (pProp) @@ -473,7 +453,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToObject( IPropertyBag_Release(pProp); } - TRACE("<- 0x%lx\n", res); + TRACE("<- 0x%x\n", res); return res; } @@ -497,7 +477,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_BindToStorage( { HANDLE hkey; DuplicateHandle(GetCurrentProcess(), This->hkey, GetCurrentProcess(), &hkey, 0, 0, DUPLICATE_SAME_ACCESS); - return DEVENUM_IPropertyBag_Construct(hkey, (IPropertyBag**)ppvObj, This->bInterface); + return DEVENUM_IPropertyBag_Construct(hkey, (IPropertyBag**)ppvObj); } return MK_E_NOSTORAGE; @@ -510,7 +490,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Reduce( IMoniker** ppmkToLeft, IMoniker** ppmkReduced) { - TRACE("(%p, %ld, %p, %p)\n", pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced); + TRACE("(%p)->(%p, %d, %p, %p)\n", iface, pbc, dwReduceHowFar, ppmkToLeft, ppmkReduced); if (ppmkToLeft) *ppmkToLeft = NULL; @@ -525,7 +505,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_ComposeWith( BOOL fOnlyIfNotGeneric, IMoniker** ppmkComposite) { - FIXME("(%p, %s, %p): stub\n", pmkRight, fOnlyIfNotGeneric ? "true" : "false", ppmkComposite); + FIXME("(%p)->(%p, %s, %p): stub\n", iface, pmkRight, fOnlyIfNotGeneric ? "true" : "false", ppmkComposite); /* FIXME: use CreateGenericComposite? */ *ppmkComposite = NULL; @@ -538,7 +518,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Enum( BOOL fForward, IEnumMoniker** ppenumMoniker) { - FIXME("(%s, %p): stub\n", fForward ? "true" : "false", ppenumMoniker); + FIXME("(%p)->(%s, %p): stub\n", iface, fForward ? "true" : "false", ppenumMoniker); *ppenumMoniker = NULL; @@ -549,7 +529,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsEqual( LPMONIKER iface, IMoniker* pmkOtherMoniker) { - FIXME("(%p)\n", pmkOtherMoniker); + FIXME("(%p)->(%p): stub\n", iface, pmkOtherMoniker); return E_NOTIMPL; } @@ -558,7 +538,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Hash( LPMONIKER iface, DWORD* pdwHash) { - TRACE("(%p)\n", pdwHash); + TRACE("(%p)->(%p)\n", iface, pdwHash); *pdwHash = 0; @@ -571,7 +551,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsRunning( IMoniker* pmkToLeft, IMoniker* pmkNewlyRunning) { - FIXME("(%p, %p, %p)\n", pbc, pmkToLeft, pmkNewlyRunning); + FIXME("(%p)->(%p, %p, %p): stub\n", iface, pbc, pmkToLeft, pmkNewlyRunning); return S_FALSE; } @@ -582,7 +562,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetTimeOfLastChange( IMoniker* pmkToLeft, FILETIME* pFileTime) { - TRACE("(%p, %p, %p)\n", pbc, pmkToLeft, pFileTime); + TRACE("(%p)->(%p, %p, %p)\n", iface, pbc, pmkToLeft, pFileTime); pFileTime->dwLowDateTime = 0xFFFFFFFF; pFileTime->dwHighDateTime = 0x7FFFFFFF; @@ -594,7 +574,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_Inverse( LPMONIKER iface, IMoniker** ppmk) { - TRACE("(%p)\n", ppmk); + TRACE("(%p)->(%p)\n", iface, ppmk); *ppmk = NULL; @@ -606,7 +586,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_CommonPrefixWith( IMoniker* pmkOtherMoniker, IMoniker** ppmkPrefix) { - TRACE("(%p, %p)\n", pmkOtherMoniker, ppmkPrefix); + TRACE("(%p)->(%p, %p)\n", iface, pmkOtherMoniker, ppmkPrefix); *ppmkPrefix = NULL; @@ -618,7 +598,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_RelativePathTo( IMoniker* pmkOther, IMoniker** ppmkRelPath) { - TRACE("(%p, %p)\n", pmkOther, ppmkRelPath); + TRACE("(%p)->(%p, %p)\n", iface, pmkOther, ppmkRelPath); *ppmkRelPath = pmkOther; @@ -636,7 +616,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_GetDisplayName( static const WCHAR wszFriendlyName[] = {'F','r','i','e','n','d','l','y','N','a','m','e',0}; LONG received = sizeof(wszFriendlyName); - TRACE("(%p, %p, %p)\n", pbc, pmkToLeft, ppszDisplayName); + TRACE("(%p)->(%p, %p, %p)\n", iface, pbc, pmkToLeft, ppszDisplayName); *ppszDisplayName = NULL; @@ -659,7 +639,7 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_ParseDisplayName( ULONG* pchEaten, IMoniker** ppmkOut) { - FIXME("(%p, %p, %s, %p, %p)\n", pbc, pmkToLeft, debugstr_w(pszDisplayName), pchEaten, ppmkOut); + FIXME("(%p)->(%p, %p, %s, %p, %p)\n", iface, pbc, pmkToLeft, debugstr_w(pszDisplayName), pchEaten, ppmkOut); *pchEaten = 0; *ppmkOut = NULL; @@ -671,12 +651,12 @@ static HRESULT WINAPI DEVENUM_IMediaCatMoniker_IsSystemMoniker( LPMONIKER iface, DWORD* pdwMksys) { - TRACE("(%p)\n", pdwMksys); + TRACE("(%p)->(%p)\n", iface, pdwMksys); return S_FALSE; } -static IMonikerVtbl IMoniker_Vtbl = +static const IMonikerVtbl IMoniker_Vtbl = { DEVENUM_IMediaCatMoniker_QueryInterface, DEVENUM_IMediaCatMoniker_AddRef, @@ -703,7 +683,7 @@ static IMonikerVtbl IMoniker_Vtbl = DEVENUM_IMediaCatMoniker_IsSystemMoniker }; -MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct() +MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct(void) { MediaCatMoniker * pMoniker = NULL; pMoniker = CoTaskMemAlloc(sizeof(MediaCatMoniker)); @@ -713,7 +693,6 @@ MediaCatMoniker * DEVENUM_IMediaCatMoniker_Construct() pMoniker->lpVtbl = &IMoniker_Vtbl; pMoniker->ref = 0; pMoniker->hkey = NULL; - pMoniker->bInterface = FALSE; DEVENUM_IMediaCatMoniker_AddRef((LPMONIKER)pMoniker); @@ -731,19 +710,20 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_QueryInterface( LPVOID *ppvObj) { EnumMonikerImpl *This = (EnumMonikerImpl *)iface; - TRACE("\n\tIID:\t%s\n",debugstr_guid(riid)); + + TRACE("(%p)->(%s, %p)\n", iface, debugstr_guid(riid), ppvObj); if (This == NULL || ppvObj == NULL) return E_POINTER; if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IEnumMoniker)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; DEVENUM_IEnumMoniker_AddRef(iface); return S_OK; } - FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + FIXME("- no interface IID: %s\n", debugstr_guid(riid)); return E_NOINTERFACE; } @@ -753,10 +733,11 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_QueryInterface( static ULONG WINAPI DEVENUM_IEnumMoniker_AddRef(LPENUMMONIKER iface) { EnumMonikerImpl *This = (EnumMonikerImpl *)iface; + ULONG ref = InterlockedIncrement(&This->ref); - TRACE("\n"); + TRACE("(%p)->() AddRef from %d\n", iface, ref - 1); - return InterlockedIncrement(&This->ref); + return ref; } /********************************************************************** @@ -765,17 +746,18 @@ static ULONG WINAPI DEVENUM_IEnumMoniker_AddRef(LPENUMMONIKER iface) static ULONG WINAPI DEVENUM_IEnumMoniker_Release(LPENUMMONIKER iface) { EnumMonikerImpl *This = (EnumMonikerImpl *)iface; + ULONG ref = InterlockedDecrement(&This->ref); - TRACE("\n"); + TRACE("(%p)->() Release from %d\n", iface, ref + 1); - if (!InterlockedDecrement(&This->ref)) + if (!ref) { RegCloseKey(This->hkey); CoTaskMemFree(This); DEVENUM_UnlockModule(); return 0; } - return This->ref; + return ref; } static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt, IMoniker ** rgelt, ULONG * pceltFetched) @@ -786,7 +768,7 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt, MediaCatMoniker * pMoniker; EnumMonikerImpl *This = (EnumMonikerImpl *)iface; - TRACE("(%ld, %p, %p)\n", celt, rgelt, pceltFetched); + TRACE("(%p)->(%d, %p, %p)\n", iface, celt, rgelt, pceltFetched); while (fetched < celt) { @@ -799,7 +781,6 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt, if (!pMoniker) return E_OUTOFMEMORY; - pMoniker->bInterface = This->bInterface; if (RegOpenKeyW(This->hkey, buffer, &pMoniker->hkey) != ERROR_SUCCESS) { DEVENUM_IMediaCatMoniker_Release((LPMONIKER)pMoniker); @@ -811,7 +792,7 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt, This->index += fetched; - TRACE("-- fetched %ld\n", fetched); + TRACE("-- fetched %d\n", fetched); if (pceltFetched) *pceltFetched = fetched; @@ -825,8 +806,20 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Next(LPENUMMONIKER iface, ULONG celt, static HRESULT WINAPI DEVENUM_IEnumMoniker_Skip(LPENUMMONIKER iface, ULONG celt) { EnumMonikerImpl *This = (EnumMonikerImpl *)iface; + DWORD subKeys; - TRACE("(%ld)\n", celt); + TRACE("(%p)->(%d)\n", iface, celt); + + /* Before incrementing, check if there are any more values to run thru. + Some programs use the Skip() function to get the amount of devices */ + if(RegQueryInfoKeyW(This->hkey, NULL, NULL, NULL, &subKeys, NULL, NULL, NULL, NULL, NULL, NULL, NULL) != ERROR_SUCCESS) + { + return S_FALSE; + } + if((This->index + celt) >= subKeys) + { + return S_FALSE; + } This->index += celt; @@ -837,7 +830,7 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Reset(LPENUMMONIKER iface) { EnumMonikerImpl *This = (EnumMonikerImpl *)iface; - TRACE("()\n"); + TRACE("(%p)->()\n", iface); This->index = 0; @@ -846,7 +839,7 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Reset(LPENUMMONIKER iface) static HRESULT WINAPI DEVENUM_IEnumMoniker_Clone(LPENUMMONIKER iface, IEnumMoniker ** ppenum) { - FIXME("(%p): stub\n", ppenum); + FIXME("(%p)->(%p): stub\n", iface, ppenum); return E_NOTIMPL; } @@ -854,7 +847,7 @@ static HRESULT WINAPI DEVENUM_IEnumMoniker_Clone(LPENUMMONIKER iface, IEnumMonik /********************************************************************** * IEnumMoniker_Vtbl */ -static IEnumMonikerVtbl IEnumMoniker_Vtbl = +static const IEnumMonikerVtbl IEnumMoniker_Vtbl = { DEVENUM_IEnumMoniker_QueryInterface, DEVENUM_IEnumMoniker_AddRef, @@ -865,7 +858,7 @@ static IEnumMonikerVtbl IEnumMoniker_Vtbl = DEVENUM_IEnumMoniker_Clone }; -HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, IEnumMoniker ** ppEnumMoniker, BOOL bInterface) +HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, IEnumMoniker ** ppEnumMoniker) { EnumMonikerImpl * pEnumMoniker = CoTaskMemAlloc(sizeof(EnumMonikerImpl)); if (!pEnumMoniker) @@ -875,7 +868,6 @@ HRESULT DEVENUM_IEnumMoniker_Construct(HKEY hkey, IEnumMoniker ** ppEnumMoniker, pEnumMoniker->ref = 1; pEnumMoniker->index = 0; pEnumMoniker->hkey = hkey; - pEnumMoniker->bInterface = bInterface; *ppEnumMoniker = (IEnumMoniker *)pEnumMoniker; diff --git a/reactos/dll/directx/devenum/parsedisplayname.c b/reactos/dll/directx/devenum/parsedisplayname.c index f1b8505f10f..fa2f99565a6 100644 --- a/reactos/dll/directx/devenum/parsedisplayname.c +++ b/reactos/dll/directx/devenum/parsedisplayname.c @@ -15,7 +15,7 @@ * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA * * NOTES ON THIS FILE: * - Implements IParseDisplayName interface which creates a moniker @@ -39,12 +39,12 @@ static HRESULT WINAPI DEVENUM_IParseDisplayName_QueryInterface( if (IsEqualGUID(riid, &IID_IUnknown) || IsEqualGUID(riid, &IID_IParseDisplayName)) { - *ppvObj = (LPVOID)iface; + *ppvObj = iface; IParseDisplayName_AddRef(iface); return S_OK; } - FIXME("- no interface\n\tIID:\t%s\n", debugstr_guid(riid)); + FIXME("- no interface IID: %s\n", debugstr_guid(riid)); return E_NOINTERFACE; } @@ -90,10 +90,13 @@ static HRESULT WINAPI DEVENUM_IParseDisplayName_ParseDisplayName( { LPOLESTR pszBetween = NULL; LPOLESTR pszClass = NULL; - IEnumMoniker * pEm = NULL; MediaCatMoniker * pMoniker = NULL; CLSID clsidDevice; HRESULT res = S_OK; + WCHAR wszRegKeyName[MAX_PATH]; + HKEY hbasekey; + int classlen; + static const WCHAR wszRegSeparator[] = {'\\', 0 }; TRACE("(%p, %s, %p, %p)\n", pbc, debugstr_w(pszDisplayName), pchEaten, ppmkOut); @@ -107,12 +110,13 @@ static HRESULT WINAPI DEVENUM_IParseDisplayName_ParseDisplayName( /* size = pszBetween - pszDisplayName - 1 (for '\\' after CLSID) * + 1 (for NULL character) */ - pszClass = CoTaskMemAlloc((int)(pszBetween - pszDisplayName) * sizeof(WCHAR)); + classlen = (int)(pszBetween - pszDisplayName - 1); + pszClass = CoTaskMemAlloc((classlen + 1) * sizeof(WCHAR)); if (!pszClass) return E_OUTOFMEMORY; - strncpyW(pszClass, pszDisplayName, (int)(pszBetween - pszDisplayName) - 1); - pszClass[(int)(pszBetween - pszDisplayName) - 1] = 0; + memcpy(pszClass, pszDisplayName, classlen * sizeof(WCHAR)); + pszClass[classlen] = 0; TRACE("Device CLSID: %s\n", debugstr_w(pszClass)); @@ -120,9 +124,7 @@ static HRESULT WINAPI DEVENUM_IParseDisplayName_ParseDisplayName( if (SUCCEEDED(res)) { - res = DEVENUM_ICreateDevEnum_CreateClassEnumerator((ICreateDevEnum *)(char*)&DEVENUM_CreateDevEnum, &clsidDevice, &pEm, 0); - if (res == S_FALSE) /* S_FALSE means no category */ - res = MK_E_NOOBJECT; + res = DEVENUM_GetCategoryKey(&clsidDevice, &hbasekey, wszRegKeyName, MAX_PATH); } if (SUCCEEDED(res)) @@ -130,9 +132,10 @@ static HRESULT WINAPI DEVENUM_IParseDisplayName_ParseDisplayName( pMoniker = DEVENUM_IMediaCatMoniker_Construct(); if (pMoniker) { - if (RegCreateKeyW(((EnumMonikerImpl *)pEm)->hkey, - pszBetween, - &pMoniker->hkey) == ERROR_SUCCESS) + strcatW(wszRegKeyName, wszRegSeparator); + strcatW(wszRegKeyName, pszBetween); + + if (RegCreateKeyW(hbasekey, wszRegKeyName, &pMoniker->hkey) == ERROR_SUCCESS) *ppmkOut = (LPMONIKER)pMoniker; else { @@ -142,20 +145,16 @@ static HRESULT WINAPI DEVENUM_IParseDisplayName_ParseDisplayName( } } - if (pEm) - IEnumMoniker_Release(pEm); + CoTaskMemFree(pszClass); - if (pszClass) - CoTaskMemFree(pszClass); - - TRACE("-- returning: %lx\n", res); + TRACE("-- returning: %x\n", res); return res; } /********************************************************************** * IParseDisplayName_Vtbl */ -static IParseDisplayNameVtbl IParseDisplayName_Vtbl = +static const IParseDisplayNameVtbl IParseDisplayName_Vtbl = { DEVENUM_IParseDisplayName_QueryInterface, DEVENUM_IParseDisplayName_AddRef, diff --git a/reactos/dll/win32/atl/atl_ax.c b/reactos/dll/win32/atl/atl_ax.c index cf654e13d66..d9d60a56b9e 100644 --- a/reactos/dll/win32/atl/atl_ax.c +++ b/reactos/dll/win32/atl/atl_ax.c @@ -1044,10 +1044,11 @@ HRESULT WINAPI AtlAxAttachControl(IUnknown* pControl, HWND hWnd, IUnknown** ppUn TRACE( "%p %p %p\n", pControl, hWnd, ppUnkContainer ); - *ppUnkContainer = NULL; + if (!pControl) + return E_INVALIDARG; hr = IOCS_Create( hWnd, pControl, &pUnkContainer ); - if ( SUCCEEDED( hr ) ) + if ( SUCCEEDED( hr ) && ppUnkContainer) { *ppUnkContainer = (IUnknown*) pUnkContainer; } diff --git a/reactos/dll/win32/comctl32/comctl32.spec b/reactos/dll/win32/comctl32/comctl32.spec index 4249d5617e0..c2c76a3774b 100644 --- a/reactos/dll/win32/comctl32/comctl32.spec +++ b/reactos/dll/win32/comctl32/comctl32.spec @@ -101,10 +101,10 @@ 402 stdcall -noname FindMRUStringW(long wstr ptr) 403 stdcall -noname EnumMRUListW(long long ptr long) 404 stdcall -noname CreateMRUListLazyW(ptr long long long) -410 stdcall -noname SetWindowSubclass(long ptr long long) -411 stdcall -noname GetWindowSubclass(long ptr long ptr) -412 stdcall -noname RemoveWindowSubclass(long ptr long) -413 stdcall -noname DefSubclassProc(long long long long) +410 stdcall -ordinal SetWindowSubclass(long ptr long long) +411 stdcall -ordinal GetWindowSubclass(long ptr long ptr) +412 stdcall -ordinal RemoveWindowSubclass(long ptr long) +413 stdcall -ordinal DefSubclassProc(long long long long) 414 stdcall -noname MirrorIcon(ptr ptr) 415 stdcall -noname DrawTextWrap(long wstr long ptr long) user32.DrawTextW 416 stdcall -noname DrawTextExPrivWrap(long wstr long ptr long ptr) user32.DrawTextExW diff --git a/reactos/dll/win32/comctl32/comctl_Da.rc b/reactos/dll/win32/comctl32/comctl_Da.rc new file mode 100644 index 00000000000..07c177cf462 --- /dev/null +++ b/reactos/dll/win32/comctl32/comctl_Da.rc @@ -0,0 +1,92 @@ +/* + * Copyright 2010 Thomas Larsen + * Paul Vriens + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "comctl32.h" + +#pragma code_page(65001) + +LANGUAGE LANG_DANISH, SUBLANG_DEFAULT + +IDD_PROPSHEET DIALOG DISCARDABLE 0, 0, 220, 140 +STYLE DS_CONTEXTHELP | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "Egenskaber for %s" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP + PUSHBUTTON "Annuller", IDCANCEL,58,122,50,14 + PUSHBUTTON "&Anvend", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED + PUSHBUTTON "Hjælp", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP + CONTROL "Fane", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 +END + + +IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 +STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE +CAPTION "Guide" +FONT 8, "MS Shell Dlg" +BEGIN + PUSHBUTTON "< &Tilbage", IDC_BACK_BUTTON,71,138,50,14 + DEFPUSHBUTTON "&Næste >", IDC_NEXT_BUTTON,121,138,50,14 + DEFPUSHBUTTON "Færdig", IDC_FINISH_BUTTON,121,138,50,14 + PUSHBUTTON "Annuller", IDCANCEL,178,138,50,14 + PUSHBUTTON "Hjælp", IDHELP,235,138,50,14,WS_GROUP + LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN + CONTROL "Fane", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 + LTEXT "", IDC_SUNKEN_LINEHEADER,0,35,290,1,SS_LEFT | SS_SUNKEN | WS_CHILD | WS_VISIBLE +END + + +IDD_TBCUSTOMIZE DIALOG DISCARDABLE 10, 20, 357, 125 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Tilpas Værktøjslinje" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "&Luk", IDCANCEL,308,6,44,14 + PUSHBUTTON "N&ulstil", IDC_RESET_BTN,308,23,44,14 + PUSHBUTTON "&Hjælp", IDC_HELP_BTN,308,40,44,14 + PUSHBUTTON "Flyt &Op", IDC_MOVEUP_BTN,308,74,44,14 + PUSHBUTTON "Flyt &Ned", IDC_MOVEDN_BTN,308,91,44,14 + LTEXT "T&ilgængelige knapper:", -1,4,5,84,10 + LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP + PUSHBUTTON "&Tilføj ->", IDOK, 131, 42, 44, 14 + PUSHBUTTON "<- &Fjern", IDC_REMOVE_BTN,131,62,44,14 + LTEXT "&Værktøjs knapper:", -1,182,5,78,10 + LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP +END + +STRINGTABLE DISCARDABLE +{ + IDS_CLOSE "Luk" +} + +STRINGTABLE DISCARDABLE +{ + IDM_TODAY "Idag:" + IDM_GOTODAY "Gå til i dag" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SEPARATOR "Separator" +} + +STRINGTABLE DISCARDABLE +{ + HKY_NONE "Ingen" +} diff --git a/reactos/dll/win32/comctl32/comctl_Fr.rc b/reactos/dll/win32/comctl32/comctl_Fr.rc index 2fd2f89dde7..6c766cf454d 100644 --- a/reactos/dll/win32/comctl32/comctl_Fr.rc +++ b/reactos/dll/win32/comctl32/comctl_Fr.rc @@ -81,7 +81,7 @@ STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE { - IDM_TODAY "Aujourd'hui:" + IDM_TODAY "Aujourd'hui :" IDM_GOTODAY "Aller à aujourd'hui" } diff --git a/reactos/dll/win32/comctl32/comctl_Ko.rc b/reactos/dll/win32/comctl32/comctl_Ko.rc index daf9917e62a..4f9ec0aff25 100644 --- a/reactos/dll/win32/comctl32/comctl_Ko.rc +++ b/reactos/dll/win32/comctl32/comctl_Ko.rc @@ -1,6 +1,6 @@ /* * Copyright 2002 Won-kyu Park - * Copyright 2005,2007 YunSong Hwang + * Copyright 2005,2007,2010 YunSong Hwang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -56,10 +56,10 @@ CAPTION " FONT 9, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "ݱ(&C)", IDCANCEL,308,6,44,14 - PUSHBUTTON "ٽ(&E)", IDC_RESET_BTN,308,23,44,14 + PUSHBUTTON "缳(&E)", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "(&H)", IDC_HELP_BTN,308,40,44,14 PUSHBUTTON " ̵(&U)", IDC_MOVEUP_BTN,308,74,44,14 - PUSHBUTTON "Ʒ̵(&D)", IDC_MOVEDN_BTN,308,91,49,14 + PUSHBUTTON "Ʒ ̵(&D)", IDC_MOVEDN_BTN,308,91,49,14 LTEXT " ư(&V)", -1,4,5,84,10 LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP PUSHBUTTON "ϱ(&A) ->", IDOK, 131, 42, 44, 14 diff --git a/reactos/dll/win32/comctl32/comctl_Ru.rc b/reactos/dll/win32/comctl32/comctl_Ru.rc index 9cba44d1b62..e09817cf659 100644 --- a/reactos/dll/win32/comctl32/comctl_Ru.rc +++ b/reactos/dll/win32/comctl32/comctl_Ru.rc @@ -62,13 +62,13 @@ BEGIN DEFPUSHBUTTON "&Закрыть", IDCANCEL,308,6,44,14 PUSHBUTTON "С&бросить", IDC_RESET_BTN,308,23,44,14 PUSHBUTTON "&Справка", IDC_HELP_BTN,308,40,44,14 - PUSHBUTTON "Переместить &вверх", IDC_MOVEUP_BTN,308,74,44,14 + PUSHBUTTON "Переместить вв&ерх", IDC_MOVEUP_BTN,308,74,44,14 PUSHBUTTON "Переместить &вниз", IDC_MOVEDN_BTN,308,91,44,14 - LTEXT "&Доступные кнопки:", -1,4,5,84,10 + LTEXT "Доступные &кнопки:", -1,4,5,84,10 LISTBOX IDC_AVAILBTN_LBOX,4,17,120,100, LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP PUSHBUTTON "&Добавить ->", IDOK, 131, 42, 44, 14 PUSHBUTTON "<- &Удалить", IDC_REMOVE_BTN,131,62,44,14 - LTEXT "&Кнопки панели инструментов:", -1,182,5,78,10 + LTEXT "Кнопки &панели инструментов:", -1,182,5,78,10 LISTBOX IDC_TOOLBARBTN_LBOX, 182,17,120,100,LBS_NOTIFY | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_NOINTEGRALHEIGHT | LBS_DISABLENOSCROLL | WS_BORDER | WS_VSCROLL | WS_HSCROLL | WS_TABSTOP END diff --git a/reactos/dll/win32/comctl32/comctl_Uk.rc b/reactos/dll/win32/comctl32/comctl_Uk.rc index 608697da80a..333eb779c91 100644 --- a/reactos/dll/win32/comctl32/comctl_Uk.rc +++ b/reactos/dll/win32/comctl32/comctl_Uk.rc @@ -3,6 +3,8 @@ * * Copyright 2004 Ilya Korniyko * + * Copyright 2010 Igor Paliychuk + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either @@ -28,7 +30,7 @@ CAPTION " FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "OK", IDOK,4,122,50,14, WS_TABSTOP | WS_GROUP - PUSHBUTTON "&³", IDCANCEL,58,122,50,14 + PUSHBUTTON "&", IDCANCEL,58,122,50,14 PUSHBUTTON "&", IDC_APPLY_BUTTON,112,122,50,14,WS_DISABLED PUSHBUTTON "&", IDHELP,166,122,50,14,WS_TABSTOP|WS_GROUP CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS|WS_GROUP|WS_TABSTOP|TCS_MULTILINE,4,4,212,114 @@ -37,13 +39,13 @@ END IDD_WIZARD DIALOG DISCARDABLE 0, 0, 290, 159 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_VISIBLE -CAPTION "" +CAPTION "" FONT 8, "MS Shell Dlg" BEGIN PUSHBUTTON "< &", IDC_BACK_BUTTON,71,138,50,14 DEFPUSHBUTTON "& >", IDC_NEXT_BUTTON,121,138,50,14 DEFPUSHBUTTON "&", IDC_FINISH_BUTTON,121,138,50,14 - PUSHBUTTON "&³", IDCANCEL,178,138,50,14 + PUSHBUTTON "&", IDCANCEL,178,138,50,14 PUSHBUTTON "&", IDHELP,235,138,50,14,WS_GROUP LTEXT "", IDC_SUNKEN_LINE,7,129,278,1,SS_SUNKEN CONTROL "Tab", IDC_TABCONTROL,"SysTabControl32",WS_CLIPSIBLINGS | WS_DISABLED,7,7,258,5 diff --git a/reactos/dll/win32/comctl32/imagelist.c b/reactos/dll/win32/comctl32/imagelist.c index 11ff27fe8ff..47279c9812a 100644 --- a/reactos/dll/win32/comctl32/imagelist.c +++ b/reactos/dll/win32/comctl32/imagelist.c @@ -143,7 +143,6 @@ static BOOL add_with_alpha( HIMAGELIST himl, HDC hdc, int pos, int count, int width, int height, HBITMAP hbmImage, HBITMAP hbmMask ) { BOOL ret = FALSE; - HDC hdcMask = 0; BITMAP bm; BITMAPINFO *info, *mask_info = NULL; DWORD *bits = NULL; @@ -154,8 +153,9 @@ static BOOL add_with_alpha( HIMAGELIST himl, HDC hdc, int pos, int count, if (!GetObjectW( hbmImage, sizeof(bm), &bm )) return FALSE; - /* if neither the imagelist nor the source bitmap can have an alpha channel, bail out now */ - if (himl->uBitsPixel != 32 && bm.bmBitsPixel != 32) return FALSE; + /* if either the imagelist or the source bitmap don't have an alpha channel, bail out now */ + if (!himl->has_alpha) return FALSE; + if (bm.bmBitsPixel != 32) return FALSE; SelectObject( hdc, hbmImage ); mask_width = (bm.bmWidth + 31) / 32 * 4; @@ -182,10 +182,9 @@ static BOOL add_with_alpha( HIMAGELIST himl, HDC hdc, int pos, int count, mask_info->bmiHeader = info->bmiHeader; mask_info->bmiHeader.biBitCount = 1; mask_info->bmiHeader.biSizeImage = mask_width * height; - if (!(mask_bits = HeapAlloc( GetProcessHeap(), 0, info->bmiHeader.biSizeImage ))) goto done; + if (!(mask_bits = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, info->bmiHeader.biSizeImage ))) + goto done; if (!GetDIBits( hdc, hbmMask, 0, height, mask_bits, mask_info, DIB_RGB_COLORS )) goto done; - hdcMask = CreateCompatibleDC( 0 ); - SelectObject( hdcMask, hbmMask ); } for (n = 0; n < count; n++) @@ -207,12 +206,10 @@ static BOOL add_with_alpha( HIMAGELIST himl, HDC hdc, int pos, int count, bits[i * bm.bmWidth + j] |= 0xff000000; else bits[i * bm.bmWidth + j] = 0; - if (hdcMask) StretchBlt( himl->hdcMask, pt.x, pt.y, himl->cx, himl->cy, - hdcMask, n * width, 0, width, height, SRCCOPY ); } else { - if (himl->has_alpha) himl->has_alpha[pos + n] = 1; + himl->has_alpha[pos + n] = 1; if (mask_info && himl->hbmMask) /* generate the mask from the alpha channel */ { @@ -222,18 +219,17 @@ static BOOL add_with_alpha( HIMAGELIST himl, HDC hdc, int pos, int count, mask_bits[i * mask_width + j / 8] &= ~(0x80 >> (j % 8)); else mask_bits[i * mask_width + j / 8] |= 0x80 >> (j % 8); - StretchDIBits( himl->hdcMask, pt.x, pt.y, himl->cx, himl->cy, - n * width, 0, width, height, mask_bits, mask_info, DIB_RGB_COLORS, SRCCOPY ); } } StretchDIBits( himl->hdcImage, pt.x, pt.y, himl->cx, himl->cy, n * width, 0, width, height, bits, info, DIB_RGB_COLORS, SRCCOPY ); - + if (mask_info) + StretchDIBits( himl->hdcMask, pt.x, pt.y, himl->cx, himl->cy, + n * width, 0, width, height, mask_bits, mask_info, DIB_RGB_COLORS, SRCCOPY ); } ret = TRUE; done: - if (hdcMask) DeleteDC( hdcMask ); HeapFree( GetProcessHeap(), 0, info ); HeapFree( GetProcessHeap(), 0, mask_info ); HeapFree( GetProcessHeap(), 0, bits ); @@ -264,12 +260,12 @@ IMAGELIST_InternalExpandBitmaps(HIMAGELIST himl, INT nImageCount) INT nNewCount; SIZE sz; - TRACE("%p has %d allocated %d images\n", himl, himl->cCurImage, himl->cMaxImage); + TRACE("%p has allocated %d, max %d, grow %d images\n", himl, himl->cCurImage, himl->cMaxImage, himl->cGrow); - if (himl->cCurImage + nImageCount <= himl->cMaxImage) - return; + if (himl->cCurImage + nImageCount < himl->cMaxImage) + return; - nNewCount = himl->cCurImage + max(nImageCount, himl->cGrow) + 1; + nNewCount = himl->cMaxImage + max(nImageCount, himl->cGrow) + 1; imagelist_get_bitmap_size(himl, nNewCount, &sz); @@ -756,7 +752,7 @@ ImageList_Create (INT cx, INT cy, UINT flags, else himl->hbmMask = 0; - if (himl->uBitsPixel == 32) + if (ilc == ILC_COLOR32) himl->has_alpha = HeapAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, himl->cMaxImage ); else himl->has_alpha = NULL; @@ -1157,7 +1153,8 @@ ImageList_DrawEx (HIMAGELIST himl, INT i, HDC hdc, INT x, INT y, static BOOL alpha_blend_image( HIMAGELIST himl, HDC dest_dc, int dest_x, int dest_y, - int src_x, int src_y, int cx, int cy, BLENDFUNCTION func ) + int src_x, int src_y, int cx, int cy, BLENDFUNCTION func, + UINT style, COLORREF blend_col ) { BOOL ret = FALSE; HDC hdc; @@ -1184,7 +1181,31 @@ static BOOL alpha_blend_image( HIMAGELIST himl, HDC dest_dc, int dest_x, int des SelectObject( hdc, bmp ); BitBlt( hdc, 0, 0, cx, cy, himl->hdcImage, src_x, src_y, SRCCOPY ); - if (himl->uBitsPixel == 32) /* we already have an alpha channel in this case */ + if (blend_col != CLR_NONE) + { + BYTE r = GetRValue( blend_col ); + BYTE g = GetGValue( blend_col ); + BYTE b = GetBValue( blend_col ); + + if (style & ILD_BLEND25) + { + for (i = 0, ptr = bits; i < cx * cy; i++, ptr++) + *ptr = ((*ptr & 0xff000000) | + ((((*ptr & 0x00ff0000) * 3 + (r << 16)) / 4) & 0x00ff0000) | + ((((*ptr & 0x0000ff00) * 3 + (g << 8)) / 4) & 0x0000ff00) | + ((((*ptr & 0x000000ff) * 3 + (b << 0)) / 4) & 0x000000ff)); + } + else if (style & ILD_BLEND50) + { + for (i = 0, ptr = bits; i < cx * cy; i++, ptr++) + *ptr = ((*ptr & 0xff000000) | + ((((*ptr & 0x00ff0000) + (r << 16)) / 2) & 0x00ff0000) | + ((((*ptr & 0x0000ff00) + (g << 8)) / 2) & 0x0000ff00) | + ((((*ptr & 0x000000ff) + (b << 0)) / 2) & 0x000000ff)); + } + } + + if (himl->has_alpha) /* we already have an alpha channel in this case */ { /* pre-multiply by the alpha channel */ for (i = 0, ptr = bits; i < cx * cy; i++, ptr++) @@ -1302,9 +1323,16 @@ ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp) has_alpha = (himl->has_alpha && himl->has_alpha[pimldp->i]); if (!bMask && (has_alpha || (fState & ILS_ALPHA))) { - COLORREF colour; + COLORREF colour, blend_col = CLR_NONE; BLENDFUNCTION func; + if (bBlend) + { + blend_col = pimldp->rgbFg; + if (blend_col == CLR_DEFAULT) blend_col = GetSysColor( COLOR_HIGHLIGHT ); + else if (blend_col == CLR_NONE) blend_col = GetTextColor( pimldp->hdcDst ); + } + func.BlendOp = AC_SRC_OVER; func.BlendFlags = 0; func.SourceConstantAlpha = (fState & ILS_ALPHA) ? pimldp->Frame : 255; @@ -1313,7 +1341,7 @@ ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp) if (bIsTransparent) { bResult = alpha_blend_image( himl, pimldp->hdcDst, pimldp->x, pimldp->y, - pt.x, pt.y, cx, cy, func ); + pt.x, pt.y, cx, cy, func, fStyle, blend_col ); goto end; } colour = pimldp->rgbBk; @@ -1322,7 +1350,7 @@ ImageList_DrawIndirect (IMAGELISTDRAWPARAMS *pimldp) hOldBrush = SelectObject (hImageDC, CreateSolidBrush (colour)); PatBlt( hImageDC, 0, 0, cx, cy, PATCOPY ); - alpha_blend_image( himl, hImageDC, 0, 0, pt.x, pt.y, cx, cy, func ); + alpha_blend_image( himl, hImageDC, 0, 0, pt.x, pt.y, cx, cy, func, fStyle, blend_col ); DeleteObject (SelectObject (hImageDC, hOldBrush)); bResult = BitBlt( pimldp->hdcDst, pimldp->x, pimldp->y, cx, cy, hImageDC, 0, 0, SRCCOPY ); goto end; @@ -2005,7 +2033,7 @@ ImageList_Merge (HIMAGELIST himl1, INT i1, HIMAGELIST himl2, INT i2, if (himlDst) { imagelist_point_from_index( himl1, i1, &pt1 ); - imagelist_point_from_index( himl1, i2, &pt2 ); + imagelist_point_from_index( himl2, i2, &pt2 ); /* copy image */ BitBlt (himlDst->hdcImage, 0, 0, cxDst, cyDst, himl1->hdcImage, 0, 0, BLACKNESS); @@ -2488,7 +2516,7 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT nIndex, HICON hIcon) if (hdcImage == 0) ERR("invalid hdcImage!\n"); - if (himl->uBitsPixel == 32) + if (himl->has_alpha) { if (!ii.hbmColor) { @@ -2498,13 +2526,13 @@ ImageList_ReplaceIcon (HIMAGELIST himl, INT nIndex, HICON hIcon) SelectObject( hdcImage, color ); SelectObject( hdcMask, ii.hbmMask ); BitBlt( hdcImage, 0, 0, bmp.bmWidth, height, hdcMask, 0, height, SRCCOPY ); - add_with_alpha( himl, hdcImage, nIndex, 1, bmp.bmWidth, height, color, ii.hbmMask ); + ret = add_with_alpha( himl, hdcImage, nIndex, 1, bmp.bmWidth, height, color, ii.hbmMask ); DeleteDC( hdcMask ); DeleteObject( color ); + if (ret) goto done; } - else add_with_alpha( himl, hdcImage, nIndex, 1, bmp.bmWidth, bmp.bmHeight, ii.hbmColor, ii.hbmMask ); - - goto done; + else if (add_with_alpha( himl, hdcImage, nIndex, 1, bmp.bmWidth, bmp.bmHeight, + ii.hbmColor, ii.hbmMask )) goto done; } imagelist_point_from_index(himl, nIndex, &pt); @@ -2825,6 +2853,17 @@ ImageList_SetImageCount (HIMAGELIST himl, UINT iImageCount) DeleteDC (hdcBitmap); + if (himl->has_alpha) + { + char *new_alpha = HeapReAlloc( GetProcessHeap(), HEAP_ZERO_MEMORY, himl->has_alpha, nNewCount ); + if (new_alpha) himl->has_alpha = new_alpha; + else + { + HeapFree( GetProcessHeap(), 0, himl->has_alpha ); + himl->has_alpha = NULL; + } + } + /* Update max image count and current image count */ himl->cMaxImage = nNewCount; himl->cCurImage = iImageCount; diff --git a/reactos/dll/win32/comctl32/listview.c b/reactos/dll/win32/comctl32/listview.c index 2c27aa90f12..4e13577b48f 100644 --- a/reactos/dll/win32/comctl32/listview.c +++ b/reactos/dll/win32/comctl32/listview.c @@ -168,9 +168,6 @@ WINE_DEFAULT_DEBUG_CHANNEL(listview); -/* make sure you set this to 0 for production use! */ -#define DEBUG_RANGES 1 - typedef struct tagCOLUMN_INFO { RECT rcHeader; /* tracks the header's rectangle */ @@ -2968,11 +2965,7 @@ static INT CALLBACK ranges_cmp(LPVOID range1, LPVOID range2, LPARAM flags) return cmp; } -#if DEBUG_RANGES -#define ranges_check(ranges, desc) ranges_assert(ranges, desc, __FUNCTION__, __LINE__) -#else -#define ranges_check(ranges, desc) do { } while(0) -#endif +#define ranges_check(ranges, desc) if (TRACE_ON(listview)) ranges_assert(ranges, desc, __FUNCTION__, __LINE__) static void ranges_assert(RANGES ranges, LPCSTR desc, const char *func, int line) { @@ -6953,7 +6946,7 @@ static BOOL LISTVIEW_GetItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT */ static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPRECT lprc) { - POINT Position; + POINT Position, Origin; LVITEMW lvItem; INT nColumn; @@ -6961,7 +6954,7 @@ static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPR nColumn = lprc->top; - TRACE("(nItem=%d, nSubItem=%d)\n", nItem, lprc->top); + TRACE("(nItem=%d, nSubItem=%d, type=%d)\n", nItem, lprc->top, lprc->left); /* On WinNT, a subitem of '0' calls LISTVIEW_GetItemRect */ if (lprc->top == 0) return LISTVIEW_GetItemRect(infoPtr, nItem, lprc); @@ -6986,7 +6979,8 @@ static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPR } } - LISTVIEW_GetOrigin(infoPtr, &Position); + if (!LISTVIEW_GetItemPosition(infoPtr, nItem, &Position)) return FALSE; + LISTVIEW_GetOrigin(infoPtr, &Origin); if (nColumn < 0 || nColumn >= DPA_GetPtrCount(infoPtr->hdpaColumns)) return FALSE; @@ -6994,7 +6988,6 @@ static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPR lvItem.iItem = nItem; lvItem.iSubItem = nColumn; - if (lvItem.mask && !LISTVIEW_GetItemW(infoPtr, &lvItem)) return FALSE; switch(lprc->left) { case LVIR_ICON: @@ -7011,7 +7004,9 @@ static BOOL LISTVIEW_GetSubItemRect(const LISTVIEW_INFO *infoPtr, INT nItem, LPR return FALSE; } - OffsetRect(lprc, Position.x, Position.y); + OffsetRect(lprc, Origin.x, Position.y); + TRACE("return rect %s\n", wine_dbgstr_rect(lprc)); + return TRUE; } diff --git a/reactos/dll/win32/comctl32/propsheet.c b/reactos/dll/win32/comctl32/propsheet.c index 25a921807de..2b4729a8e9b 100644 --- a/reactos/dll/win32/comctl32/propsheet.c +++ b/reactos/dll/win32/comctl32/propsheet.c @@ -1962,13 +1962,13 @@ static BOOL PROPSHEET_CanSetCurSel(HWND hwndDlg) PSHNOTIFY psn; BOOL res = FALSE; - TRACE("active_page %d\n", psInfo->active_page); if (!psInfo) { res = FALSE; goto end; } + TRACE("active_page %d\n", psInfo->active_page); if (psInfo->active_page < 0) { res = TRUE; @@ -2421,6 +2421,28 @@ static BOOL PROPSHEET_RemovePage(HWND hwndDlg, return FALSE; } +BOOL CALLBACK +EnumChildProc(HWND hwnd, LPARAM lParam) +{ + WCHAR szType[20]; + RealGetWindowClassW(hwnd, szType, 20); + + if (strcmpW(szType, WC_EDITW) == 0) + { + if (IsWindowEnabled(hwnd) && IsWindowVisible(hwnd)) + { + SetFocus(hwnd); + return FALSE; + } + } + else + { + EnumChildWindows(hwnd, EnumChildProc, 0); + } + + return TRUE; +} + /****************************************************************************** * PROPSHEET_SetWizButtons * @@ -2442,17 +2464,6 @@ static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags) EnableWindow(hwndNext, FALSE); EnableWindow(hwndFinish, FALSE); - /* set the default pushbutton to an enabled button */ - if (((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH)) - SendMessageW(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0); - else if (dwFlags & PSWIZB_NEXT) - SendMessageW(hwndDlg, DM_SETDEFID, IDC_NEXT_BUTTON, 0); - else if (dwFlags & PSWIZB_BACK) - SendMessageW(hwndDlg, DM_SETDEFID, IDC_BACK_BUTTON, 0); - else - SendMessageW(hwndDlg, DM_SETDEFID, IDCANCEL, 0); - - if (dwFlags & PSWIZB_BACK) EnableWindow(hwndBack, TRUE); @@ -2482,6 +2493,31 @@ static void PROPSHEET_SetWizButtons(HWND hwndDlg, DWORD dwFlags) } else if (!(dwFlags & PSWIZB_DISABLEDFINISH)) EnableWindow(hwndFinish, TRUE); + + /* set the default pushbutton to an enabled button and give it focus */ + if (((dwFlags & PSWIZB_FINISH) || psInfo->hasFinish) && !(dwFlags & PSWIZB_DISABLEDFINISH)) + { + SendMessageW(hwndDlg, DM_SETDEFID, IDC_FINISH_BUTTON, 0); + SetFocus(hwndFinish); + } + else if (dwFlags & PSWIZB_NEXT) + { + SendMessageW(hwndDlg, DM_SETDEFID, IDC_NEXT_BUTTON, 0); + SetFocus(hwndNext); + } + else if (dwFlags & PSWIZB_BACK) + { + SendMessageW(hwndDlg, DM_SETDEFID, IDC_BACK_BUTTON, 0); + SetFocus(hwndBack); + } + else + { + SendMessageW(hwndDlg, DM_SETDEFID, IDCANCEL, 0); + SetFocus(GetDlgItem(hwndDlg, IDCANCEL)); + } + + /* Now try to find an edit control that deserves focus */ + EnumChildWindows(PropSheet_GetCurrentPageHwnd(hwndDlg), EnumChildProc, 0); } /****************************************************************************** diff --git a/reactos/dll/win32/comctl32/rebar.c b/reactos/dll/win32/comctl32/rebar.c index cd3abadd60c..c254e34d8df 100644 --- a/reactos/dll/win32/comctl32/rebar.c +++ b/reactos/dll/win32/comctl32/rebar.c @@ -2452,7 +2452,7 @@ REBAR_InsertBandT(REBAR_INFO *infoPtr, INT iIndex, LPREBARBANDINFOW lprbbi, BOOL REBAR_DumpBand (infoPtr); REBAR_Layout(infoPtr); - InvalidateRect(infoPtr->hwndSelf, 0, TRUE); + InvalidateRect(infoPtr->hwndSelf, NULL, TRUE); return TRUE; } @@ -2653,7 +2653,7 @@ REBAR_SetBandInfoT(REBAR_INFO *infoPtr, INT iBand, LPREBARBANDINFOW lprbbi, BOOL if (uChanged & (RBBIM_CHILDSIZE | RBBIM_SIZE | RBBIM_STYLE | RBBIM_IMAGE)) { REBAR_Layout(infoPtr); - InvalidateRect(infoPtr->hwndSelf, 0, 1); + InvalidateRect(infoPtr->hwndSelf, NULL, TRUE); } return TRUE; @@ -2779,7 +2779,7 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT iBand, BOOL show) { REBAR_BAND *lpBand; - if (iBand < 0 || iBand > infoPtr->uNumBands) + if (iBand < 0 || iBand >= infoPtr->uNumBands) return FALSE; lpBand = REBAR_GetBand(infoPtr, iBand); @@ -2798,7 +2798,7 @@ REBAR_ShowBand (REBAR_INFO *infoPtr, INT iBand, BOOL show) } REBAR_Layout(infoPtr); - InvalidateRect(infoPtr->hwndSelf, 0, 1); + InvalidateRect(infoPtr->hwndSelf, NULL, TRUE); return TRUE; } @@ -3399,7 +3399,7 @@ REBAR_SetRedraw (REBAR_INFO *infoPtr, BOOL redraw) if (infoPtr->fStatus & BAND_NEEDS_REDRAW) { REBAR_MoveChildWindows (infoPtr, 0, infoPtr->uNumBands); REBAR_ForceResize (infoPtr); - InvalidateRect (infoPtr->hwndSelf, 0, TRUE); + InvalidateRect (infoPtr->hwndSelf, NULL, TRUE); } infoPtr->fStatus &= ~BAND_NEEDS_REDRAW; } diff --git a/reactos/dll/win32/comctl32/rsrc.rc b/reactos/dll/win32/comctl32/rsrc.rc index c9d6af1f20e..f906a7fc8d7 100644 --- a/reactos/dll/win32/comctl32/rsrc.rc +++ b/reactos/dll/win32/comctl32/rsrc.rc @@ -108,6 +108,7 @@ IDI_TT_ERROR_SM ICON LOADONCALL DISCARDABLE idi_tt_error_sm.ico #include "comctl_Uk.rc" /* UTF-8 */ +#include "comctl_Da.rc" #include "comctl_De.rc" #include "comctl_Fr.rc" #include "comctl_Ja.rc" diff --git a/reactos/dll/win32/comctl32/toolbar.c b/reactos/dll/win32/comctl32/toolbar.c index d24b3dc2cfe..fe782c3e4c3 100644 --- a/reactos/dll/win32/comctl32/toolbar.c +++ b/reactos/dll/win32/comctl32/toolbar.c @@ -2710,6 +2710,9 @@ TOOLBAR_AddBitmapToImageList(TOOLBAR_INFO *infoPtr, HIMAGELIST himlDef, const TB /* Add bitmaps to the default image list */ if (bitmap->hInst == NULL) /* a handle was passed */ hbmLoad = CopyImage(ULongToHandle(bitmap->nID), IMAGE_BITMAP, 0, 0, 0); + else if (bitmap->hInst == COMCTL32_hModule) + hbmLoad = LoadImageW( bitmap->hInst, MAKEINTRESOURCEW(bitmap->nID), + IMAGE_BITMAP, 0, 0, LR_CREATEDIBSECTION ); else hbmLoad = CreateMappedBitmap(bitmap->hInst, bitmap->nID, 0, NULL, 0); @@ -2757,7 +2760,7 @@ TOOLBAR_CheckImageListIconSize(TOOLBAR_INFO *infoPtr) cx, cy, infoPtr->nBitmapWidth, infoPtr->nBitmapHeight); himlNew = ImageList_Create(infoPtr->nBitmapWidth, infoPtr->nBitmapHeight, - ILC_COLORDDB|ILC_MASK, 8, 2); + ILC_COLOR32|ILC_MASK, 8, 2); for (i = 0; i < infoPtr->nNumBitmapInfos; i++) TOOLBAR_AddBitmapToImageList(infoPtr, himlNew, &infoPtr->bitmaps[i]); TOOLBAR_InsertImageList(&infoPtr->himlDef, &infoPtr->cimlDef, himlNew, 0); @@ -2854,7 +2857,7 @@ TOOLBAR_AddBitmap (TOOLBAR_INFO *infoPtr, INT count, const TBADDBITMAP *lpAddBmp TRACE ("creating default image list!\n"); himlDef = ImageList_Create (infoPtr->nBitmapWidth, infoPtr->nBitmapHeight, - ILC_COLORDDB | ILC_MASK, info.nButtons, 2); + ILC_COLOR32 | ILC_MASK, info.nButtons, 2); TOOLBAR_InsertImageList(&infoPtr->himlDef, &infoPtr->cimlDef, himlDef, 0); infoPtr->himlInt = himlDef; } diff --git a/reactos/dll/win32/comctl32/tooltips.c b/reactos/dll/win32/comctl32/tooltips.c index 688d3b5ec44..8f49c430d4c 100644 --- a/reactos/dll/win32/comctl32/tooltips.c +++ b/reactos/dll/win32/comctl32/tooltips.c @@ -1986,8 +1986,32 @@ TOOLTIPS_NCHitTest (const TOOLTIPS_INFO *infoPtr, WPARAM wParam, LPARAM lParam) static LRESULT TOOLTIPS_NotifyFormat (TOOLTIPS_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { - FIXME ("hwnd=%p wParam=%lx lParam=%lx\n", infoPtr->hwndSelf, wParam, lParam); + TTTOOL_INFO *toolPtr = infoPtr->tools; + INT nResult; + TRACE("hwnd=%p wParam=%lx lParam=%lx\n", infoPtr->hwndSelf, wParam, lParam); + + if (lParam == NF_QUERY) { + if (toolPtr->bNotifyUnicode) { + return NFR_UNICODE; + } else { + return NFR_ANSI; + } + } + else if (lParam == NF_REQUERY) { + nResult = (INT) SendMessageW (toolPtr->hwnd, WM_NOTIFYFORMAT, + (WPARAM)infoPtr->hwndSelf, (LPARAM)NF_QUERY); + if (nResult == NFR_ANSI) { + toolPtr->bNotifyUnicode = FALSE; + TRACE(" -- WM_NOTIFYFORMAT returns: NFR_ANSI\n"); + } else if (nResult == NFR_UNICODE) { + toolPtr->bNotifyUnicode = TRUE; + TRACE(" -- WM_NOTIFYFORMAT returns: NFR_UNICODE\n"); + } else { + TRACE (" -- WM_NOTIFYFORMAT returns: error!\n"); + } + return nResult; + } return 0; } diff --git a/reactos/dll/win32/comctl32/treeview.c b/reactos/dll/win32/comctl32/treeview.c index 8d2a6f3d1ff..6dbee0ff4a6 100644 --- a/reactos/dll/win32/comctl32/treeview.c +++ b/reactos/dll/win32/comctl32/treeview.c @@ -213,21 +213,11 @@ static VOID TREEVIEW_UpdateScrollBars(TREEVIEW_INFO *infoPtr); static LRESULT TREEVIEW_HScroll(TREEVIEW_INFO *, WPARAM); /* Random Utilities *****************************************************/ - -#ifndef NDEBUG -static inline void -TREEVIEW_VerifyTree(TREEVIEW_INFO *infoPtr) -{ - (void)infoPtr; -} -#else -/* The definition is at the end of the file. */ static void TREEVIEW_VerifyTree(TREEVIEW_INFO *infoPtr); -#endif /* Returns the treeview private data if hwnd is a treeview. * Otherwise returns an undefined value. */ -static TREEVIEW_INFO * +static inline TREEVIEW_INFO * TREEVIEW_GetInfoPtr(HWND hwnd) { return (TREEVIEW_INFO *)GetWindowLongPtrW(hwnd, 0); @@ -492,7 +482,7 @@ static INT get_notifycode(const TREEVIEW_INFO *infoPtr, INT code) return code; } -static LRESULT +static inline BOOL TREEVIEW_SendRealNotify(const TREEVIEW_INFO *infoPtr, WPARAM wParam, LPARAM lParam) { TRACE("wParam=%ld, lParam=%ld\n", wParam, lParam); @@ -510,7 +500,7 @@ TREEVIEW_SendSimpleNotify(const TREEVIEW_INFO *infoPtr, UINT code) nmhdr.idFrom = GetWindowLongPtrW(hwnd, GWLP_ID); nmhdr.code = get_notifycode(infoPtr, code); - return (BOOL)TREEVIEW_SendRealNotify(infoPtr, nmhdr.idFrom, (LPARAM)&nmhdr); + return TREEVIEW_SendRealNotify(infoPtr, nmhdr.idFrom, (LPARAM)&nmhdr); } static VOID @@ -573,7 +563,7 @@ TREEVIEW_SendTreeviewNotify(const TREEVIEW_INFO *infoPtr, UINT code, UINT action nmhdr.ptDrag.x = 0; nmhdr.ptDrag.y = 0; - ret = (BOOL)TREEVIEW_SendRealNotify(infoPtr, nmhdr.hdr.idFrom, (LPARAM)&nmhdr); + ret = TREEVIEW_SendRealNotify(infoPtr, nmhdr.hdr.idFrom, (LPARAM)&nmhdr); if (!infoPtr->bNtfUnicode) { Free(nmhdr.itemOld.pszText); @@ -603,7 +593,7 @@ TREEVIEW_SendTreeviewDnDNotify(const TREEVIEW_INFO *infoPtr, UINT code, nmhdr.ptDrag.x = pt.x; nmhdr.ptDrag.y = pt.y; - return (BOOL)TREEVIEW_SendRealNotify(infoPtr, nmhdr.hdr.idFrom, (LPARAM)&nmhdr); + return TREEVIEW_SendRealNotify(infoPtr, nmhdr.hdr.idFrom, (LPARAM)&nmhdr); } @@ -631,7 +621,7 @@ TREEVIEW_SendCustomDrawNotify(const TREEVIEW_INFO *infoPtr, DWORD dwDrawStage, nmcdhdr.clrTextBk = infoPtr->clrBk; nmcdhdr.iLevel = 0; - return (BOOL)TREEVIEW_SendRealNotify(infoPtr, nmcd->hdr.idFrom, (LPARAM)&nmcdhdr); + return TREEVIEW_SendRealNotify(infoPtr, nmcd->hdr.idFrom, (LPARAM)&nmcdhdr); } @@ -648,7 +638,6 @@ TREEVIEW_SendCustomDrawItemNotify(const TREEVIEW_INFO *infoPtr, HDC hdc, DWORD dwDrawStage; DWORD_PTR dwItemSpec; UINT uItemState; - INT retval; dwDrawStage = CDDS_ITEM | uItemDrawState; dwItemSpec = (DWORD_PTR)wineItem; @@ -676,9 +665,7 @@ TREEVIEW_SendCustomDrawItemNotify(const TREEVIEW_INFO *infoPtr, HDC hdc, nmcd->dwDrawStage, nmcd->hdc, nmcd->dwItemSpec, nmcd->uItemState, nmcd->lItemlParam); - retval = TREEVIEW_SendRealNotify(infoPtr, nmcd->hdr.idFrom, (LPARAM)nmcdhdr); - - return retval; + return TREEVIEW_SendRealNotify(infoPtr, nmcd->hdr.idFrom, (LPARAM)nmcdhdr); } static BOOL @@ -695,7 +682,7 @@ TREEVIEW_BeginLabelEditNotify(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *editI TREEVIEW_TVItemFromItem(infoPtr, TVIF_HANDLE | TVIF_STATE | TVIF_PARAM | TVIF_TEXT, &tvdi.item, editItem); - ret = (BOOL)TREEVIEW_SendRealNotify(infoPtr, tvdi.hdr.idFrom, (LPARAM)&tvdi); + ret = TREEVIEW_SendRealNotify(infoPtr, tvdi.hdr.idFrom, (LPARAM)&tvdi); if (!infoPtr->bNtfUnicode) Free(tvdi.item.pszText); @@ -862,15 +849,9 @@ static INT TREEVIEW_NotifyFormat (TREEVIEW_INFO *infoPtr, HWND hwndFrom, UINT nC static VOID TREEVIEW_ComputeItemInternalMetrics(const TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item) { - /* Same effect, different optimisation. */ -#if 0 - BOOL lar = ((infoPtr->dwStyle & TVS_LINESATROOT) - && (infoPtr->dwStyle & (TVS_HASLINES|TVS_HASBUTTONS))); -#else - BOOL lar = ((infoPtr->dwStyle - & (TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS)) + /* has TVS_LINESATROOT and (TVS_HASLINES|TVS_HASBUTTONS) */ + BOOL lar = ((infoPtr->dwStyle & (TVS_LINESATROOT|TVS_HASLINES|TVS_HASBUTTONS)) > TVS_LINESATROOT); -#endif item->linesOffset = infoPtr->uIndent * (lar ? item->iLevel : item->iLevel - 1) - infoPtr->scrollX; @@ -2865,7 +2846,6 @@ TREEVIEW_Refresh(TREEVIEW_INFO *infoPtr, HDC hdc, const RECT *rc) } } - // // This is correct, but is causes and infinite loop of WM_PAINT messages, resulting // in continuous painting of the scroll bar in reactos. Comment out until the real // bug is found @@ -2899,7 +2879,7 @@ TREEVIEW_Paint(TREEVIEW_INFO *infoPtr, HDC hdc_ref) PAINTSTRUCT ps; RECT rc; - TRACE("\n"); + TRACE("(%p %p)\n", infoPtr, hdc_ref); if (hdc_ref) { @@ -3304,7 +3284,7 @@ TREEVIEW_Expand(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *wineItem, RECT scrollRect; TREEVIEW_ITEM *nextItem, *tmpItem; - TRACE("\n"); + TRACE("(%p, %p, partial=%d, %d\n", infoPtr, wineItem, bExpandPartial, bUser); if (wineItem->state & TVIS_EXPANDED) return TRUE; @@ -3446,9 +3426,9 @@ TREEVIEW_ExpandMsg(TREEVIEW_INFO *infoPtr, UINT flag, HTREEITEM wineItem) if (!TREEVIEW_ValidItem(infoPtr, wineItem)) return 0; - TRACE("For (%s) item:%d, flags %x, state:%d\n", - TREEVIEW_ItemName(wineItem), flag, - TREEVIEW_GetItemIndex(infoPtr, wineItem), wineItem->state); + TRACE("For (%s) item:%d, flags 0x%x, state:%d\n", + TREEVIEW_ItemName(wineItem), TREEVIEW_GetItemIndex(infoPtr, wineItem), + flag, wineItem->state); switch (flag & TVE_TOGGLE) { @@ -3466,10 +3446,6 @@ TREEVIEW_ExpandMsg(TREEVIEW_INFO *infoPtr, UINT flag, HTREEITEM wineItem) default: return 0; } - -#if 0 - TRACE("Exiting, Item %p state is now %d...\n", wineItem, wineItem->state); -#endif } /* Hit-Testing **********************************************************/ @@ -3861,7 +3837,7 @@ TREEVIEW_EndEditLabelNow(TREEVIEW_INFO *infoPtr, BOOL bCancel) tvdi.item.cchTextMax = 0; } - bCommit = (BOOL)TREEVIEW_SendRealNotify(infoPtr, tvdi.hdr.idFrom, (LPARAM)&tvdi); + bCommit = TREEVIEW_SendRealNotify(infoPtr, tvdi.hdr.idFrom, (LPARAM)&tvdi); if (!bCancel && bCommit) /* Apply the changes */ { @@ -5043,10 +5019,6 @@ TREEVIEW_Create(HWND hwnd, const CREATESTRUCTW *lpcs) infoPtr->root->visibleOrder = -1; infoPtr->hwndNotify = lpcs->hwndParent; -#if 0 - infoPtr->bTransparent = ( GetWindowLongW( hwnd, GWL_STYLE) & TBSTYLE_FLAT); -#endif - infoPtr->hwndToolTip = 0; infoPtr->bNtfUnicode = IsWindowUnicode (hwnd); @@ -5823,7 +5795,6 @@ TREEVIEW_Unregister(void) /* Tree Verification ****************************************************/ -#ifdef NDEBUG static inline void TREEVIEW_VerifyChildren(TREEVIEW_INFO *infoPtr, TREEVIEW_ITEM *item); @@ -5910,8 +5881,8 @@ TREEVIEW_VerifyRoot(TREEVIEW_INFO *infoPtr) static void TREEVIEW_VerifyTree(TREEVIEW_INFO *infoPtr) { - assert(infoPtr != NULL); + if (!TRACE_ON(treeview)) return; + assert(infoPtr != NULL); TREEVIEW_VerifyRoot(infoPtr); } -#endif diff --git a/reactos/dll/win32/comdlg32/cdlg_Da.rc b/reactos/dll/win32/comdlg32/cdlg_Da.rc index 951cb6c5271..4502c93d3d8 100644 --- a/reactos/dll/win32/comdlg32/cdlg_Da.rc +++ b/reactos/dll/win32/comdlg32/cdlg_Da.rc @@ -1,6 +1,7 @@ /* * Copyright 1995 Morten Welinder * Copyright 2008 Jens Albretsen + * 2010 Thomas Larsen * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -20,6 +21,8 @@ #include "cdlg.h" #include "filedlgbrowser.h" +#pragma code_page(65001) + /* * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. */ @@ -28,7 +31,7 @@ LANGUAGE LANG_DANISH, SUBLANG_DEFAULT OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "bn" +CAPTION "Åbn" FONT 8, "MS Shell Dlg" { LTEXT "&Filnavn:", 1090, 6, 6, 76, 9 @@ -41,9 +44,9 @@ FONT 8, "MS Shell Dlg" COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP LTEXT "&Drev:", 1091, 110, 104, 92, 9 COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "&bn", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + DEFPUSHBUTTON "Å&bn", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuller", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Hjlp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjælp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -65,7 +68,7 @@ FONT 8, "MS Shell Dlg" COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "&Gem som", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuller", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Hjlp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjælp", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP CHECKBOX "&Skrivebeskyttet", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -77,7 +80,7 @@ FONT 8, "MS Shell Dlg" { LTEXT "Printer:", 1088, 6, 6, 40, 9 LTEXT "", 1089, 60, 6, 150, 9 - GROUPBOX "Udskriv omrde", 1072, 6, 30, 160, 65, BS_GROUPBOX + GROUPBOX "Udskriv område", 1072, 6, 30, 160, 65, BS_GROUPBOX RADIOBUTTON "&Alt", 1056, 16, 45, 60, 12 RADIOBUTTON "&Markeret", 1057, 16, 60, 60, 12 RADIOBUTTON "&Sider", 1058, 16, 75, 60, 12 @@ -86,7 +89,7 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "&Indstilling", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP LTEXT "&Fra:", 1090, 60, 80, 30, 9 LTEXT "&Til:", 1091, 120, 80, 30, 9 - LTEXT "Udskrifts&kvalitet:", 1092, 6, 100, 76, 9 + LTEXT "&Udskriftskvalitet:", 1092, 6, 100, 76, 9 COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP CHECKBOX "Udskriv til fi&l", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Sammentrykket", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP @@ -107,12 +110,12 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "Annuller", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Indstilling", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP GROUPBOX "Orientering", 1073, 6, 85, 100, 50, BS_GROUPBOX - RADIOBUTTON "Po&rtrt", 1058, 50, 100, 40, 12 + RADIOBUTTON "Po&rtræt", 1058, 50, 100, 40, 12 RADIOBUTTON "&Landskab", 1059, 50, 115, 40, 12 ICON "LANDSCAP", 1097, 10, 95, 32, 32 ICON "PORTRAIT", 1098, 10, 95, 32, 32 GROUPBOX "Papir", 1074, 120, 85, 180, 50, BS_GROUPBOX - LTEXT "Strrelse", 1089, 130, 95, 30, 9 + LTEXT "Størrelse", 1089, 130, 95, 30, 9 LTEXT "&Kilde", 1090, 130, 110, 30, 9 COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP @@ -130,13 +133,13 @@ FONT 8, "MS Shell Dlg" LTEXT "&Typografi:",1089 ,108,3,44,9 COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE - LTEXT "&Strrelse:",1090,179,3,30,9 + LTEXT "&Størrelse:",1090,179,3,30,9 COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP PUSHBUTTON "Annuller",IDCANCEL,218,23,40,14,WS_GROUP PUSHBUTTON "&Anvend", 1026,218,40,40,14,WS_GROUP - PUSHBUTTON "&Hjlp" , 1038,218,57,40,14,WS_GROUP + PUSHBUTTON "&Hjælp" , 1038,218,57,40,14,WS_GROUP GROUPBOX "Effekter",1072,6,72,84,34,WS_GROUP CHECKBOX "&Gennemstreget", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP CHECKBOX "&Understreget", 1041, 10,94,50,10, BS_AUTOCHECKBOX @@ -156,18 +159,18 @@ STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Farve" FONT 8, "MS Shell Dlg" { - LTEXT "&Grundlggende farver:", 1088, 4, 4, 140, 10 + LTEXT "&Grundlæggende farver:", 1088, 4, 4, 140, 10 LTEXT "&Selvvalgte farver:", 1089, 4, 106, 140, 10 LTEXT "&Ensfarvet", 1090, 150, 151, 48, 10 - LTEXT "&Rd:", 726 /*1094*/,249,126,24,10 + LTEXT "&Rød:", 726 /*1094*/,249,126,24,10 EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "&Grn:",727/*1095*/,249,140,24,10 + LTEXT "&Grøn:",727/*1095*/,249,140,24,10 EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "&Bl:",728 /*1096*/,249,154,24,10 + LTEXT "&Blå:",728 /*1096*/,249,154,24,10 EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP LTEXT "&Intensitet:" ,723 /*1091*/,202,126,22,10 EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "&Farvemtning:" ,724 /*1092*/,202,140,22,10 + LTEXT "&Farvemætning:" ,724 /*1092*/,202,140,22,10 EDITTEXT 704, 226,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP LTEXT "&Lysstyrke:" ,725 /*1093*/,202,154,22,10 EDITTEXT 705, 226,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP @@ -178,8 +181,8 @@ FONT 8, "MS Shell Dlg" CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuller", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Hjlp", 1038,100,166, 44, 14 - PUSHBUTTON "&Tilfj til selvvalgte farver", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Hjælp", 1038,100,166, 44, 14 + PUSHBUTTON "&Tilføj til selvvalgte farver", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Definer selvvalgt farve >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&i",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ } @@ -193,14 +196,14 @@ FONT 8, "MS Shell Dlg" LTEXT "&Find hvad:", -1, 4, 8, 42, 8 EDITTEXT 1152, 47, 7, 128, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP CHECKBOX "&Kun hele ord", 1040, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "Forskel p store/sm &bogstaver", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "Forskel på store/små &bogstaver", 1041, 4, 42, 64, 12, BS_AUTOCHECKBOX | WS_TABSTOP GROUPBOX "Retning", 1072, 107, 26, 68, 28 CONTROL "&Op", 1056, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 111, 38, 20, 12 CONTROL "&Ned", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 - DEFPUSHBUTTON "&Find nste", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + DEFPUSHBUTTON "&Find næste", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuller", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Hjlp", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjælp", 1038, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP } @@ -214,13 +217,13 @@ FONT 8, "MS Shell Dlg" LTEXT "&Erstat med:", -1, 4, 26, 48, 8 EDITTEXT edt2, 54, 24, 114, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP CHECKBOX "&Kun hele ord", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "Forskel p store/sm &bogstaver", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "Forskel på store/små &bogstaver", chx2, 5, 62, 59, 12, BS_AUTOCHECKBOX | WS_TABSTOP - DEFPUSHBUTTON "&Find nste", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON + DEFPUSHBUTTON "&Find næste", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON PUSHBUTTON "&Erstat", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "Erstat &alle", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuller", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Hjlp", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Hjælp", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP } @@ -232,7 +235,7 @@ FONT 8, "MS Shell Dlg" { DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON PUSHBUTTON "Annuller", IDCANCEL, 232,164, 48,14, WS_GROUP - PUSHBUTTON "&Hjlp", pshHelp, 50, 161, 48,14, WS_GROUP + PUSHBUTTON "&Hjælp", pshHelp, 50, 161, 48,14, WS_GROUP GROUPBOX "Printer", grp4, 8, 4, 272,84, WS_GROUP CONTROL "Udskriv til fi&l",chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 @@ -240,13 +243,13 @@ FONT 8, "MS Shell Dlg" LTEXT "&Navn:", stc6, 16, 20, 46,8 COMBOBOX cmb4, 62, 18, 142,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP LTEXT "Status:", stc8, 16, 36, 46,10, SS_NOPREFIX - LTEXT "Dummy State", stc12, 62, 36, 214,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Dummy Stadie", stc12, 62, 36, 214,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Type:", stc7, 16, 48, 46,10, SS_NOPREFIX LTEXT "Dummy Type", stc11, 62, 48, 214,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Hvor:", stc10, 16, 60, 46,10, SS_NOPREFIX - LTEXT "Dummy Location", stc14, 62, 60, 214,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Dummy Placering", stc14, 62, 60, 214,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Kommentar:", stc9, 16, 72, 46,10, SS_NOPREFIX - LTEXT "Dummy Remark", stc13, 62, 72, 142,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Dummy Bemærkning", stc13, 62, 72, 142,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP GROUPBOX "Kopier", grp2, 160, 92, 120,64, WS_GROUP LTEXT "Antal &kopier:", stc5,168,108,68,8 @@ -254,7 +257,7 @@ FONT 8, "MS Shell Dlg" CONTROL "&hold sammen", chx2,"Button",BS_AUTOCHECKBOX | BS_MULTILINE | WS_GROUP | WS_TABSTOP,237,124,38,24 EDITTEXT edt3, 237,106, 35,12, WS_GROUP | ES_NUMBER - GROUPBOX "Udskriv omrde", grp1, 8,92, 144,64, WS_GROUP + GROUPBOX "Udskriv område", grp1, 8,92, 144,64, WS_GROUP CONTROL "&Alle" rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 CONTROL "Si&der", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 CONTROL "&Markeret", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 @@ -272,7 +275,7 @@ FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP PUSHBUTTON "Annuller",IDCANCEL,232,156,48,14 -/* PUSHBUTTON "Netvrk...", psh5, 284,156,48,14 */ +/* PUSHBUTTON "Netværk...", psh5, 284,156,48,14 */ GROUPBOX "Printer", grp4, 8, 4, 272,84, WS_GROUP PUSHBUTTON "&Egenskaber", psh2, 212, 17, 60,14, WS_GROUP @@ -288,37 +291,37 @@ BEGIN LTEXT "Dummy Remark", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP GROUPBOX "Papir", grp2, 8, 92, 164,56, WS_GROUP - LTEXT "Strrelse:", stc2, 16,108, 36, 8 + LTEXT "Størrelse:", stc2, 16,108, 36, 8 COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP LTEXT "&Kilde:", stc3, 16,128, 36, 8 COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP GROUPBOX "Orientering", grp1, 180, 92, 100,56, WS_GROUP ICON "", ico1, 195,112, 18,20, WS_GROUP - CONTROL "P&ortrt", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "P&ortræt", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 CONTROL "L&andskab", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 END PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Papir opstning" +CAPTION "Papir opsætning" FONT 8, "MS Shell Dlg" BEGIN CONTROL "", rct1, "Static", SS_WHITERECT, 80, 8, 80, 80 CONTROL "", rct2, "Static", SS_GRAYRECT, 160, 12, 4, 80 CONTROL "", rct3, "Static", SS_GRAYRECT, 84, 88, 80, 4 GROUPBOX "Papir", grp2, 8, 96, 224, 56, BS_GROUPBOX - LTEXT "&Strrelse:", stc2, 16, 112, 36, 8 + LTEXT "&Størrelse:", stc2, 16, 112, 36, 8 COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL LTEXT "&Bakke:", stc3, 16, 132, 36, 8 COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL GROUPBOX "Orientering", grp1, 8, 156, 64, 56, BS_GROUPBOX - AUTORADIOBUTTON "&Portrt", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&Portræt", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON AUTORADIOBUTTON "&Landskab", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON GROUPBOX "Kanter", grp4, 80, 156, 152, 56, BS_GROUPBOX LTEXT "&Venstre:", stc15, 88, 172, 21, 8 EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER - LTEXT "&Hjre:", stc16, 159, 172, 27, 8 + LTEXT "&Højre:", stc16, 159, 172, 27, 8 EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER LTEXT "T&op:", stc17, 88, 192, 21, 8 EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER @@ -331,7 +334,7 @@ END NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN -CAPTION "ben" +CAPTION "Åbn" FONT 8, "MS Shell Dlg" { LTEXT "Kig &i:",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY @@ -346,11 +349,11 @@ FONT 8, "MS Shell Dlg" LTEXT "Fil&type:",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP - CONTROL "ben &skrivebeskyttet",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + CONTROL "Åbn som &skrivebeskyttet",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 - DEFPUSHBUTTON "&ben", IDOK,222,110,50,14 - PUSHBUTTON "Annuler", IDCANCEL,222,128,50,14 - PUSHBUTTON "&Hjlp", pshHelp,222,145,50,14 + DEFPUSHBUTTON "&Åbn", IDOK,222,110,50,14 + PUSHBUTTON "Annuller", IDCANCEL,222,128,50,14 + PUSHBUTTON "&Hjælp", pshHelp,222,145,50,14 } STRINGTABLE DISCARDABLE @@ -367,14 +370,14 @@ STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE { - IDS_SYSTEMFOLDERS "System foldere" - IDS_LOCALHARDRIVES "Lokal Harddiske" + IDS_SYSTEMFOLDERS "System mapper" + IDS_LOCALHARDRIVES "Lokale harddiske" IDS_FILENOTFOUND "Kunne ikke finde filen" - IDS_VERIFYFILE "Angiv korrekt filnavn" - IDS_CREATEFILE "Filen eksisterer ikke.\nVil du lave den?" + IDS_VERIFYFILE "Kontroller venligst, at der blev angivet et korrekt filnavn" + IDS_CREATEFILE "Filen eksisterer ikke.\nVil du oprette filen?" IDS_OVERWRITEFILE "Filen findes allerede.\nVil du erstatte den?" - IDS_INVALID_FILENAME_TITLE "Ugyldige tegn i stien" - IDS_INVALID_FILENAME "A filnavn m ikke indeholde flgende tegn:\n / : < > |" + IDS_INVALID_FILENAME_TITLE "Der er et eller flere Ugyldige tegn i stien" + IDS_INVALID_FILENAME "Et filnavn må ikke indeholde følgende tegn:\n / : < > |" IDS_PATHNOTEXISTING "Stien eksisterer ikke." IDS_FILENOTEXISTING "Filen eksisterer ikke." } @@ -382,37 +385,37 @@ STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE { IDS_UPFOLDER "Et niveau op" - IDS_NEWFOLDER "Lav ny folder" + IDS_NEWFOLDER "Opret ny mappe" IDS_LISTVIEW "Liste" IDS_REPORTVIEW "Detaljer" - IDS_TODESKTOP "Gennemse til skrivebord" + IDS_TODESKTOP "Gennemse skrivebordet" } STRINGTABLE DISCARDABLE { PD32_PRINT_TITLE "Udskriv" - PD32_VALUE_UREADABLE "Ulselig Entry" - PD32_INVALID_PAGE_RANGE "Denne vrdi ligger ikke indenfor side range.\n\ -Indtast en vrdi mellem %d og %d." + PD32_VALUE_UREADABLE "Ulæselig Post" + PD32_INVALID_PAGE_RANGE "Denne værdi ligger ikke indenfor sideområde.\n\ +Indtast en værdi mellem %d og %d." PD32_FROM_NOT_ABOVE_TO "'fra' kan ikke overstige 'til'." PD32_MARGINS_OVERLAP "Margenen overlapper eller er uden \ for papirets kanter.\nGenindtast Margin." - PD32_NR_OF_COPIES_EMPTY "'Antal kopier' m ikke vre tomt." - PD32_TOO_LARGE_COPIES "Dette nummer af kopier er ikke \ -understttet af din printer.\nIndtast et tal mellem 1 og %d." + PD32_NR_OF_COPIES_EMPTY "Værdien af 'Antal kopier' kan ikke være tomt." + PD32_TOO_LARGE_COPIES "Det store antal af kopier er ikke \ +understøttet af din printer.\nAngiv en værdi mellem 1 og %d." PD32_PRINT_ERROR "Der opstod en printer fejl." PD32_NO_DEFAULT_PRINTER "Ingen standard printer defineret." PD32_CANT_FIND_PRINTER "Kan ikke finde printeren." PD32_OUT_OF_MEMORY "Ikke mere hukommelse." - PD32_GENERIC_ERROR "Der opsted en fejl." + PD32_GENERIC_ERROR "Der opstod en fejl." PD32_DRIVER_UNKNOWN "Ukendt printer driver." - PD32_NO_DEVICES "Fr du kan udfre printer relatede opgaver\ -s som side opstning eller udskrive et dokument, er du nd til at indstallere en printer. \ -indstaller en og prv igen." + PD32_NO_DEVICES "Før du kan udføre printer-relaterede opgaver, \ +som f.eks sideopsætning eller udskrivning af dokumenter, skal du installere en printer. \ +Installer venligst en og prøv igen." PD32_DEFAULT_PRINTER "Standard printer; " - PD32_NR_OF_DOCUMENTS_IN_QUEUE "Der er %d dokumenter in ken" + PD32_NR_OF_DOCUMENTS_IN_QUEUE "Der er %d dokumenter in køen" PD32_MARGINS_IN_INCHES "Margener [tommer]" PD32_MARGINS_IN_MILLIMETERS "Margener [mm]" PD32_MILLIMETERS "mm" @@ -420,27 +423,27 @@ indstaller en og pr PD32_PRINTER_STATUS_READY "Klar" PD32_PRINTER_STATUS_PAUSED "Pauset; " PD32_PRINTER_STATUS_ERROR "Fejl; " - PD32_PRINTER_STATUS_PENDING_DELETION "Venter p sletning; " + PD32_PRINTER_STATUS_PENDING_DELETION "Venter på sletning; " PD32_PRINTER_STATUS_PAPER_JAM "Papir kludder; " PD32_PRINTER_STATUS_PAPER_OUT "Ikke mere papir; " - PD32_PRINTER_STATUS_MANUAL_FEED "Indst papir manuelt; " + PD32_PRINTER_STATUS_MANUAL_FEED "Indsæt papir manuelt; " PD32_PRINTER_STATUS_PAPER_PROBLEM "Papir problem; " PD32_PRINTER_STATUS_OFFLINE "Printer slukket; " PD32_PRINTER_STATUS_IO_ACTIVE "I/O Aktiv; " PD32_PRINTER_STATUS_BUSY "Igang; " PD32_PRINTER_STATUS_PRINTING "Udskriver; " PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Udskrivningbakken er fuld; " - PD32_PRINTER_STATUS_NOT_AVAILABLE "Ikke tilgngelig; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Ikke tilgængelig; " PD32_PRINTER_STATUS_WAITING "Venter; " - PD32_PRINTER_STATUS_PROCESSING "Tnker; " - PD32_PRINTER_STATUS_INITIALIZING "Klargrer; " + PD32_PRINTER_STATUS_PROCESSING "Tænker; " + PD32_PRINTER_STATUS_INITIALIZING "Klargører; " PD32_PRINTER_STATUS_WARMING_UP "Varmer op; " - PD32_PRINTER_STATUS_TONER_LOW "Toner nsten slut; " + PD32_PRINTER_STATUS_TONER_LOW "Toner næsten slut; " PD32_PRINTER_STATUS_NO_TONER "Ikke mere toner; " PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " PD32_PRINTER_STATUS_USER_INTERVENTION "Stoppet af brugeren; " PD32_PRINTER_STATUS_OUT_OF_MEMORY "Ikke mere hukommelse; " - PD32_PRINTER_STATUS_DOOR_OPEN "Printer lget er ben; " + PD32_PRINTER_STATUS_DOOR_OPEN "Printer låget er åben; " PD32_PRINTER_STATUS_SERVER_UNKNOWN "Print server ukendt; " PD32_PRINTER_STATUS_POWER_SAVE "Energispare mode; " } @@ -458,18 +461,18 @@ STRINGTABLE DISCARDABLE /* Font styles */ STRINGTABLE DISCARDABLE /* Color names */ { IDS_COLOR_BLACK "Sort" - IDS_COLOR_MAROON "Mrkerd" - IDS_COLOR_GREEN "Grn" + IDS_COLOR_MAROON "Mørkerød" + IDS_COLOR_GREEN "Grøn" IDS_COLOR_OLIVE "Oliven" IDS_COLOR_NAVY "Navy" IDS_COLOR_PURPLE "Lilla" IDS_COLOR_TEAL "Teal" - IDS_COLOR_GRAY "Gr" - IDS_COLOR_SILVER "Slv" - IDS_COLOR_RED "Rd" + IDS_COLOR_GRAY "Grå" + IDS_COLOR_SILVER "Sølv" + IDS_COLOR_RED "Rød" IDS_COLOR_LIME "Lime" IDS_COLOR_YELLOW "Gul" - IDS_COLOR_BLUE "Bl" + IDS_COLOR_BLUE "Blå" IDS_COLOR_FUCHSIA "Violet" IDS_COLOR_AQUA "Cyan" IDS_COLOR_WHITE "Hvid" @@ -478,10 +481,10 @@ STRINGTABLE DISCARDABLE /* Color names */ STRINGTABLE DISCARDABLE { - IDS_FONT_SIZE "Vlg en skrift strrelse mellem %d og %d punkter." + IDS_FONT_SIZE "Vælg en skrift størrelse mellem %d og %d punkter." IDS_SAVE_BUTTON "&Gem" IDS_SAVE_IN "Gem &i:" IDS_SAVE "Gem" IDS_SAVE_AS "Gem som" - IDS_OPEN_FILE "ben fil" + IDS_OPEN_FILE "Åben fil" } diff --git a/reactos/dll/win32/comdlg32/cdlg_Fr.rc b/reactos/dll/win32/comdlg32/cdlg_Fr.rc index de87186d9cf..881cbab6f9c 100644 --- a/reactos/dll/win32/comdlg32/cdlg_Fr.rc +++ b/reactos/dll/win32/comdlg32/cdlg_Fr.rc @@ -4,7 +4,7 @@ * * Copyright 1995 Alexandre Julliard * Copyright 2005-2008 Jonathan Ernst - * Copyright 2009 Frédéric Delanoy + * Copyright 2009-2010 Frédéric Delanoy * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -68,7 +68,7 @@ FONT 8, "MS Shell Dlg" LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP LTEXT "Lister les fichiers de &type :", 1089, 6, 104, 90, 9 COMBOBOX cmb1, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP - LTEXT "&Lecteurs:", 1091, 110, 104, 92, 9 + LTEXT "&Lecteurs :", 1091, 110, 104, 92, 9 COMBOBOX cmb2, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "Enregistrer", 1, 208, 6, 60, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuler", 2, 208, 24, 60, 14, WS_GROUP | WS_TABSTOP @@ -77,7 +77,7 @@ FONT 8, "MS Shell Dlg" } -PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 237, 134 +PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Imprimer" FONT 8, "MS Shell Dlg" @@ -88,19 +88,19 @@ FONT 8, "MS Shell Dlg" RADIOBUTTON "&Tout", rad1, 16, 45, 60, 12 RADIOBUTTON "&Sélection", rad2, 16, 60, 60, 12 RADIOBUTTON "&Pages", rad3, 16, 75, 41, 12 - DEFPUSHBUTTON "Imprimer", 1, 173, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "Annuler", 2, 173, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Configurer...", psh1, 173, 46, 56, 14, WS_GROUP | WS_TABSTOP - LTEXT "&De:", 1090, 64, 77, 30, 9 - LTEXT "&à:", 1091, 120, 77, 30, 9 - LTEXT "&Qualité d'impression:", 1092, 7, 102, 69, 9 + DEFPUSHBUTTON "Imprimer", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Annuler", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Configurer...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "&De :", 1090, 64, 77, 30, 9 + LTEXT "&à :", 1091, 120, 77, 30, 9 + LTEXT "&Qualité d'impression :", 1092, 7, 102, 69, 9 COMBOBOX cmb1, 78, 100, 88, 13, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP CHECKBOX "Imprimer dans un &fichier", chx1, 7, 117, 93, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Copies t&riées", chx2, 106, 118, 63, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } -PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 151 +PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Configuration de l'impression" FONT 8, "MS Shell Dlg" @@ -113,16 +113,16 @@ FONT 8, "MS Shell Dlg" DEFPUSHBUTTON "OK", 1, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuler", 2, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Options...", psh1, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP - GROUPBOX "Orientation", grp2, 6, 90, 100, 50, BS_GROUPBOX - RADIOBUTTON "&Portrait", rad3, 50, 105, 40, 12 - RADIOBUTTON "Pa&ysage", rad4, 50, 120, 40, 12 - ICON "LANDSCAP", stc10, 10, 100, 21, 20 - ICON "PORTRAIT", stc11, 10, 100, 21, 20 - GROUPBOX "Papier", grp3, 120, 90, 135, 50, BS_GROUPBOX - LTEXT "&Taille :", 1089, 125, 103, 30, 9 - LTEXT "&Source :", 1090, 125, 121, 30, 9 - COMBOBOX cmb2, 155, 100, 92, 17, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - COMBOBOX cmb3, 155, 118, 92, 17, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + GROUPBOX "Orientation", grp2, 6, 82, 100, 50, BS_GROUPBOX + RADIOBUTTON "&Portrait", rad3, 50, 97, 40, 12 + RADIOBUTTON "Pa&ysage", rad4, 50, 112, 40, 12 + ICON "LANDSCAP", stc10, 10, 92, 21, 20 + ICON "PORTRAIT", stc11, 10, 92, 21, 20 + GROUPBOX "Papier", grp3, 120, 82, 135, 50, BS_GROUPBOX + LTEXT "&Taille :", 1089, 125, 95, 30, 9 + LTEXT "&Source :", 1090, 125, 113, 30, 9 + COMBOBOX cmb2, 155, 92, 92, 17, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP + COMBOBOX cmb3, 155, 110, 92, 17, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP } @@ -216,12 +216,12 @@ STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Remplacer" FONT 8, "MS Shell Dlg" { - LTEXT "&Rechercher :", -1, 4, 9, 48, 8 - EDITTEXT edt1, 54, 7, 108, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "R&emplacer par :", -1, 4, 26, 48, 8 - EDITTEXT edt2, 54, 24, 108, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - CHECKBOX "Mots &entiers uniquement", chx1, 5, 46, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "Respecter la &casse", chx2, 5, 62, 74, 12, BS_AUTOCHECKBOX | WS_TABSTOP + LTEXT "&Rechercher :", -1, 4, 7, 48, 8 + EDITTEXT edt1, 56, 5, 106, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + LTEXT "R&emplacer par :", -1, 4, 24, 53, 8 + EDITTEXT edt2, 56, 22, 106, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP + CHECKBOX "Mots &entiers uniquement", chx1, 5, 44, 104, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Respecter la &casse", chx2, 5, 60, 74, 12, BS_AUTOCHECKBOX | WS_TABSTOP DEFPUSHBUTTON "&Suivant", 1, 168, 4, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "&Remplacer", psh1, 168, 21, 56, 14, WS_GROUP | WS_TABSTOP @@ -231,15 +231,15 @@ FONT 8, "MS Shell Dlg" } -PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 196 +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | DS_CONTEXTHELP | DS_3DLOOK CAPTION "Impression" FONT 8, "MS Shell Dlg" { - DEFPUSHBUTTON "OK", IDOK, 178,176, 48,14, WS_GROUP | BS_DEFPUSHBUTTON - PUSHBUTTON "Annuler", IDCANCEL, 231,176, 48,14, WS_GROUP - PUSHBUTTON "Aid&e", pshHelp, 55, 176, 48,14, WS_GROUP + DEFPUSHBUTTON "OK", IDOK, 178,169, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Annuler", IDCANCEL, 231,169, 48,14, WS_GROUP + PUSHBUTTON "Aid&e", pshHelp, 55, 169, 48,14, WS_GROUP GROUPBOX "Imprimante", grp4, 8, 4, 272,84, WS_GROUP CONTROL "Imprimer dans un fichier", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,185,44,93,14 @@ -252,11 +252,11 @@ FONT 8, "MS Shell Dlg" LTEXT "Type fictif", stc11, 65, 48, 111,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Emplacement :", stc10, 16, 60, 47,10, SS_NOPREFIX LTEXT "Emplacement fictif", stc14, 65, 60, 211,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP - LTEXT "Commentaire:", stc9, 16, 72, 47, 10, SS_NOPREFIX + LTEXT "Commentaire :", stc9, 16, 72, 47, 10, SS_NOPREFIX LTEXT "Remarque fictive", stc13, 65, 72, 144, 10, SS_NOPREFIX | SS_LEFTNOWORDWRAP GROUPBOX "Copies", grp2, 160, 92, 120,73, WS_GROUP - LTEXT "Nombre de copies:",stc5,168,108,68,8 + LTEXT "Nombre de copies :",stc5,168,108,68,8 ICON "", ico3, 183,121,76,24, WS_GROUP | SS_CENTERIMAGE CONTROL "Copies assemblées",chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,167,148,77,12 EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER @@ -285,9 +285,9 @@ BEGIN PUSHBUTTON "&Propriétés", psh2, 214, 17, 60,14, WS_GROUP LTEXT "&Nom :", stc6, 16, 20, 36,8 COMBOBOX cmb1, 65, 18, 145,15,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP - LTEXT "État:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "État :", stc8, 16, 36, 36,10, SS_NOPREFIX LTEXT "État fictif", stc12, 65, 36, 210,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP - LTEXT "Type:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Type :", stc7, 16, 48, 36,10, SS_NOPREFIX LTEXT "Type fictif", stc11, 65, 48, 210,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP LTEXT "Emplacement :", stc10, 16, 60, 47,10, SS_NOPREFIX LTEXT "Emplacement fictif", stc14, 65, 60, 210,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP @@ -295,9 +295,9 @@ BEGIN LTEXT "Commentaire fictif", stc13, 65, 72, 210,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP GROUPBOX "Papier", grp2, 8, 92, 164,56, WS_GROUP - LTEXT "&Taille:", stc2, 16,108, 36, 8 + LTEXT "&Taille :", stc2, 16,108, 36, 8 COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP - LTEXT "Source:", stc3, 16,128, 36, 8 + LTEXT "Source :", stc3, 16,128, 36, 8 COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP GROUPBOX "Orientation", grp1, 180, 92, 100,56, WS_GROUP @@ -306,7 +306,7 @@ BEGIN CONTROL "Pa&ysage", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 END -PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 242, 240 +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU CAPTION "Mise en page" FONT 8, "MS Shell Dlg" @@ -347,11 +347,11 @@ FONT 8, "MS Shell Dlg" LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE - LTEXT "&Nom du fichier",IDC_FILENAMESTATIC,5,112,50,8, SS_NOTIFY - EDITTEXT IDC_FILENAME,59,110,155,12,ES_AUTOHSCROLL + LTEXT "&Nom du fichier :",IDC_FILENAMESTATIC,5,112,50,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,63,110,155,12,ES_AUTOHSCROLL - LTEXT "Fichiers de &type",IDC_FILETYPESTATIC,5,128,52,8, SS_NOTIFY - COMBOBOX IDC_FILETYPE,59,126,155,53,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + LTEXT "Fichiers du &type :",IDC_FILETYPESTATIC,5,128,56,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,63,126,155,15,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP CONTROL "&Lecture seule",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,59,145,100,10 @@ -362,7 +362,7 @@ FONT 8, "MS Shell Dlg" STRINGTABLE DISCARDABLE { - IDS_ABOUTBOX "À propos du XXX choix de répertoires" + IDS_ABOUTBOX "À propos du sélecteur de répertoires" IDS_DOCUMENTFOLDERS "Répertoires des documents" IDS_PERSONAL "Mes documents" IDS_FAVORITES "Mes favoris" @@ -421,8 +421,8 @@ comme la configuration de l'imprimante ou l'impression d'un document, vous devez Veuillez en installer une et réessayez." PD32_DEFAULT_PRINTER "Imprimante par défaut ; " - PD32_NR_OF_DOCUMENTS_IN_QUEUE "Il y a %d documents dans la file d'attente" - PD32_MARGINS_IN_INCHES "Marges (pouces]" + PD32_NR_OF_DOCUMENTS_IN_QUEUE "Il y a %d document(s) dans la file d'attente" + PD32_MARGINS_IN_INCHES "Marges (pouces)" PD32_MARGINS_IN_MILLIMETERS "Marges (mm)" PD32_MILLIMETERS "mm" diff --git a/reactos/dll/win32/comdlg32/cdlg_Hu.rc b/reactos/dll/win32/comdlg32/cdlg_Hu.rc index 3bf7104c91b..f207bc90454 100644 --- a/reactos/dll/win32/comdlg32/cdlg_Hu.rc +++ b/reactos/dll/win32/comdlg32/cdlg_Hu.rc @@ -19,6 +19,9 @@ #include "cdlg.h" #include "filedlgbrowser.h" +/* UTF-8 */ +#pragma code_page(65001) + /* * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. */ @@ -27,91 +30,146 @@ LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT OPEN_FILE DIALOG 36, 24, 275, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Megnyits" +CAPTION "Megnyitás" FONT 8, "MS Shell Dlg" { - LTEXT "File &neve:", 1090, 6, 6, 76, 9 + LTEXT "Fájl&név:", 1090, 6, 6, 76, 9 EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP - LTEXT "&Knyvtrak:", -1, 110, 6, 92, 9 + LTEXT "&Könyvtár:", -1, 110, 6, 92, 9 CONTROL "", 1088, "STATIC", SS_NOPREFIX | WS_GROUP, 110, 18, 92, 9 LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP - LTEXT "File &tpusok:", 1089, 6, 104, 90, 9 + LTEXT "Fájl&típus:", 1089, 6, 104, 90, 9 CONTROL "", 1136, "COMBOBOX", CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 6, 114, 90, 36 - LTEXT "&Meghajtk:", 1091, 110, 104, 92, 9 + LTEXT "&Meghajtó:", 1091, 110, 104, 92, 9 CONTROL "", 1137, "COMBOBOX", CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP, 110, 114, 92, 68 - CONTROL "Megnyits", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 208, 6, 56, 14 - CONTROL "Mgsem", IDCANCEL, "BUTTON", WS_GROUP | WS_TABSTOP, 208, 24, 56, 14 - CONTROL "&Segtsg", 1038, "BUTTON", WS_GROUP | WS_TABSTOP, 208, 46, 56, 14 - CONTROL "&Csak olvashat", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 208, 68, 63, 12 + CONTROL "Megnyitás", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 208, 6, 56, 14 + CONTROL "Mégse", IDCANCEL, "BUTTON", WS_GROUP | WS_TABSTOP, 208, 24, 56, 14 + CONTROL "&Súgó", 1038, "BUTTON", WS_GROUP | WS_TABSTOP, 208, 46, 56, 14 + CONTROL "&Csak olvasható", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 208, 68, 63, 12 } SAVE_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Ments j nven..." +CAPTION "Mentés másként..." FONT 8, "MS Shell Dlg" { - LTEXT "File &neve:", 1090, 6, 6, 76, 9 + LTEXT "Fájl&név:", 1090, 6, 6, 76, 9 EDITTEXT 1152, 6, 16, 90, 12, ES_AUTOHSCROLL | ES_OEMCONVERT | WS_BORDER | WS_TABSTOP LISTBOX 1120, 6, 32, 90, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP - LTEXT "&Knyvtrak:", -1, 110, 6, 92, 9 + LTEXT "&Könyvtár:", -1, 110, 6, 92, 9 LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP - LTEXT "File &tpusok:", 1089, 6, 104, 90, 9 + LTEXT "Fájl&típus:", 1089, 6, 104, 90, 9 COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP - LTEXT "&Meghajtk:", 1091, 110, 104, 92, 9 + LTEXT "&Meghajtó:", 1091, 110, 104, 92, 9 COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - DEFPUSHBUTTON "Ments j nven", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "Mgsem", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Segtsg", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP - CHECKBOX "&Csak olvashat", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + DEFPUSHBUTTON "Mentés másként", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mégse", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Súgó", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + CHECKBOX "&Csak olvasható", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } PRINT DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Nyomtats" +CAPTION "Nyomtatás" FONT 8, "MS Shell Dlg" { - LTEXT "Nyomtat:", 1088, 6, 6, 40, 9 + LTEXT "Nyomtató:", 1088, 6, 6, 40, 9 LTEXT "", 1089, 60, 6, 150, 9 - GROUPBOX "Nyomtatand terlet", 1072, 6, 30, 160, 65, BS_GROUPBOX + GROUPBOX "Nyomtatandó terület", 1072, 6, 30, 160, 65, BS_GROUPBOX RADIOBUTTON "&Mind", 1056, 16, 45, 60, 12 - RADIOBUTTON "&Kivlasztott", 1057, 16, 60, 60, 12 + RADIOBUTTON "&Kiválasztott", 1057, 16, 60, 60, 12 RADIOBUTTON "&Lapok", 1058, 16, 75, 60, 12 - DEFPUSHBUTTON "Nyomtats", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "Mgsem", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Bellts", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP - LTEXT "-&tl:", 1090, 60, 80, 30, 9 - LTEXT "-&ig:", 1091, 120, 80, 30, 9 - LTEXT "Mi&nsg:", 1092, 6, 100, 76, 9 + DEFPUSHBUTTON "Nyomtatás", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mégse", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Beállítás", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + LTEXT "Et&tõl:", 1090, 60, 80, 30, 9 + LTEXT "Ed&dig:", 1091, 120, 80, 30, 9 + LTEXT "Mi&nőség:", 1092, 6, 100, 76, 9 COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP - CHECKBOX "&File-ba nyomtat", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "Sr", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "&Fájlba nyomtat", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Sűrű", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION "Oldalbeállítás" +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", rct1, "Static", SS_WHITERECT, 80, 8, 80, 80 + CONTROL "", rct2, "Static", SS_GRAYRECT, 160, 12, 4, 80 + CONTROL "", rct3, "Static", SS_GRAYRECT, 84, 88, 80, 4 + GROUPBOX "Papír", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "&Méret:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&Forrás:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Tájolás", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Álló", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&Fekvõ", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Margók", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "&Bal:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Jobb:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "F&elül:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&Alul:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "Mégse", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "Ny&omtató...", psh3, 184, 220, 48, 14 +END + +NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 +STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN +CAPTION "Megnyitás" +FONT 8, "MS Shell Dlg" +{ + LTEXT "H&ely:",IDC_LOOKINSTATIC,4,6,43,8, SS_NOTIFY + COMBOBOX IDC_LOOKIN,49,3,132,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | WS_VSCROLL | WS_TABSTOP + + LTEXT "" , IDC_TOOLBARSTATIC, 181, 2, 102, 17, NOT WS_GROUP | NOT WS_VISIBLE + LISTBOX IDC_SHELLSTATIC,4,20,272,85, LBS_SORT | LBS_NOINTEGRALHEIGHT | LBS_MULTICOLUMN | WS_HSCROLL | NOT WS_VISIBLE + + LTEXT "Fájl&név:",IDC_FILENAMESTATIC,5,112,46,8, SS_NOTIFY + EDITTEXT IDC_FILENAME,54,110,155,12,ES_AUTOHSCROLL + + LTEXT "Fájl&típus:",IDC_FILETYPESTATIC,5,128,42,8, SS_NOTIFY + COMBOBOX IDC_FILETYPE,54,126,155,53,CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP + + CONTROL "Me&gnyitás csak olvashatóként",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 + + DEFPUSHBUTTON "&Megnyitás", IDOK,222,110,50,14 + PUSHBUTTON "Mégse", IDCANCEL,222,128,50,14 + PUSHBUTTON "&Súgó", pshHelp,222,145,50,14 +} + + PRINT_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 264, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Nyomtat belltsa" +CAPTION "Nyomtató beállítása" FONT 8, "MS Shell Dlg" { - GROUPBOX "Nyomtat", 1072, 6, 10, 180, 65, BS_GROUPBOX - RADIOBUTTON "&Alaprtelmezett nyomtat", 1056, 16, 20, 80, 12 + GROUPBOX "Nyomtató", 1072, 6, 10, 180, 65, BS_GROUPBOX + RADIOBUTTON "&Alapértelmezett nyomtató", 1056, 16, 20, 80, 12 LTEXT "[nincs]", 1088, 35, 35, 120, 9 - RADIOBUTTON "&Adott nyomtat", 1057, 16, 50, 80, 12 + RADIOBUTTON "&Adott nyomtató", 1057, 16, 50, 80, 12 COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "Ok", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "Mgsem", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Bellts", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP - GROUPBOX "Oldalfekvs", 1073, 6, 85, 100, 50, BS_GROUPBOX - RADIOBUTTON "&ll", 1058, 50, 100, 40, 12 - RADIOBUTTON "&Fekv", 1059, 50, 115, 40, 12 + PUSHBUTTON "Mégse", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Beállítás", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP + GROUPBOX "Tájolás", 1073, 6, 85, 100, 50, BS_GROUPBOX + RADIOBUTTON "Á&lló", 1058, 50, 100, 40, 12 + RADIOBUTTON "&Fekvő", 1059, 50, 115, 40, 12 ICON "LANDSCAP", 1097, 10, 95, 32, 32 ICON "PORTRAIT", 1098, 10, 95, 32, 32 - GROUPBOX "Papr", 1074, 120, 85, 180, 50, BS_GROUPBOX - LTEXT "&Mrete", 1089, 130, 95, 30, 9 - LTEXT "Fo&rrsa", 1090, 130, 110, 30, 9 + GROUPBOX "Papír", 1074, 120, 85, 180, 50, BS_GROUPBOX + LTEXT "&Méret", 1089, 130, 95, 30, 9 + LTEXT "Fo&rrás", 1090, 130, 110, 30, 9 COMBOBOX 1137, 155, 95, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP COMBOBOX 1138, 155, 110, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP } @@ -119,31 +177,31 @@ FONT 8, "MS Shell Dlg" CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Font" +CAPTION "Betûtípus" FONT 8, "MS Shell Dlg" { - LTEXT "&Font:",1088 ,6,3,40,9 + LTEXT "&Betûtípus:",1088 ,6,3,40,9 COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE - LTEXT "Font &stlus:",1089 ,108,3,44,9 + LTEXT "Betû&stílus:",1089 ,108,3,44,9 COMBOBOX 1137,108,13,64,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE - LTEXT "&Mret:",1090,179,3,30,9 + LTEXT "&Méret:",1090,179,3,30,9 COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT DEFPUSHBUTTON "OK",IDOK,218,6,40,14,WS_GROUP - PUSHBUTTON "Mgsem",IDCANCEL,218,23,40,14,WS_GROUP + PUSHBUTTON "Mégse",IDCANCEL,218,23,40,14,WS_GROUP PUSHBUTTON "&Alkalmaz", 1026,218,40,40,14,WS_GROUP - PUSHBUTTON "&Segtsg" , 1038,218,57,40,14,WS_GROUP + PUSHBUTTON "&Súgó" , 1038,218,57,40,14,WS_GROUP GROUPBOX "Effektusok",1072,6,72,84,34,WS_GROUP - CHECKBOX "&thzott", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP - CHECKBOX "&Alhzott", 1041, 10,94,50,10, BS_AUTOCHECKBOX - LTEXT "&Szn:", 1091 ,6,110,30,9 + CHECKBOX "Á&thúzott", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "&Aláhúzott", 1041, 10,94,50,10, BS_AUTOCHECKBOX + LTEXT "&Szín:", 1091 ,6,110,30,9 COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP GROUPBOX "Minta",grp2,98,72,120,36,WS_GROUP - CTEXT "AaBbYyZz",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE - LTEXT "Scr&ipt (translate):",stc7 ,98,114,80,9 + CTEXT "AaBbYyZzÁáŐőÉé",stc5,103,80,109,24,SS_NOPREFIX | NOT WS_VISIBLE + LTEXT "Szkr&ipt:",stc7 ,98,114,80,9 COMBOBOX cmb5,98,124,120,90,CBS_DROPDOWNLIST | CBS_HASSTRINGS | CBS_AUTOHSCROLL | WS_VSCROLL | WS_TABSTOP } @@ -151,17 +209,17 @@ FONT 8, "MS Shell Dlg" CHOOSE_COLOR DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 300, 185 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Szn" +CAPTION "Szín" FONT 8, "MS Shell Dlg" { - LTEXT "&Alap sznek:", 1088, 4, 4, 140, 10 - LTEXT "&Egyedi sznek:", 1089, 4, 106, 140, 10 - LTEXT "Szn | &Tmr", 1090, 150, 151, 48, 10 - LTEXT "&Vrs:", 726 /*1094*/,249,126,24,10 + LTEXT "&Alap színek:", 1088, 4, 4, 140, 10 + LTEXT "&Egyedi színek:", 1089, 4, 106, 140, 10 + LTEXT "Szín | &Tömör", 1090, 150, 151, 48, 10 + LTEXT "&Vörös:", 726 /*1094*/,249,126,24,10 EDITTEXT 706, 275,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "&Zld:",727/*1095*/,249,140,24,10 + LTEXT "&Zöld:",727/*1095*/,249,140,24,10 EDITTEXT 707, 275,138,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "&Kk:",728 /*1096*/,249,154,24,10 + LTEXT "&Kék:",728 /*1096*/,249,154,24,10 EDITTEXT 708, 275,152,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP LTEXT "&Hue:" ,723 /*1091*/,202,126,22,10 EDITTEXT 703, 226,124,21,12, WS_BORDER | WS_GROUP | WS_TABSTOP @@ -175,44 +233,250 @@ FONT 8, "MS Shell Dlg" CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 DEFPUSHBUTTON "Ok", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "Mgsem", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Segtsg", 1038,100,166, 44, 14 - PUSHBUTTON "&Egyedi sznekhez ads", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "E&gyedi szn definils >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mégse", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Súgó", 1038,100,166, 44, 14 + PUSHBUTTON "&Egyedi színekhez adás", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "E&gyedi szín definiálás >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&t",713,300,200,4,14 /* just a dummy: 'i' is like &i in "sol&id" */ } FINDDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 236, 62 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Keress" +CAPTION "Keresés" FONT 8, "MS Shell Dlg" BEGIN LTEXT "&Mit keressen:", -1, 4, 8, 48, 8 EDITTEXT edt1, 51, 7, 124, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - CHECKBOX "Teljes &szavak keresse", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP - CHECKBOX "Kis/&nagybet klnb.", chx2, 4, 42, 92, 12, BS_AUTOCHECKBOX | WS_TABSTOP - GROUPBOX "Irny", grp1, 97, 26, 78, 28 + CHECKBOX "Teljes &szavak keresése", chx1, 4, 26, 100, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Kis/&nagybetű különb.", chx2, 4, 42, 92, 12, BS_AUTOCHECKBOX | WS_TABSTOP + GROUPBOX "Irány", grp1, 97, 26, 78, 28 CONTROL "&Vissza", rad1, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_GROUP | WS_TABSTOP, 102, 38, 32, 12 - CONTROL "&Elre", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 - DEFPUSHBUTTON "&Kvetkez", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Mgsem", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Segtsg", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP + CONTROL "&Előre", rad2, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 138, 38, 30, 12 + DEFPUSHBUTTON "&Következő", IDOK, 182, 5, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Mégse", IDCANCEL, 182, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Súgó", pshHelp, 182, 45, 50, 14, WS_GROUP | WS_TABSTOP END REPLACEDLGORD DIALOG 36, 24, 230, 94 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Cserls" +CAPTION "Csere" FONT 8, "MS Shell Dlg" BEGIN LTEXT "&Mit keressen:", -1, 4, 9, 48, 8 EDITTEXT 1152, 57, 7, 111, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - LTEXT "Mire &cserljem:", -1, 4, 26, 53, 8 + LTEXT "Mire &cserélje:", -1, 4, 26, 53, 8 EDITTEXT 1153, 57, 24, 111, 12, ES_AUTOHSCROLL | WS_BORDER | WS_GROUP | WS_TABSTOP - CONTROL "Teljes &szavak keresse", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 5, 46, 104, 12 - CONTROL "Kis/&nagybet klnb.", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 5, 62, 99, 12 - CONTROL "&Kvetkez", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 174, 4, 53, 14 - CONTROL "C&serl", 1024, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 21, 53, 14 - CONTROL "M&indent cserl", 1025, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 38, 53, 14 - CONTROL "Mgsem", IDCANCEL, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 55, 53, 14 - CONTROL "&Segtsg", 1038, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 75, 53, 14 + CONTROL "Teljes &szavak keresése", 1040, "BUTTON", BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP, 5, 46, 104, 12 + CONTROL "Kis/&nagybetű különb.", 1041, "BUTTON", BS_AUTOCHECKBOX | WS_TABSTOP, 5, 62, 99, 12 + CONTROL "&Következő", IDOK, "BUTTON", BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP, 174, 4, 53, 14 + CONTROL "C&serél", 1024, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 21, 53, 14 + CONTROL "M&indent cserél", 1025, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 38, 53, 14 + CONTROL "Mégse", IDCANCEL, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 55, 53, 14 + CONTROL "&Súgó", 1038, "BUTTON", WS_GROUP | WS_TABSTOP, 174, 75, 53, 14 END + +PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Nyomtatás" +FONT 8, "MS Shell Dlg" +{ + DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON + PUSHBUTTON "Mégse", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "&Súgó", pshHelp, 50, 161, 48,14, WS_GROUP + + GROUPBOX "Nyomtató", grp4, 8, 4, 272,84, WS_GROUP + CONTROL "Nyomtatás fáj&lba", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 + PUSHBUTTON "&Tulajdonságok", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Név:", stc6, 16, 20, 36,8 + COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Állapot:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Látsz. állapot", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Típus:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Látsz. típus", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Hely:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Látsz. hely", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Megjegyzés:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Látsz. megjegyzés", stc13, 52, 72, 152,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Másolatok", grp2, 160, 92, 120,64, WS_GROUP + LTEXT "Másola&tok száma:",stc5,168,108,68,8 + ICON "", ico3, 162,124, 76,24, WS_GROUP | SS_CENTERIMAGE + CONTROL "Le&válogatás", chx2,"Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,240,130,36,12 + EDITTEXT edt3, 240,106, 32,12, WS_GROUP | ES_NUMBER + + GROUPBOX "Nyomtatási terület", grp1, 8,92, 144,64, WS_GROUP + CONTROL "&Összes", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP | WS_TABSTOP,16,106,64,12 + CONTROL "Oldala&k", rad3,"Button",BS_AUTORADIOBUTTON,16,122,36,12 + CONTROL "&Kijelölés", rad2,"Button",BS_AUTORADIOBUTTON,16,138,64,12 + EDITTEXT edt1, 74,122, 26,12, WS_GROUP | ES_NUMBER + EDITTEXT edt2, 118,122, 26,12, WS_GROUP | ES_NUMBER + RTEXT "Et&tõl:", stc2, 52,124, 20,8 + RTEXT "Ed&dig:", stc3, 100,124, 16,8 +} + +PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | + DS_CONTEXTHELP | DS_3DLOOK +CAPTION "Nyomtatás beállítás" +FONT 8, "MS Shell Dlg" +BEGIN + DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP + PUSHBUTTON "Mégse",IDCANCEL,232,156,48,14 +/* PUSHBUTTON "Hálózat...", psh5, 284,156,48,14 */ + + GROUPBOX "Nyomtató", grp4, 8, 4, 272,84, WS_GROUP + PUSHBUTTON "&Tulajdonságok", psh2, 212, 17, 60,14, WS_GROUP + LTEXT "&Név:", stc6, 16, 20, 36,8 + COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "Állapot:", stc8, 16, 36, 36,10, SS_NOPREFIX + LTEXT "Látsz. állapot", stc12, 52, 36, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Típus:", stc7, 16, 48, 36,10, SS_NOPREFIX + LTEXT "Látsz. típus", stc11, 52, 48, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Hely:", stc10, 16, 60, 36,10, SS_NOPREFIX + LTEXT "Látsz. hely", stc14, 52, 60, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + LTEXT "Megjegyzés:", stc9, 16, 72, 36,10, SS_NOPREFIX + LTEXT "Látsz. megjegyzés", stc13, 52, 72, 224,10, SS_NOPREFIX | SS_LEFTNOWORDWRAP + + GROUPBOX "Papír", grp2, 8, 92, 164,56, WS_GROUP + LTEXT "Mé&ret:", stc2, 16,108, 36, 8 + COMBOBOX cmb2, 52,106, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + LTEXT "&Forrás:", stc3, 16,128, 36, 8 + COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP + + GROUPBOX "Tájolás", grp1, 180, 92, 100,56, WS_GROUP + ICON "", ico1, 195,112, 18,20, WS_GROUP + CONTROL "&Álló", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "Fe&kvõ", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 +END + +STRINGTABLE DISCARDABLE +{ + IDS_ABOUTBOX "M&appaválasztó teszt névjegye" + IDS_DOCUMENTFOLDERS "Dokumentum mappák" + IDS_PERSONAL "Dokumentumok" + IDS_FAVORITES "Kedvencek" + IDS_PATH "Rendszer elérési útvonal" + IDS_DESKTOP "Asztal" + IDS_FONTS "Betûtípusok" + IDS_MYCOMPUTER "Számítógép" +} + +STRINGTABLE DISCARDABLE +{ + IDS_SYSTEMFOLDERS "Rendszermappák" + IDS_LOCALHARDRIVES "Helyi merevlemezek" + IDS_FILENOTFOUND "Fájl nem található" + IDS_VERIFYFILE "Kérem ellenõrizze, hogy helyes fájnevet adott-e meg" + IDS_CREATEFILE "A fájl nem létezik.\nLétrehozza a fájlt?" + IDS_OVERWRITEFILE "A fájl már létezik.\nCseréli a fájlt?" + IDS_INVALID_FILENAME_TITLE "Érvénytelen karakter(ek) van(nak) az útvonalban" + IDS_INVALID_FILENAME "A fájlnév nem tartalmazhatja ezeket a karaktereket:\n / : < > |" + IDS_PATHNOTEXISTING "Útvonal nem létezik" + IDS_FILENOTEXISTING "Fájl nem létezik" +} + +STRINGTABLE DISCARDABLE +{ + IDS_UPFOLDER "Feljebb egy szintet" + IDS_NEWFOLDER "Új mappa léterehozása" + IDS_LISTVIEW "Lista" + IDS_REPORTVIEW "Részletek" + IDS_TODESKTOP "Navigálás az asztalra" +} + +STRINGTABLE DISCARDABLE +{ + PD32_PRINT_TITLE "Nyomtatás" + + PD32_VALUE_UREADABLE "Olvashatatlan bejegyzés" + PD32_INVALID_PAGE_RANGE "Ez az érték nincs az oldal határain belûl.\n\ +Kérem adjon meg egy értéket %d és %d között." + PD32_FROM_NOT_ABOVE_TO "Az 'Ettõl' mezõ nem haladhatja meg az \ +'Eddig' mezõt." + PD32_MARGINS_OVERLAP "A margók átfedik egymást vagy kívül esnek a \ +papír határain.\nKérem adja meg újra a margókat." + PD32_NR_OF_COPIES_EMPTY "A 'Másolatok száma' mezõ nem lehet üres." + PD32_TOO_LARGE_COPIES "Ezt a nagyszámú másolatok számát nem támogatja az \ +Ön nyomtatója.\nKérem adjon meg egy értéket 1 és %d között." + PD32_PRINT_ERROR "Nyomtatási hiba történt." + PD32_NO_DEFAULT_PRINTER "Nincs alapértelmezett nyomtató megadva." + PD32_CANT_FIND_PRINTER "Nem találom a nyomtatót." + PD32_OUT_OF_MEMORY "Elfogyott a memória." + PD32_GENERIC_ERROR "Hiba történt." + PD32_DRIVER_UNKNOWN "Ismeretlen nyomtató eszközmeghajtó." + PD32_NO_DEVICES "mielõtt nyomtatási feladatokat hajtana végre \ +mint például oldalbeállítás vagy dokumentum nyomtatása, Önnek telepítenie kell egy nyomtatót. \ +Please install one and retry." + + PD32_DEFAULT_PRINTER "Alapértelmezett nyomtató; " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "%d dokumentum van a sorban" + PD32_MARGINS_IN_INCHES "Margók [hüvejk]" + PD32_MARGINS_IN_MILLIMETERS "Margók [mm]" + PD32_MILLIMETERS "mm" + + PD32_PRINTER_STATUS_READY "kész" + PD32_PRINTER_STATUS_PAUSED "Szünet; " + PD32_PRINTER_STATUS_ERROR "Hiba; " + PD32_PRINTER_STATUS_PENDING_DELETION "Törlés folyamatban; " + PD32_PRINTER_STATUS_PAPER_JAM "Papír beragadás; " + PD32_PRINTER_STATUS_PAPER_OUT "Elfogyott a papír; " + PD32_PRINTER_STATUS_MANUAL_FEED "Kézi papírbehelyezés; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Papír probléma; " + PD32_PRINTER_STATUS_OFFLINE "A nyomtató nem elérhetõ; " + PD32_PRINTER_STATUS_IO_ACTIVE "I/O aktív; " + PD32_PRINTER_STATUS_BUSY "Foglalt; " + PD32_PRINTER_STATUS_PRINTING "Nyomtatás; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Kimeneti tálca megtelt; " + PD32_PRINTER_STATUS_NOT_AVAILABLE "Nem elérhetõ; " + PD32_PRINTER_STATUS_WAITING "Várakozik; " + PD32_PRINTER_STATUS_PROCESSING "Feldolgozás; " + PD32_PRINTER_STATUS_INITIALIZING "Inicializálás; " + PD32_PRINTER_STATUS_WARMING_UP "Bemelegítés; " + PD32_PRINTER_STATUS_TONER_LOW "Alacsony toner szint; " + PD32_PRINTER_STATUS_NO_TONER "Nincs toner; " + PD32_PRINTER_STATUS_PAGE_PUNT "Oldal becsavarozás; " + PD32_PRINTER_STATUS_USER_INTERVENTION "Felhasználó által megszakítva; " + PD32_PRINTER_STATUS_OUT_OF_MEMORY "Elfogyott a memória; " + PD32_PRINTER_STATUS_DOOR_OPEN "A nyomtató fedele nyitva; " + PD32_PRINTER_STATUS_SERVER_UNKNOWN "Nyomtató kiszolgáló ismeretlen; " + PD32_PRINTER_STATUS_POWER_SAVE "energiatakarékos mód; " +} + +STRINGTABLE DISCARDABLE /* Font styles */ +{ + IDS_FONT_REGULAR "Szokásos" + IDS_FONT_BOLD "Félkövér" + IDS_FONT_ITALIC "Dõlt" + IDS_FONT_BOLD_ITALIC "Félkövér dõlt" +} + +STRINGTABLE DISCARDABLE /* Color names */ +{ + IDS_COLOR_BLACK "Fekete" + IDS_COLOR_MAROON "Gesztenyebarna" + IDS_COLOR_GREEN "Zöld" + IDS_COLOR_OLIVE "Olajzöld" + IDS_COLOR_NAVY "Tengerkék" + IDS_COLOR_PURPLE "Lila" + IDS_COLOR_TEAL "Kékeszöld" + IDS_COLOR_GRAY "Szürke" + IDS_COLOR_SILVER "Ezüst" + IDS_COLOR_RED "Piros" + IDS_COLOR_LIME "Borostnyán" + IDS_COLOR_YELLOW "Sárga" + IDS_COLOR_BLUE "Kék" + IDS_COLOR_FUCHSIA "Vöröses lila" + IDS_COLOR_AQUA "Kékeszöld" + IDS_COLOR_WHITE "Fehér" +} + +STRINGTABLE DISCARDABLE +{ + IDS_FONT_SIZE "Válasszon betûméretet %d és %d pont között." + IDS_SAVE_BUTTON "&Mentés" + IDS_SAVE_IN "Mentés &ide:" + IDS_SAVE "Mentés" + IDS_SAVE_AS "Mentés másként" + IDS_OPEN_FILE "Fájl megnyitása" +} diff --git a/reactos/dll/win32/comdlg32/cdlg_It.rc b/reactos/dll/win32/comdlg32/cdlg_It.rc index beb9bd77849..1e3c6075271 100644 --- a/reactos/dll/win32/comdlg32/cdlg_It.rc +++ b/reactos/dll/win32/comdlg32/cdlg_It.rc @@ -2,6 +2,7 @@ * Copyright 1996 Tristan Tarrant * Copyright 2004 Ivan Leo Puoti * Copyright 2006 Antonio Codazzi + * Copyright 2010 Luca Bennati * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,6 +22,9 @@ #include "cdlg.h" #include "filedlgbrowser.h" +/* UTF-8 */ +#pragma code_page(65001) + /* * WARNING: DO NOT CHANGE THE SIZE OF THE STANDARD DIALOG TEMPLATES. */ @@ -38,14 +42,14 @@ FONT 8, "MS Shell Dlg" LTEXT "&Percorso:", -1, 110, 6, 92, 9 LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP - LTEXT "File di &Tipo:", 1089, 6, 104, 90, 9 + LTEXT "&Tipo di file:", 1089, 6, 104, 90, 9 COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP - LTEXT "&Unita':", 1091, 110, 104, 92, 9 + LTEXT "&Unità:", 1091, 110, 104, 92, 9 COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "Apri", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annulla", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Aiuto", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP - CHECKBOX "Solo &Lettura", 1040, 208, 68, 52, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Sola &Lettura", 1040, 208, 68, 52, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -60,13 +64,13 @@ FONT 8, "MS Shell Dlg" LTEXT "&Percorso:", -1, 110, 6, 92, 9 LTEXT "", 1088, 110, 18, 92, 9, SS_NOPREFIX | WS_GROUP LISTBOX 1121, 110, 32, 92, 68, LBS_STANDARD | LBS_OWNERDRAWFIXED | LBS_HASSTRINGS | LBS_DISABLENOSCROLL | WS_TABSTOP - LTEXT "Files di &Tipo:", 1089, 6, 104, 90, 9 + LTEXT "&Tipo di file:", 1089, 6, 104, 90, 9 COMBOBOX 1136, 6, 114, 90, 36, CBS_DROPDOWNLIST | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP - LTEXT "&Unita':", 1091, 110, 104, 92, 9 + LTEXT "&Unità:", 1091, 110, 104, 92, 9 COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "Salva come", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annulla", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "&Aiuto", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP CHECKBOX "&Sola lettura", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -87,7 +91,7 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "&Configura", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP LTEXT "&Da:", 1090, 60, 80, 30, 9 LTEXT "&A:", 1091, 120, 80, 30, 9 - LTEXT "&Qualita' di Stampa:", 1092, 6, 100, 76, 9 + LTEXT "&Qualità di Stampa:", 1092, 6, 100, 76, 9 COMBOBOX 1136, 80, 100, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP CHECKBOX "Stampa su Fi&le", 1040, 20, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP CHECKBOX "Condensato", 1041, 160, 100, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP @@ -122,10 +126,10 @@ FONT 8, "MS Shell Dlg" CHOOSE_FONT DIALOG DISCARDABLE 13, 54, 264, 147 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU -CAPTION "Font" +CAPTION "Carattere" FONT 8, "MS Shell Dlg" { - LTEXT "&Font:",1088 ,6,3,40,9 + LTEXT "&Carattere:",1088 ,6,3,40,9 COMBOBOX 1136 ,6,13,94,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | CBS_AUTOHSCROLL | CBS_SORT | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE LTEXT "St&ile:",1089 ,108,3,42,9 @@ -236,7 +240,7 @@ FONT 8, "MS Shell Dlg" GROUPBOX "Stampante", grp4, 8, 4, 272,84, WS_GROUP CONTROL "Stampa su fi&le", chx1, "Button",BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP,212,70,64,12 - PUSHBUTTON "&Propriet", psh2, 212, 17, 60,14, WS_GROUP + PUSHBUTTON "&Proprietà", psh2, 212, 17, 60,14, WS_GROUP LTEXT "&Nome:", stc6, 16, 20, 36,8 COMBOBOX cmb4, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP LTEXT "Stato:", stc8, 16, 36, 36,10, SS_NOPREFIX @@ -275,7 +279,7 @@ BEGIN /* PUSHBUTTON "Rete...", psh5, 284,156,48,14 */ GROUPBOX "Stampante", grp4, 8, 4, 272,84, WS_GROUP - PUSHBUTTON "&Propriet", psh2, 212, 17, 60,14, WS_GROUP + PUSHBUTTON "&Proprietà", psh2, 212, 17, 60,14, WS_GROUP LTEXT "&Nome:", stc6, 16, 20, 36,8 COMBOBOX cmb1, 52, 18, 152,152,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP LTEXT "Stato:", stc8, 16, 36, 36,10, SS_NOPREFIX @@ -361,7 +365,7 @@ STRINGTABLE DISCARDABLE IDS_FAVORITES "Preferiti" IDS_PATH "Percorso di Sistema" IDS_DESKTOP "Desktop" - IDS_FONTS "Font" + IDS_FONTS "Carattere" IDS_MYCOMPUTER "Risorse del Computer" } @@ -372,9 +376,9 @@ STRINGTABLE DISCARDABLE IDS_FILENOTFOUND "File non trovato" IDS_VERIFYFILE "Controllare che il nome del file fornito sia corretto" IDS_CREATEFILE "Il file non esiste\nCreare il file" - IDS_OVERWRITEFILE "Il file esiste gi.\nSovrascriverlo?" + IDS_OVERWRITEFILE "Il file esiste già.\nSovrascriverlo?" IDS_INVALID_FILENAME_TITLE "Caratteri invalidi nel percorso" - IDS_INVALID_FILENAME "Il nome di un file non pu contenere i seguenrti caratteri:\n / : < > |" + IDS_INVALID_FILENAME "Il nome di un file non può contenere i seguenrti caratteri:\n / : < > |" IDS_PATHNOTEXISTING "Il percorso specificato non esiste" IDS_FILENOTEXISTING "Il file non esiste" } @@ -392,25 +396,19 @@ STRINGTABLE DISCARDABLE { PD32_PRINT_TITLE "Stampa" - PD32_VALUE_UREADABLE "Entry non leggibile" - PD32_INVALID_PAGE_RANGE "Questo valore non si trova all'interno della pagina.\n\ -Usare un valore compreso tra %d e %d." - PD32_FROM_NOT_ABOVE_TO "La voce 'da' non pu eccedere la voce 'a'." - PD32_MARGINS_OVERLAP "I margini si sovrappongono o si trovano oltre \ -il limite della carta.\nPer favore ridefinire i margini." - PD32_NR_OF_COPIES_EMPTY "Il valore del numero 'Numero di copie' \ -non pu essere vuoto." - PD32_TOO_LARGE_COPIES "Questo alto numero di copie non \ -supportato dalla stampante.\nInserire un valore compreso tra 1 e %d" - PD32_PRINT_ERROR "Si verificato un errore della stampante." - PD32_NO_DEFAULT_PRINTER "Non stata impostata una stampante predefinita." + PD32_VALUE_UREADABLE "Elemento non leggibile" + PD32_INVALID_PAGE_RANGE "Questo valore non si trova all'interno della pagina.\n\Usare un valore compreso tra %d e %d." + PD32_FROM_NOT_ABOVE_TO "La voce 'da' non può eccedere la voce 'a'." + PD32_MARGINS_OVERLAP "I margini si sovrappongono o si trovano oltre il limite della carta.\nPer favore ridefinire i margini." + PD32_NR_OF_COPIES_EMPTY "Il valore del numero 'Numero di copie' non può essere vuoto." + PD32_TOO_LARGE_COPIES "Questo alto numero di copie non è supportato dalla stampante.\nInserire un valore compreso tra 1 e %d" + PD32_PRINT_ERROR "Si è verificato un errore della stampante." + PD32_NO_DEFAULT_PRINTER "Non è stata impostata una stampante predefinita." PD32_CANT_FIND_PRINTER "Stampante non trovata." PD32_OUT_OF_MEMORY "Memoria esaurita." - PD32_GENERIC_ERROR "Si verificato un errore." + PD32_GENERIC_ERROR "Si è verificato un errore." PD32_DRIVER_UNKNOWN "Driver della stampante sconosciuto." - PD32_NO_DEVICES "Prima di svolgere compiti relativi alla stampante \ -come impostare una pagina o stampare un documento, bisogna installare una stampante. \ -Si consiglia di installare la stampante e poi ritentare." + PD32_NO_DEVICES "Prima di svolgere compiti relativi alla stampante come impostare una pagina o stampare un documento, bisogna installare una stampante. Si consiglia di installare la stampante e poi ritentare." PD32_DEFAULT_PRINTER "Stampante predefinita; " PD32_NR_OF_DOCUMENTS_IN_QUEUE "Ci sono %d documenti nella coda di stampa" @@ -425,25 +423,33 @@ Si consiglia di installare la stampante e poi ritentare." PD32_PRINTER_STATUS_PAPER_JAM "Carta inceppata; " PD32_PRINTER_STATUS_PAPER_OUT "Carta esaurita; " PD32_PRINTER_STATUS_MANUAL_FEED "Alimentazione manuale della carta; " - PD32_PRINTER_STATUS_PAPER_PROBLEM "Si verificato un problema con la carta; " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Si è verificato un problema con la carta; " PD32_PRINTER_STATUS_OFFLINE "Stampante offline; " PD32_PRINTER_STATUS_IO_ACTIVE "I/O Attivo; " PD32_PRINTER_STATUS_BUSY "Stampante occupata; " PD32_PRINTER_STATUS_PRINTING "Stampa in corso; " - PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Il vassoio di uscita pieno; " + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Il vassoio di uscita è pieno; " PD32_PRINTER_STATUS_NOT_AVAILABLE "Non disponibile; " PD32_PRINTER_STATUS_WAITING "Attesa; " PD32_PRINTER_STATUS_PROCESSING "Elaborazione; " - PD32_PRINTER_STATUS_INITIALIZING "Inizializazione; " + PD32_PRINTER_STATUS_INITIALIZING "Inizializzazione; " PD32_PRINTER_STATUS_WARMING_UP "La stampante si sta riscaldando; " - PD32_PRINTER_STATUS_TONER_LOW "Il livello del toner basso; " + PD32_PRINTER_STATUS_TONER_LOW "Il livello del toner è basso; " PD32_PRINTER_STATUS_NO_TONER "Manca il toner; " PD32_PRINTER_STATUS_PAGE_PUNT "Punt della pagina; " PD32_PRINTER_STATUS_USER_INTERVENTION "Interrotto dall'utente; " PD32_PRINTER_STATUS_OUT_OF_MEMORY "Memoria esaurita; " - PD32_PRINTER_STATUS_DOOR_OPEN "La porta stampante aperta; " + PD32_PRINTER_STATUS_DOOR_OPEN "La porta stampante è aperta; " PD32_PRINTER_STATUS_SERVER_UNKNOWN "Server di stampa sconosciuto; " - PD32_PRINTER_STATUS_POWER_SAVE "Modalit risparmio energetico; " + PD32_PRINTER_STATUS_POWER_SAVE "Modalitè risparmio energetico; " +} + +STRINGTABLE DISCARDABLE /* Font styles */ +{ + IDS_FONT_REGULAR "Regolare" + IDS_FONT_BOLD "Grassetto" + IDS_FONT_ITALIC "Corsivo" + IDS_FONT_BOLD_ITALIC "Grassetto Corsivo" } STRINGTABLE DISCARDABLE /* Color names */ @@ -453,8 +459,8 @@ STRINGTABLE DISCARDABLE /* Color names */ IDS_COLOR_GREEN "Verde" IDS_COLOR_OLIVE "Verde oliva" IDS_COLOR_NAVY "Blu oltremare" - IDS_COLOR_PURPLE "Propora" - IDS_COLOR_TEAL "Teal" + IDS_COLOR_PURPLE "Porpora" + IDS_COLOR_TEAL "Tè blu" IDS_COLOR_GRAY "Grigio" IDS_COLOR_SILVER "Argento" IDS_COLOR_RED "Rosso" diff --git a/reactos/dll/win32/comdlg32/cdlg_Ja.rc b/reactos/dll/win32/comdlg32/cdlg_Ja.rc index 0e0358f1f01..6e1687719b8 100644 --- a/reactos/dll/win32/comdlg32/cdlg_Ja.rc +++ b/reactos/dll/win32/comdlg32/cdlg_Ja.rc @@ -375,78 +375,77 @@ STRINGTABLE DISCARDABLE IDS_VERIFYFILE "ファイル名を確認してください。" IDS_CREATEFILE "このファイルは存在しません。\n作成しますか?" IDS_OVERWRITEFILE "ファイルは既に存在します。\n上書きしますか?" - IDS_INVALID_FILENAME_TITLE "Invalid character(s) in path" + IDS_INVALID_FILENAME_TITLE "ファイル名に使えない文字" IDS_INVALID_FILENAME "ファイル名には以下の文字は使えません:\n / : < > |" - IDS_PATHNOTEXISTING "Path does not exist" - IDS_FILENOTEXISTING "File does not exist" + IDS_PATHNOTEXISTING "パスが見つかりません" + IDS_FILENOTEXISTING "ファイルが見つかりません" } STRINGTABLE DISCARDABLE { - IDS_UPFOLDER "Up One Level" - IDS_NEWFOLDER "Create New Folder" - IDS_LISTVIEW "List" - IDS_REPORTVIEW "Details" - IDS_TODESKTOP "Browse to Desktop" + IDS_UPFOLDER "一つ上のフォルダへ" + IDS_NEWFOLDER "新しいフォルダの作成" + IDS_LISTVIEW "一覧" + IDS_REPORTVIEW "詳細" + IDS_TODESKTOP "デスクトップを参照" } STRINGTABLE DISCARDABLE { - PD32_PRINT_TITLE "Print" + PD32_PRINT_TITLE "印刷" PD32_VALUE_UREADABLE "Unreadable Entry" - PD32_INVALID_PAGE_RANGE "This value does not lie within the page range.\n\ -Please enter a value between %d and %d." - PD32_FROM_NOT_ABOVE_TO "The 'from' entry cannot exceed the \ -'to' entry." - PD32_MARGINS_OVERLAP "Margins overlap or fall outside \ -Paper boundaries.\nPlease reenter margins." - PD32_NR_OF_COPIES_EMPTY "The number of 'Number of copies' \ -value cannot be empty." - PD32_TOO_LARGE_COPIES "This large number of copies is not \ -supported by your printer.\nPlease enter a value between 1 and %d." - PD32_PRINT_ERROR "A printer error occurred." - PD32_NO_DEFAULT_PRINTER "No default printer defined." - PD32_CANT_FIND_PRINTER "Cannot find the printer." - PD32_OUT_OF_MEMORY "Out of memory." - PD32_GENERIC_ERROR "An error occurred." - PD32_DRIVER_UNKNOWN "Unknown printer driver." - PD32_NO_DEVICES "Before you can perform printer-related tasks \ -such as page setup or printing a document, you need to install a printer. \ -Please install one and retry." + PD32_INVALID_PAGE_RANGE "この値はページの範囲に含まれません。\n\ +%d から %d までの値を入力してください。" + PD32_FROM_NOT_ABOVE_TO "開始ページの値は、終了ページの値を\ +超えない値にしてください。" + PD32_MARGINS_OVERLAP "余白が重なっているか、用紙の境界を\ +超えています。\n余白を再入力してください。" + PD32_NR_OF_COPIES_EMPTY "部数は、空にできません。" + PD32_TOO_LARGE_COPIES "部数がプリンタがサポートしている\ +を超えています。\n1 から %d までの値を入力してください。" + PD32_PRINT_ERROR "プリンタ エラーが発生しました。" + PD32_NO_DEFAULT_PRINTER "既定のプリンタが定義されていません。" + PD32_CANT_FIND_PRINTER "プリンタが見つかりません。" + PD32_OUT_OF_MEMORY "メモリ不足です。" + PD32_GENERIC_ERROR "エラーが発生しました。" + PD32_DRIVER_UNKNOWN "プリンタ ドライバが不明です。" + PD32_NO_DEVICES "ページ設定や文書を印刷するなどのプリンタ関連の\ +タスクを実施する前に、プリンタをインストールする必要があります。 \ +プリンタをインストールしてから再度実行してください。" - PD32_DEFAULT_PRINTER "Default Printer; " - PD32_NR_OF_DOCUMENTS_IN_QUEUE "There are %d documents in the queue" - PD32_MARGINS_IN_INCHES "Margins [inches]" - PD32_MARGINS_IN_MILLIMETERS "Margins [mm]" + PD32_DEFAULT_PRINTER "既定のプリンタ " + PD32_NR_OF_DOCUMENTS_IN_QUEUE "キューに %d つの文書" + PD32_MARGINS_IN_INCHES "余白 [インチ]" + PD32_MARGINS_IN_MILLIMETERS "余白 [mm]" PD32_MILLIMETERS "mm" - PD32_PRINTER_STATUS_READY "Ready" - PD32_PRINTER_STATUS_PAUSED "Paused; " - PD32_PRINTER_STATUS_ERROR "Error; " - PD32_PRINTER_STATUS_PENDING_DELETION "Pending deletion; " - PD32_PRINTER_STATUS_PAPER_JAM "Paper jam; " - PD32_PRINTER_STATUS_PAPER_OUT "Out of paper; " - PD32_PRINTER_STATUS_MANUAL_FEED "Feed paper manual; " - PD32_PRINTER_STATUS_PAPER_PROBLEM "Paper problem; " - PD32_PRINTER_STATUS_OFFLINE "Printer offline; " - PD32_PRINTER_STATUS_IO_ACTIVE "I/O Active; " - PD32_PRINTER_STATUS_BUSY "Busy; " - PD32_PRINTER_STATUS_PRINTING "Printing; " - PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "Output tray is full; " - PD32_PRINTER_STATUS_NOT_AVAILABLE "Not available; " - PD32_PRINTER_STATUS_WAITING "Waiting; " - PD32_PRINTER_STATUS_PROCESSING "Processing; " - PD32_PRINTER_STATUS_INITIALIZING "Initialising; " - PD32_PRINTER_STATUS_WARMING_UP "Warming up; " - PD32_PRINTER_STATUS_TONER_LOW "Toner low; " - PD32_PRINTER_STATUS_NO_TONER "No toner; " - PD32_PRINTER_STATUS_PAGE_PUNT "Page punt; " - PD32_PRINTER_STATUS_USER_INTERVENTION "Interrupted by user; " - PD32_PRINTER_STATUS_OUT_OF_MEMORY "Out of memory; " - PD32_PRINTER_STATUS_DOOR_OPEN "The printer door is open; " - PD32_PRINTER_STATUS_SERVER_UNKNOWN "Print server unknown; " - PD32_PRINTER_STATUS_POWER_SAVE "Power save mode; " + PD32_PRINTER_STATUS_READY "準備完了" + PD32_PRINTER_STATUS_PAUSED "一時停止 -" + PD32_PRINTER_STATUS_ERROR "エラー -" + PD32_PRINTER_STATUS_PENDING_DELETION "削除待ち -" + PD32_PRINTER_STATUS_PAPER_JAM "紙詰まり -" + PD32_PRINTER_STATUS_PAPER_OUT "用紙切れ -" + PD32_PRINTER_STATUS_MANUAL_FEED "手差し -" + PD32_PRINTER_STATUS_PAPER_PROBLEM "用紙の問題 -" + PD32_PRINTER_STATUS_OFFLINE "オフライン -" + PD32_PRINTER_STATUS_IO_ACTIVE "入出力中 -" + PD32_PRINTER_STATUS_BUSY "ビジー -" + PD32_PRINTER_STATUS_PRINTING "印刷中 -" + PD32_PRINTER_STATUS_OUTPUT_BIN_FULL "出力トレイが満杯 -" + PD32_PRINTER_STATUS_NOT_AVAILABLE "利用不可 -" + PD32_PRINTER_STATUS_WAITING "待機中 -" + PD32_PRINTER_STATUS_PROCESSING "処理中 -" + PD32_PRINTER_STATUS_INITIALIZING "初期化中 -" + PD32_PRINTER_STATUS_WARMING_UP "ウォーミング アップ -" + PD32_PRINTER_STATUS_TONER_LOW "トナー少量 -" + PD32_PRINTER_STATUS_NO_TONER "トナーなし -" + PD32_PRINTER_STATUS_PAGE_PUNT "処理不能 -" + PD32_PRINTER_STATUS_USER_INTERVENTION "ユーザー操作が必要 -" + PD32_PRINTER_STATUS_OUT_OF_MEMORY "メモリ不足 -" + PD32_PRINTER_STATUS_DOOR_OPEN "プリンタ カバー開放 -" + PD32_PRINTER_STATUS_SERVER_UNKNOWN "プリント サーバ不明 -" + PD32_PRINTER_STATUS_POWER_SAVE "省電力モード -" } STRINGTABLE DISCARDABLE /* Font styles */ @@ -479,7 +478,7 @@ STRINGTABLE DISCARDABLE /* Color names */ STRINGTABLE DISCARDABLE { - IDS_FONT_SIZE "Select a font size between %d and %d points." + IDS_FONT_SIZE "フォントサイズを %d ポイントから %d ポイントの間で選択してください。" IDS_SAVE_BUTTON "保存(&S)" IDS_SAVE_IN "保存する場所(&I):" IDS_SAVE "保存" diff --git a/reactos/dll/win32/comdlg32/cdlg_Nl.rc b/reactos/dll/win32/comdlg32/cdlg_Nl.rc index 340c2db8691..d17ca9296c2 100644 --- a/reactos/dll/win32/comdlg32/cdlg_Nl.rc +++ b/reactos/dll/win32/comdlg32/cdlg_Nl.rc @@ -26,6 +26,8 @@ LANGUAGE LANG_DUTCH, SUBLANG_NEUTRAL +#pragma code_page(65001) + OPEN_FILE DIALOG LOADONCALL MOVEABLE DISCARDABLE 36, 24, 275, 134 STYLE DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU CAPTION "Bestand openen" @@ -44,7 +46,7 @@ FONT 8, "MS Shell Dlg" DEFPUSHBUTTON "&Openen", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuleren", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP - CHECKBOX "Alleen &Lezen", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Alleen-&lezen", 1040, 208, 68, 55, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -66,7 +68,7 @@ FONT 8, "MS Shell Dlg" DEFPUSHBUTTON "&Opslaan als", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuleren", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Help", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP - CHECKBOX "Alleen &Lezen", 1040, 208, 68, 50, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP + CHECKBOX "Alleen-&lezen", 1040, 208, 68, 55, 12, BS_AUTOCHECKBOX | WS_GROUP | WS_TABSTOP } @@ -99,14 +101,14 @@ CAPTION "Afdrukeigenschappen" FONT 8, "MS Shell Dlg" { GROUPBOX "Printer", 1072, 6, 10, 180, 65, BS_GROUPBOX - RADIOBUTTON "Stan&daard Printer", 1056, 16, 20, 80, 12 + RADIOBUTTON "Stan&daardprinter", 1056, 16, 20, 80, 12 LTEXT "[geen]", 1088, 35, 35, 120, 9 RADIOBUTTON "Specifieke &Printer", 1057, 16, 50, 80, 12 COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP PUSHBUTTON "Annuleren", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Setup", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP - GROUPBOX "Afdrukstand", 1073, 6, 85, 100, 50, BS_GROUPBOX + GROUPBOX "Oriëntatie", 1073, 6, 85, 100, 50, BS_GROUPBOX RADIOBUTTON "S&taand", 1058, 50, 100, 40, 12 RADIOBUTTON "&Liggend", 1059, 50, 115, 40, 12 ICON "LANDSCAP", 1097, 10, 95, 32, 32 @@ -139,7 +141,7 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "&Help" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP GROUPBOX "Effecten",1072,6,72,84,34,WS_GROUP CHECKBOX "&Doorhalen", 1040, 10,82,50,10, BS_AUTOCHECKBOX | WS_TABSTOP - CHECKBOX "&Onderstrepen", 1041, 10,94,50,10, BS_AUTOCHECKBOX + CHECKBOX "&Onderstrepen", 1041, 10,94,60,10, BS_AUTOCHECKBOX LTEXT "&Kleur:", 1091 ,6,110,30,9 COMBOBOX cmb4,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP @@ -250,7 +252,7 @@ FONT 8, "MS Shell Dlg" PRINT32 DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 186 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | DS_CONTEXTHELP | DS_3DLOOK -CAPTION "Print32" +CAPTION "Afdrukken" FONT 8, "MS Shell Dlg" { DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON @@ -290,7 +292,7 @@ FONT 8, "MS Shell Dlg" PRINT32_SETUP DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 288, 178 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU | DS_CONTEXTHELP | DS_3DLOOK -CAPTION "Print Setup" +CAPTION "Afdrukeigenschappen" FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP @@ -315,15 +317,15 @@ BEGIN LTEXT "&Bron:", stc3, 16,128, 36, 8 COMBOBOX cmb3, 52,126, 112,112,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_GROUP | WS_TABSTOP - GROUPBOX "Orientatie", grp1, 180, 92, 100,56, WS_GROUP + GROUPBOX "Oriëntatie", grp1, 180, 92, 100,56, WS_GROUP ICON "", ico1, 195,112, 18,20, WS_GROUP - CONTROL "P&ortret", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 + CONTROL "S&taand", rad1,"Button",BS_AUTORADIOBUTTON | WS_GROUP |WS_TABSTOP,224,106,52,12 CONTROL "L&iggend", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 END PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Setup Page" +CAPTION "Pagina-instellingen" FONT 8, "MS Shell Dlg" BEGIN CONTROL "", rct1, "Static", SS_WHITERECT, 80, 8, 80, 80 @@ -334,10 +336,10 @@ BEGIN COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL LTEXT "La&de:", stc3, 16, 132, 36, 8 COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL - GROUPBOX "Orientatie", grp1, 8, 156, 64, 56, BS_GROUPBOX - AUTORADIOBUTTON "&Portret", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "Oriëntatie", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&Staand", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON AUTORADIOBUTTON "&Liggend", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON - GROUPBOX "Borders", grp4, 80, 156, 152, 56, BS_GROUPBOX + GROUPBOX "Randen", grp4, 80, 156, 152, 56, BS_GROUPBOX LTEXT "L&inks:", stc15, 88, 172, 21, 8 EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER LTEXT "&Rechts:", stc16, 159, 172, 27, 8 @@ -366,10 +368,10 @@ STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE { - IDS_SYSTEMFOLDERS "Systeem mappen" + IDS_SYSTEMFOLDERS "Systeemmappen" IDS_LOCALHARDRIVES "Lokale vaste schijven" IDS_FILENOTFOUND "Bestand niet gevonden" - IDS_VERIFYFILE "Controleer of de juiste bestandnaam is opgegeven" + IDS_VERIFYFILE "Controleer of de juiste bestandsnaam is opgegeven" IDS_CREATEFILE "Dit bestand bestaat nog niet\nWilt u het bestand aanmaken?" IDS_OVERWRITEFILE "Bestand bestaat al.\nWilt u het vervangen?" IDS_INVALID_FILENAME_TITLE "De naam van het pad bevat ongeldige tekens" @@ -389,7 +391,7 @@ STRINGTABLE DISCARDABLE STRINGTABLE DISCARDABLE { - PD32_PRINT_TITLE "Print" + PD32_PRINT_TITLE "Afdrukken" PD32_VALUE_UREADABLE "Onleesbare ingave" PD32_INVALID_PAGE_RANGE "Deze waarde ligt niet binnen het bereik\n\ @@ -402,13 +404,13 @@ buiten het papier.\nVoer s.v.p. nieuwe marges in." zijn." PD32_TOO_LARGE_COPIES "Zoveel exemplaren kan de printer \ niet in een keer aan, het maximum is %d" - PD32_PRINT_ERROR "Er ontstond een printer fout." - PD32_NO_DEFAULT_PRINTER "Er is geen default printer" + PD32_PRINT_ERROR "Er heeft zich een fout voorgedaan met de printer." + PD32_NO_DEFAULT_PRINTER "Er is geen standaardprinter" PD32_CANT_FIND_PRINTER "De printer werd niet gevonden" PD32_OUT_OF_MEMORY "Er was onvoldoende geheugen \ beschikbaar" - PD32_GENERIC_ERROR "Er onstond een niet nader \ -gespecifieerde fout" + PD32_GENERIC_ERROR "Er ontstond een niet nader \ +gespecificeerde fout" PD32_DRIVER_UNKNOWN "De printer driver is onbekend" PD32_NO_DEVICES "Voordat u printer-gerelateerde taken \ zoals pagina instellingen of het printen van een document kun uitvoeren, moet u een \ @@ -422,13 +424,13 @@ wachtrij" PD32_MILLIMETERS "mm" PD32_PRINTER_STATUS_READY "Klaar" - PD32_PRINTER_STATUS_PAUSED "Gepauseerd, " + PD32_PRINTER_STATUS_PAUSED "Gepauzeerd, " PD32_PRINTER_STATUS_ERROR "Fout, " PD32_PRINTER_STATUS_PENDING_DELETION "Bezig met verwijderen, " - PD32_PRINTER_STATUS_PAPER_JAM "Papier opstopping, " + PD32_PRINTER_STATUS_PAPER_JAM "Papier-opstopping, " PD32_PRINTER_STATUS_PAPER_OUT "Papier is op, " PD32_PRINTER_STATUS_MANUAL_FEED "Voer s.v.p. met de hand papier in, " - PD32_PRINTER_STATUS_PAPER_PROBLEM "Papier probleem, " + PD32_PRINTER_STATUS_PAPER_PROBLEM "Papier-probleem, " PD32_PRINTER_STATUS_OFFLINE "Printer offline, " PD32_PRINTER_STATUS_IO_ACTIVE "I/O Actief, " PD32_PRINTER_STATUS_BUSY "Druk bezig, " @@ -446,7 +448,7 @@ wachtrij" PD32_PRINTER_STATUS_OUT_OF_MEMORY "Onvoldoende geheugen beschikbaar, " PD32_PRINTER_STATUS_DOOR_OPEN "De printer staat is open, " PD32_PRINTER_STATUS_SERVER_UNKNOWN "Print server onbekend; " - PD32_PRINTER_STATUS_POWER_SAVE "Power safe modus; " + PD32_PRINTER_STATUS_POWER_SAVE "Power save modus; " } STRINGTABLE DISCARDABLE /* Font styles */ diff --git a/reactos/dll/win32/comdlg32/cdlg_Ru.rc b/reactos/dll/win32/comdlg32/cdlg_Ru.rc index 7c1eec530a4..8ba3bdc7b35 100644 --- a/reactos/dll/win32/comdlg32/cdlg_Ru.rc +++ b/reactos/dll/win32/comdlg32/cdlg_Ru.rc @@ -80,7 +80,7 @@ FONT 8, "MS Shell Dlg" LTEXT "Принтер:", 1088, 6, 6, 40, 9 LTEXT "", 1089, 60, 6, 150, 9 GROUPBOX "Печатать", 1072, 6, 30, 160, 65, BS_GROUPBOX - RADIOBUTTON "&Все", 1056, 16, 45, 60, 12 + RADIOBUTTON "&Всё", 1056, 16, 45, 60, 12 RADIOBUTTON "В&ыделенный фрагмент", 1057, 16, 60, 60, 12 RADIOBUTTON "&Страницы", 1058, 16, 75, 60, 12 DEFPUSHBUTTON "Печать", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP @@ -140,8 +140,8 @@ FONT 8, "MS Shell Dlg" PUSHBUTTON "&Применить", 1026,218,40,40,14,WS_GROUP | WS_TABSTOP PUSHBUTTON "&Справка" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP GROUPBOX "Атрибуты",1072,6,72,84,34,WS_GROUP - CHECKBOX "&Зачеркнутый", 1040, 10,82,75,10, BS_AUTOCHECKBOX | WS_TABSTOP - CHECKBOX "Под&черкнутый", 1041, 10,94,75,10, BS_AUTOCHECKBOX + CHECKBOX "&Зачёркнутый", 1040, 10,82,75,10, BS_AUTOCHECKBOX | WS_TABSTOP + CHECKBOX "Под&чёркнутый", 1041, 10,94,75,10, BS_AUTOCHECKBOX LTEXT "Ц&вет:", 1091 ,6,110,30,9 COMBOBOX 1139,6,120,84,100,CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_AUTOHSCROLL | WS_BORDER | WS_VSCROLL | WS_TABSTOP @@ -220,7 +220,7 @@ FONT 8, "MS Shell Dlg" DEFPUSHBUTTON "&Найти далее", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON PUSHBUTTON "&Заменить", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "Заменить &все", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "Заменить &всё", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "Отмена", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&Справка", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP } @@ -329,7 +329,7 @@ BEGIN PUSHBUTTON "Отмена", IDCANCEL, 126, 220, 50, 14 PUSHBUTTON "&Принтер...", psh3, 184, 220, 48, 14 END - + NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN @@ -373,7 +373,7 @@ STRINGTABLE DISCARDABLE IDS_LOCALHARDRIVES "Локальные жесткие диски" IDS_FILENOTFOUND "Файл не найден" IDS_VERIFYFILE "Проверьте, правильно ли указано имя файла" - IDS_CREATEFILE "Файла не существует\nХотите ли Вы его создать?" + IDS_CREATEFILE "Файла не существует.\nХотите ли вы его создать?" IDS_OVERWRITEFILE "Файл уже существует.\nЗаменить его?" IDS_INVALID_FILENAME_TITLE "Некорректный символ в записи пути" IDS_INVALID_FILENAME "Имя файла не может содержать следующие символы:\n / : < > |" @@ -403,7 +403,7 @@ STRINGTABLE DISCARDABLE PD32_NR_OF_COPIES_EMPTY "Значение Числа Копий не может быть \ пустым" PD32_TOO_LARGE_COPIES "Такое большое количество копий не \ -может быть напечатано Вашим принтером.\nВведите значение между 1 и %d" +может быть напечатано вашим принтером.\nВведите значение между 1 и %d" PD32_PRINT_ERROR "Произошла ошибка принтера" PD32_NO_DEFAULT_PRINTER "Нет принтера, установленного по умолчанию" PD32_CANT_FIND_PRINTER "Не удалось найти принтер" diff --git a/reactos/dll/win32/comdlg32/cdlg_Uk.rc b/reactos/dll/win32/comdlg32/cdlg_Uk.rc index 730d610e4bf..14a8f1d2104 100644 --- a/reactos/dll/win32/comdlg32/cdlg_Uk.rc +++ b/reactos/dll/win32/comdlg32/cdlg_Uk.rc @@ -1,6 +1,8 @@ /* * Copyright 2004 Ilya Korniyko * + * Copyright 2010 Igor Paliychuk + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either @@ -41,7 +43,7 @@ FONT 8, "MS Shell Dlg" LTEXT "&:", 1091, 110, 104, 92, 9 COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "³", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "³", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP CHECKBOX "& ", 1040, 208, 68, 54, 24, BS_AUTOCHECKBOX | BS_MULTILINE | WS_GROUP | WS_TABSTOP } @@ -63,7 +65,7 @@ FONT 8, "MS Shell Dlg" LTEXT "&:", 1091, 110, 104, 92, 9 COMBOBOX 1137, 110, 114, 92, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON " ", IDOK, 208, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "³", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 208, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&", 1038, 208, 46, 56, 14, WS_GROUP | WS_TABSTOP CHECKBOX "& ", 1040, 208, 68, 54, 24, BS_AUTOCHECKBOX | BS_MULTILINE | WS_GROUP | WS_TABSTOP } @@ -81,7 +83,7 @@ FONT 8, "MS Shell Dlg" RADIOBUTTON "& ", 1057, 16, 60, 60, 12 RADIOBUTTON "&", 1058, 16, 75, 60, 12 DEFPUSHBUTTON "", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "³", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP LTEXT "&:", 1090, 60, 80, 30, 9 LTEXT "&:", 1091, 120, 80, 30, 9 @@ -103,7 +105,7 @@ FONT 8, "MS Shell Dlg" RADIOBUTTON "& ", 1057, 16, 50, 80, 12 COMBOBOX 1136, 35, 65, 149, 68, CBS_DROPDOWNLIST | CBS_OWNERDRAWFIXED | CBS_AUTOHSCROLL | CBS_SORT | CBS_HASSTRINGS | WS_BORDER | WS_VSCROLL | WS_TABSTOP DEFPUSHBUTTON "OK", IDOK, 206, 6, 56, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "³", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 206, 24, 56, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&", 1024, 206, 46, 56, 14, WS_GROUP | WS_TABSTOP GROUPBOX "", 1073, 6, 85, 100, 50, BS_GROUPBOX RADIOBUTTON "&", 1058, 50, 100, 40, 12 @@ -133,7 +135,7 @@ FONT 8, "MS Shell Dlg" COMBOBOX 1138,179,13,32,54, CBS_OWNERDRAWFIXED | CBS_HASSTRINGS | CBS_DISABLENOSCROLL | WS_VSCROLL | WS_TABSTOP | CBS_SIMPLE | CBS_SORT DEFPUSHBUTTON "OK",IDOK,218,6,40,14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON - PUSHBUTTON "³",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP + PUSHBUTTON "",IDCANCEL,218,23,40,14,WS_GROUP | WS_TABSTOP PUSHBUTTON "&", 1026,218,40,40,14,WS_GROUP | WS_TABSTOP PUSHBUTTON "&" , 1038,218,57,40,14,WS_GROUP | WS_TABSTOP GROUPBOX "",1072,6,72,84,34,WS_GROUP @@ -176,7 +178,7 @@ FONT 8, "MS Shell Dlg" CONTROL "" ,702,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 278,4,8,116 CONTROL "" ,709,"STATIC",SS_SIMPLE|WS_TABSTOP|WS_GROUP, 152,124,40,26 DEFPUSHBUTTON "OK", IDOK, 4, 166, 44, 14, BS_DEFPUSHBUTTON | WS_GROUP | WS_TABSTOP - PUSHBUTTON "³", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL, 52, 166, 44, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "", 1038,100,166, 44, 14 PUSHBUTTON "& ", 712/*1024*/, 152, 166, 142, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "& >>", 719/*1025*/, 4, 150, 142, 14, WS_GROUP | WS_TABSTOP @@ -198,7 +200,7 @@ FONT 8, "MS Shell Dlg" CONTROL "&", 1057, "BUTTON", BS_AUTORADIOBUTTON | WS_CHILD | WS_VISIBLE | WS_TABSTOP, 152, 38, 30, 12 DEFPUSHBUTTON "& ", IDOK, 190, 5, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON - PUSHBUTTON "³", IDCANCEL , 190, 23, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL , 190, 23, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&", pshHelp , 190, 45, 50, 14, WS_GROUP | WS_TABSTOP } @@ -218,7 +220,7 @@ FONT 8, "MS Shell Dlg" DEFPUSHBUTTON "& ", IDOK, 174, 4, 50, 14, WS_GROUP | WS_TABSTOP | BS_DEFPUSHBUTTON PUSHBUTTON "&", psh1 , 174, 21, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON " &", psh2 , 174, 38, 50, 14, WS_GROUP | WS_TABSTOP - PUSHBUTTON "³", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP + PUSHBUTTON "", IDCANCEL , 174, 55, 50, 14, WS_GROUP | WS_TABSTOP PUSHBUTTON "&", pshHelp , 174, 75, 50, 14, WS_GROUP | WS_TABSTOP } @@ -229,7 +231,7 @@ CAPTION " FONT 8, "MS Shell Dlg" { DEFPUSHBUTTON "OK", IDOK, 180,164, 48,14, WS_GROUP | BS_DEFPUSHBUTTON - PUSHBUTTON "³", IDCANCEL, 232,164, 48,14, WS_GROUP + PUSHBUTTON "", IDCANCEL, 232,164, 48,14, WS_GROUP PUSHBUTTON "&", pshHelp, 50, 161, 48,14, WS_GROUP GROUPBOX "", grp4, 8, 4, 272,84, WS_GROUP @@ -269,7 +271,7 @@ CAPTION " FONT 8, "MS Shell Dlg" BEGIN DEFPUSHBUTTON "OK",IDOK,180,156,48,14,WS_GROUP - PUSHBUTTON "³",IDCANCEL,232,156,48,14 + PUSHBUTTON "",IDCANCEL,232,156,48,14 /* PUSHBUTTON "ѳ...", psh5, 284,156,48,14 */ GROUPBOX "", grp4, 8, 4, 272,84, WS_GROUP @@ -297,6 +299,36 @@ BEGIN CONTROL "&", rad2,"Button",BS_AUTORADIOBUTTON,224,126,52,12 END +PAGESETUPDLGORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 32, 32, 240, 240 +STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU +CAPTION " " +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", rct1, "Static", SS_WHITERECT, 80, 8, 80, 80 + CONTROL "", rct2, "Static", SS_GRAYRECT, 160, 12, 4, 80 + CONTROL "", rct3, "Static", SS_GRAYRECT, 84, 88, 80, 4 + GROUPBOX "", grp2, 8, 96, 224, 56, BS_GROUPBOX + LTEXT "&:", stc2, 16, 112, 36, 8 + COMBOBOX cmb2, 64, 110, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + LTEXT "&:", stc3, 16, 132, 36, 8 + COMBOBOX cmb3, 64, 130, 160, 160, CBS_SIMPLE|CBS_DROPDOWN|CBS_SORT|WS_GROUP|WS_TABSTOP|WS_VSCROLL + GROUPBOX "", grp1, 8, 156, 64, 56, BS_GROUPBOX + AUTORADIOBUTTON "&", rad1, 16, 170, 52, 12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "&", rad2, 16, 190, 52, 12, BS_AUTORADIOBUTTON + GROUPBOX "", grp4, 80, 156, 152, 56, BS_GROUPBOX + LTEXT "&:", stc15, 88, 172, 21, 8 + EDITTEXT edt4, 111, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&:", stc16, 159, 172, 27, 8 + EDITTEXT edt6, 187, 170, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&:", stc17, 88, 192, 21, 8 + EDITTEXT edt5, 111, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + LTEXT "&:", stc18, 159, 192, 23, 8 + EDITTEXT edt7, 187, 190, 39, 12, WS_TABSTOP|WS_GROUP|WS_BORDER + DEFPUSHBUTTON "OK", IDOK, 71, 220, 50, 14, BS_PUSHBUTTON + PUSHBUTTON "", IDCANCEL, 126, 220, 50, 14 + PUSHBUTTON "&...", psh3, 184, 220, 48, 14 +END + NEWFILEOPENORD DIALOG LOADONCALL MOVEABLE DISCARDABLE 0, 0, 280, 164 STYLE DS_MODALFRAME | DS_CONTEXTHELP | WS_VISIBLE | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_CLIPCHILDREN CAPTION "³" @@ -317,7 +349,7 @@ FONT 8, "MS Shell Dlg" CONTROL " &",IDC_OPENREADONLY,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,145,100,10 DEFPUSHBUTTON "&³", IDOK,222,110,50,14 - PUSHBUTTON "³", IDCANCEL,222,128,50,14 + PUSHBUTTON "", IDCANCEL,222,128,50,14 PUSHBUTTON "&", pshHelp,222,145,50,14 } @@ -376,9 +408,9 @@ STRINGTABLE DISCARDABLE PD32_OUT_OF_MEMORY " '" PD32_GENERIC_ERROR "() ()" PD32_DRIVER_UNKNOWN " " - PD32_NO_DEVICES "Before you can perform printer-related tasks \ -such as page setup or printing a document, you need to install a printer. \ -Please install one and retry." + PD32_NO_DEVICES " \ + . \ + ." PD32_DEFAULT_PRINTER " ; " PD32_NR_OF_DOCUMENTS_IN_QUEUE "%d " @@ -414,22 +446,40 @@ Please install one and retry." PD32_PRINTER_STATUS_POWER_SAVE " ; " } +STRINGTABLE DISCARDABLE /* Font styles */ +{ + IDS_FONT_REGULAR "" + IDS_FONT_BOLD "" + IDS_FONT_ITALIC "" + IDS_FONT_BOLD_ITALIC " " +} + STRINGTABLE DISCARDABLE /* Color names */ { IDS_COLOR_BLACK "" - IDS_COLOR_MAROON "" + IDS_COLOR_MAROON "" IDS_COLOR_GREEN "" IDS_COLOR_OLIVE "" IDS_COLOR_NAVY "" - IDS_COLOR_PURPLE "" - IDS_COLOR_TEAL "-" + IDS_COLOR_PURPLE "" + IDS_COLOR_TEAL "-" IDS_COLOR_GRAY "ѳ" - IDS_COLOR_SILVER "" + IDS_COLOR_SILVER "" IDS_COLOR_RED "" IDS_COLOR_LIME "" IDS_COLOR_YELLOW "" - IDS_COLOR_BLUE "" - IDS_COLOR_FUCHSIA "Գ" - IDS_COLOR_AQUA "" + IDS_COLOR_BLUE "" + IDS_COLOR_FUCHSIA "" + IDS_COLOR_AQUA "" IDS_COLOR_WHITE "" } + +STRINGTABLE DISCARDABLE +{ + IDS_FONT_SIZE " %d - %d ." + IDS_SAVE_BUTTON "&" + IDS_SAVE_IN " &:" + IDS_SAVE "" + IDS_SAVE_AS " " + IDS_OPEN_FILE "³ " +} diff --git a/reactos/dll/win32/comdlg32/filedlg.c b/reactos/dll/win32/comdlg32/filedlg.c index 64cb3935ab2..ae357f6098d 100644 --- a/reactos/dll/win32/comdlg32/filedlg.c +++ b/reactos/dll/win32/comdlg32/filedlg.c @@ -2303,7 +2303,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) LoadStringW(COMDLG32_hInstance, IDS_OVERWRITEFILE, lpstrOverwrite, 100); answer = MessageBoxW(hwnd, lpstrOverwrite, fodInfos->title, MB_YESNO | MB_ICONEXCLAMATION); - if (answer == IDNO) + if (answer == IDNO || answer == IDCANCEL) { ret = FALSE; goto ret; @@ -2321,7 +2321,7 @@ BOOL FILEDLG95_OnOpen(HWND hwnd) LoadStringW(COMDLG32_hInstance, IDS_CREATEFILE, lpstrCreate, 100); answer = MessageBoxW(hwnd, lpstrCreate, fodInfos->title, MB_YESNO | MB_ICONEXCLAMATION); - if (answer == IDNO) + if (answer == IDNO || answer == IDCANCEL) { ret = FALSE; goto ret; diff --git a/reactos/dll/win32/comdlg32/filedlg31.c b/reactos/dll/win32/comdlg32/filedlg31.c index 29c63106975..fd2ef36a5cf 100644 --- a/reactos/dll/win32/comdlg32/filedlg31.c +++ b/reactos/dll/win32/comdlg32/filedlg31.c @@ -629,10 +629,12 @@ static LRESULT FD31_FileTypeChange( const FD31_DATA *lfs ) lRet = SendDlgItemMessageW(lfs->hwnd, cmb1, CB_GETCURSEL, 0, 0); if (lRet == LB_ERR) return TRUE; + lfs->ofnW->nFilterIndex = lRet + 1; + lfs->ofnA->nFilterIndex = lRet + 1; pstr = (LPWSTR)SendDlgItemMessageW(lfs->hwnd, cmb1, CB_GETITEMDATA, lRet, 0); TRACE("Selected filter : %s\n", debugstr_w(pstr)); - return FD31_Validate( lfs, NULL, cmb1, lRet, TRUE ); + return FD31_Validate( lfs, pstr, cmb1, lRet, TRUE ); } /*********************************************************************** diff --git a/reactos/dll/win32/comdlg32/fontdlg.c b/reactos/dll/win32/comdlg32/fontdlg.c index 80f1ad9345b..ad580d5c863 100644 --- a/reactos/dll/win32/comdlg32/fontdlg.c +++ b/reactos/dll/win32/comdlg32/fontdlg.c @@ -782,7 +782,7 @@ static LRESULT CFn_WMMeasureItem(HWND hDlg, LPARAM lParam) /* use MAX of bitmap height and tm.tmHeight .*/ hdc=GetDC(hDlg); if(!hdc) return 0; - hfontprev = SelectObject( hdc, GetStockObject( SYSTEM_FONT)); + hfontprev = SelectObject( hdc, GetStockObject( DEFAULT_GUI_FONT ) ); GetTextMetricsW(hdc, &tm); if( tm.tmHeight > lpmi->itemHeight) lpmi->itemHeight = tm.tmHeight; SelectObject(hdc, hfontprev); @@ -905,6 +905,8 @@ static LRESULT CFn_WMCommand(HWND hDlg, WPARAM wParam, LPARAM lParam, LPCHOOSEFO HDC hdc; LPLOGFONTW lpxx=lpcf->lpLogFont; + if (!lpcf) return FALSE; + TRACE("WM_COMMAND wParam=%08X lParam=%08lX\n", (LONG)wParam, lParam); switch (LOWORD(wParam)) { @@ -1071,6 +1073,8 @@ static LRESULT CFn_WMDestroy(HWND hwnd, LPCHOOSEFONTW lpcfw) LPLOGFONTA lpLogFonta; int len; + if (!lpcfw) return FALSE; + lpcfa = GetPropW(hwnd, strWineFontData_a); lpLogFonta = lpcfa->lpLogFont; lpszStyle = lpcfa->lpszStyle; @@ -1098,6 +1102,8 @@ static LRESULT CFn_WMPaint(HWND hDlg, WPARAM wParam, LPARAM lParam, const CHOOSE { WINDOWINFO info; + if (!lpcf) return FALSE; + info.cbSize=sizeof(info); if( GetWindowInfo( GetDlgItem( hDlg, stc5), &info ) ) { @@ -1156,9 +1162,7 @@ static INT_PTR CALLBACK FormatCharDlgProcA(HWND hDlg, UINT uMsg, WPARAM wParam, if (uMsg!=WM_INITDIALOG) { lpcfw = GetPropW(hDlg, strWineFontData); - if (!lpcfw) - return FALSE; - if (CFn_HookCallChk32(lpcfw)) + if (lpcfw && CFn_HookCallChk32(lpcfw)) res=CallWindowProcA((WNDPROC)lpcfw->lpfnHook, hDlg, uMsg, wParam, lParam); if (res) return res; @@ -1218,9 +1222,7 @@ static INT_PTR CALLBACK FormatCharDlgProcW(HWND hDlg, UINT uMsg, WPARAM wParam, if (uMsg!=WM_INITDIALOG) { lpcf= GetPropW(hDlg, strWineFontData); - if (!lpcf) - return FALSE; - if (CFn_HookCallChk32(lpcf)) + if (lpcf && CFn_HookCallChk32(lpcf)) res=CallWindowProcW((WNDPROC)lpcf->lpfnHook, hDlg, uMsg, wParam, lParam); if (res) return res; diff --git a/reactos/dll/win32/comdlg32/rsrc.rc b/reactos/dll/win32/comdlg32/rsrc.rc index 551bf3c2a50..02d3d5f93a9 100644 --- a/reactos/dll/win32/comdlg32/rsrc.rc +++ b/reactos/dll/win32/comdlg32/rsrc.rc @@ -44,15 +44,11 @@ #include "cdlg_Bg.rc" #include "cdlg_Ca.rc" #include "cdlg_Cs.rc" -#include "cdlg_Da.rc" #include "cdlg_El.rc" #include "cdlg_En.rc" #include "cdlg_Es.rc" #include "cdlg_Fi.rc" -#include "cdlg_Hu.rc" -#include "cdlg_It.rc" #include "cdlg_Ko.rc" -#include "cdlg_Nl.rc" #include "cdlg_No.rc" #include "cdlg_Pl.rc" #include "cdlg_Sk.rc" @@ -62,10 +58,14 @@ #include "cdlg_Uk.rc" /* UTF-8 */ +#include "cdlg_Da.rc" #include "cdlg_De.rc" #include "cdlg_Fr.rc" +#include "cdlg_Hu.rc" +#include "cdlg_It.rc" #include "cdlg_Ja.rc" #include "cdlg_Lt.rc" +#include "cdlg_Nl.rc" #include "cdlg_Pt.rc" #include "cdlg_Ro.rc" #include "cdlg_Ru.rc" diff --git a/reactos/dll/win32/cryptdlg/cryptdlg_Pt.rc b/reactos/dll/win32/cryptdlg/cryptdlg_Pt.rc index 92d179cd5cd..165081b3c98 100644 --- a/reactos/dll/win32/cryptdlg/cryptdlg_Pt.rc +++ b/reactos/dll/win32/cryptdlg/cryptdlg_Pt.rc @@ -2,6 +2,7 @@ * cryptdlg dll Portuguese resources * * Copyright 2008 Ricardo Filipe + * Copyright 2010 Gustavo Henrique Milaré * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -22,6 +23,23 @@ #pragma code_page(65001) +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN + +STRINGTABLE DISCARDABLE +{ + IDS_CERT_POLICY "Política de Certificados" + IDS_POLICY_ID "Identificador da Política: " + IDS_POLICY_QUALIFIER_INFO "Informação do Qualificador da Política" + IDS_POLICY_QUALIFIER_ID "ID do Qualificador da Política=" + IDS_CPS "CPS" /* Certification Practice Statement */ + IDS_USER_NOTICE "Aviso ao Usuário" + IDS_QUALIFIER "Qualificador" + IDS_NOTICE_REF "Referência do Aviso" + IDS_ORGANIZATION "Organização=" + IDS_NOTICE_NUM "Número do Aviso=" + IDS_NOTICE_TEXT "Texto do Aviso=" +} + LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE STRINGTABLE DISCARDABLE diff --git a/reactos/dll/win32/cryptui/cryptui.rc b/reactos/dll/win32/cryptui/cryptui.rc index cd1fee8e2d6..ba30d9d2656 100644 --- a/reactos/dll/win32/cryptui/cryptui.rc +++ b/reactos/dll/win32/cryptui/cryptui.rc @@ -57,3 +57,4 @@ IDB_CERT_HEADER BITMAP LOADONCALL DISCARDABLE certheader.bmp #include "cryptui_Lt.rc" #include "cryptui_Nl.rc" #include "cryptui_Pt.rc" +#include "cryptui_Ro.rc" diff --git a/reactos/dll/win32/cryptui/cryptui_Ro.rc b/reactos/dll/win32/cryptui/cryptui_Ro.rc new file mode 100644 index 00000000000..28f4d185f95 --- /dev/null +++ b/reactos/dll/win32/cryptui/cryptui_Ro.rc @@ -0,0 +1,468 @@ +/* + * cryptui dll resources + * + * Copyright 2008 Juan Lang + * Copyright 2010 Claudia Cotună + * Michael Stefaniuc + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "cryptuires.h" + +LANGUAGE LANG_ROMANIAN, SUBLANG_NEUTRAL + +#pragma code_page(65001) + +STRINGTABLE DISCARDABLE +{ + IDS_CERTIFICATE "Certificat" + IDS_CERTIFICATEINFORMATION "Informații certificat" + IDS_CERT_INFO_BAD_SIG "Acest certificat are o semnătură nevalidă. Se poate ca certificatul să fi fost alterat sau corupt." + IDS_CERT_INFO_UNTRUSTED_CA "Acest certificat rădăcină nu este acreditat. Pentru a-l acredita, adăugați-l în depozitul de certificate rădăcină acreditate al sistemului." + IDS_CERT_INFO_UNTRUSTED_ROOT "Acest certificat nu a putut fi validat față de un certificat rădăcină acreditat." + IDS_CERT_INFO_PARTIAL_CHAIN "Emitentul acestui certificat nu a putut fi aflat." + IDS_CERT_INFO_BAD_PURPOSES "Nu au putut fi verificate toate rolurile intenționate pentru acest certificat." + IDS_CERT_INFO_PURPOSES "Acest certificat este intenționat pentru următoarele roluri:" + IDS_SUBJECT_HEADING "Emis pentru: " + IDS_ISSUER_HEADING "Emis de: " + IDS_VALID_FROM "Valid de la " + IDS_VALID_TO " la " + IDS_CERTIFICATE_BAD_SIGNATURE "Acest certificat are o semnătură nevalabilă." + IDS_CERTIFICATE_BAD_TIME "Acest certificat a expirat sau încă nu este valabil." + IDS_CERTIFICATE_BAD_TIMENEST "Perioada de valabilitate a acestui certificat o depășește pe cea a emitentului său." + IDS_CERTIFICATE_REVOKED "Acest certificat a fost revocat de către emitentul său." + IDS_CERTIFICATE_VALID "Acest certificat este valabil." + IDS_FIELD "Câmp" + IDS_VALUE "Valoare" + IDS_FIELDS_ALL "" + IDS_FIELDS_V1 "Doar câmpurile versiunii 1" + IDS_FIELDS_EXTENSIONS "Doar extensii" + IDS_FIELDS_CRITICAL_EXTENSIONS "Doar extensii critice" + IDS_FIELDS_PROPERTIES "Doar proprietăți" + IDS_FIELD_VERSION "Versiune" + IDS_FIELD_SERIAL_NUMBER "Număr de serie" + IDS_FIELD_ISSUER "Emitent" + IDS_FIELD_VALID_FROM "Valabil de la" + IDS_FIELD_VALID_TO "Valabil până la" + IDS_FIELD_SUBJECT "Subiect" + IDS_FIELD_PUBLIC_KEY "Cheie publică" + IDS_FIELD_PUBLIC_KEY_FORMAT "%s (%d biți)" + IDS_PROP_HASH "Hash SHA1" + IDS_PROP_ENHKEY_USAGE "Utilizări adiționale ale cheii (proprietate)" + IDS_PROP_FRIENDLY_NAME "Nume uzual" + IDS_PROP_DESCRIPTION "Descriere" + IDS_CERTIFICATE_PROPERTIES "Proprietățile certificatului" + IDS_CERTIFICATE_PURPOSE_ERROR "Introduceți OID sub forma 1.2.3.4" + IDS_CERTIFICATE_PURPOSE_EXISTS "OID introdus există deja." + IDS_SELECT_STORE_TITLE "Selectare depozit de certificate" + IDS_SELECT_STORE "Selectați un depozit de certificate." + IDS_IMPORT_WIZARD "Asistent de importare a certificatelor" + IDS_IMPORT_TYPE_MISMATCH "Fișierul conține obiecte care nu respectă criteriile date. Selectați alt fișier." + IDS_IMPORT_FILE_TITLE "Importare fișier" + IDS_IMPORT_FILE_SUBTITLE "Specificați fișierul pe care doriți să-l importați." + IDS_IMPORT_STORE_TITLE "Depozit de certificate" + IDS_IMPORT_STORE_SUBTITLE "Depozitele de certificate sunt colecții de certificate, liste de certificate revocate și liste de certificate acreditate." + IDS_IMPORT_FILTER_CERT "Certificat X.509 (*.cer; *.crt)" + IDS_IMPORT_FILTER_PFX "Schimb de informații personale (*.pfx; *.p12)" + IDS_IMPORT_FILTER_CRL "Listă de certificate revocate (*.crl)" + IDS_IMPORT_FILTER_CTL "Listă de certificate acreditate (*.stl)" + IDS_IMPORT_FILTER_SERIALIZED_STORE "Depozit Microsoft înseriat de certificate (*.sst)" + IDS_IMPORT_FILTER_CMS "Mesaje CMS/PKCS #7 (*.spc; *.p7b)" + IDS_IMPORT_FILTER_ALL "Toate fișierele (*.*)" + IDS_IMPORT_EMPTY_FILE "Selectați un fișier." + IDS_IMPORT_BAD_FORMAT "Formatul fișierului nu este recunoscut. Selectați alt fișier." + IDS_IMPORT_OPEN_FAILED "Nu s-a putut deschide " + IDS_IMPORT_DEST_DETERMINED "Determinat de program" + IDS_IMPORT_SELECT_STORE "Selectați un depozit" + IDS_IMPORT_STORE_SELECTION "Depozitul de certificate selectat" + IDS_IMPORT_DEST_AUTOMATIC "Determinat automat de către program" + IDS_IMPORT_FILE "Fișier" + IDS_IMPORT_CONTENT "Conținut" + IDS_IMPORT_CONTENT_CERT "Certificat" + IDS_IMPORT_CONTENT_CRL "Lista certificatelor revocate" + IDS_IMPORT_CONTENT_CTL "Lista certificatelor acreditate" + IDS_IMPORT_CONTENT_CMS "Mesaj CMS/PKCS #7" + IDS_IMPORT_CONTENT_PFX "Schimb de informații personale" + IDS_IMPORT_CONTENT_STORE "Depozit de certificate" + IDS_IMPORT_SUCCEEDED "Importarea s-a realizat cu succes." + IDS_IMPORT_FAILED "Importarea a eșuat." + IDS_WIZARD_TITLE_FONT "Arial" + IDS_PURPOSE_ALL "" + IDS_PURPOSE_ADVANCED "" + IDS_SUBJECT_COLUMN "Emis pentru" + IDS_ISSUER_COLUMN "Emis de" + IDS_EXPIRATION_COLUMN "Data de expirare" + IDS_FRIENDLY_NAME_COLUMN "Nume uzual" + IDS_ALLOWED_PURPOSE_ALL "" + IDS_ALLOWED_PURPOSE_NONE "" + IDS_WARN_REMOVE_MY "Nu veți mai putea decripta sau semna mesaje cu acest certificat.\nSigur doriți să eliminați acest certificat?" + IDS_WARN_REMOVE_PLURAL_MY "Nu veți mai putea decripta sau semna mesaje cu aceste certificate.\nSigur doriți să eliminați aceste certificate?" + IDS_WARN_REMOVE_ADDRESSBOOK "Nu veți mai putea cripta sau verifica mesaje semnate cu acest certificat.\nSigur doriți să eliminați acest certificat?" + IDS_WARN_REMOVE_PLURAL_ADDRESSBOOK "Nu veți mai putea cripta sau verifica mesaje semnate cu aceste certificate.\nSigur doriți să eliminați aceste certificate?" + IDS_WARN_REMOVE_CA "Certificatele emise de către această autoritate de certificare nu vor mai fi acreditate.\nSigur doriți să eliminați acest certificat?" + IDS_WARN_REMOVE_PLURAL_CA "Certificatele emise de către aceste autorități de certificare nu vor mai fi acreditate.\nSigur doriți să eliminați aceste certificate?" + IDS_WARN_REMOVE_ROOT "Certificatele emise de către această autoritate de certificare rădăcină, sau de către orice alte autorități de certificare validate de ea, nu vor mai fi acreditate.\nSigur doriți să eliminați acest certificat rădăcină acreditat?" + IDS_WARN_REMOVE_PLURAL_ROOT "Certificatele emise de către aceste autorități de certificare rădăcină, sau de către orice alte autorități de certificare validate de ele, nu vor mai fi acreditate.\nSigur doriți să eliminați aceste certificate rădăcină acreditate?" + IDS_WARN_REMOVE_TRUSTEDPUBLISHER "Aplicațiile software semnate de către acest editor nu vor mai fi acreditate.\nSigur doriți să eliminați acest certificat?" + IDS_WARN_REMOVE_PLURAL_TRUSTEDPUBLISHER "Aplicațiile software semnate de către acești editori nu vor mai fi acreditate.\nSigur doriți să eliminați aceste certificate?" + IDS_WARN_REMOVE_DEFAULT "Sigur doriți să eliminați acest certificat?" + IDS_WARN_REMOVE_PLURAL_DEFAULT "Sigur doriți să eliminați aceste certificate?" + IDS_CERT_MGR "Certificate" + IDS_FRIENDLY_NAME_NONE "" + IDS_PURPOSE_SERVER_AUTH "Asigură identificarea unui calculator de la distanță" + IDS_PURPOSE_CLIENT_AUTH "Vă dovedește identitatea pentru un calculator de la distanță" + IDS_PURPOSE_CODE_SIGNING "Garantează că aplicația provine de la un anumit editor de software\nProtejează aplicația de alterări după publicare" + IDS_PURPOSE_EMAIL_PROTECTION "Protejează mesajele de email" + IDS_PURPOSE_IPSEC "Permite comunicarea securizată pe Internet" + IDS_PURPOSE_TIMESTAMP_SIGNING "Permite semnarea datelor cu ora curentă" + IDS_PURPOSE_CTL_USAGE_SIGNING "Vă permite să semnați digital o listă de certificate acreditate" + IDS_PURPOSE_EFS "Permite criptarea datelor de pe disc" + IDS_PURPOSE_EFS_RECOVERY "Recupererea fișierelor" + IDS_PURPOSE_WHQL "Verificarea driverelor de hardware din Windows" + IDS_PURPOSE_NT5 "Verificarea componentelor de sistem din Windows" + IDS_PURPOSE_OEM_WHQL "Verificarea componentelor de sistem din Windows OEM" + IDS_PURPOSE_EMBEDDED_NT "Verificarea componentelor de sistem din Windows Embedded" + IDS_PURPOSE_ROOT_LIST_SIGNER "Semnatarul listei rădăcină" + IDS_PURPOSE_QUALIFIED_SUBORDINATION "Subordonare calificată" + IDS_PURPOSE_KEY_RECOVERY "Recuperarea cheilor" + IDS_PURPOSE_DOCUMENT_SIGNING "Semnarea documentelor" + IDS_PURPOSE_LIFETIME_SIGNING "Semnătură pe viață" + IDS_PURPOSE_DRM "Drepturi digitale" + IDS_PURPOSE_LICENSES "Licențe de pachete de chei" + IDS_PURPOSE_LICENSE_SERVER "Verificare a serverului de licențe" + IDS_PURPOSE_ENROLLMENT_AGENT "Agent solicitare certificat" + IDS_PURPOSE_SMARTCARD_LOGON "Autentificare prin Smart Card" + IDS_PURPOSE_CA_EXCHANGE "Arhivare chei private" + IDS_PURPOSE_KEY_RECOVERY_AGENT "Agent recuperare chei" + IDS_PURPOSE_DS_EMAIL_REPLICATION "Serviciu Registru pentru replicare email" + IDS_EXPORT_WIZARD "Asistent de exportare a certificatelor" + IDS_EXPORT_FORMAT_TITLE "Format pentru exportare" + IDS_EXPORT_FORMAT_SUBTITLE "Alegeți formatul în care va fi salvat conținutul." + IDS_EXPORT_FILE_TITLE "Nume de fișier pentru exportare" + IDS_EXPORT_FILE_SUBTITLE "Specificați numele de fișier cu care va fi salvat conținutul." + IDS_EXPORT_FILE_EXISTS "Fișierul specificat există deja. Doriți să îl înlocuiți?" + IDS_EXPORT_FILTER_CERT "Binar X.509 codificat în DER (*.cer)" + IDS_EXPORT_FILTER_BASE64_CERT "Binar X.509 codificat în Base64 (*.cer)" + IDS_EXPORT_FILTER_CRL "Listă de certificate revocate (*.crl)" + IDS_EXPORT_FILTER_CTL "Listă de certificate acreditate (*.stl)" + IDS_EXPORT_FILTER_CMS "Mesaje CMS/PKCS #7 (*.p7b)" + IDS_EXPORT_FILTER_PFX "Schimb de informații personale (*.pfx)" + IDS_EXPORT_FILTER_SERIALIZED_CERT_STORE "Depozit înseriat de certificate (*.sst)" + IDS_EXPORT_FORMAT "Format fișier" + IDS_EXPORT_INCLUDE_CHAIN "Include toate certificatele din calea de certificate" + IDS_EXPORT_KEYS "Exportă cheile" + IDS_YES "Da" + IDS_NO "Nu" + IDS_EXPORT_SUCCEEDED "Exportarea s-a realizat cu succes." + IDS_EXPORT_FAILED "Exportarea a eșuat." + IDS_EXPORT_PRIVATE_KEY_TITLE "Exportare cheie privată" + IDS_EXPORT_PRIVATE_KEY_SUBTITLE "Certificatul conține o cheie privată care poate fi exportată odată cu certificatul." + IDS_EXPORT_PASSWORD_TITLE "Introducere parolă" + IDS_EXPORT_PASSWORD_SUBTITLE "Puteți proteja o cheie privată cu o parolă." + IDS_EXPORT_PASSWORD_MISMATCH "Parolele nu se potrivesc." + IDS_EXPORT_PRIVATE_KEY_UNAVAILABLE "Notă: Cheia privată pentru acest certificat nu a putut fi deschisă." + IDS_EXPORT_PRIVATE_KEY_NON_EXPORTABLE "Notă: Cheia privată pentru acest certificat nu este exportabilă." +} + +IDD_GENERAL DIALOG DISCARDABLE 0, 0, 255, 236 +CAPTION "General" +STYLE WS_VISIBLE +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", -1, "Static", WS_BORDER|SS_WHITERECT, 6,10,241,200 + CONTROL "", IDC_CERTIFICATE_ICON,"RichEdit20W", + ES_READONLY|WS_DISABLED,8,11,26,26 + CONTROL "", IDC_CERTIFICATE_INFO,"RichEdit20W", + ES_READONLY|WS_DISABLED,34,11,212,26 + CONTROL "", -1, "Static", SS_BLACKFRAME, 16,37,222,1 + CONTROL "", IDC_CERTIFICATE_STATUS,"RichEdit20W", + ES_READONLY|ES_MULTILINE,8,38,238,78 + CONTROL "", -1, "Static", SS_BLACKFRAME, 16,116,222,1 + CONTROL "", IDC_CERTIFICATE_NAMES,"RichEdit20W", + ES_READONLY|ES_MULTILINE|WS_DISABLED,8,118,238,90 + PUSHBUTTON "&Instalare certificat...", IDC_ADDTOSTORE,93,216,75,14 + PUSHBUTTON "&Declarația emitentului", IDC_ISSUERSTATEMENT,172,216,75,14 +END + +IDD_DETAIL DIALOG DISCARDABLE 0, 0, 255, 236 +CAPTION "Detalii" +STYLE WS_VISIBLE +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "&Afișează:", -1, 6,12,40,14 + COMBOBOX IDC_DETAIL_SELECT, 38,10,100,14, + CBS_DROPDOWNLIST|WS_BORDER|WS_VSCROLL|WS_TABSTOP + CONTROL "", IDC_DETAIL_LIST, "SysListView32", + LVS_REPORT|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, + 6,28,241,100 + CONTROL "", IDC_DETAIL_VALUE, "RichEdit20W", + ES_READONLY|ES_MULTILINE|WS_TABSTOP, 6,136,241,70 + PUSHBUTTON "&Editare proprietăți...", IDC_EDITPROPERTIES,103,216,70,14 + PUSHBUTTON "&Copiere în fișier...", IDC_EXPORT,177,216,70,14 +END + +IDD_HIERARCHY DIALOG DISCARDABLE 0, 0, 255, 236 +CAPTION "Cale de certificare" +STYLE WS_VISIBLE +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Cale de certi&ficare", -1,6,10,245,165, BS_GROUPBOX + CONTROL "",IDC_CERTPATH, "SysTreeView32", TVS_HASLINES|WS_BORDER, + 13,22,231,130 + PUSHBUTTON "&Vizualizează certificat", IDC_VIEWCERTIFICATE,170,156,75,14 + LTEXT "&Stare certificat:", IDC_CERTIFICATESTATUS,6,183,70,14 + CONTROL "", IDC_CERTIFICATESTATUSTEXT,"RichEdit20W", + WS_BORDER|ES_READONLY|ES_MULTILINE|WS_DISABLED,6,195,245,36 +END + +IDD_USERNOTICE DIALOG DISCARDABLE 0, 0, 255, 256 +CAPTION "Declinare a responsabilității" +STYLE WS_VISIBLE +FONT 8, "MS Shell Dlg" +BEGIN + CONTROL "", IDC_USERNOTICE,"RichEdit20W", + WS_BORDER|ES_READONLY|ES_MULTILINE|WS_DISABLED,6,10,241,200 + PUSHBUTTON "Închide", IDOK,103,216,70,14 + PUSHBUTTON "Alte &informații", IDC_CPS,177,216,70,14 +END + +IDD_CERT_PROPERTIES_GENERAL DIALOG DISCARDABLE 0, 0, 255, 236 +CAPTION "General" +STYLE WS_VISIBLE +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "&Nume uzual:", -1, 6,14,60,14 + EDITTEXT IDC_FRIENDLY_NAME, 60,12,191,14, ES_AUTOHSCROLL|WS_TABSTOP + LTEXT "&Descriere:", -1, 6,32,60,14 + EDITTEXT IDC_DESCRIPTION, 60,30,191,14, ES_AUTOVSCROLL|ES_MULTILINE|WS_TABSTOP|WS_VSCROLL + GROUPBOX "Rolurile certificatului", -1,6,48,245,165, BS_GROUPBOX + AUTORADIOBUTTON "Activ&ează toate rolurile acestui certificat", + IDC_ENABLE_ALL_PURPOSES, 12,58,180,14, BS_AUTORADIOBUTTON|WS_TABSTOP + AUTORADIOBUTTON "Dezact&ivează toate rolurile acestui certificat", + IDC_DISABLE_ALL_PURPOSES, 12,70,180,14, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "Activează d&oar următoarele roluri ale acestui certificat:", + IDC_ENABLE_SELECTED_PURPOSES, 12,82,190,14, BS_AUTORADIOBUTTON + CONTROL "", IDC_CERTIFICATE_USAGES,"SysListView32", + LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, + 24,100,220,90 + PUSHBUTTON "Adăugare &rol...", IDC_ADD_PURPOSE,184,194,60,14 +END + +IDD_ADD_CERT_PURPOSE DIALOG DISCARDABLE 0,0,200,68 +CAPTION "Adăugare rol" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Adăugați identificatorul de obiect (OID) pentru rolul de certificat pe care doriți să-l adăugați:", + -1, 6,6,190,28 + EDITTEXT IDC_NEW_PURPOSE, 6,28,190,14, ES_AUTOVSCROLL|ES_MULTILINE|WS_TABSTOP|WS_VSCROLL + PUSHBUTTON "OK", IDOK, 33,48,60,14 + PUSHBUTTON "Renunță", IDCANCEL, 100,48,60,14 +END + +IDD_SELECT_STORE DIALOG DISCARDABLE 0,0,200,136 +CAPTION "Selectați depozitul de certificate" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Selectați depozitul de certificate pe care doriți să-l utilizați:", IDC_STORE_TEXT, 6,6,190,28 + CONTROL "",IDC_STORE_LIST, "SysTreeView32", TVS_HASLINES|WS_BORDER|WS_TABSTOP, + 6,28,188,70 + CHECKBOX "Afișea&ză depozitele fizice", IDC_SHOW_PHYSICAL_STORES, 6,102,100,14, + BS_AUTOCHECKBOX|WS_TABSTOP + PUSHBUTTON "OK", IDOK, 90,118,50,14, BS_DEFPUSHBUTTON + PUSHBUTTON "Renunță", IDCANCEL, 144,118,50,14 +END + +IDD_IMPORT_WELCOME DIALOG DISCARDABLE 0,0,317,143 +CAPTION "Asistent de importare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Bun venit în Asistentul de importare a certificatelor", IDC_IMPORT_TITLE, + 115,7,195,12 + LTEXT "Acest asistent vă ajută să importați certificate, liste de certificate revocate și liste de certificate acreditate dintr-un fișier într-un depozit de certificate.", + -1, 115,26,195,25 + LTEXT "Un certificat poate fi utilizat pentru identificarea proprie sau a calculatorului cu care comunicați. Poate fi utilizat și pentru autentificare sau pentru a semna mesaje. Depozitele de certificate sunt colecții de certificate, liste de certificate revocate și liste de certificate acreditate.", + -1, 115,56,195,40 + LTEXT "Pentru a continua, apăsați pe Înainte.", + -1, 115,103,195,8 +END + +IDD_IMPORT_FILE DIALOG DISCARDABLE 0,0,317,178 +CAPTION "Asistent de importare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Nume &fișier:", -1, 21,1,195,10 + EDITTEXT IDC_IMPORT_FILENAME, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP + PUSHBUTTON "Naviga&re...", IDC_IMPORT_BROWSE_FILE, 236,11,60,14 + LTEXT "Notă: Următoarele formate de fișier pot conține mai multe certificate, liste de certificate revocate sau liste de certificate acreditate:", + -1, 21,30,265,16 + LTEXT "Standard sintaxă mesaje criptografice/Mesaje PKCS #7 (.p7b)", + -1, 31,53,265,10 + LTEXT "Schimb de informații personale/PKCS #12 (.pfx, .p12)", + -1, 31,68,265,10 + LTEXT "Depozit Microsoft înseriat de certificate (.sst)", + -1, 31,83,265,10 +END + +IDD_IMPORT_STORE DIALOG DISCARDABLE 0,0,317,143 +CAPTION "Asistent de importare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Wine poate selecta automat depozitul de certificate sau puteți să specificați o locație pentru certificate.", + -1, 21,1,195,20 + AUTORADIOBUTTON "Selectează &automat depozitul de certificate", + IDC_IMPORT_AUTO_STORE, 31,18,180,12, BS_AUTORADIOBUTTON|WS_TABSTOP + AUTORADIOBUTTON "&Plasează toate certificatele în următorul depozit:", + IDC_IMPORT_SPECIFY_STORE, 31,30,180,12, BS_AUTORADIOBUTTON + EDITTEXT IDC_IMPORT_STORE, 44,49,185,14, ES_READONLY + PUSHBUTTON "Naviga&re...", IDC_IMPORT_BROWSE_STORE, 236,49,60,14 +END + +IDD_IMPORT_FINISH DIALOG DISCARDABLE 0,0,317,178 +CAPTION "Asistent de importare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Se finalizează Asistentul de importare a certificatelor", IDC_IMPORT_TITLE, + 115,1,195,40 + LTEXT "Ați finalizat cu succes Asistentul de importare a certificatelor.", + -1, 115,33,195,24 + LTEXT "Ați specificat următoarea configurație:", + -1, 115,57,195,12 + CONTROL "", IDC_IMPORT_SETTINGS, "SysListView32", + LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, + 115,67,174,100 +END + +IDD_CERT_MGR DIALOG DISCARDABLE 0,0,335,270 +CAPTION "Certificate" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Rolul i&ntenționat:", -1, 7,9,100,12 + COMBOBOX IDC_MGR_PURPOSE_SELECTION, 83,7,245,14, + CBS_DROPDOWNLIST|WS_BORDER|WS_VSCROLL|WS_TABSTOP + CONTROL "", IDC_MGR_STORES, "SysTabControl32", + WS_CLIPSIBLINGS|WS_TABSTOP, 7,25,321,140 + CONTROL "", IDC_MGR_CERTS, "SysListView32", + LVS_REPORT|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, 15,46,305,111 + PUSHBUTTON "&Importare...", IDC_MGR_IMPORT, 7,172,51,14 + PUSHBUTTON "&Exportare...", IDC_MGR_EXPORT, 62,172,51,14, WS_DISABLED + PUSHBUTTON "Ște&rge", IDC_MGR_REMOVE, 117,172,51,14, WS_DISABLED + PUSHBUTTON "&Avansate...", IDC_MGR_ADVANCED, 277,172,51,14 + GROUPBOX "Rolurile intenționate ale certificatului", -1,7,194,321,47, BS_GROUPBOX + LTEXT "", IDC_MGR_PURPOSES, 13,208,252,30 + PUSHBUTTON "&Vizualizare...", IDC_MGR_VIEW, 269,218,51,14, WS_DISABLED + PUSHBUTTON "În&chide", IDCANCEL, 277,249,51,14, BS_DEFPUSHBUTTON +END + +IDD_CERT_MGR_ADVANCED DIALOG DISCARDABLE 0,0,248,176 +CAPTION "Opțiuni avansate" +FONT 8, "MS Shell Dlg" +BEGIN + GROUPBOX "Rolul certificatului", -1, 7,7,234,141, BS_GROUPBOX + LTEXT "Selectați unul sau mai multe roluri care să fie afișate când se selectează Roluri avansate.", + -1, 14,18,220,16 + LTEXT "Rolurile &certificatului:", -1, 14,41,90,12, WS_TABSTOP + CONTROL "", IDC_CERTIFICATE_USAGES,"SysListView32", + LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, + 14,51,220,90 + PUSHBUTTON "OK", IDOK, 132,155,51,14, BS_DEFPUSHBUTTON + PUSHBUTTON "Renunță", IDCANCEL, 190,155,51,14 +END + +IDD_EXPORT_WELCOME DIALOG DISCARDABLE 0,0,317,143 +CAPTION "Asistent de exportare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Bun venit în Asistentul de exportare a certificatelor", IDC_EXPORT_TITLE, + 115,7,195,12 + LTEXT "Acest asistent vă ajută să exportați certificate, liste de certificate revocate și liste de certificate acreditate dintr-un depozit de certificate într-un fișier.", + -1, 115,26,195,25 + LTEXT "Un certificat poate fi utilizat pentru identificarea proprie sau a calculatorului cu care comunicați. Poate fi utilizat și pentru autentificare sau pentru a semna mesaje. Depozitele de certificate sunt colecții de certificate, liste de certificate revocate și liste de certificate acreditate.", + -1, 115,56,195,40 + LTEXT "Pentru a continua, apăsați pe Înainte.", + -1, 115,103,195,8 +END + +IDD_EXPORT_PRIVATE_KEY DIALOG DISCARDABLE 0,0,317,143 +CAPTION "Asistent de exportare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Dacă alegeți să exportați cheia privată, vi se va solicita pe o pagină următoare o parolă pentru a proteja această cheie privată.", -1, 21,1,195,25 + LTEXT "Doriți să exportați cheia privată?", -1, 21,27,195,10 + AUTORADIOBUTTON "&Da, exportă cheia privată", + IDC_EXPORT_PRIVATE_KEY_YES, 31,36,200,12, BS_AUTORADIOBUTTON|WS_TABSTOP + AUTORADIOBUTTON "N&u, nu exporta cheia privată", + IDC_EXPORT_PRIVATE_KEY_NO, 31,48,200,12, BS_AUTORADIOBUTTON + LTEXT "", IDC_EXPORT_PRIVATE_KEY_UNAVAILABLE, 21,60,200,24 +END + +IDD_EXPORT_PASSWORD DIALOG DISCARDABLE 0,0,317,143 +CAPTION "Asistent de exportare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "&Parola:", -1, 21,1,195,10 + EDITTEXT IDC_EXPORT_PASSWORD, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP + LTEXT "&Confirmați parola:", -1, 21,35,195,10 + EDITTEXT IDC_EXPORT_PASSWORD_CONFIRM, 21,45,208,14, ES_AUTOHSCROLL|WS_TABSTOP +END + +IDD_EXPORT_FORMAT DIALOG DISCARDABLE 0,0,317,143 +CAPTION "Asistent de exportare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Selectați formatul pe care doriți să îl utilizați:", -1, 21,1,195,10 + AUTORADIOBUTTON "Binar X.509 codificat în &DER (.cer)", + IDC_EXPORT_FORMAT_DER, 31,18,240,12, BS_AUTORADIOBUTTON|WS_TABSTOP + AUTORADIOBUTTON "X.509 codificat în ba&se64 (.cer):", + IDC_EXPORT_FORMAT_BASE64, 31,30,240,12, BS_AUTORADIOBUTTON + AUTORADIOBUTTON "Standard sintaxă mesaje &criptografice/Mesaj PKCS #7 (.p7b)", + IDC_EXPORT_FORMAT_CMS, 31,42,240,12, BS_AUTORADIOBUTTON + CHECKBOX "&Include toate certificatele din calea de certificare, dacă este posibil", + IDC_EXPORT_CMS_INCLUDE_CHAIN, 44,57,240,8, BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED + AUTORADIOBUTTON "Schimb de informații &personale/PKCS #12 (.pfx)", + IDC_EXPORT_FORMAT_PFX, 31,72,240,12, BS_AUTORADIOBUTTON|WS_DISABLED + CHECKBOX "Incl&ude toate certificatele din calea de certificare, dacă este posibil", + IDC_EXPORT_PFX_INCLUDE_CHAIN, 44,87,240,8, BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED + CHECKBOX "Activ&ează criptarea puternică", + IDC_EXPORT_PFX_STRONG_ENCRYPTION, 44,102,240,8, + BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED + CHECKBOX "Șterge c&heia privată dacă exportarea reușește", + IDC_EXPORT_PFX_DELETE_PRIVATE_KEY, 44,117,240,8, + BS_AUTOCHECKBOX|WS_TABSTOP|WS_DISABLED +END + +IDD_EXPORT_FILE DIALOG DISCARDABLE 0,0,317,143 +CAPTION "Asistent de exportare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Nume &fișier:", -1, 21,1,195,10 + EDITTEXT IDC_EXPORT_FILENAME, 21,11,208,14, ES_AUTOHSCROLL|WS_TABSTOP + PUSHBUTTON "Naviga&re...", IDC_EXPORT_BROWSE_FILE, 236,11,60,14 +END + +IDD_EXPORT_FINISH DIALOG DISCARDABLE 0,0,317,178 +CAPTION "Asistent de exportare a certificatelor" +FONT 8, "MS Shell Dlg" +BEGIN + LTEXT "Se finalizează Asistentul de exportare a certificatelor", IDC_EXPORT_TITLE, + 115,1,195,40 + LTEXT "Ați finalizat cu succes Asistentul de exportare a certificatelor", + -1, 115,33,195,24 + LTEXT "Ați specificat următoarea configurație:", + -1, 115,57,195,12 + CONTROL "", IDC_EXPORT_SETTINGS, "SysListView32", + LVS_REPORT|LVS_NOCOLUMNHEADER|LVS_SINGLESEL|WS_CHILD|WS_VISIBLE|WS_TABSTOP|WS_BORDER, + 115,67,174,100 +END diff --git a/reactos/dll/win32/hhctrl.ocx/Pt.rc b/reactos/dll/win32/hhctrl.ocx/Pt.rc index 13476ce843f..2b8b1015fe6 100644 --- a/reactos/dll/win32/hhctrl.ocx/Pt.rc +++ b/reactos/dll/win32/hhctrl.ocx/Pt.rc @@ -3,6 +3,7 @@ * Portuguese Language Support * * Copyright 2008 Ricardo Filipe + * Copyright 2010 Gustavo Henrique Milaré * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,28 +22,63 @@ #include "resource.h" +#pragma code_page(65001) + LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL STRINGTABLE BEGIN - IDS_CONTENTS "&Contedos" - IDS_INDEX "&ndice" + IDS_CONTENTS "&Conteúdos" + IDS_INDEX "&Índice" IDS_SEARCH "&Pesquisar" IDS_FAVORITES "&Favoritos" END + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN + STRINGTABLE BEGIN IDTB_EXPAND "Mostrar" - IDTB_CONTRACT "Esconder" + IDTB_CONTRACT "Ocultar" IDTB_STOP "Parar" - IDTB_REFRESH "Actualizar" - IDTB_BACK "Retroceder" - IDTB_HOME "Incio" + IDTB_REFRESH "Recarregar" + IDTB_BACK "Voltar" + IDTB_HOME "Início" IDTB_SYNC "Sincronizar" IDTB_PRINT "Imprimir" - IDTB_OPTIONS "Opes" - IDTB_FORWARD "Avanar" + IDTB_OPTIONS "Opções" + IDTB_FORWARD "Avançar" + IDTB_NOTES "IDTB_NOTES" + IDTB_BROWSE_FWD "IDTB_BROWSE_FWD" + IDTB_BROWSE_BACK "IDT_BROWSE_BACK" + IDTB_CONTENTS "IDTB_CONTENTS" + IDTB_INDEX "IDTB_INDEX" + IDTB_SEARCH "IDTB_SEARCH" + IDTB_HISTORY "IDTB_HISTORY" + IDTB_FAVORITES "IDTB_FAVORITES" + IDTB_JUMP1 "Jump1" + IDTB_JUMP2 "Jump2" + IDTB_CUSTOMIZE "Personalizar" + IDTB_ZOOM "Zoom" + IDTB_TOC_NEXT "IDTB_TOC_NEXT" + IDTB_TOC_PREV "IDTB_TOC_PREV" +END + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE + +STRINGTABLE +BEGIN + IDTB_EXPAND "Mostrar" + IDTB_CONTRACT "Esconder" + IDTB_STOP "Parar" + IDTB_REFRESH "Actualizar" + IDTB_BACK "Retroceder" + IDTB_HOME "Início" + IDTB_SYNC "Sincronizar" + IDTB_PRINT "Imprimir" + IDTB_OPTIONS "Opções" + IDTB_FORWARD "Avançar" IDTB_NOTES "IDTB_NOTES" IDTB_BROWSE_FWD "IDTB_BROWSE_FWD" IDTB_BROWSE_BACK "IDT_BROWSE_BACK" diff --git a/reactos/dll/win32/hhctrl.ocx/hhctrl.rc b/reactos/dll/win32/hhctrl.ocx/hhctrl.rc index 3a6033764a7..865aac0bd6b 100644 --- a/reactos/dll/win32/hhctrl.ocx/hhctrl.rc +++ b/reactos/dll/win32/hhctrl.ocx/hhctrl.rc @@ -39,7 +39,6 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #include "Nl.rc" #include "No.rc" #include "Pl.rc" -#include "Pt.rc" #include "Sv.rc" #include "Tr.rc" @@ -50,6 +49,7 @@ LANGUAGE LANG_NEUTRAL, SUBLANG_NEUTRAL #include "It.rc" #include "Ja.rc" #include "Lt.rc" +#include "Pt.rc" #include "Ro.rc" #include "Ru.rc" #include "Si.rc" diff --git a/reactos/dll/win32/itss/chm_lib.h b/reactos/dll/win32/itss/chm_lib.h index 7a064172adf..fcd17b50cbf 100644 --- a/reactos/dll/win32/itss/chm_lib.h +++ b/reactos/dll/win32/itss/chm_lib.h @@ -111,22 +111,4 @@ int chm_enumerate_dir(struct chmFile *h, CHM_ENUMERATOR e, void *context); -/* - * This function is specific to Unix-systems. Do not remove it! - */ -static inline int -ffs(int field) -{ - static const int index[] = { 1, 2, 29, 3, 30, 15, 25, 4, 31, 23, 21, - 16, 26, 18, 5, 9, 32, 28, 14, 24, 22, 20, - 17, 8, 27, 13, 19, 7, 12, 6, 11, 10 }; - unsigned int w = field; - if (w == 0) - return (0); - w &= -w; - w *= 125613361U; - w >>= 27; - return index[w]; -} - #endif /* INCLUDED_CHMLIB_H */ diff --git a/reactos/dll/win32/jscript/jscript_No.rc b/reactos/dll/win32/jscript/jscript_No.rc new file mode 100644 index 00000000000..8fa790ff6ca --- /dev/null +++ b/reactos/dll/win32/jscript/jscript_No.rc @@ -0,0 +1,49 @@ +/* + * Copyright 2010 Alexander N. Sørnes + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "resource.h" + +#pragma code_page(65001) + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL + +STRINGTABLE DISCARDABLE +{ + IDS_TO_PRIMITIVE "Klarte ikke konvertere objekt til primitiv type" + IDS_INVALID_CALL_ARG "Ugyldig funksjonskall eller argument" + IDS_CREATE_OBJ_ERROR "Automatiseringstjeneren klarte ikke opprette objekt" + IDS_NO_PROPERTY "Objektet støtter ikke denne egenskapen eller metoden" + IDS_ARG_NOT_OPT "Argumentet er ikke valgfritt" + IDS_SYNTAX_ERROR "Syntaksfeil" + IDS_SEMICOLON "Forventet ';'" + IDS_LBRACKET "Forventet '('" + IDS_RBRACKET "Forventet ')'" + IDS_UNTERMINATED_STR "Uavsluttet strengkonstant" + IDS_NOT_FUNC "Forventet funksjon" + IDS_NOT_DATE "'[object]' er ikke et dataobjekt" + IDS_NOT_NUM "Forventet nummer" + IDS_OBJECT_EXPECTED "Forventet objekt" + IDS_ILLEGAL_ASSIGN "Ugyldig tilordning" + IDS_UNDEFINED "'|' er udefinert" + IDS_NOT_BOOL "Forventet boolsk verdi" + IDS_JSCRIPT_EXPECTED "Forventet JScript-objekt" + IDS_REGEXP_SYNTAX_ERROR "Syntaksfeil i regulært uttrykk" + IDS_URI_INVALID_CHAR "URI'en som skulle kodes inneholder ugyldige tegn" + IDS_INVALID_LENGTH "Rekkens lengde må være et endelig, positivt tall" + IDS_ARRAY_EXPECTED "Forventet rekke-objekt" +} diff --git a/reactos/dll/win32/jscript/rsrc.rc b/reactos/dll/win32/jscript/rsrc.rc index 3406526fdef..b13edcc4ddf 100644 --- a/reactos/dll/win32/jscript/rsrc.rc +++ b/reactos/dll/win32/jscript/rsrc.rc @@ -36,6 +36,7 @@ REGINST REGINST jscript.inf #include "jscript_Ko.rc" #include "jscript_Lt.rc" #include "jscript_Nl.rc" +#include "jscript_No.rc" #include "jscript_Pt.rc" #include "jscript_Ro.rc" #include "jscript_Ru.rc" diff --git a/reactos/dll/win32/mapi32/No.rc b/reactos/dll/win32/mapi32/No.rc new file mode 100644 index 00000000000..5e4d8c52b01 --- /dev/null +++ b/reactos/dll/win32/mapi32/No.rc @@ -0,0 +1,32 @@ +/* +* MAPI32 Norwegian Bokmål resources +* +* Copyright 2010 Alexander N. Sørnes +* +* This library is free software; you can redistribute it and/or +* modify it under the terms of the GNU Lesser General Public +* License as published by the Free Software Foundation; either +* version 2.1 of the License, or (at your option) any later version. +* +* This library is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +* Lesser General Public License for more details. +* +* You should have received a copy of the GNU Lesser General Public +* License along with this library; if not, write to the Free Software +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA +* +*/ + +#include "res.h" + +#pragma code_page(65001) + +LANGUAGE LANG_NORWEGIAN, SUBLANG_NORWEGIAN_BOKMAL + +STRINGTABLE +{ + IDS_NO_MAPI_CLIENT, "Klarte ikke sende e-post fordi en MAPI-klient ikke er installert." + IDS_SEND_MAIL, "Send e-post" +} diff --git a/reactos/dll/win32/mapi32/version.rc b/reactos/dll/win32/mapi32/version.rc index a9ea6efb694..d368373ed4c 100644 --- a/reactos/dll/win32/mapi32/version.rc +++ b/reactos/dll/win32/mapi32/version.rc @@ -39,6 +39,7 @@ #include "Ko.rc" #include "Lt.rc" #include "Nl.rc" +#include "No.rc" #include "Pt.rc" #include "Ro.rc" #include "Ru.rc" diff --git a/reactos/dll/win32/msacm32/Makefile.in b/reactos/dll/win32/msacm32/Makefile.in deleted file mode 100644 index 247b6816e67..00000000000 --- a/reactos/dll/win32/msacm32/Makefile.in +++ /dev/null @@ -1,29 +0,0 @@ -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -MODULE = msacm32.dll -IMPORTS = winmm user32 advapi32 kernel32 -ALTNAMES = msacm.dll - -SPEC_SRCS16 = $(ALTNAMES:.dll=.spec) - -C_SRCS = \ - driver.c \ - filter.c \ - format.c \ - internal.c \ - msacm32_main.c \ - pcmconverter.c \ - stream.c - -C_SRCS16 = \ - msacm_main.c - -RC_SRCS = msacm.rc - -SUBDIRS = tests - -@MAKE_DLL_RULES@ - -### Dependencies: diff --git a/reactos/dll/win32/msacm32/driver.c b/reactos/dll/win32/msacm32/driver.c index e481d688e2f..d0b543c314e 100644 --- a/reactos/dll/win32/msacm32/driver.c +++ b/reactos/dll/win32/msacm32/driver.c @@ -77,8 +77,8 @@ MMRESULT WINAPI acmDriverAddA(PHACMDRIVERID phadid, HINSTANCE hinstModule, /* A->W translation of name */ if ((fdwAdd & ACM_DRIVERADDF_TYPEMASK) == ACM_DRIVERADDF_NAME) { - unsigned long len; - + INT len; + if (lParam == 0) return MMSYSERR_INVALPARAM; len = MultiByteToWideChar(CP_ACP, 0, (LPSTR)lParam, -1, NULL, 0); driverW = HeapAlloc(MSACM_hHeap, 0, len * sizeof(WCHAR)); @@ -214,6 +214,7 @@ MMRESULT WINAPI acmDriverClose(HACMDRIVER had, DWORD fdwClose) else if (pad->pLocalDrvrInst) MSACM_CloseLocalDriver(pad->pLocalDrvrInst); + pad->obj.dwType = 0; HeapFree(MSACM_hHeap, 0, pad); return MMSYSERR_NOERROR; @@ -305,6 +306,8 @@ MMRESULT WINAPI acmDriverDetailsW(HACMDRIVERID hadid, PACMDRIVERDETAILSW padd, D paddw.cbStruct = min(padd->cbStruct, sizeof(*padd)); memcpy(padd, &paddw, paddw.cbStruct); } + else if (mmr == MMSYSERR_NODRIVER) + return MMSYSERR_NOTSUPPORTED; return mmr; } @@ -555,6 +558,8 @@ MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpe if (!pad->hDrvr) { ret = adod.dwError; + if (ret == MMSYSERR_NOERROR) + ret = MMSYSERR_NODRIVER; goto gotError; } } @@ -578,6 +583,8 @@ MMRESULT WINAPI acmDriverOpen(PHACMDRIVER phad, HACMDRIVERID hadid, DWORD fdwOpe if (!pad->pLocalDrvrInst) { ret = adod.dwError; + if (ret == MMSYSERR_NOERROR) + ret = MMSYSERR_NODRIVER; goto gotError; } } diff --git a/reactos/dll/win32/msacm32/filter.c b/reactos/dll/win32/msacm32/filter.c index 9d7077392c8..53db82777de 100644 --- a/reactos/dll/win32/msacm32/filter.c +++ b/reactos/dll/win32/msacm32/filter.c @@ -448,8 +448,8 @@ MMRESULT WINAPI acmFilterTagEnumW(HACMDRIVER had, PACMFILTERTAGDETAILSW paftd, } } } + acmDriverClose(had, 0); } - acmDriverClose(had, 0); } return MMSYSERR_NOERROR; } diff --git a/reactos/dll/win32/msacm32/format.c b/reactos/dll/win32/msacm32/format.c index a6f7fbdd6a0..9866139af35 100644 --- a/reactos/dll/win32/msacm32/format.c +++ b/reactos/dll/win32/msacm32/format.c @@ -893,8 +893,8 @@ MMRESULT WINAPI acmFormatTagEnumW(HACMDRIVER had, PACMFORMATTAGDETAILSW paftd, } } } + acmDriverClose(had, 0); } - acmDriverClose(had, 0); } } return MMSYSERR_NOERROR; diff --git a/reactos/dll/win32/msacm32/msacm.rc b/reactos/dll/win32/msacm32/msacm.rc index 1f2d508f9f7..6f91f9e34cd 100644 --- a/reactos/dll/win32/msacm32/msacm.rc +++ b/reactos/dll/win32/msacm32/msacm.rc @@ -26,24 +26,26 @@ #include "msacm_Bg.rc" #include "msacm_Cs.rc" #include "msacm_Da.rc" -#include "msacm_De.rc" #include "msacm_El.rc" #include "msacm_En.rc" #include "msacm_Es.rc" -#include "msacm_Fr.rc" #include "msacm_Hu.rc" #include "msacm_It.rc" -#include "msacm_Ja.rc" #include "msacm_Ko.rc" -#include "msacm_Lt.rc" #include "msacm_Nl.rc" #include "msacm_No.rc" #include "msacm_Pl.rc" +#include "msacm_Sv.rc" +#include "msacm_Tr.rc" + +/* UTF-8 */ +#include "msacm_De.rc" +#include "msacm_Fr.rc" +#include "msacm_Ja.rc" +#include "msacm_Lt.rc" #include "msacm_Pt.rc" #include "msacm_Ro.rc" #include "msacm_Ru.rc" #include "msacm_Si.rc" -#include "msacm_Sv.rc" -#include "msacm_Tr.rc" #include "msacm_Uk.rc" #include "msacm_Zh.rc" diff --git a/reactos/dll/win32/msacm32/msacm_Cs.rc b/reactos/dll/win32/msacm32/msacm_Cs.rc index d7b278e4474..8e994514b28 100644 --- a/reactos/dll/win32/msacm32/msacm_Cs.rc +++ b/reactos/dll/win32/msacm32/msacm_Cs.rc @@ -47,14 +47,9 @@ BEGIN LTEXT "&Atributy:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Storno", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "P&omoc", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Da.rc b/reactos/dll/win32/msacm32/msacm_Da.rc index 67f31c8362f..a3f7b700175 100644 --- a/reactos/dll/win32/msacm32/msacm_Da.rc +++ b/reactos/dll/win32/msacm32/msacm_Da.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "&Attributter:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Annuller", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Hjlp", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_De.rc b/reactos/dll/win32/msacm32/msacm_De.rc index 1f35148ebe4..fe93b9b41b9 100644 --- a/reactos/dll/win32/msacm32/msacm_De.rc +++ b/reactos/dll/win32/msacm32/msacm_De.rc @@ -45,14 +45,9 @@ BEGIN LTEXT "&Attribute:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Abbrechen", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Hilfe", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_En.rc b/reactos/dll/win32/msacm32/msacm_En.rc index 620dfcf1699..5c271766fde 100644 --- a/reactos/dll/win32/msacm32/msacm_En.rc +++ b/reactos/dll/win32/msacm32/msacm_En.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "&Attributes:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Cancel", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Help", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Es.rc b/reactos/dll/win32/msacm32/msacm_Es.rc index 3e6f441767a..b9fc423ddef 100644 --- a/reactos/dll/win32/msacm32/msacm_Es.rc +++ b/reactos/dll/win32/msacm32/msacm_Es.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "A&tributos:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "Aceptar", IDOK, 48, 80, 40, 14 PUSHBUTTON "Cancelar", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Ayuda", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Fr.rc b/reactos/dll/win32/msacm32/msacm_Fr.rc index 9341e6cafd4..747a27921e5 100644 --- a/reactos/dll/win32/msacm32/msacm_Fr.rc +++ b/reactos/dll/win32/msacm32/msacm_Fr.rc @@ -3,6 +3,7 @@ * * Copyright 2000 Eric Pouech * Copyright 2003 Vincent Béron + * Copyright 2009-2010 Frédéric Delanoy * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -47,14 +48,9 @@ BEGIN LTEXT "&Attributs :", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 48, 57, 197, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Annuler", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "Aid&e", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Hu.rc b/reactos/dll/win32/msacm32/msacm_Hu.rc index 52f32584cf7..57a8ce7c5f5 100644 --- a/reactos/dll/win32/msacm32/msacm_Hu.rc +++ b/reactos/dll/win32/msacm32/msacm_Hu.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "&Attribtumok:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Mgse", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Sg", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_It.rc b/reactos/dll/win32/msacm32/msacm_It.rc index 07db54b6d54..074977a7b7a 100644 --- a/reactos/dll/win32/msacm32/msacm_It.rc +++ b/reactos/dll/win32/msacm32/msacm_It.rc @@ -44,14 +44,9 @@ BEGIN LTEXT "&Attributi:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Annulla", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Aiuto", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Ja.rc b/reactos/dll/win32/msacm32/msacm_Ja.rc index 5a27330a167..8136ea41288 100644 --- a/reactos/dll/win32/msacm32/msacm_Ja.rc +++ b/reactos/dll/win32/msacm32/msacm_Ja.rc @@ -46,14 +46,9 @@ BEGIN LTEXT "属性(&A):", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "キャンセル", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "ヘルプ(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Ko.rc b/reactos/dll/win32/msacm32/msacm_Ko.rc index fd017cc7ec3..f10681fffda 100644 --- a/reactos/dll/win32/msacm32/msacm_Ko.rc +++ b/reactos/dll/win32/msacm32/msacm_Ko.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "Ӽ(&A):", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "Ȯ", IDOK, 48, 80, 40, 14 PUSHBUTTON "", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Lt.rc b/reactos/dll/win32/msacm32/msacm_Lt.rc index a94710cd9fb..c3e62f65ace 100644 --- a/reactos/dll/win32/msacm32/msacm_Lt.rc +++ b/reactos/dll/win32/msacm32/msacm_Lt.rc @@ -46,14 +46,9 @@ BEGIN LTEXT "A&tributai:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "Gerai", IDOK, 48, 80, 40, 14 PUSHBUTTON "Atsisakyti", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Žinynas", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Nl.rc b/reactos/dll/win32/msacm32/msacm_Nl.rc index 1fb0b059b20..2ac3afb974c 100644 --- a/reactos/dll/win32/msacm32/msacm_Nl.rc +++ b/reactos/dll/win32/msacm32/msacm_Nl.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "&Attributen:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Annuleren", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Help", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_No.rc b/reactos/dll/win32/msacm32/msacm_No.rc index 1bef4343834..e817585f799 100644 --- a/reactos/dll/win32/msacm32/msacm_No.rc +++ b/reactos/dll/win32/msacm32/msacm_No.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "&Attributter:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Avbryt", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Hjelp", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Pl.rc b/reactos/dll/win32/msacm32/msacm_Pl.rc index 8b580783fe7..d937bef4bd0 100644 --- a/reactos/dll/win32/msacm32/msacm_Pl.rc +++ b/reactos/dll/win32/msacm32/msacm_Pl.rc @@ -44,14 +44,9 @@ BEGIN LTEXT "&Atrybuty:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 180, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 180, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 53, 80, 40, 14 PUSHBUTTON "Anuluj", IDCANCEL, 97, 80, 40, 14 PUSHBUTTON "&Pomoc", IDD_ACMFORMATCHOOSE_BTN_HELP, 141, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Pt.rc b/reactos/dll/win32/msacm32/msacm_Pt.rc index d73951c6899..440dc3edf8d 100644 --- a/reactos/dll/win32/msacm32/msacm_Pt.rc +++ b/reactos/dll/win32/msacm32/msacm_Pt.rc @@ -2,7 +2,8 @@ * Portuguese resource file for MS ACM * * Copyright 2003 Marcelo Duarte - * Copyright 2006 Amrico Jos Melo + * Copyright 2006 Américo José Melo + * Copyright 2010 Gustavo Henrique Milaré * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -21,11 +22,13 @@ #include "wineacm.h" +#pragma code_page(65001) + LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN DLG_ACMFORMATCHOOSE_ID DIALOG DISCARDABLE 10, 20, 225, 100 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Seleco de som" +CAPTION "Seleção de som" FONT 8, "MS Shell Dlg" BEGIN @@ -34,7 +37,7 @@ BEGIN COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON "&Gravar como...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14 + PUSHBUTTON "&Salvar como...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14 PUSHBUTTON "&Remover", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14 LTEXT "&Formato:", -1, 5, 41, 44, 8, NOT WS_GROUP @@ -44,14 +47,9 @@ BEGIN LTEXT "&Atributos:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Cancelar", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "Aj&uda", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 @@ -62,7 +60,7 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE DLG_ACMFORMATCHOOSE_ID DIALOG DISCARDABLE 10, 20, 225, 100 STYLE DS_MODALFRAME | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMENU -CAPTION "Seleco de som" +CAPTION "Selecção de som" FONT 8, "MS Shell Dlg" BEGIN @@ -81,14 +79,9 @@ BEGIN LTEXT "&Atributos:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Cancelar", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "Aj&uda", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Ru.rc b/reactos/dll/win32/msacm32/msacm_Ru.rc index a777034e00d..d27f2eb3a6f 100644 --- a/reactos/dll/win32/msacm32/msacm_Ru.rc +++ b/reactos/dll/win32/msacm32/msacm_Ru.rc @@ -46,14 +46,9 @@ BEGIN LTEXT "&Свойства:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Отмена", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Помощь", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Si.rc b/reactos/dll/win32/msacm32/msacm_Si.rc index 3834a3304f1..57c1889d129 100644 --- a/reactos/dll/win32/msacm32/msacm_Si.rc +++ b/reactos/dll/win32/msacm32/msacm_Si.rc @@ -45,14 +45,9 @@ BEGIN LTEXT "&Lastnosti:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "V redu", IDOK, 48, 80, 40, 14 PUSHBUTTON "Prekliči", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Pomoč", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Sv.rc b/reactos/dll/win32/msacm32/msacm_Sv.rc index 939e8793371..429060fe7bf 100644 --- a/reactos/dll/win32/msacm32/msacm_Sv.rc +++ b/reactos/dll/win32/msacm32/msacm_Sv.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "&Attribut:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 PUSHBUTTON "Avbryt", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Hjlp", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Tr.rc b/reactos/dll/win32/msacm32/msacm_Tr.rc index 6c15ffb0e39..03cfdf93cc5 100644 --- a/reactos/dll/win32/msacm32/msacm_Tr.rc +++ b/reactos/dll/win32/msacm32/msacm_Tr.rc @@ -43,14 +43,9 @@ BEGIN LTEXT "&znitelikler:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "Tamam", IDOK, 48, 80, 40, 14 PUSHBUTTON "ptal", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "&Yardm", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/msacm32/msacm_Uk.rc b/reactos/dll/win32/msacm32/msacm_Uk.rc index 750e00d85ed..bf755be3b75 100644 --- a/reactos/dll/win32/msacm32/msacm_Uk.rc +++ b/reactos/dll/win32/msacm32/msacm_Uk.rc @@ -1,11 +1,28 @@ /* - * PROJECT: OLE User Interface Support - * LICENSE: GPL - See COPYING in the top level directory - * FILE: dll/win32/msacm/msacm_Uk.rc - * PURPOSE: Ukraianian resource file for MS ACM - * TRANSLATOR: Artem Reznikov + * Ukraianian resource file for MS ACM + * + * Copyright 2007 Artem Reznikov + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ +#include "wineacm.h" + +/* UTF-8 */ +#pragma code_page(65001) + LANGUAGE LANG_UKRAINIAN, SUBLANG_DEFAULT DLG_ACMFORMATCHOOSE_ID DIALOG DISCARDABLE 10, 20, 225, 100 @@ -14,31 +31,26 @@ CAPTION "Sound Selection" FONT 8, "MS Shell Dlg" BEGIN - LTEXT "&':", -1, 5, 5, 115, 8, NOT WS_GROUP + LTEXT "&Ім'я:", -1, 5, 5, 115, 8, NOT WS_GROUP COMBOBOX IDD_ACMFORMATCHOOSE_CMB_CUSTOM, 5, 15, 115, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - PUSHBUTTON " &...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14 - PUSHBUTTON "&", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14 + PUSHBUTTON "Зберегти &як...", IDD_ACMFORMATCHOOSE_BTN_SETNAME, 125, 14, 45, 14 + PUSHBUTTON "&Видалити", IDD_ACMFORMATCHOOSE_BTN_DELNAME, 175, 14, 45, 14 - LTEXT "&:", -1, 5, 41, 44, 8, NOT WS_GROUP + LTEXT "&Формат:", -1, 5, 41, 44, 8, NOT WS_GROUP COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMATTAG, 50, 39, 170, 60, CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP - LTEXT "&:", -1, 5, 59, 44, 8, NOT WS_GROUP + LTEXT "&Властивості:", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "OK", IDOK, 48, 80, 40, 14 - PUSHBUTTON "", IDCANCEL, 92, 80, 40, 14 - PUSHBUTTON "&", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 + PUSHBUTTON "Скасувати", IDCANCEL, 92, 80, 40, 14 + PUSHBUTTON "&Довідка", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 END diff --git a/reactos/dll/win32/msacm32/msacm_Zh.rc b/reactos/dll/win32/msacm32/msacm_Zh.rc index 1b8949e55f2..b09cc8bb44c 100644 --- a/reactos/dll/win32/msacm32/msacm_Zh.rc +++ b/reactos/dll/win32/msacm32/msacm_Zh.rc @@ -46,14 +46,9 @@ BEGIN LTEXT "属性(&A):", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "确定", IDOK, 48, 80, 40, 14 PUSHBUTTON "取消", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "帮助(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 @@ -83,14 +78,9 @@ BEGIN LTEXT "屬性(&A):", -1, 5, 59, 44, 8, NOT WS_GROUP -#if 0 - COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, - CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP | - CBS_OWNERDRAWFIXED | CBS_HASSTRINGS -#else COMBOBOX IDD_ACMFORMATCHOOSE_CMB_FORMAT, 50, 57, 170, 60, CBS_DROPDOWNLIST | WS_VSCROLL | WS_TABSTOP -#endif + DEFPUSHBUTTON "確定", IDOK, 48, 80, 40, 14 PUSHBUTTON "取消", IDCANCEL, 92, 80, 40, 14 PUSHBUTTON "幫助(&H)", IDD_ACMFORMATCHOOSE_BTN_HELP, 136, 80, 40, 14 diff --git a/reactos/dll/win32/mshtml/Pt.rc b/reactos/dll/win32/mshtml/Pt.rc index be98a59cb08..3c19ca50aad 100644 --- a/reactos/dll/win32/mshtml/Pt.rc +++ b/reactos/dll/win32/mshtml/Pt.rc @@ -49,8 +49,8 @@ STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMEN CAPTION "Instalador Wine Gecko" FONT 8, "MS Shell Dlg" { - LTEXT "O Wine não pôde encontrar o pacote Gecko que é necessário para aplicações com HTML embutido" \ - "funcionarem corretamente. O Wine pode automaticamente efetuar o download instalá-lo para você.\n\n" \ + LTEXT "O Wine não pôde encontrar o pacote Gecko que é necessário para aplicações com HTML embutido " \ + "funcionarem corretamente. O Wine pode automaticamente efetuar o download e instalá-lo para você.\n\n" \ "Nota: é recomendável usar os pacotes da sua distribuição ao invés disso. \n\ Veja http://wiki.winehq.org/Gecko para mais detalhes.", ID_DWL_STATUS, 10, 10, 240, 60, SS_LEFT @@ -66,7 +66,7 @@ STYLE DS_MODALFRAME | DS_CENTER | WS_POPUP | WS_VISIBLE | WS_CAPTION | WS_SYSMEN CAPTION "Instalador Wine Gecko" FONT 8, "MS Shell Dlg" { - LTEXT "O Wine não conseguiu encontrar o pacote Gecko que é necessário para aplicações com HTML embutido" \ + LTEXT "O Wine não conseguiu encontrar o pacote Gecko que é necessário para aplicações com HTML embutido " \ "funcionarem corretamente. O Wine pode automaticamente efetuar o download e instalá-lo por si.\n\n" \ "Nota: é recomendável usar os pacotes da sua distribuição em vez disso. \n\ Veja http://wiki.winehq.org/Gecko para mais detalhes.", diff --git a/reactos/dll/win32/mshtml/olecmd.c b/reactos/dll/win32/mshtml/olecmd.c index 4d5967a923f..851189bf509 100644 --- a/reactos/dll/win32/mshtml/olecmd.c +++ b/reactos/dll/win32/mshtml/olecmd.c @@ -898,11 +898,9 @@ void show_context_menu(HTMLDocumentObj *This, DWORD dwID, POINT *ppt, IDispatch { HMENU menu_res, menu; DWORD cmdid; - HRESULT hres; - hres = IDocHostUIHandler_ShowContextMenu(This->hostui, dwID, ppt, - (IUnknown*)CMDTARGET(&This->basedoc), elem); - if(hres == S_OK) + if(This->hostui && S_OK == IDocHostUIHandler_ShowContextMenu(This->hostui, + dwID, ppt, (IUnknown*)CMDTARGET(&This->basedoc), elem)) return; menu_res = LoadMenuW(get_shdoclc(), MAKEINTRESOURCEW(IDR_BROWSE_CONTEXT_MENU)); diff --git a/reactos/dll/win32/mshtml/protocol.c b/reactos/dll/win32/mshtml/protocol.c index 193004dc318..14858812822 100644 --- a/reactos/dll/win32/mshtml/protocol.c +++ b/reactos/dll/win32/mshtml/protocol.c @@ -670,7 +670,7 @@ static HRESULT WINAPI ResProtocol_Start(IInternetProtocol *iface, LPCWSTR szUrl, FreeLibrary(hdll); - hres = FindMimeFromData(NULL, url_file, NULL, 0, NULL, 0, &mime, 0); + hres = FindMimeFromData(NULL, url_file, This->data, This->data_len, NULL, 0, &mime, 0); heap_free(url); if(SUCCEEDED(hres)) { IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_MIMETYPEAVAILABLE, mime); diff --git a/reactos/dll/win32/msi/action.c b/reactos/dll/win32/msi/action.c index 7ae8286c978..b40c840f142 100644 --- a/reactos/dll/win32/msi/action.c +++ b/reactos/dll/win32/msi/action.c @@ -4256,7 +4256,7 @@ static UINT ITERATE_SelfRegModules(MSIRECORD *row, LPVOID param) MSIFILE *file; DWORD len; static const WCHAR ExeStr[] = - {'r','e','g','s','v','r','3','2','.','e','x','e',' ','\"',0}; + {'r','e','g','s','v','r','3','2','.','e','x','e',' ','/','s', ' ','\"',0}; static const WCHAR close[] = {'\"',0}; STARTUPINFOW si; PROCESS_INFORMATION info; @@ -4326,7 +4326,7 @@ static UINT ACTION_SelfRegModules(MSIPACKAGE *package) static UINT ITERATE_SelfUnregModules( MSIRECORD *row, LPVOID param ) { static const WCHAR regsvr32[] = - {'r','e','g','s','v','r','3','2','.','e','x','e',' ','/','u',' ','\"',0}; + {'r','e','g','s','v','r','3','2','.','e','x','e',' ','/','u',' ','/','s',' ','\"',0}; static const WCHAR close[] = {'\"',0}; MSIPACKAGE *package = param; LPCWSTR filename; diff --git a/reactos/dll/win32/msimtf/activeimmapp.c b/reactos/dll/win32/msimtf/activeimmapp.c index d8446267893..73ce0758c70 100644 --- a/reactos/dll/win32/msimtf/activeimmapp.c +++ b/reactos/dll/win32/msimtf/activeimmapp.c @@ -655,7 +655,7 @@ static HRESULT WINAPI ActiveIMMApp_Deactivate(IActiveIMMApp* This) static HRESULT WINAPI ActiveIMMApp_OnDefWindowProc(IActiveIMMApp* This, HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam, LRESULT *plResult) { - //FIXME("Stub (%p %x %lx %lx)\n",hWnd,Msg,wParam,lParam); + FIXME("Stub (%p %x %lx %lx)\n",hWnd,Msg,wParam,lParam); return E_FAIL; } diff --git a/reactos/dll/win32/odbc32/Makefile.in b/reactos/dll/win32/odbc32/Makefile.in deleted file mode 100644 index e912920e673..00000000000 --- a/reactos/dll/win32/odbc32/Makefile.in +++ /dev/null @@ -1,13 +0,0 @@ -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -MODULE = odbc32.dll -IMPORTS = kernel32 - -C_SRCS = \ - proxyodbc.c - -@MAKE_DLL_RULES@ - -### Dependencies: diff --git a/reactos/dll/win32/oleacc/oleacc_Pt.rc b/reactos/dll/win32/oleacc/oleacc_Pt.rc index 96208402ebf..769039a2f64 100644 --- a/reactos/dll/win32/oleacc/oleacc_Pt.rc +++ b/reactos/dll/win32/oleacc/oleacc_Pt.rc @@ -27,7 +27,7 @@ LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN STRINGTABLE DISCARDABLE { - 0 "objecto desconhecido" /* undocumented */ + 0 "objeto desconhecido" /* undocumented */ ROLE_SYSTEM_TITLEBAR "barra de título" ROLE_SYSTEM_MENUBAR "barra de menu" ROLE_SYSTEM_SCROLLBAR "barra de rolagem" diff --git a/reactos/dll/win32/pstorec/pstorec.c b/reactos/dll/win32/pstorec/pstorec.c index 5b3f7e04c30..493501f10a5 100644 --- a/reactos/dll/win32/pstorec/pstorec.c +++ b/reactos/dll/win32/pstorec/pstorec.c @@ -43,6 +43,8 @@ BOOL WINAPI DllMain(HINSTANCE hinst, DWORD fdwReason, LPVOID fImpLoad) switch (fdwReason) { + case DLL_WINE_PREATTACH: + return FALSE; /* prefer native version */ case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hinst); break; diff --git a/reactos/dll/win32/pstorec/pstorec.rbuild b/reactos/dll/win32/pstorec/pstorec.rbuild index c9d6818a777..0b932b67acf 100644 --- a/reactos/dll/win32/pstorec/pstorec.rbuild +++ b/reactos/dll/win32/pstorec/pstorec.rbuild @@ -9,6 +9,7 @@ . + pstorec_tlb wine uuid diff --git a/reactos/dll/win32/pstorec/pstorec_ros.diff b/reactos/dll/win32/pstorec/pstorec_ros.diff deleted file mode 100644 index e8599f9064d..00000000000 --- a/reactos/dll/win32/pstorec/pstorec_ros.diff +++ /dev/null @@ -1,13 +0,0 @@ -Index: pstorec.c -=================================================================== ---- pstorec.c (revision 36054) -+++ pstorec.c (working copy) -@@ -43,8 +43,6 @@ - - switch (fdwReason) - { -- case DLL_WINE_PREATTACH: -- return FALSE; /* prefer native version */ - case DLL_PROCESS_ATTACH: - DisableThreadLibraryCalls(hinst); - break; diff --git a/reactos/dll/win32/shdoclc/Hu.rc b/reactos/dll/win32/shdoclc/Hu.rc index 2fdc4c202ef..5cc7258a337 100644 --- a/reactos/dll/win32/shdoclc/Hu.rc +++ b/reactos/dll/win32/shdoclc/Hu.rc @@ -1,5 +1,5 @@ /* - * Copyright 2006 Andras Kovacs + * Copyright 2006-2010 Andras Kovacs * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -18,116 +18,131 @@ #include "shdoclc.h" +/* UTF-8 */ +#pragma code_page(65001) + LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT +STRINGTABLE DISCARDABLE +{ + IDS_MESSAGE_BOX_TITLE, "Wine Internet Explorer" +} + +STRINGTABLE DISCARDABLE +{ + IDS_PRINT_HEADER_TEMPLATE "&w&bOldal &p" /* FIXME: should be "&w&bPage &p of &P" */ + IDS_PRINT_FOOTER_TEMPLATE "&u&b&d" +} + + IDR_BROWSE_CONTEXT_MENU MENU { POPUP "Default" { MENUITEM "&Vissza", IDM_GOBACKWARD - MENUITEM "El&re", IDM_GOFORWARD + MENUITEM "El&őre", IDM_GOFORWARD MENUITEM SEPARATOR - MENUITEM "&Httr mentse...", IDM_SAVEBACKGROUND - MENUITEM "Bellts h&ttrknt", IDM_SETWALLPAPER - MENUITEM "Httr &msolsa", IDM_COPYBACKGROUND - MENUITEM "Bellts &asztalelemknt", IDM_SETDESKTOPITEM + MENUITEM "&Háttér mentése...", IDM_SAVEBACKGROUND + MENUITEM "Beállítás há&ttérként", IDM_SETWALLPAPER + MENUITEM "Háttér &másolása", IDM_COPYBACKGROUND + MENUITEM "Beállítás &asztalelemként", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM "M&indet kijelli", IDM_SELECTALL - MENUITEM "&Beilleszts", IDM_PASTE + MENUITEM "M&indet kijelöli", IDM_SELECTALL + MENUITEM "&Beillesztés", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "Parancsi&kon ltrehozsa", IDM_CREATESHORTCUT - MENUITEM "Hozza&ds a kedvencekhez", IDM_ADDFAVORITES - MENUITEM "&Forrs megjelentse", IDM_VIEWSOURCE + MENUITEM "Parancsi&kon létrehozása", IDM_CREATESHORTCUT + MENUITEM "Hozzáa&dás a kedvencekhez", IDM_ADDFAVORITES + MENUITEM "&Forrás megjelenítése", IDM_VIEWSOURCE MENUITEM SEPARATOR - MENUITEM "K&dols", IDM_LANGUAGE + MENUITEM "K&ódolás", IDM_LANGUAGE MENUITEM SEPARATOR - MENUITEM "&Nyomtats", IDM_PRINT - MENUITEM "F&rissts", _IDM_REFRESH + MENUITEM "&Nyomtatás", IDM_PRINT + MENUITEM "F&rissítés", _IDM_REFRESH MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Tula&jdonsgok", IDM_PROPERTIES + MENUITEM "Tula&jdonságok", IDM_PROPERTIES } POPUP "Image" { - MENUITEM "&Link megnyitsa", IDM_FOLLOWLINKC - MENUITEM "Li&nk megnyitsa j ablakban", IDM_FOLLOWLINKN - MENUITEM "Cl ment&se...", IDM_SAVETARGET - MENUITEM "&Cl nyomtatsa", IDM_PRINTTARGET + MENUITEM "&Link megnyitása", IDM_FOLLOWLINKC + MENUITEM "Li&nk megnyitása új ablakban", IDM_FOLLOWLINKN + MENUITEM "Cél ment&ése...", IDM_SAVETARGET + MENUITEM "&Cél nyomtatása", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "Kp megjelen&tse", IDM_SHOWPICTURE - MENUITEM "&Kp mentse...", IDM_SAVEPICTURE - MENUITEM "Kp elkldse &e-mail-ben...", IDM_MP_EMAILPICTURE - MENUITEM "Kp n&yomtatsa...", IDM_MP_PRINTPICTURE - MENUITEM "&Ugrs a Kpek-hez", IDM_MP_MYPICS - MENUITEM "Belltts h&ttrknt", IDM_SETWALLPAPER - MENUITEM "Belltts &asztalelemknt...", IDM_SETDESKTOPITEM + MENUITEM "Kép megjelen&ítése", IDM_SHOWPICTURE + MENUITEM "&Kép mentése...", IDM_SAVEPICTURE + MENUITEM "Kép elküldése &e-mail-ben...", IDM_MP_EMAILPICTURE + MENUITEM "Kép n&yomtatása...", IDM_MP_PRINTPICTURE + MENUITEM "&Ugrás a Képek-hez", IDM_MP_MYPICS + MENUITEM "Beállíttás há&ttérként", IDM_SETWALLPAPER + MENUITEM "Beállíttás &asztalelemként...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM "K&ivgs", IDM_CUT - MENUITEM "&Msols", IDM_COPY - MENUITEM "Parancs&ikon msolsa", IDM_COPYSHORTCUT - MENUITEM "Bei&lleszts", IDM_PASTE + MENUITEM "K&ivágás", IDM_CUT + MENUITEM "&Másolás", IDM_COPY + MENUITEM "Parancs&ikon másolása", IDM_COPYSHORTCUT + MENUITEM "Bei&llesztés", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "Hozza&ds a kedvencekhez...", IDM_ADDFAVORITES + MENUITEM "Hozzáa&dás a kedvencekhez...", IDM_ADDFAVORITES MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Tula&jdonsgok", IDM_PROPERTIES + MENUITEM "Tula&jdonságok", IDM_PROPERTIES } POPUP "Control" { - MENUITEM "&Visszavons", IDM_UNDO + MENUITEM "&Visszavonás", IDM_UNDO MENUITEM SEPARATOR - MENUITEM "Kiv&gs", IDM_CUT - MENUITEM "&Msols", IDM_COPY - MENUITEM "&Beilleszts", IDM_PASTE - MENUITEM "&Trls", IDM_DELETE + MENUITEM "Kiv&ágás", IDM_CUT + MENUITEM "&Másolás", IDM_COPY + MENUITEM "&Beillesztés", IDM_PASTE + MENUITEM "&Törlés", IDM_DELETE MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Mindet k&ijelli", IDM_SELECTALL + MENUITEM "Mindet k&ijelöli", IDM_SELECTALL } POPUP "Table" { - POPUP "&Kivlaszts" + POPUP "&Kiválasztás" { MENUITEM "&Cella", IDM_CELLSELECT MENUITEM "&Sor", IDM_ROWSELECT MENUITEM "&Oszlop", IDM_COLUMNSELECT - MENUITEM "&Tbla", IDM_TABLESELECT + MENUITEM "&Tábla", IDM_TABLESELECT } MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "&Cella tulajdonsgai", IDM_CELLPROPERTIES - MENUITEM "&Tbla tulajdonsgai", IDM_TABLEPROPERTIES + MENUITEM "&Cella tulajdonságai", IDM_CELLPROPERTIES + MENUITEM "&Tábla tulajdonságai", IDM_TABLEPROPERTIES } POPUP "1DSite Select" { - MENUITEM "&Kivgs", IDM_CUT - MENUITEM "&Msols", IDM_COPY - MENUITEM "Beilleszts", IDM_PASTE - MENUITEM "Mindet k&ijelli", IDM_SELECTALL - MENUITEM "&Nyomtats", IDM_PRINT + MENUITEM "&Kivágás", IDM_CUT + MENUITEM "&Másolás", IDM_COPY + MENUITEM "Beillesztés", IDM_PASTE + MENUITEM "Mindet k&ijelöli", IDM_SELECTALL + MENUITEM "&Nyomtatás", IDM_PRINT MENUITEM SEPARATOR } POPUP "Anchor" { - MENUITEM "&Megnyits", IDM_FOLLOWLINKC - MENUITEM "Megnyits &j ablakban", IDM_FOLLOWLINKN - MENUITEM "Cl m&entse...", IDM_SAVETARGET - MENUITEM "C&l nyomtatsa", IDM_PRINTTARGET + MENUITEM "&Megnyitás", IDM_FOLLOWLINKC + MENUITEM "Megnyitás &új ablakban", IDM_FOLLOWLINKN + MENUITEM "Cél m&entése...", IDM_SAVETARGET + MENUITEM "C&él nyomtatása", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "Kivgs", IDM_CUT - MENUITEM "M&sols", IDM_COPY - MENUITEM "Parancs&ikon msolsa", IDM_COPYSHORTCUT - MENUITEM "&Beilleszts", IDM_PASTE + MENUITEM "Kivágás", IDM_CUT + MENUITEM "Má&solás", IDM_COPY + MENUITEM "Parancs&ikon másolása", IDM_COPYSHORTCUT + MENUITEM "&Beillesztés", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "Hozzads a ke&dvencekhez...", IDM_ADDFAVORITES + MENUITEM "Hozzáadás a ke&dvencekhez...", IDM_ADDFAVORITES MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Tula&jdonsgok", IDM_PROPERTIES + MENUITEM "Tula&jdonságok", IDM_PROPERTIES } POPUP "Context Unknown" @@ -138,101 +153,101 @@ IDR_BROWSE_CONTEXT_MENU MENU POPUP "DYNSRC Image" { - MENUITEM "&Link megnyitsa", IDM_FOLLOWLINKC - MENUITEM "Li&nk megnyitsa j ablakban", IDM_FOLLOWLINKN - MENUITEM "Cl ment&se...", IDM_SAVETARGET - MENUITEM "&Cl nyomtatsa", IDM_PRINTTARGET + MENUITEM "&Link megnyitása", IDM_FOLLOWLINKC + MENUITEM "Li&nk megnyitása új ablakban", IDM_FOLLOWLINKN + MENUITEM "Cél ment&ése...", IDM_SAVETARGET + MENUITEM "&Cél nyomtatása", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "Kp megjelen&tse", IDM_SHOWPICTURE - MENUITEM "&Video mentse...", IDM_SAVEPICTURE - MENUITEM "Belltts h&ttrknt", IDM_SETWALLPAPER - MENUITEM "Belltts &asztalelemknt...", IDM_SETDESKTOPITEM + MENUITEM "Kép megjelen&ítése", IDM_SHOWPICTURE + MENUITEM "&Video mentése...", IDM_SAVEPICTURE + MENUITEM "Beállíttás há&ttérként", IDM_SETWALLPAPER + MENUITEM "Beállíttás &asztalelemként...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM "K&ivgs", IDM_CUT - MENUITEM "&Msols", IDM_COPY - MENUITEM "Parancs&ikon msolsa", IDM_COPYSHORTCUT - MENUITEM "Bei&lleszts", IDM_PASTE + MENUITEM "K&ivágás", IDM_CUT + MENUITEM "&Másolás", IDM_COPY + MENUITEM "Parancs&ikon másolása", IDM_COPYSHORTCUT + MENUITEM "Bei&llesztés", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "Hozza&ds a kedvencekhez...", IDM_ADDFAVORITES + MENUITEM "Hozzáa&dás a kedvencekhez...", IDM_ADDFAVORITES MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Lejtszs", IDM_DYNSRCPLAY - MENUITEM "Lellts", IDM_DYNSRCSTOP - MENUITEM "Tula&jdonsgok", IDM_PROPERTIES + MENUITEM "Lejátszás", IDM_DYNSRCPLAY + MENUITEM "Leállítás", IDM_DYNSRCSTOP + MENUITEM "Tula&jdonságok", IDM_PROPERTIES } POPUP "ART Image" { - MENUITEM "&Link megnyitsa", IDM_FOLLOWLINKC - MENUITEM "Li&nk megnyitsa j ablakban", IDM_FOLLOWLINKN - MENUITEM "Cl ment&se...", IDM_SAVETARGET - MENUITEM "&Cl nyomtatsa", IDM_PRINTTARGET + MENUITEM "&Link megnyitása", IDM_FOLLOWLINKC + MENUITEM "Li&nk megnyitása új ablakban", IDM_FOLLOWLINKN + MENUITEM "Cél ment&ése...", IDM_SAVETARGET + MENUITEM "&Cél nyomtatása", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "Kp megjelen&tse", IDM_SHOWPICTURE - MENUITEM "&Video mentse...", IDM_SAVEPICTURE - MENUITEM "Belltts h&ttrknt", IDM_SETWALLPAPER - MENUITEM "Belltts &asztalelemknt...", IDM_SETDESKTOPITEM + MENUITEM "Kép megjelen&ítése", IDM_SHOWPICTURE + MENUITEM "&Video mentése...", IDM_SAVEPICTURE + MENUITEM "Beállíttás há&ttérként", IDM_SETWALLPAPER + MENUITEM "Beállíttás &asztalelemként...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM "K&ivgs", IDM_CUT - MENUITEM "&Msols", IDM_COPY - MENUITEM "Parancs&ikon msolsa", IDM_COPYSHORTCUT - MENUITEM "Bei&lleszts", IDM_PASTE + MENUITEM "K&ivágás", IDM_CUT + MENUITEM "&Másolás", IDM_COPY + MENUITEM "Parancs&ikon másolása", IDM_COPYSHORTCUT + MENUITEM "Bei&llesztés", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "Hozza&ds a kedvencekhez...", IDM_ADDFAVORITES + MENUITEM "Hozzáa&dás a kedvencekhez...", IDM_ADDFAVORITES MENUITEM SEPARATOR - MENUITEM "Lejtszs", IDM_IMGARTPLAY - MENUITEM "Lellts", IDM_IMGARTSTOP - MENUITEM "Visszatekers", IDM_IMGARTREWIND + MENUITEM "Lejátszás", IDM_IMGARTPLAY + MENUITEM "Leállítás", IDM_IMGARTSTOP + MENUITEM "Visszatekerés", IDM_IMGARTREWIND MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Tula&jdonsgok", IDM_PROPERTIES + MENUITEM "Tula&jdonságok", IDM_PROPERTIES } POPUP "Debug" { MENUITEM "Trace Tag-ek", IDM_TRACETAGS - MENUITEM "Erforrs hibk", IDM_RESOURCEFAILURES - MENUITEM "Nyomkvetsi info dumplsa", IDM_DUMPTRACKINGINFO - MENUITEM "Hibakeress megszaktsa", IDM_DEBUGBREAK - MENUITEM "Hibakeressi nzet", IDM_DEBUGVIEW - MENUITEM "Fa dumpolsa", IDM_DUMPTREE - MENUITEM "Sorok dumpolsa", IDM_DUMPLINES - MENUITEM "DisplayTree dumpolsa", IDM_DUMPDISPLAYTREE - MENUITEM "FormatCaches dumpolsa", IDM_DUMPFORMATCACHES - MENUITEM "LayoutRects dumpolsa", IDM_DUMPLAYOUTRECTS - MENUITEM "Memriafigyel", IDM_MEMORYMONITOR - MENUITEM "Teljestmnymr", IDM_PERFORMANCEMETERS - MENUITEM "HTML mentse", IDM_SAVEHTML + MENUITEM "Erőforrás hibák", IDM_RESOURCEFAILURES + MENUITEM "Nyomkövetési info dumplása", IDM_DUMPTRACKINGINFO + MENUITEM "Hibakeresés megszakítása", IDM_DEBUGBREAK + MENUITEM "Hibakeresési nézet", IDM_DEBUGVIEW + MENUITEM "Fa dumpolása", IDM_DUMPTREE + MENUITEM "Sorok dumpolása", IDM_DUMPLINES + MENUITEM "DisplayTree dumpolása", IDM_DUMPDISPLAYTREE + MENUITEM "FormatCaches dumpolása", IDM_DUMPFORMATCACHES + MENUITEM "LayoutRects dumpolása", IDM_DUMPLAYOUTRECTS + MENUITEM "Memóriafigyelő", IDM_MEMORYMONITOR + MENUITEM "Teljesítménymérő", IDM_PERFORMANCEMETERS + MENUITEM "HTML mentése", IDM_SAVEHTML MENUITEM SEPARATOR - MENUITEM "&Nzet tallzsa", IDM_BROWSEMODE - MENUITEM "N&zet szerkesztse", IDM_EDITMODE + MENUITEM "&Nézet tallózása", IDM_BROWSEMODE + MENUITEM "N&ézet szerkesztése", IDM_EDITMODE } POPUP "Vertical Scrollbar" { - MENUITEM "Grgets itt", IDM_SCROLL_HERE + MENUITEM "Görgetés itt", IDM_SCROLL_HERE MENUITEM SEPARATOR - MENUITEM "Fell", IDM_SCROLL_TOP + MENUITEM "Felül", IDM_SCROLL_TOP MENUITEM "Alul", IDM_SCROLL_BOTTOM MENUITEM SEPARATOR MENUITEM "Lap fel", IDM_SCROLL_PAGEUP MENUITEM "Lap le", IDM_SCROLL_PAGEDOWN MENUITEM SEPARATOR - MENUITEM "Grgets fel", IDM_SCROLL_UP - MENUITEM "Grgets le", IDM_SCROLL_DOWN + MENUITEM "Görgetés fel", IDM_SCROLL_UP + MENUITEM "Görgetés le", IDM_SCROLL_DOWN } POPUP "Horizontal Scrollbar" { - MENUITEM "Grgets itt", IDM_SCROLL_HERE + MENUITEM "Görgetés itt", IDM_SCROLL_HERE MENUITEM SEPARATOR - MENUITEM "Bal szle", IDM_SCROLL_LEFTEDGE - MENUITEM "Jobb szle", IDM_SCROLL_RIGHTEDGE + MENUITEM "Bal széle", IDM_SCROLL_LEFTEDGE + MENUITEM "Jobb széle", IDM_SCROLL_RIGHTEDGE MENUITEM SEPARATOR MENUITEM "Lap balra", IDM_SCROLL_PAGELEFT MENUITEM "Lap jobbra", IDM_SCROLL_PAGERIGHT MENUITEM SEPARATOR - MENUITEM "Grgets balra", IDM_SCROLL_LEFT - MENUITEM "Grgets jobbra", IDM_SCROLL_RIGHT + MENUITEM "Görgetés balra", IDM_SCROLL_LEFT + MENUITEM "Görgetés jobbra", IDM_SCROLL_RIGHT } } diff --git a/reactos/dll/win32/shdoclc/It.rc b/reactos/dll/win32/shdoclc/It.rc new file mode 100644 index 00000000000..08a3b47edfb --- /dev/null +++ b/reactos/dll/win32/shdoclc/It.rc @@ -0,0 +1,252 @@ +/* + * Copyright 2005-2006 Jacek Caban + * Copyright 2010 Luca Bennati + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "shdoclc.h" + +/* UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +STRINGTABLE DISCARDABLE +{ + IDS_MESSAGE_BOX_TITLE, "Wine Internet Explorer" +} + +STRINGTABLE DISCARDABLE +{ + IDS_PRINT_HEADER_TEMPLATE "&w&bPage &p" /* FIXME: should be "&w&bPage &p of &P" */ + IDS_PRINT_FOOTER_TEMPLATE "&u&b&d" +} + +IDR_BROWSE_CONTEXT_MENU MENU +{ + POPUP "Predefinito" + { + MENUITEM "&Indietro", IDM_GOBACKWARD + MENUITEM "&Avanti", IDM_GOFORWARD + MENUITEM SEPARATOR + MENUITEM "&Salva sfondo come...", IDM_SAVEBACKGROUND + MENUITEM "Imposta come s&fondo", IDM_SETWALLPAPER + MENUITEM "&Copia sfondo", IDM_COPYBACKGROUND + MENUITEM "Aggiungi come &oggetto del Desktop", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "Seleziona &tutto", IDM_SELECTALL + MENUITEM "I&ncolla", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Crea co&llegamento", IDM_CREATESHORTCUT + MENUITEM "Aggiungi ai &Preferiti", IDM_ADDFAVORITES + MENUITEM "&Mostra il codice", IDM_VIEWSOURCE + MENUITEM SEPARATOR + MENUITEM "&Encoding", IDM_LANGUAGE + MENUITEM SEPARATOR + MENUITEM "S&tampa", IDM_PRINT + MENUITEM "A&ggiorna", _IDM_REFRESH + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "P&roprietà", IDM_PROPERTIES + } + + POPUP "Immagine" + { + MENUITEM "&Apri collegamento", IDM_FOLLOWLINKC + MENUITEM "Apri collegamento in una Nuova &Finestra", IDM_FOLLOWLINKN + MENUITEM "Salva o&ggetto come...", IDM_SAVETARGET + MENUITEM "&Stampa oggetto", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Mostra immagine", IDM_SHOWPICTURE + MENUITEM "Salva immagi&ne come...", IDM_SAVEPICTURE + MENUITEM "Invia immagine tramite &e-mail ...", IDM_MP_EMAILPICTURE + MENUITEM "S&tampa immagine...", IDM_MP_PRINTPICTURE + MENUITEM "&Vai a Immagini", IDM_MP_MYPICS + MENUITEM "Im&posta come sfondo", IDM_SETWALLPAPER + MENUITEM "Aggiungi come &oggetto del Desktop...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "Ta&glia", IDM_CUT + MENUITEM "&Copia", IDM_COPY + MENUITEM "Copia co&llegamento", IDM_COPYSHORTCUT + MENUITEM "&Incolla", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Aggiungi ai &Preferiti...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "P&roprietà", IDM_PROPERTIES + } + + POPUP "Controllo" + { + MENUITEM "&Annulla", IDM_UNDO + MENUITEM SEPARATOR + MENUITEM "&Taglia", IDM_CUT + MENUITEM "&Copia", IDM_COPY + MENUITEM "&Incolla", IDM_PASTE + MENUITEM "&Elimina", IDM_DELETE + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Se&leziona tutto", IDM_SELECTALL + } + + POPUP "Tabella" + { + POPUP "&Seleziona" + { + MENUITEM "&Cella", IDM_CELLSELECT + MENUITEM "&Riga", IDM_ROWSELECT + MENUITEM "C&olonna", IDM_COLUMNSELECT + MENUITEM "&Tabella", IDM_TABLESELECT + } + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Proprietà &cella", IDM_CELLPROPERTIES + MENUITEM "Proprietà &tabella", IDM_TABLEPROPERTIES + } + + POPUP "1DSite Seleziona" + { + MENUITEM "&Taglia", IDM_CUT + MENUITEM "&Copia", IDM_COPY + MENUITEM "&Incolla", IDM_PASTE + MENUITEM "S&eleziona tutto", IDM_SELECTALL + MENUITEM "&Stampa", IDM_PRINT + MENUITEM SEPARATOR + } + + POPUP "Anchor" + { + MENUITEM "&Apri", IDM_FOLLOWLINKC + MENUITEM "Apri in una &Nuova Finestra", IDM_FOLLOWLINKN + MENUITEM "Salva oggetto &come...", IDM_SAVETARGET + MENUITEM "&Stampa oggetto", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "Taglia", IDM_CUT + MENUITEM "&Copia", IDM_COPY + MENUITEM "Copia co&llegamento", IDM_COPYSHORTCUT + MENUITEM "&Incolla", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Aggiungi ai &Preferiti...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "P&roprietà", IDM_PROPERTIES + } + + POPUP "Contesto Sconosciuto" + { + MENUITEM SEPARATOR + } + + POPUP "Immagine DYNSRC" + { + MENUITEM "&Apri collegamento", IDM_FOLLOWLINKC + MENUITEM "Apri collegamento in una &Nuova Finestra", IDM_FOLLOWLINKN + MENUITEM "Salva oggetto &come...", IDM_SAVETARGET + MENUITEM "&Stampa oggetto", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Mostra immagine", IDM_SHOWPICTURE + MENUITEM "Salva &Video come...", IDM_SAVEPICTURE + MENUITEM "Imposta come s&fondo", IDM_SETWALLPAPER + MENUITEM "Aggiungi come elemento del &Desktop...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "&Taglia", IDM_CUT + MENUITEM "C&opia", IDM_COPY + MENUITEM "Copia co&llegamento", IDM_COPYSHORTCUT + MENUITEM "&Incolla", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Aggiungi ai &Preferiti...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Riproduci", IDM_DYNSRCPLAY + MENUITEM "Ferma", IDM_DYNSRCSTOP + MENUITEM "P&roprietà", IDM_PROPERTIES + } + + POPUP "Immagine ART" + { + MENUITEM "&Apri collegamento", IDM_FOLLOWLINKC + MENUITEM "Apri collegamento in una &Nuova Finestra", IDM_FOLLOWLINKN + MENUITEM "Salva oggetto &come...", IDM_SAVETARGET + MENUITEM "&Stampa oggetto", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Mostra immagine", IDM_SHOWPICTURE + MENUITEM "Sal&va immagine come...", IDM_SAVEPICTURE + MENUITEM "Imposta come s&fondo", IDM_SETWALLPAPER + MENUITEM "Aggiungi come elemento del &Desktop...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "&Taglia", IDM_CUT + MENUITEM "C&opia", IDM_COPY + MENUITEM "Copia co&llegamento", IDM_COPYSHORTCUT + MENUITEM "&Incolla", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Aggiungi ai &Preferiti...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM "Riproduci", IDM_IMGARTPLAY + MENUITEM "Ferma", IDM_IMGARTSTOP + MENUITEM "Indietro", IDM_IMGARTREWIND + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "P&roprietà", IDM_PROPERTIES + } + + POPUP "Debug" + { + MENUITEM "Etichette di trace", IDM_TRACETAGS + MENUITEM "Fallimenti della risorsa", IDM_RESOURCEFAILURES + MENUITEM "Dump Tracking Info", IDM_DUMPTRACKINGINFO + MENUITEM "Break del Debug", IDM_DEBUGBREAK + MENUITEM "Vista del Debug", IDM_DEBUGVIEW + MENUITEM "Dump Tree", IDM_DUMPTREE + MENUITEM "Dump Lines", IDM_DUMPLINES + MENUITEM "Dump DisplayTree", IDM_DUMPDISPLAYTREE + MENUITEM "Dump FormatCaches", IDM_DUMPFORMATCACHES + MENUITEM "Dump LayoutRects", IDM_DUMPLAYOUTRECTS + MENUITEM "Monitor della Memoria", IDM_MEMORYMONITOR + MENUITEM "Misuratori della prestazione", IDM_PERFORMANCEMETERS + MENUITEM "Salva HTML", IDM_SAVEHTML + MENUITEM SEPARATOR + MENUITEM "&Vista Navigazione", IDM_BROWSEMODE + MENUITEM "&Vista Modifica", IDM_EDITMODE + } + + POPUP "Barra di scorrimento verticale" + { + MENUITEM "Scorri qua", IDM_SCROLL_HERE + MENUITEM SEPARATOR + MENUITEM "Inizio", IDM_SCROLL_TOP + MENUITEM "Fine", IDM_SCROLL_BOTTOM + MENUITEM SEPARATOR + MENUITEM "Pagina precedente", IDM_SCROLL_PAGEUP + MENUITEM "Pagina successiva", IDM_SCROLL_PAGEDOWN + MENUITEM SEPARATOR + MENUITEM "Scorri su", IDM_SCROLL_UP + MENUITEM "Scorri giù", IDM_SCROLL_DOWN + } + + POPUP "Barra di scorrimento orizzontale" + { + MENUITEM "Scorri qua", IDM_SCROLL_HERE + MENUITEM SEPARATOR + MENUITEM "Margine sinistro", IDM_SCROLL_LEFTEDGE + MENUITEM "Margine destro", IDM_SCROLL_RIGHTEDGE + MENUITEM SEPARATOR + MENUITEM "Pagina a sinistra", IDM_SCROLL_PAGELEFT + MENUITEM "Pagina a destra", IDM_SCROLL_PAGERIGHT + MENUITEM SEPARATOR + MENUITEM "Scorri a sinistra", IDM_SCROLL_LEFT + MENUITEM "Scorri a destra", IDM_SCROLL_RIGHT + } +} diff --git a/reactos/dll/win32/shdoclc/Ja.rc b/reactos/dll/win32/shdoclc/Ja.rc new file mode 100644 index 00000000000..f4239779e32 --- /dev/null +++ b/reactos/dll/win32/shdoclc/Ja.rc @@ -0,0 +1,252 @@ +/* + * Copyright 2005-2006 Jacek Caban + * Copyright 2010 Akihiro Sagawa + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "shdoclc.h" + +/* UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_JAPANESE, SUBLANG_DEFAULT + +STRINGTABLE DISCARDABLE +{ + IDS_MESSAGE_BOX_TITLE, "Wine インターネット エクスプローラ" +} + +STRINGTABLE DISCARDABLE +{ + IDS_PRINT_HEADER_TEMPLATE "&w&b&pページ" /* FIXME: should be "&w&bPage &p of &P" */ + IDS_PRINT_FOOTER_TEMPLATE "&u&b&d" +} + +IDR_BROWSE_CONTEXT_MENU MENU +{ + POPUP "Default" + { + MENUITEM "戻る(&B)", IDM_GOBACKWARD + MENUITEM "進む(&O)", IDM_GOFORWARD + MENUITEM SEPARATOR + MENUITEM "背景を保存(&S)...", IDM_SAVEBACKGROUND + MENUITEM "壁紙に設定(&G)", IDM_SETWALLPAPER + MENUITEM "背景をコピー(&C)", IDM_COPYBACKGROUND + MENUITEM "デスクトップ項目として設定(&D)", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "すべて選択(&A)", IDM_SELECTALL + MENUITEM "貼り付け(&P)", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "ショートカットを作成(&T)", IDM_CREATESHORTCUT + MENUITEM "お気に入りに追加(&F)", IDM_ADDFAVORITES + MENUITEM "ソースの表示(&V)", IDM_VIEWSOURCE + MENUITEM SEPARATOR + MENUITEM "エンコード(&E)", IDM_LANGUAGE + MENUITEM SEPARATOR + MENUITEM "印刷(&I)", IDM_PRINT + MENUITEM "更新(&R)", _IDM_REFRESH + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "プロパティ(&P)", IDM_PROPERTIES + } + + POPUP "Image" + { + MENUITEM "リンクを開く(&O)", IDM_FOLLOWLINKC + MENUITEM "新しいウィンドウでリンクを開く(&N)", IDM_FOLLOWLINKN + MENUITEM "リンク先を保存(&A)...", IDM_SAVETARGET + MENUITEM "リンク先を印刷(&P)", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "画像を表示(&H)", IDM_SHOWPICTURE + MENUITEM "画像を保存(&S)...", IDM_SAVEPICTURE + MENUITEM "画像をメール(&E)...", IDM_MP_EMAILPICTURE + MENUITEM "画像を印刷(&I)...", IDM_MP_PRINTPICTURE + MENUITEM "マイ ピクチャに移動(&G)", IDM_MP_MYPICS + MENUITEM "壁紙に設定(&G)", IDM_SETWALLPAPER + MENUITEM "デスクトップ項目として設定(&D)...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "切り取り(&T)", IDM_CUT + MENUITEM "コピー(&C)", IDM_COPY + MENUITEM "ショートカットのコピー(&T)", IDM_COPYSHORTCUT + MENUITEM "貼り付け(&P)", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "お気に入りに追加(&F)...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "プロパティ(&R)", IDM_PROPERTIES + } + + POPUP "Control" + { + MENUITEM "元に戻す(&U)", IDM_UNDO + MENUITEM SEPARATOR + MENUITEM "切り取り(&T)", IDM_CUT + MENUITEM "コピー(&C)", IDM_COPY + MENUITEM "貼り付け(&P)", IDM_PASTE + MENUITEM "削除(&D)", IDM_DELETE + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "すべて選択(&A)", IDM_SELECTALL + } + + POPUP "Table" + { + POPUP "選択(&S)" + { + MENUITEM "セル(&C)", IDM_CELLSELECT + MENUITEM "行(&R)", IDM_ROWSELECT + MENUITEM "列(&C)", IDM_COLUMNSELECT + MENUITEM "表(&T)", IDM_TABLESELECT + } + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "セルのプロパティ(&C)", IDM_CELLPROPERTIES + MENUITEM "表のプロパティ(&T)", IDM_TABLEPROPERTIES + } + + POPUP "1DSite Select" + { + MENUITEM "切り取り(&T)", IDM_CUT + MENUITEM "コピー(&C)", IDM_COPY + MENUITEM "貼り付け", IDM_PASTE + MENUITEM "すべて選択(&A)", IDM_SELECTALL + MENUITEM "印刷(&P)", IDM_PRINT + MENUITEM SEPARATOR + } + + POPUP "Anchor" + { + MENUITEM "開く(&O)", IDM_FOLLOWLINKC + MENUITEM "新しいウィンドウで開く(&N)", IDM_FOLLOWLINKN + MENUITEM "リンク先を保存(&A)...", IDM_SAVETARGET + MENUITEM "リンク先を印刷(&P)", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "切り取り", IDM_CUT + MENUITEM "コピー(&C)", IDM_COPY + MENUITEM "ショートカットのコピー(&T)", IDM_COPYSHORTCUT + MENUITEM "貼り付け(&P)", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "お気に入りに追加(&F)...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "プロパティ(&R)", IDM_PROPERTIES + } + + POPUP "Context Unknown" + { + MENUITEM SEPARATOR + } + + POPUP "DYNSRC Image" + { + MENUITEM "リンクを開く(&O)", IDM_FOLLOWLINKC + MENUITEM "新しいウィンドウでリンクを開く(&N)", IDM_FOLLOWLINKN + MENUITEM "リンク先を保存(&A)...", IDM_SAVETARGET + MENUITEM "リンク先を印刷(&P)", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "画像の表示(&H)", IDM_SHOWPICTURE + MENUITEM "ビデオの保存(&S)...", IDM_SAVEPICTURE + MENUITEM "背景に設定(&G)", IDM_SETWALLPAPER + MENUITEM "デスクトップ項目に設定(&D)...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "カット(&T)", IDM_CUT + MENUITEM "コピー(&C)", IDM_COPY + MENUITEM "ショートカットのコピー(&T)", IDM_COPYSHORTCUT + MENUITEM "貼り付け(&P)", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "お気に入りに追加(&F)...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "再生", IDM_DYNSRCPLAY + MENUITEM "停止", IDM_DYNSRCSTOP + MENUITEM "プロパティ(&R)", IDM_PROPERTIES + } + + POPUP "ART Image" + { + MENUITEM "リンクを開く(&O)", IDM_FOLLOWLINKC + MENUITEM "新しいウィンドウでリンクを開く(&N)", IDM_FOLLOWLINKN + MENUITEM "リンク先を保存(&A)...", IDM_SAVETARGET + MENUITEM "リンク先を印刷(&P)", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "画像の表示(&H)", IDM_SHOWPICTURE + MENUITEM "画像を保存(&S)...", IDM_SAVEPICTURE + MENUITEM "壁紙に設定(&G)", IDM_SETWALLPAPER + MENUITEM "デスクトップ項目として設定(&D)...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "切り取り(&T)", IDM_CUT + MENUITEM "コピー(&C)", IDM_COPY + MENUITEM "ショートカットのコピー(&T)", IDM_COPYSHORTCUT + MENUITEM "貼り付け(&P)", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "お気に入りに追加(&F)...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM "再生", IDM_IMGARTPLAY + MENUITEM "停止", IDM_IMGARTSTOP + MENUITEM "巻き戻し", IDM_IMGARTREWIND + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "プロパティ(&R)", IDM_PROPERTIES + } + + POPUP "Debug" + { + MENUITEM "タグのトレース", IDM_TRACETAGS + MENUITEM "リソースの失敗", IDM_RESOURCEFAILURES + MENUITEM "追跡情報のダンプ", IDM_DUMPTRACKINGINFO + MENUITEM "デバッグ ブレーク", IDM_DEBUGBREAK + MENUITEM "デバッグ ビュー", IDM_DEBUGVIEW + MENUITEM "ツリーのダンプ", IDM_DUMPTREE + MENUITEM "線のダンプ", IDM_DUMPLINES + MENUITEM "表示ツリーのダンプ", IDM_DUMPDISPLAYTREE + MENUITEM "フォーマット キャッシュのダンプ", IDM_DUMPFORMATCACHES + MENUITEM "配置情報のダンプ", IDM_DUMPLAYOUTRECTS + MENUITEM "メモリ モニタ", IDM_MEMORYMONITOR + MENUITEM "パフォーマンス メータ", IDM_PERFORMANCEMETERS + MENUITEM "HTMLの保存", IDM_SAVEHTML + MENUITEM SEPARATOR + MENUITEM "表示ビュー(&B)", IDM_BROWSEMODE + MENUITEM "編集ビュー(&E)", IDM_EDITMODE + } + + POPUP "Vertical Scrollbar" + { + MENUITEM "ここにスクロール", IDM_SCROLL_HERE + MENUITEM SEPARATOR + MENUITEM "先頭", IDM_SCROLL_TOP + MENUITEM "末尾", IDM_SCROLL_BOTTOM + MENUITEM SEPARATOR + MENUITEM "1画面分上へ", IDM_SCROLL_PAGEUP + MENUITEM "1画面分下へ", IDM_SCROLL_PAGEDOWN + MENUITEM SEPARATOR + MENUITEM "上にスクロール", IDM_SCROLL_UP + MENUITEM "下にスクロール", IDM_SCROLL_DOWN + } + + POPUP "Horizontal Scrollbar" + { + MENUITEM "ここにスクロール", IDM_SCROLL_HERE + MENUITEM SEPARATOR + MENUITEM "左端", IDM_SCROLL_LEFTEDGE + MENUITEM "右端", IDM_SCROLL_RIGHTEDGE + MENUITEM SEPARATOR + MENUITEM "1ページ左へ", IDM_SCROLL_PAGELEFT + MENUITEM "1ページ右へ", IDM_SCROLL_PAGERIGHT + MENUITEM SEPARATOR + MENUITEM "左へスクロール", IDM_SCROLL_LEFT + MENUITEM "右へスクロール", IDM_SCROLL_RIGHT + } +} diff --git a/reactos/dll/win32/shdoclc/Ko.rc b/reactos/dll/win32/shdoclc/Ko.rc index c30c21dd5b4..f637d729765 100644 --- a/reactos/dll/win32/shdoclc/Ko.rc +++ b/reactos/dll/win32/shdoclc/Ko.rc @@ -1,6 +1,6 @@ /* * Copyright 2005 Jacek Caban - * Copyright 2005 YunSong Hwang + * Copyright 2005,2010 YunSong Hwang * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -19,231 +19,234 @@ #include "shdoclc.h" +/* UTF8 */ +#pragma code_page(65001) + LANGUAGE LANG_KOREAN, SUBLANG_DEFAULT STRINGTABLE DISCARDABLE { - IDS_MESSAGE_BOX_TITLE, "Wine ͳ ͽξr" + IDS_MESSAGE_BOX_TITLE, "Wine 인터넷 익스폴로어r" } STRINGTABLE DISCARDABLE { - IDS_PRINT_HEADER_TEMPLATE "&w&b &p" /* FIXME: should be "&w&bPage &p of &P" */ + IDS_PRINT_HEADER_TEMPLATE "&w&b페이지 &p" /* FIXME: should be "&w&bPage &p of &P" */ IDS_PRINT_FOOTER_TEMPLATE "&u&b&d" } IDR_BROWSE_CONTEXT_MENU MENU { - POPUP "⺻" + POPUP "기본" { - MENUITEM "ڷ(&B)", IDM_GOBACKWARD - MENUITEM "(&O)", IDM_GOFORWARD + MENUITEM "뒤로(&B)", IDM_GOBACKWARD + MENUITEM "앞으로(&O)", IDM_GOFORWARD MENUITEM SEPARATOR - MENUITEM " (&S)...", IDM_SAVEBACKGROUND - MENUITEM " (&G)", IDM_SETWALLPAPER - MENUITEM " (&C)", IDM_COPYBACKGROUND - MENUITEM "ũž (&D)", IDM_SETDESKTOPITEM + MENUITEM "배경으로 저장(&S)...", IDM_SAVEBACKGROUND + MENUITEM "배경으로 설정(&G)", IDM_SETWALLPAPER + MENUITEM "배경으로 복사(&C)", IDM_COPYBACKGROUND + MENUITEM "데스크탑 아이템으로 설정(&D)", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM " (&A)", IDM_SELECTALL - MENUITEM "ٿֱ(&P)", IDM_PASTE + MENUITEM "모두 선택(&A)", IDM_SELECTALL + MENUITEM "붙여넣기(&P)", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "ٷΰ (&T)", IDM_CREATESHORTCUT - MENUITEM "ã⿡ ϱ(&F)", IDM_ADDFAVORITES - MENUITEM "ҽ (&V)", IDM_VIEWSOURCE + MENUITEM "바로가기 만들기(&T)", IDM_CREATESHORTCUT + MENUITEM "즐겨찾기에 더하기(&F)", IDM_ADDFAVORITES + MENUITEM "소스 보기(&V)", IDM_VIEWSOURCE MENUITEM SEPARATOR - MENUITEM "ڵ(&E)", IDM_LANGUAGE + MENUITEM "인코딩(&E)", IDM_LANGUAGE MENUITEM SEPARATOR - MENUITEM "μ(&I)", IDM_PRINT - MENUITEM "ٽ б(&R)", _IDM_REFRESH + MENUITEM "인쇄(&I)", IDM_PRINT + MENUITEM "다시 읽기(&R)", _IDM_REFRESH MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "ɼ(&P)", IDM_PROPERTIES + MENUITEM "옵션(&P)", IDM_PROPERTIES } - POPUP "̹" + POPUP "이미지" { - MENUITEM "ũ (&O)", IDM_FOLLOWLINKC - MENUITEM " â ũ (&N)", IDM_FOLLOWLINKN - MENUITEM "ٸ ̸ (&A)...", IDM_SAVETARGET - MENUITEM "Ÿ (&P)", IDM_PRINTTARGET + MENUITEM "링크 열기(&O)", IDM_FOLLOWLINKC + MENUITEM "새 창에 링크 열기(&N)", IDM_FOLLOWLINKN + MENUITEM "다른 이름으로 저장(&A)...", IDM_SAVETARGET + MENUITEM "타겟 저장(&P)", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "׸ (&H)", IDM_SHOWPICTURE - MENUITEM "׸ ٸ ̸ (&S)...", IDM_SAVEPICTURE - MENUITEM "׸ ̸Ϸ(&E)...", IDM_MP_EMAILPICTURE - MENUITEM "׸ μ(&I)...", IDM_MP_PRINTPICTURE - MENUITEM " ׸ (&G)", IDM_MP_MYPICS - MENUITEM " (&G)", IDM_SETWALLPAPER - MENUITEM "ũž (&D)...", IDM_SETDESKTOPITEM + MENUITEM "그림 보기(&H)", IDM_SHOWPICTURE + MENUITEM "그림 다른 이름으로 저장(&S)...", IDM_SAVEPICTURE + MENUITEM "그림을 이메일로(&E)...", IDM_MP_EMAILPICTURE + MENUITEM "그림 인쇄(&I)...", IDM_MP_PRINTPICTURE + MENUITEM "내 그림으로 가기(&G)", IDM_MP_MYPICS + MENUITEM "배경으로 설정(&G)", IDM_SETWALLPAPER + MENUITEM "데스크탑 아이템으로 설정(&D)...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM "߶󳻱(&T)", IDM_CUT - MENUITEM "(&C)", IDM_COPY - MENUITEM "ٷ (&T)", IDM_COPYSHORTCUT - MENUITEM "ٿֱ(&P)", IDM_PASTE + MENUITEM "잘라내기(&T)", IDM_CUT + MENUITEM "복사(&C)", IDM_COPY + MENUITEM "바로 가기 복사(&T)", IDM_COPYSHORTCUT + MENUITEM "붙여넣기(&P)", IDM_PASTE MENUITEM SEPARATOR - MENUITEM " ã⿡ ߰(&F)...", IDM_ADDFAVORITES + MENUITEM "즐겨 찾기에 추가(&F)...", IDM_ADDFAVORITES MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Ӽ(&R)", IDM_PROPERTIES + MENUITEM "속성(&R)", IDM_PROPERTIES } - POPUP "" + POPUP "제어" { - MENUITEM "ǵ(&U)", IDM_UNDO + MENUITEM "되돌리기(&U)", IDM_UNDO MENUITEM SEPARATOR - MENUITEM "߶󳻱(&T)", IDM_CUT - MENUITEM "(&C)", IDM_COPY - MENUITEM "ٿֱ(&P)", IDM_PASTE - MENUITEM "(&D)", IDM_DELETE + MENUITEM "잘라내기(&T)", IDM_CUT + MENUITEM "복사(&C)", IDM_COPY + MENUITEM "붙여넣기(&P)", IDM_PASTE + MENUITEM "지우기(&D)", IDM_DELETE MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM " (&A)", IDM_SELECTALL + MENUITEM "모두 선택(&A)", IDM_SELECTALL } - POPUP "ǥ" + POPUP "표" { - POPUP "(&S)" + POPUP "선택(&S)" { - MENUITEM "ĭ(&C)", IDM_CELLSELECT - MENUITEM "(&R)", IDM_ROWSELECT - MENUITEM "(&C)", IDM_COLUMNSELECT - MENUITEM "ǥ(&T)", IDM_TABLESELECT + MENUITEM "칸(&C)", IDM_CELLSELECT + MENUITEM "가로줄(&R)", IDM_ROWSELECT + MENUITEM "세로줄(&C)", IDM_COLUMNSELECT + MENUITEM "표(&T)", IDM_TABLESELECT } MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM " Ӽ(&C)", IDM_CELLPROPERTIES - MENUITEM "ǥ Ӽ(&T)", IDM_TABLEPROPERTIES + MENUITEM "가로줄 속성(&C)", IDM_CELLPROPERTIES + MENUITEM "표 속성(&T)", IDM_TABLEPROPERTIES } - POPUP "1DSite " + POPUP "1DSite 선택" { - MENUITEM "߶󳻱(&T)", IDM_CUT - MENUITEM "(&C)", IDM_COPY - MENUITEM "ٿֱ", IDM_PASTE - MENUITEM " (&A)", IDM_SELECTALL - MENUITEM "μ(&P)", IDM_PRINT + MENUITEM "잘라내기(&T)", IDM_CUT + MENUITEM "복사(&C)", IDM_COPY + MENUITEM "붙여넣기", IDM_PASTE + MENUITEM "모두 선택(&A)", IDM_SELECTALL + MENUITEM "인쇄(&P)", IDM_PRINT MENUITEM SEPARATOR } - POPUP "" + POPUP "닻" { - MENUITEM "(&O)", IDM_FOLLOWLINKC - MENUITEM " â (&N)", IDM_FOLLOWLINKN - MENUITEM "ٸ ̸ (&A)...", IDM_SAVETARGET - MENUITEM " μ(&P)", IDM_PRINTTARGET + MENUITEM "열기(&O)", IDM_FOLLOWLINKC + MENUITEM "새 창에 열기(&N)", IDM_FOLLOWLINKN + MENUITEM "다른 이름으로 저장(&A)...", IDM_SAVETARGET + MENUITEM "대상 인쇄(&P)", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "߶󳻱", IDM_CUT - MENUITEM "(&C)", IDM_COPY - MENUITEM "ٷΰ (&T)", IDM_COPYSHORTCUT - MENUITEM "ٿֱ(&P)", IDM_PASTE + MENUITEM "잘라내기", IDM_CUT + MENUITEM "복사(&C)", IDM_COPY + MENUITEM "바로가기 복사(&T)", IDM_COPYSHORTCUT + MENUITEM "붙여넣기(&P)", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "ã⿡ ϱ(&F)...", IDM_ADDFAVORITES + MENUITEM "즐겨찾기에 더하기(&F)...", IDM_ADDFAVORITES MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Ӽ(&R)", IDM_PROPERTIES + MENUITEM "속성(&R)", IDM_PROPERTIES } - POPUP "˼ " + POPUP "알수 없는 내용" { MENUITEM SEPARATOR } - POPUP "DYNSRC ׸" + POPUP "DYNSRC 그림" { - MENUITEM "ũ (&O)", IDM_FOLLOWLINKC - MENUITEM " â ũ (&N)", IDM_FOLLOWLINKN - MENUITEM "ٸ ̸ (&A)...", IDM_SAVETARGET - MENUITEM " μ(&P)", IDM_PRINTTARGET + MENUITEM "링크 열기(&O)", IDM_FOLLOWLINKC + MENUITEM "새 창에 링크 열기(&N)", IDM_FOLLOWLINKN + MENUITEM "다른 이름으로 저장(&A)...", IDM_SAVETARGET + MENUITEM "대상 인쇄(&P)", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "׸ (&H)", IDM_SHOWPICTURE - MENUITEM " ٸ ̸ (&S)...", IDM_SAVEPICTURE - MENUITEM " (&g)", IDM_SETWALLPAPER - MENUITEM "ũž (&D)...", IDM_SETDESKTOPITEM + MENUITEM "그림 보기(&H)", IDM_SHOWPICTURE + MENUITEM "비디오 다른 이름으로 저장(&S)...", IDM_SAVEPICTURE + MENUITEM "배경으로 설정(&g)", IDM_SETWALLPAPER + MENUITEM "데스크탑 아이템으로 설정(&D)...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM "߶󳻱(&T)", IDM_CUT - MENUITEM "(&C)", IDM_COPY - MENUITEM "ٷ (&T)", IDM_COPYSHORTCUT - MENUITEM "ٿֱ(&P)", IDM_PASTE + MENUITEM "잘라내기(&T)", IDM_CUT + MENUITEM "복사(&C)", IDM_COPY + MENUITEM "바로 가기 복사(&T)", IDM_COPYSHORTCUT + MENUITEM "붙여넣기(&P)", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "ã⿡ ϱ(&F)...", IDM_ADDFAVORITES + MENUITEM "즐겨찾기에 더하기(&F)...", IDM_ADDFAVORITES MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "", IDM_DYNSRCPLAY - MENUITEM "", IDM_DYNSRCSTOP - MENUITEM "Ӽ(&R)", IDM_PROPERTIES + MENUITEM "재생", IDM_DYNSRCPLAY + MENUITEM "정지", IDM_DYNSRCSTOP + MENUITEM "속성(&R)", IDM_PROPERTIES } - POPUP "ART ׸" + POPUP "ART 그림" { - MENUITEM "ũ (&O)", IDM_FOLLOWLINKC - MENUITEM " â ũ (&N)", IDM_FOLLOWLINKN - MENUITEM "ٸ ̸ (&A)...", IDM_SAVETARGET - MENUITEM "Ÿ μ(&P)", IDM_PRINTTARGET + MENUITEM "링크 열기(&O)", IDM_FOLLOWLINKC + MENUITEM "새 창에 링크 열기(&N)", IDM_FOLLOWLINKN + MENUITEM "다른 이름으로 저장(&A)...", IDM_SAVETARGET + MENUITEM "타겟 인쇄(&P)", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "׸ (&H)", IDM_SHOWPICTURE - MENUITEM "׸ ٸ ̸ (&S)...", IDM_SAVEPICTURE - MENUITEM " (&g)", IDM_SETWALLPAPER - MENUITEM "ũž (&D)...", IDM_SETDESKTOPITEM + MENUITEM "그림 보기(&H)", IDM_SHOWPICTURE + MENUITEM "그림 다른 이름으로 저장(&S)...", IDM_SAVEPICTURE + MENUITEM "배경으로 설정(&g)", IDM_SETWALLPAPER + MENUITEM "데스크탑 아이템으로 설정(&D)...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM "߶󳻱(&T)", IDM_CUT - MENUITEM "(&C)", IDM_COPY - MENUITEM "ٷΰ (&T)", IDM_COPYSHORTCUT - MENUITEM "ٿ(&P)", IDM_PASTE + MENUITEM "잘라내기(&T)", IDM_CUT + MENUITEM "복사(&C)", IDM_COPY + MENUITEM "바로가기 복사(&T)", IDM_COPYSHORTCUT + MENUITEM "붙여놓기(&P)", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "ã⿡ ϱ(&F)...", IDM_ADDFAVORITES + MENUITEM "즐겨찾기에 더하기(&F)...", IDM_ADDFAVORITES MENUITEM SEPARATOR - MENUITEM "", IDM_IMGARTPLAY - MENUITEM "", IDM_IMGARTSTOP - MENUITEM "ٽ ", IDM_IMGARTREWIND + MENUITEM "재생", IDM_IMGARTPLAY + MENUITEM "정지", IDM_IMGARTSTOP + MENUITEM "다시 감기", IDM_IMGARTREWIND MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "Ӽ(&R)", IDM_PROPERTIES + MENUITEM "속성(&R)", IDM_PROPERTIES } - POPUP "" + POPUP "디버그" { - MENUITEM "± ", IDM_TRACETAGS - MENUITEM "ҽ ", IDM_RESOURCEFAILURES - MENUITEM " ", IDM_DUMPTRACKINGINFO - MENUITEM " 극ũ", IDM_DEBUGBREAK - MENUITEM " ", IDM_DEBUGVIEW - MENUITEM "Ʈ ", IDM_DUMPTREE - MENUITEM " ", IDM_DUMPLINES - MENUITEM "÷Ʈ ", IDM_DUMPDISPLAYTREE - MENUITEM "ij ", IDM_DUMPFORMATCACHES - MENUITEM "̾ƿƮ ", IDM_DUMPLAYOUTRECTS - MENUITEM "޸ ", IDM_MEMORYMONITOR - MENUITEM " ", IDM_PERFORMANCEMETERS - MENUITEM "HTML ", IDM_SAVEHTML + MENUITEM "태그 추적", IDM_TRACETAGS + MENUITEM "리소스 실패", IDM_RESOURCEFAILURES + MENUITEM "추적 정보 덤프", IDM_DUMPTRACKINGINFO + MENUITEM "디버그 브레이크", IDM_DEBUGBREAK + MENUITEM "디버그 보기", IDM_DEBUGVIEW + MENUITEM "트리 덤프", IDM_DUMPTREE + MENUITEM "라인 덤프", IDM_DUMPLINES + MENUITEM "디스플레이트리 덤프", IDM_DUMPDISPLAYTREE + MENUITEM "포맷캐쉬 덤프", IDM_DUMPFORMATCACHES + MENUITEM "레이아웃렉트 덤프", IDM_DUMPLAYOUTRECTS + MENUITEM "메모리 모니터", IDM_MEMORYMONITOR + MENUITEM "성능 측정", IDM_PERFORMANCEMETERS + MENUITEM "HTML 저장", IDM_SAVEHTML MENUITEM SEPARATOR - MENUITEM " (&B)", IDM_BROWSEMODE - MENUITEM " (&E)", IDM_EDITMODE + MENUITEM "보기 상태(&B)", IDM_BROWSEMODE + MENUITEM "편집 상태(&E)", IDM_EDITMODE } - POPUP " ũѹ" + POPUP "세로 스크롤바" { - MENUITEM "⼭ ũ", IDM_SCROLL_HERE + MENUITEM "여기서 스크롤", IDM_SCROLL_HERE MENUITEM SEPARATOR - MENUITEM "", IDM_SCROLL_TOP - MENUITEM "Ʒ", IDM_SCROLL_BOTTOM + MENUITEM "위", IDM_SCROLL_TOP + MENUITEM "아래", IDM_SCROLL_BOTTOM MENUITEM SEPARATOR - MENUITEM " ", IDM_SCROLL_PAGEUP - MENUITEM "Ʒ ", IDM_SCROLL_PAGEDOWN + MENUITEM "위 페이지", IDM_SCROLL_PAGEUP + MENUITEM "아래 페이지", IDM_SCROLL_PAGEDOWN MENUITEM SEPARATOR - MENUITEM " ũ", IDM_SCROLL_UP - MENUITEM "Ʒ ũ", IDM_SCROLL_DOWN + MENUITEM "위로 스크롤", IDM_SCROLL_UP + MENUITEM "아래로 스크롤", IDM_SCROLL_DOWN } - POPUP " ũѹ" + POPUP "가로 스크롤바" { - MENUITEM "⼭ ũ", IDM_SCROLL_HERE + MENUITEM "여기서 스크롤", IDM_SCROLL_HERE MENUITEM SEPARATOR - MENUITEM " ڸ", IDM_SCROLL_LEFTEDGE - MENUITEM " ڸ", IDM_SCROLL_RIGHTEDGE + MENUITEM "왼쪽 가장자리", IDM_SCROLL_LEFTEDGE + MENUITEM "오른쪽 가장자리", IDM_SCROLL_RIGHTEDGE MENUITEM SEPARATOR - MENUITEM " ", IDM_SCROLL_PAGELEFT - MENUITEM " ", IDM_SCROLL_PAGERIGHT + MENUITEM "페이지 왼쪽", IDM_SCROLL_PAGELEFT + MENUITEM "페이지 오른쪽", IDM_SCROLL_PAGERIGHT MENUITEM SEPARATOR - MENUITEM " ũ", IDM_SCROLL_LEFT - MENUITEM " ũ", IDM_SCROLL_RIGHT + MENUITEM "왼쪽으로 스크롤", IDM_SCROLL_LEFT + MENUITEM "오른쪽으로 스크롤", IDM_SCROLL_RIGHT } } diff --git a/reactos/dll/win32/shdoclc/Nl.rc b/reactos/dll/win32/shdoclc/Nl.rc index c10e8031fdb..075af99e621 100644 --- a/reactos/dll/win32/shdoclc/Nl.rc +++ b/reactos/dll/win32/shdoclc/Nl.rc @@ -40,38 +40,38 @@ IDR_BROWSE_CONTEXT_MENU MENU MENUITEM "&Terug", IDM_GOBACKWARD MENUITEM "V&ooruit", IDM_GOFORWARD MENUITEM SEPARATOR - MENUITEM "&Achtergrond opslaan als...", IDM_SAVEBACKGROUND + MENUITEM "Achtergrond ops&laan als...", IDM_SAVEBACKGROUND MENUITEM "Als achtergrond instellen", IDM_SETWALLPAPER MENUITEM "Achtergrond &kopiren", IDM_COPYBACKGROUND MENUITEM "Als desktopelement instellen...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR - MENUITEM "Alles &selecteren", IDM_SELECTALL + MENUITEM "&Alles selecteren", IDM_SELECTALL MENUITEM "&Plakken", IDM_PASTE MENUITEM SEPARATOR MENUITEM "&Snelkoppeling aanmaken", IDM_CREATESHORTCUT - MENUITEM "Als &favoriet toevoegen", IDM_ADDFAVORITES + MENUITEM "Aan &favorieten toevoegen", IDM_ADDFAVORITES MENUITEM "&Bronweergave", IDM_VIEWSOURCE MENUITEM SEPARATOR MENUITEM "&Tekstcodering", IDM_LANGUAGE MENUITEM SEPARATOR - MENUITEM "&Afdrukken", IDM_PRINT + MENUITEM "Af&drukken", IDM_PRINT MENUITEM "A&ctualiseren", _IDM_REFRESH MENUITEM SEPARATOR MENUITEM SEPARATOR MENUITEM "&Eigenschappen", IDM_PROPERTIES } - POPUP "Beeld" + POPUP "Afbeelding" { MENUITEM "&Open link", IDM_FOLLOWLINKC - MENUITEM "Open link in nieuw venster", IDM_FOLLOWLINKN - MENUITEM "&Doel opslaan als...", IDM_SAVETARGET - MENUITEM "Doel &afdrukken", IDM_PRINTTARGET + MENUITEM "Open link in &nieuw venster", IDM_FOLLOWLINKN + MENUITEM "Doel ops&laan als...", IDM_SAVETARGET + MENUITEM "Doel af&drukken", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "Toon b&eeld", IDM_SHOWPICTURE - MENUITEM "&Beeld opslaan als...", IDM_SAVEPICTURE - MENUITEM "Beeld &versturen...", IDM_MP_EMAILPICTURE - MENUITEM "Beeld Af&drukken...", IDM_MP_PRINTPICTURE + MENUITEM "&Toon afbeelding", IDM_SHOWPICTURE + MENUITEM "Af&beelding opslaan als...", IDM_SAVEPICTURE + MENUITEM "Afbeelding &versturen...", IDM_MP_EMAILPICTURE + MENUITEM "Afbeelding &afdrukken...", IDM_MP_PRINTPICTURE MENUITEM "&Ga naar Mijn Afbeeldingen", IDM_MP_MYPICS MENUITEM "Als achtergrond instellen", IDM_SETWALLPAPER MENUITEM "Als desktopelement instellen...", IDM_SETDESKTOPITEM @@ -91,8 +91,8 @@ IDR_BROWSE_CONTEXT_MENU MENU { MENUITEM "&Ongedaan maken", IDM_UNDO MENUITEM SEPARATOR - MENUITEM "&Knippen", IDM_CUT - MENUITEM "K&opiren", IDM_COPY + MENUITEM "K&nippen", IDM_CUT + MENUITEM "&Kopiren", IDM_COPY MENUITEM "&Plakken", IDM_PASTE MENUITEM "&Verwijderen", IDM_DELETE MENUITEM SEPARATOR @@ -111,8 +111,8 @@ IDR_BROWSE_CONTEXT_MENU MENU } MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "&Celeigenschappen", IDM_CELLPROPERTIES - MENUITEM "&Tabeleigenschappen", IDM_TABLEPROPERTIES + MENUITEM "Cel&eigenschappen", IDM_CELLPROPERTIES + MENUITEM "Tabelei&genschappen", IDM_TABLEPROPERTIES } POPUP "1DPaginakeuze" @@ -121,16 +121,16 @@ IDR_BROWSE_CONTEXT_MENU MENU MENUITEM "&Kopiren", IDM_COPY MENUITEM "&Plakken", IDM_PASTE MENUITEM "Alles &selecteren", IDM_SELECTALL - MENUITEM "&Afdrukken", IDM_PRINT + MENUITEM "Af&drukken", IDM_PRINT MENUITEM SEPARATOR } POPUP "Anker" { MENUITEM "&Openen", IDM_FOLLOWLINKC - MENUITEM "In &nieuw venster openen", IDM_FOLLOWLINKN - MENUITEM "Doel op&slaan als...", IDM_SAVETARGET - MENUITEM "Doel &afdrukken", IDM_PRINTTARGET + MENUITEM "In nieuw &venster openen", IDM_FOLLOWLINKN + MENUITEM "Doel ops&laan als...", IDM_SAVETARGET + MENUITEM "Doel af&drukken", IDM_PRINTTARGET MENUITEM SEPARATOR MENUITEM "K&nippen", IDM_CUT MENUITEM "&Kopiren", IDM_COPY @@ -148,15 +148,15 @@ IDR_BROWSE_CONTEXT_MENU MENU MENUITEM SEPARATOR } - POPUP "DYNSRC Beeld" + POPUP "DYNSRC Afbeelding" { MENUITEM "&Open link", IDM_FOLLOWLINKC MENUITEM "Open link in &nieuw venster", IDM_FOLLOWLINKN - MENUITEM "Doel &opslaan als...", IDM_SAVETARGET - MENUITEM "&Doel afdrukken", IDM_PRINTTARGET + MENUITEM "Doel ops&laan als...", IDM_SAVETARGET + MENUITEM "Doel af&drukken", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "Toon b&eeld", IDM_SHOWPICTURE - MENUITEM "&Beeld opslaan als...", IDM_SAVEPICTURE + MENUITEM "&Toon afbeelding", IDM_SHOWPICTURE + MENUITEM "Af&beelding opslaan als...", IDM_SAVEPICTURE MENUITEM "Als achtergrond instellen", IDM_SETWALLPAPER MENUITEM "Als desktopelement instellen...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR @@ -173,15 +173,15 @@ IDR_BROWSE_CONTEXT_MENU MENU MENUITEM "&Eigenschappen", IDM_PROPERTIES } - POPUP "ART Beeld" + POPUP "ART Afbeelding" { MENUITEM "&Open link", IDM_FOLLOWLINKC MENUITEM "Open link in &nieuw venster", IDM_FOLLOWLINKN - MENUITEM "Doel &opslaan als...", IDM_SAVETARGET - MENUITEM "&Doel afdrukken", IDM_PRINTTARGET + MENUITEM "Doel ops&laan als...", IDM_SAVETARGET + MENUITEM "Doel af&drukken", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "Toon b&eeld", IDM_SHOWPICTURE - MENUITEM "&Beeld opslaan als...", IDM_SAVEPICTURE + MENUITEM "&Toon afbeelding", IDM_SHOWPICTURE + MENUITEM "Af&beelding opslaan als...", IDM_SAVEPICTURE MENUITEM "Als achtergrond instellen", IDM_SETWALLPAPER MENUITEM "Als desktopelement instellen...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR @@ -220,31 +220,31 @@ IDR_BROWSE_CONTEXT_MENU MENU MENUITEM "&Wijzigen Beeld", IDM_EDITMODE } - POPUP "Vertikale scrollbalk" + POPUP "Verticale scrollbalk" { - MENUITEM "Scroll hier", IDM_SCROLL_HERE + MENUITEM "Scroll hier", IDM_SCROLL_HERE MENUITEM SEPARATOR - MENUITEM "Boven", IDM_SCROLL_TOP - MENUITEM "Onder", IDM_SCROLL_BOTTOM + MENUITEM "Boven", IDM_SCROLL_TOP + MENUITEM "Onder", IDM_SCROLL_BOTTOM MENUITEM SEPARATOR - MENUITEM "Pagina boven", IDM_SCROLL_PAGEUP - MENUITEM "Pagina onder", IDM_SCROLL_PAGEDOWN + MENUITEM "Pagina naar boven", IDM_SCROLL_PAGEUP + MENUITEM "Pagina naar onder", IDM_SCROLL_PAGEDOWN MENUITEM SEPARATOR - MENUITEM "Scroll omhoog", IDM_SCROLL_UP - MENUITEM "Scroll omlaag", IDM_SCROLL_DOWN + MENUITEM "Scroll omhoog", IDM_SCROLL_UP + MENUITEM "Scroll omlaag", IDM_SCROLL_DOWN } POPUP "Horizontale scrollbalk" { - MENUITEM "Scroll hier", IDM_SCROLL_HERE + MENUITEM "Scroll hier", IDM_SCROLL_HERE MENUITEM SEPARATOR - MENUITEM "Linker hoek", IDM_SCROLL_LEFTEDGE - MENUITEM "Rechter hoek", IDM_SCROLL_RIGHTEDGE + MENUITEM "Linkerrand", IDM_SCROLL_LEFTEDGE + MENUITEM "Rechterrand", IDM_SCROLL_RIGHTEDGE MENUITEM SEPARATOR - MENUITEM "Pagina links", IDM_SCROLL_PAGELEFT - MENUITEM "Pagina rechts", IDM_SCROLL_PAGERIGHT + MENUITEM "Pagina naar links", IDM_SCROLL_PAGELEFT + MENUITEM "Pagina naar rechts", IDM_SCROLL_PAGERIGHT MENUITEM SEPARATOR - MENUITEM "Scroll links", IDM_SCROLL_LEFT - MENUITEM "Scroll rechts", IDM_SCROLL_RIGHT + MENUITEM "Scroll naar links", IDM_SCROLL_LEFT + MENUITEM "Scroll naar rechts", IDM_SCROLL_RIGHT } } diff --git a/reactos/dll/win32/shdoclc/Pl.rc b/reactos/dll/win32/shdoclc/Pl.rc new file mode 100644 index 00000000000..4d82d58c3c2 --- /dev/null +++ b/reactos/dll/win32/shdoclc/Pl.rc @@ -0,0 +1,248 @@ +/* + * Copyright 2010 ukasz Wojniowicz + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "shdoclc.h" + +LANGUAGE LANG_POLISH, SUBLANG_DEFAULT + +STRINGTABLE DISCARDABLE +{ + IDS_MESSAGE_BOX_TITLE, "Wine Internet Explorer" +} + +STRINGTABLE DISCARDABLE +{ + IDS_PRINT_HEADER_TEMPLATE "&w&bStrona &p" /* FIXME: should be "&w&bStrona &p z &P" */ + IDS_PRINT_FOOTER_TEMPLATE "&u&b&d" +} + +IDR_BROWSE_CONTEXT_MENU MENU +{ + POPUP "Domylne" + { + MENUITEM "&Wstecz", IDM_GOBACKWARD + MENUITEM "&Dalej", IDM_GOFORWARD + MENUITEM SEPARATOR + MENUITEM "Z&apisz to jako...", IDM_SAVEBACKGROUND + MENUITEM "&Ustaw jako to", IDM_SETWALLPAPER + MENUITEM "Kop&iuj to", IDM_COPYBACKGROUND + MENUITEM "Ustaw jako &element pulpitu...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "&Zaznacz wszystko", IDM_SELECTALL + MENUITEM "Wkl&ej", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Utwrz &skrt", IDM_CREATESHORTCUT + MENUITEM "Dodaj do ulu&bionych", IDM_ADDFAVORITES + MENUITEM "&Poka rdo", IDM_VIEWSOURCE + MENUITEM SEPARATOR + MENUITEM "&Kodowanie", IDM_LANGUAGE + MENUITEM SEPARATOR + MENUITEM "D&rukuj", IDM_PRINT + MENUITEM "&Odwie", _IDM_REFRESH + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Wa&ciwoci", IDM_PROPERTIES + } + + POPUP "Obrazek" + { + MENUITEM "&Otwrz cze", IDM_FOLLOWLINKC + MENUITEM "Otwrz cze w &nowym oknie", IDM_FOLLOWLINKN + MENUITEM "&Zapisz element doecelowy jako...", IDM_SAVETARGET + MENUITEM "&Drukuj element docelowy", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Poka obraz", IDM_SHOWPICTURE + MENUITEM "&Zapisz obraz jako...", IDM_SAVEPICTURE + MENUITEM "&Wylij obraz poczt e-mail...", IDM_MP_EMAILPICTURE + MENUITEM "D&rukuj obraz...", IDM_MP_PRINTPICTURE + MENUITEM "Przejd do &Moich obrazw", IDM_MP_MYPICS + MENUITEM "&Ustaw jako to", IDM_SETWALLPAPER + MENUITEM "Ustaw jako &element pulpitu...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "Wyt&nij", IDM_CUT + MENUITEM "&Kopiuj", IDM_COPY + MENUITEM "Kopiuj &skrt", IDM_COPYSHORTCUT + MENUITEM "Wkl&ej", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Dodaj do ulu&bionych...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Wa&ciwoci", IDM_PROPERTIES + } + + POPUP "Sterowanie" + { + MENUITEM "&Confij", IDM_UNDO + MENUITEM SEPARATOR + MENUITEM "Wyt&nij", IDM_CUT + MENUITEM "&Kopiuj", IDM_COPY + MENUITEM "Wkl&ej", IDM_PASTE + MENUITEM "&Usu", IDM_DELETE + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "&Zaznacz wszystko", IDM_SELECTALL + } + + POPUP "Tabela" + { + POPUP "&Zaznacz" + { + MENUITEM "&Komrka", IDM_CELLSELECT + MENUITEM "&Wiersz", IDM_ROWSELECT + MENUITEM "K&olumna", IDM_COLUMNSELECT + MENUITEM "&Tabela", IDM_TABLESELECT + } + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Waciwoci &komrki", IDM_CELLPROPERTIES + MENUITEM "Waciwoci &tabeli", IDM_TABLEPROPERTIES + } + + POPUP "1DSite Select" + { + MENUITEM "Wyt&nij", IDM_CUT + MENUITEM "&Kopiuj", IDM_COPY + MENUITEM "Wkl&ej", IDM_PASTE + MENUITEM "&Zaznacz wszystko", IDM_SELECTALL + MENUITEM "D&rukuj", IDM_PRINT + MENUITEM SEPARATOR + } + + POPUP "Kotwica" + { + MENUITEM "&Otwrz", IDM_FOLLOWLINKC + MENUITEM "Otwrz w &nowym oknie", IDM_FOLLOWLINKN + MENUITEM "&Zapisz element docelowy jako...", IDM_SAVETARGET + MENUITEM "&Drukuj element docelowy", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "Wyt&nij", IDM_CUT + MENUITEM "&Kopiuj", IDM_COPY + MENUITEM "Kopiuj &skrt", IDM_COPYSHORTCUT + MENUITEM "Wkl&ej", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Dodaj do ulu&bionych...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Wa&ciwoci", IDM_PROPERTIES + } + + POPUP "Context Unknown" + { + MENUITEM SEPARATOR + } + + POPUP "DYNSRC obrazek" + { + MENUITEM "&Otwrz cze", IDM_FOLLOWLINKC + MENUITEM "Otwrz cze w &nowym oknie", IDM_FOLLOWLINKN + MENUITEM "&Zapisz element docelowy jako...", IDM_SAVETARGET + MENUITEM "&Drukuj element docelowy", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Poka obraz", IDM_SHOWPICTURE + MENUITEM "Zapisz &wideo jako...", IDM_SAVEPICTURE + MENUITEM "&Ustaw jako to", IDM_SETWALLPAPER + MENUITEM "Ustaw jako &element pulpitu......", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "Wyt&nij", IDM_CUT + MENUITEM "&Kopiuj", IDM_COPY + MENUITEM "Kopiuj &skrt", IDM_COPYSHORTCUT + MENUITEM "Wkl&ej", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Dodaj do ulu&bionych", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Odtwarzaj", IDM_DYNSRCPLAY + MENUITEM "Zatrzymaj", IDM_DYNSRCSTOP + MENUITEM "Wa&ciwoci", IDM_PROPERTIES + } + + POPUP "ART obrazek" + { + MENUITEM "&Otwrz cze", IDM_FOLLOWLINKC + MENUITEM "Otwrz cze w &nowym oknie", IDM_FOLLOWLINKN + MENUITEM "&Zapisz element doecelowy jako...", IDM_SAVETARGET + MENUITEM "&Drukuj element docelowy", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Poka obraz", IDM_SHOWPICTURE + MENUITEM "&Zapisz obraz jako...", IDM_SAVEPICTURE + MENUITEM "&Ustaw jako to", IDM_SETWALLPAPER + MENUITEM "Ustaw jako &element pulpitu......", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "Wyt&nij", IDM_CUT + MENUITEM "&Kopiuj", IDM_COPY + MENUITEM "Kopiuj &skrt", IDM_COPYSHORTCUT + MENUITEM "Wkl&ej", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Dodaj do ulu&bionych...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM "Odtwarzaj", IDM_IMGARTPLAY + MENUITEM "Zatrzymaj", IDM_IMGARTSTOP + MENUITEM "Przewi", IDM_IMGARTREWIND + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Wa&ciwoci", IDM_PROPERTIES + } + + POPUP "Debug" + { + MENUITEM "Znaczniki ledzenia", IDM_TRACETAGS + MENUITEM "Niepowodzenia zasobw", IDM_RESOURCEFAILURES + MENUITEM "Zrzu informacj ledzenia", IDM_DUMPTRACKINGINFO + MENUITEM "Przerwa debugowania", IDM_DEBUGBREAK + MENUITEM "Widok debugowania", IDM_DEBUGVIEW + MENUITEM "Zrzu drzewa", IDM_DUMPTREE + MENUITEM "Zrzu linie", IDM_DUMPLINES + MENUITEM "Zrzu DisplayTree", IDM_DUMPDISPLAYTREE + MENUITEM "Zrzu FormatCaches", IDM_DUMPFORMATCACHES + MENUITEM "Zrzu LayoutRects", IDM_DUMPLAYOUTRECTS + MENUITEM "Monitor pamici", IDM_MEMORYMONITOR + MENUITEM "Mierniki wydajnoci", IDM_PERFORMANCEMETERS + MENUITEM "Zapisz HTML", IDM_SAVEHTML + MENUITEM SEPARATOR + MENUITEM "Widok &przegldania", IDM_BROWSEMODE + MENUITEM "Widok &edycji", IDM_EDITMODE + } + + POPUP "Pionowy suwak" + { + MENUITEM "Przewi tutaj", IDM_SCROLL_HERE + MENUITEM SEPARATOR + MENUITEM "Gra", IDM_SCROLL_TOP + MENUITEM "D", IDM_SCROLL_BOTTOM + MENUITEM SEPARATOR + MENUITEM "Strona w gr", IDM_SCROLL_PAGEUP + MENUITEM "Strona w d", IDM_SCROLL_PAGEDOWN + MENUITEM SEPARATOR + MENUITEM "Przewi w gr", IDM_SCROLL_UP + MENUITEM "Przewi w d", IDM_SCROLL_DOWN + } + + POPUP "Poziomy suwak" + { + MENUITEM "Przewi tutaj", IDM_SCROLL_HERE + MENUITEM SEPARATOR + MENUITEM "Lewa krawd", IDM_SCROLL_LEFTEDGE + MENUITEM "Prawa krawd", IDM_SCROLL_RIGHTEDGE + MENUITEM SEPARATOR + MENUITEM "Strona w lewo", IDM_SCROLL_PAGELEFT + MENUITEM "Strona w prawo", IDM_SCROLL_PAGERIGHT + MENUITEM SEPARATOR + MENUITEM "Przewi w lewo", IDM_SCROLL_LEFT + MENUITEM "Przewi w prawo", IDM_SCROLL_RIGHT + } +} diff --git a/reactos/dll/win32/shdoclc/Pt.rc b/reactos/dll/win32/shdoclc/Pt.rc index 737747304ff..3df4240208a 100644 --- a/reactos/dll/win32/shdoclc/Pt.rc +++ b/reactos/dll/win32/shdoclc/Pt.rc @@ -1,5 +1,6 @@ /* * Copyright 2008 Ricardo Filipe + * Copyright 2010 Gustavo Henrique Milaré * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -20,6 +21,13 @@ #pragma code_page(65001) +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN + +STRINGTABLE DISCARDABLE +{ + IDS_MESSAGE_BOX_TITLE, "Wine Internet Explorer" +} + LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE STRINGTABLE DISCARDABLE @@ -27,12 +35,236 @@ STRINGTABLE DISCARDABLE IDS_MESSAGE_BOX_TITLE, "Explorador de Internet Wine" } + +LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL + STRINGTABLE DISCARDABLE { IDS_PRINT_HEADER_TEMPLATE "&w&bPage &p" /* FIXME: should be "&w&bPage &p of &P" */ IDS_PRINT_FOOTER_TEMPLATE "&u&b&d" } + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN + +IDR_BROWSE_CONTEXT_MENU MENU +{ + POPUP "Padrão" + { + MENUITEM "&Voltar", IDM_GOBACKWARD + MENUITEM "&Avançar", IDM_GOFORWARD + MENUITEM SEPARATOR + MENUITEM "&Salvar Fundo como...", IDM_SAVEBACKGROUND + MENUITEM "D&efinir como Fundo", IDM_SETWALLPAPER + MENUITEM "&Copiar Fundo", IDM_COPYBACKGROUND + MENUITEM "Definir como &Item da Área de Trabalho", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "Selecionar &Tudo", IDM_SELECTALL + MENUITEM "C&olar", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Criar Ata&lho", IDM_CREATESHORTCUT + MENUITEM "Adicio&nar aos Favoritos", IDM_ADDFAVORITES + MENUITEM "Ver Código &Fonte", IDM_VIEWSOURCE + MENUITEM SEPARATOR + MENUITEM "Co&dificação", IDM_LANGUAGE + MENUITEM SEPARATOR + MENUITEM "I&mprimir", IDM_PRINT + MENUITEM "&Recarregar", _IDM_REFRESH + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "&Propriedades", IDM_PROPERTIES + } + + POPUP "Imagem" + { + MENUITEM "&Abrir Link", IDM_FOLLOWLINKC + MENUITEM "A&brir Link numa Nova Janela", IDM_FOLLOWLINKN + MENUITEM "&Salvar Link como...", IDM_SAVETARGET + MENUITEM "Imprimir Lin&k", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "Mos&trar Imagem", IDM_SHOWPICTURE + MENUITEM "Sal&var Imagem como...", IDM_SAVEPICTURE + MENUITEM "&Enviar Imagem...", IDM_MP_EMAILPICTURE + MENUITEM "I&mprimir Imagem...", IDM_MP_PRINTPICTURE + MENUITEM "I&r para Minhas Imagens", IDM_MP_MYPICS + MENUITEM "&Definir como Fundo", IDM_SETWALLPAPER + MENUITEM "Definir como &Item da Área de Trabalho...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "&Cortar", IDM_CUT + MENUITEM "C&opiar", IDM_COPY + MENUITEM "Copiar Atal&ho", IDM_COPYSHORTCUT + MENUITEM "Co&lar", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Adicionar aos &Favoritos...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "&Propriedades", IDM_PROPERTIES + } + + POPUP "Controle" + { + MENUITEM "&Desfazer", IDM_UNDO + MENUITEM SEPARATOR + MENUITEM "&Cortar", IDM_CUT + MENUITEM "C&opiar", IDM_COPY + MENUITEM "Co&lar", IDM_PASTE + MENUITEM "&Apagar", IDM_DELETE + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "&Selecionar Tudo", IDM_SELECTALL + } + + POPUP "Tabela" + { + POPUP "&Selecionar" + { + MENUITEM "&Célula", IDM_CELLSELECT + MENUITEM "&Linha", IDM_ROWSELECT + MENUITEM "C&oluna", IDM_COLUMNSELECT + MENUITEM "&Tabela", IDM_TABLESELECT + } + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "Propriedades da &Célula", IDM_CELLPROPERTIES + MENUITEM "Propriedades da &Tabela", IDM_TABLEPROPERTIES + } + + POPUP "1DSite Select" + { + MENUITEM "&Cortar", IDM_CUT + MENUITEM "C&opiar", IDM_COPY + MENUITEM "Co&lar", IDM_PASTE + MENUITEM "Selecionar Tudo", IDM_SELECTALL + MENUITEM "&Imprimir", IDM_PRINT + MENUITEM SEPARATOR + } + + POPUP "Âncora" + { + MENUITEM "&Abrir", IDM_FOLLOWLINKC + MENUITEM "A&brir numa Nova Janela", IDM_FOLLOWLINKN + MENUITEM "&Salvar Link como...", IDM_SAVETARGET + MENUITEM "&Imprimir Link", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Cortar", IDM_CUT + MENUITEM "C&opiar", IDM_COPY + MENUITEM "Copia&r Atalho", IDM_COPYSHORTCUT + MENUITEM "Co&lar", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Adicionar aos &Favoritos...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "&Propriedades", IDM_PROPERTIES + } + + POPUP "Contexto Desconhecido" + { + MENUITEM SEPARATOR + } + + POPUP "Imagem DYNSRC" + { + MENUITEM "&Abrir Link", IDM_FOLLOWLINKC + MENUITEM "A&brir Link numa Nova Janela", IDM_FOLLOWLINKN + MENUITEM "&Salvar Link como...", IDM_SAVETARGET + MENUITEM "Imprimir Lin&k", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Mostrar Imagem", IDM_SHOWPICTURE + MENUITEM "Sal&var Vídeo como...", IDM_SAVEPICTURE + MENUITEM "&Definir como Fundo", IDM_SETWALLPAPER + MENUITEM "Definir como &Item da Área de Trabalho...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "&Cortar", IDM_CUT + MENUITEM "C&opiar", IDM_COPY + MENUITEM "Copiar Atal&ho", IDM_COPYSHORTCUT + MENUITEM "Co&lar", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Adicionar aos &Favoritos...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "I&niciar", IDM_DYNSRCPLAY + MENUITEM "Pa&rar", IDM_DYNSRCSTOP + MENUITEM "&Propriedades", IDM_PROPERTIES + } + + POPUP "Imagem ART" + { + MENUITEM "&Abrir Link", IDM_FOLLOWLINKC + MENUITEM "A&brir Link numa Nova Janela", IDM_FOLLOWLINKN + MENUITEM "&Salvar Link como...", IDM_SAVETARGET + MENUITEM "Imprimir Lin&k", IDM_PRINTTARGET + MENUITEM SEPARATOR + MENUITEM "&Mostrar Imagem", IDM_SHOWPICTURE + MENUITEM "Sal&var Vídeo como...", IDM_SAVEPICTURE + MENUITEM "&Definir como Fundo", IDM_SETWALLPAPER + MENUITEM "Definir como &Item da Área de Trabalho...", IDM_SETDESKTOPITEM + MENUITEM SEPARATOR + MENUITEM "&Cortar", IDM_CUT + MENUITEM "C&opiar", IDM_COPY + MENUITEM "Copiar Atal&ho", IDM_COPYSHORTCUT + MENUITEM "Co&lar", IDM_PASTE + MENUITEM SEPARATOR + MENUITEM "Adicionar aos &Favoritos...", IDM_ADDFAVORITES + MENUITEM SEPARATOR + MENUITEM "I&niciar", IDM_IMGARTPLAY + MENUITEM "Pa&rar", IDM_IMGARTSTOP + MENUITEM "R&ecomeçar", IDM_IMGARTREWIND + MENUITEM SEPARATOR + MENUITEM SEPARATOR + MENUITEM "&Propriedades", IDM_PROPERTIES + } + + POPUP "Debug" + { + MENUITEM "Trace Tags", IDM_TRACETAGS + MENUITEM "Resource Failures", IDM_RESOURCEFAILURES + MENUITEM "Dump Tracking Info", IDM_DUMPTRACKINGINFO + MENUITEM "Debug Break", IDM_DEBUGBREAK + MENUITEM "Debug View", IDM_DEBUGVIEW + MENUITEM "Dump Tree", IDM_DUMPTREE + MENUITEM "Dump Lines", IDM_DUMPLINES + MENUITEM "Dump DisplayTree", IDM_DUMPDISPLAYTREE + MENUITEM "Dump FormatCaches", IDM_DUMPFORMATCACHES + MENUITEM "Dump LayoutRects", IDM_DUMPLAYOUTRECTS + MENUITEM "Memory Monitor", IDM_MEMORYMONITOR + MENUITEM "Performance Meters", IDM_PERFORMANCEMETERS + MENUITEM "Save HTML", IDM_SAVEHTML + MENUITEM SEPARATOR + MENUITEM "&Browse View", IDM_BROWSEMODE + MENUITEM "&Edit View", IDM_EDITMODE + } + + POPUP "Barra de Rolagem Vertical" + { + MENUITEM "Rolar Aqui", IDM_SCROLL_HERE + MENUITEM SEPARATOR + MENUITEM "Topo", IDM_SCROLL_TOP + MENUITEM "Fundo", IDM_SCROLL_BOTTOM + MENUITEM SEPARATOR + MENUITEM "Página Acima", IDM_SCROLL_PAGEUP + MENUITEM "Página Abaixo", IDM_SCROLL_PAGEDOWN + MENUITEM SEPARATOR + MENUITEM "Rolar para Cima", IDM_SCROLL_UP + MENUITEM "Rolar para Baixo", IDM_SCROLL_DOWN + } + + POPUP "Barra de Rolagem Horizontal" + { + MENUITEM "Rolar Aqui", IDM_SCROLL_HERE + MENUITEM SEPARATOR + MENUITEM "Canto Esquerdo", IDM_SCROLL_LEFTEDGE + MENUITEM "Canto Direito", IDM_SCROLL_RIGHTEDGE + MENUITEM SEPARATOR + MENUITEM "Página à Esquerda", IDM_SCROLL_PAGELEFT + MENUITEM "Página à Direita", IDM_SCROLL_PAGERIGHT + MENUITEM SEPARATOR + MENUITEM "Rolar para a Esquerda", IDM_SCROLL_LEFT + MENUITEM "Rolar para a Direita", IDM_SCROLL_RIGHT + } +} + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE + IDR_BROWSE_CONTEXT_MENU MENU { POPUP "Default" @@ -40,22 +272,22 @@ IDR_BROWSE_CONTEXT_MENU MENU MENUITEM "&Retroceder", IDM_GOBACKWARD MENUITEM "&Avançar", IDM_GOFORWARD MENUITEM SEPARATOR - MENUITEM "&Guardar fundo como...", IDM_SAVEBACKGROUND - MENUITEM "&Definir como fundo", IDM_SETWALLPAPER - MENUITEM "&Copiar fundo", IDM_COPYBACKGROUND + MENUITEM "&Guardar Fundo como...", IDM_SAVEBACKGROUND + MENUITEM "D&efinir como Fundo", IDM_SETWALLPAPER + MENUITEM "&Copiar Fundo", IDM_COPYBACKGROUND MENUITEM "Definir como &Item do Ambiente de Trabalho", IDM_SETDESKTOPITEM MENUITEM SEPARATOR MENUITEM "&Seleccionar Tudo", IDM_SELECTALL - MENUITEM "&Colar", IDM_PASTE + MENUITEM "C&olar", IDM_PASTE MENUITEM SEPARATOR - MENUITEM "Criar &Atalho", IDM_CREATESHORTCUT + MENUITEM "Criar Ata&lho", IDM_CREATESHORTCUT MENUITEM "Adicionar aos &Favoritos", IDM_ADDFAVORITES MENUITEM "&Ver Código Fonte", IDM_VIEWSOURCE MENUITEM SEPARATOR - MENUITEM "C&odificação", IDM_LANGUAGE + MENUITEM "Co&dificação", IDM_LANGUAGE MENUITEM SEPARATOR - MENUITEM "&Imprimir", IDM_PRINT - MENUITEM "&Actualizar", _IDM_REFRESH + MENUITEM "I&mprimir", IDM_PRINT + MENUITEM "Actuali&zar", _IDM_REFRESH MENUITEM SEPARATOR MENUITEM SEPARATOR MENUITEM "&Propriedades", IDM_PROPERTIES @@ -63,23 +295,23 @@ IDR_BROWSE_CONTEXT_MENU MENU POPUP "Imagem" { - MENUITEM "&Abrir ligação", IDM_FOLLOWLINKC - MENUITEM "Abrir &ligação numa nova janela", IDM_FOLLOWLINKN - MENUITEM "&Guardar ligação como...", IDM_SAVETARGET - MENUITEM "&Imprimir ligação", IDM_PRINTTARGET + MENUITEM "&Abrir Ligação", IDM_FOLLOWLINKC + MENUITEM "A&brir Ligação numa Nova Janela", IDM_FOLLOWLINKN + MENUITEM "&Guardar Ligação como...", IDM_SAVETARGET + MENUITEM "I&mprimir Ligação", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "&Mostrar imagem", IDM_SHOWPICTURE - MENUITEM "G&uardar imagem como...", IDM_SAVEPICTURE - MENUITEM "&Enviar imagem...", IDM_MP_EMAILPICTURE - MENUITEM "I&mprimir imagem...", IDM_MP_PRINTPICTURE + MENUITEM "Mos&trar Imagem", IDM_SHOWPICTURE + MENUITEM "G&uardar Imagem como...", IDM_SAVEPICTURE + MENUITEM "En&viar Imagem...", IDM_MP_EMAILPICTURE + MENUITEM "Imprimir Imag&em...", IDM_MP_PRINTPICTURE MENUITEM "I&r para Minhas Imagens", IDM_MP_MYPICS - MENUITEM "&Definir como fundo", IDM_SETWALLPAPER - MENUITEM "D&efinir como item do Ambiente de Trabalho...", IDM_SETDESKTOPITEM + MENUITEM "&Definir como Fundo", IDM_SETWALLPAPER + MENUITEM "Definir como &Item do Ambiente de Trabalho...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR MENUITEM "&Cortar", IDM_CUT MENUITEM "C&opiar", IDM_COPY - MENUITEM "Co&piar Atalho", IDM_COPYSHORTCUT - MENUITEM "Col&ar", IDM_PASTE + MENUITEM "Copiar Atal&ho", IDM_COPYSHORTCUT + MENUITEM "Co&lar", IDM_PASTE MENUITEM SEPARATOR MENUITEM "Adicionar aos &Favoritos...", IDM_ADDFAVORITES MENUITEM SEPARATOR @@ -111,8 +343,8 @@ IDR_BROWSE_CONTEXT_MENU MENU } MENUITEM SEPARATOR MENUITEM SEPARATOR - MENUITEM "&Propriedades da Célula", IDM_CELLPROPERTIES - MENUITEM "&Propriedades da Tabela", IDM_TABLEPROPERTIES + MENUITEM "Propriedades da &Célula", IDM_CELLPROPERTIES + MENUITEM "Propriedades da &Tabela", IDM_TABLEPROPERTIES } POPUP "1DSite Select" @@ -128,14 +360,14 @@ IDR_BROWSE_CONTEXT_MENU MENU POPUP "Âncora" { MENUITEM "&Abrir", IDM_FOLLOWLINKC - MENUITEM "A&brir numa nova janela", IDM_FOLLOWLINKN - MENUITEM "&Guardar ligação como...", IDM_SAVETARGET - MENUITEM "&Imprimir ligação", IDM_PRINTTARGET + MENUITEM "A&brir numa Nova Janela", IDM_FOLLOWLINKN + MENUITEM "&Guardar Ligação como...", IDM_SAVETARGET + MENUITEM "&Imprimir Ligação", IDM_PRINTTARGET MENUITEM SEPARATOR MENUITEM "&Cortar", IDM_CUT MENUITEM "C&opiar", IDM_COPY - MENUITEM "Co&piar Atalho", IDM_COPYSHORTCUT - MENUITEM "&Colar", IDM_PASTE + MENUITEM "Copia&r Atalho", IDM_COPYSHORTCUT + MENUITEM "Co&lar", IDM_PASTE MENUITEM SEPARATOR MENUITEM "Adicionar aos &Favoritos...", IDM_ADDFAVORITES MENUITEM SEPARATOR @@ -150,19 +382,19 @@ IDR_BROWSE_CONTEXT_MENU MENU POPUP "Imagem DYNSRC" { - MENUITEM "&Abrir ligação", IDM_FOLLOWLINKC - MENUITEM "A&brir ligação numa nova janela", IDM_FOLLOWLINKN - MENUITEM "&Guardar ligação como...", IDM_SAVETARGET - MENUITEM "&Imprimir ligação", IDM_PRINTTARGET + MENUITEM "&Abrir Ligação", IDM_FOLLOWLINKC + MENUITEM "A&brir Ligação numa Nova Janela", IDM_FOLLOWLINKN + MENUITEM "&Guardar Ligação como...", IDM_SAVETARGET + MENUITEM "&Imprimir Ligação", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "&Mostrar imagem", IDM_SHOWPICTURE - MENUITEM "G&uardar video como...", IDM_SAVEPICTURE - MENUITEM "&Definir como fundo", IDM_SETWALLPAPER - MENUITEM "D&efinir como item do Ambiente de Trabalho...", IDM_SETDESKTOPITEM + MENUITEM "&Mostrar Imagem", IDM_SHOWPICTURE + MENUITEM "G&uardar Vídeo como...", IDM_SAVEPICTURE + MENUITEM "&Definir como Fundo", IDM_SETWALLPAPER + MENUITEM "D&efinir como Item do Ambiente de Trabalho...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR MENUITEM "&Cortar", IDM_CUT MENUITEM "C&opiar", IDM_COPY - MENUITEM "Co&piar Atalho", IDM_COPYSHORTCUT + MENUITEM "Copiar Atal&ho", IDM_COPYSHORTCUT MENUITEM "Co&lar", IDM_PASTE MENUITEM SEPARATOR MENUITEM "Adicionar aos &Favoritos...", IDM_ADDFAVORITES @@ -175,19 +407,19 @@ IDR_BROWSE_CONTEXT_MENU MENU POPUP "Imagem ART" { - MENUITEM "&Abrir ligação", IDM_FOLLOWLINKC - MENUITEM "A&brir ligação numa nova janela", IDM_FOLLOWLINKN - MENUITEM "&Guardar ligação como...", IDM_SAVETARGET - MENUITEM "&Imprimir ligação", IDM_PRINTTARGET + MENUITEM "&Abrir Ligação", IDM_FOLLOWLINKC + MENUITEM "A&brir Ligação numa Nova Janela", IDM_FOLLOWLINKN + MENUITEM "&Guardar Ligação como...", IDM_SAVETARGET + MENUITEM "&Imprimir Ligação", IDM_PRINTTARGET MENUITEM SEPARATOR - MENUITEM "&Mostrar imagem", IDM_SHOWPICTURE - MENUITEM "G&uardar video como...", IDM_SAVEPICTURE - MENUITEM "&Definir como fundo", IDM_SETWALLPAPER - MENUITEM "D&efinir como item do Ambiente de Trabalho...", IDM_SETDESKTOPITEM + MENUITEM "&Mostrar Imagem", IDM_SHOWPICTURE + MENUITEM "G&uardar Vídeo como...", IDM_SAVEPICTURE + MENUITEM "&Definir como Fundo", IDM_SETWALLPAPER + MENUITEM "D&efinir como Item do Ambiente de Trabalho...", IDM_SETDESKTOPITEM MENUITEM SEPARATOR MENUITEM "&Cortar", IDM_CUT MENUITEM "C&opiar", IDM_COPY - MENUITEM "Co&piar Atalho", IDM_COPYSHORTCUT + MENUITEM "Copiar Atal&ho", IDM_COPYSHORTCUT MENUITEM "Co&lar", IDM_PASTE MENUITEM SEPARATOR MENUITEM "Adicionar aos &Favoritos...", IDM_ADDFAVORITES @@ -228,7 +460,7 @@ IDR_BROWSE_CONTEXT_MENU MENU MENUITEM "Fundo", IDM_SCROLL_BOTTOM MENUITEM SEPARATOR MENUITEM "Página Acima", IDM_SCROLL_PAGEUP - MENUITEM "Página abaixo", IDM_SCROLL_PAGEDOWN + MENUITEM "Página baixo", IDM_SCROLL_PAGEDOWN MENUITEM SEPARATOR MENUITEM "Scroll Cima", IDM_SCROLL_UP MENUITEM "Scroll Baixo", IDM_SCROLL_DOWN @@ -241,8 +473,8 @@ IDR_BROWSE_CONTEXT_MENU MENU MENUITEM "Canto Esquerdo", IDM_SCROLL_LEFTEDGE MENUITEM "Canto Direito", IDM_SCROLL_RIGHTEDGE MENUITEM SEPARATOR - MENUITEM "Página esquerda", IDM_SCROLL_PAGELEFT - MENUITEM "Página direita", IDM_SCROLL_PAGERIGHT + MENUITEM "Página Esquerda", IDM_SCROLL_PAGELEFT + MENUITEM "Página Direita", IDM_SCROLL_PAGERIGHT MENUITEM SEPARATOR MENUITEM "Scroll Esquerda", IDM_SCROLL_LEFT MENUITEM "Scroll Direita", IDM_SCROLL_RIGHT diff --git a/reactos/dll/win32/shdoclc/rsrc.rc b/reactos/dll/win32/shdoclc/rsrc.rc index 4759265aaf9..6c771b591da 100644 --- a/reactos/dll/win32/shdoclc/rsrc.rc +++ b/reactos/dll/win32/shdoclc/rsrc.rc @@ -27,16 +27,19 @@ #include "En.rc" #include "Es.rc" #include "Fi.rc" -#include "Hu.rc" -#include "Ko.rc" #include "Nl.rc" #include "No.rc" +#include "Pl.rc" #include "Sv.rc" #include "Tr.rc" /* UTF-8 */ #include "De.rc" #include "Fr.rc" +#include "Hu.rc" +#include "It.rc" +#include "Ja.rc" +#include "Ko.rc" #include "Lt.rc" #include "Pt.rc" #include "Ro.rc" diff --git a/reactos/dll/win32/shdocvw/iexplore.c b/reactos/dll/win32/shdocvw/iexplore.c index 9c14cfc1631..e4e7618eba0 100644 --- a/reactos/dll/win32/shdocvw/iexplore.c +++ b/reactos/dll/win32/shdocvw/iexplore.c @@ -37,7 +37,7 @@ WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); -#define IDI_APPICON 101 +#define IDI_APPICON 1 static const WCHAR szIEWinFrame[] = { 'I','E','F','r','a','m','e',0 }; @@ -90,6 +90,7 @@ void register_iewindow_class(void) WNDCLASSEXW wc; memset(&wc, 0, sizeof wc); + wc.cbSize = sizeof(wc); wc.style = 0; wc.lpfnWndProc = ie_window_proc; wc.cbClsExtra = 0; diff --git a/reactos/dll/win32/shdocvw/navigate.c b/reactos/dll/win32/shdocvw/navigate.c index 99980c7c31b..3310cbadf98 100644 --- a/reactos/dll/win32/shdocvw/navigate.c +++ b/reactos/dll/win32/shdocvw/navigate.c @@ -486,7 +486,7 @@ static HRESULT create_moniker(LPCWSTR url, IMoniker **mon) return hres; } }else { - size = sizeof(new_url); + size = sizeof(new_url)/sizeof(WCHAR); hres = UrlApplySchemeW(url, new_url, &size, URL_APPLY_GUESSSCHEME); TRACE("got %s\n", debugstr_w(new_url)); if(FAILED(hres)) { @@ -760,7 +760,23 @@ HRESULT navigate_url(DocHost *This, LPCWSTR url, const VARIANT *Flags, This->ready_state = READYSTATE_LOADING; if(This->doc_navigate) { - hres = async_doc_navigate(This, url, headers, post_data, post_data_len, TRUE); + WCHAR new_url[INTERNET_MAX_URL_LENGTH]; + + if(PathIsURLW(url)) { + new_url[0] = 0; + }else { + DWORD size; + + size = sizeof(new_url)/sizeof(WCHAR); + hres = UrlApplySchemeW(url, new_url, &size, URL_APPLY_GUESSSCHEME); + if(FAILED(hres)) { + WARN("UrlApplyScheme failed: %08x\n", hres); + new_url[0] = 0; + } + } + + hres = async_doc_navigate(This, *new_url ? new_url : url, headers, post_data, + post_data_len, TRUE); }else { task_navigate_bsc_t *task; diff --git a/reactos/dll/win32/shdocvw/shdocvw.inf b/reactos/dll/win32/shdocvw/shdocvw.inf index f08759c5a93..a612952f37d 100644 --- a/reactos/dll/win32/shdocvw/shdocvw.inf +++ b/reactos/dll/win32/shdocvw/shdocvw.inf @@ -20,7 +20,7 @@ DelReg=IE.Reg, Settings.Reg [Classes.Reg] HKCR,"CLSID\%CLSID_InternetExplorer%",,,"Internet Explorer(Ver 1.0)" -HKCR,"CLSID\%CLSID_InternetExplorer%\LocalServer32",,,"iexplore.exe" +HKCR,"CLSID\%CLSID_InternetExplorer%\LocalServer32",,,"""%16422%\Internet Explorer\iexplore.exe""" HKCR,"CLSID\%CLSID_InternetExplorer%\ProgID",,,"InternetExplorer.Application.1" HKCR,"CLSID\%CLSID_InternetExplorer%\VersionIndependentProgID",,,"InternetExplorer.Application" HKCR,"InternetExplorer.Application",,,"Internet Explorer(Ver 1.0)" diff --git a/reactos/dll/win32/shdocvw/webbrowser.c b/reactos/dll/win32/shdocvw/webbrowser.c index 0c26a83b55e..47996863785 100644 --- a/reactos/dll/win32/shdocvw/webbrowser.c +++ b/reactos/dll/win32/shdocvw/webbrowser.c @@ -22,6 +22,7 @@ #include "wine/debug.h" #include "shdocvw.h" #include "exdispid.h" +#include "mshtml.h" WINE_DEFAULT_DEBUG_CHANNEL(shdocvw); @@ -300,7 +301,7 @@ static HRESULT WINAPI WebBrowser_Stop(IWebBrowser2 *iface) { WebBrowser *This = WEBBROWSER_THIS(iface); FIXME("(%p)\n", This); - return E_NOTIMPL; + return S_OK; } static HRESULT WINAPI WebBrowser_get_Application(IWebBrowser2 *iface, IDispatch **ppDisp) @@ -334,13 +335,28 @@ static HRESULT WINAPI WebBrowser_get_Container(IWebBrowser2 *iface, IDispatch ** static HRESULT WINAPI WebBrowser_get_Document(IWebBrowser2 *iface, IDispatch **ppDisp) { WebBrowser *This = WEBBROWSER_THIS(iface); + IDispatch *disp = NULL; TRACE("(%p)->(%p)\n", This, ppDisp); - *ppDisp = NULL; - if(This->doc_host.document) - IUnknown_QueryInterface(This->doc_host.document, &IID_IDispatch, (void**)ppDisp); + if(This->doc_host.document) { + HRESULT hres; + hres = IUnknown_QueryInterface(This->doc_host.document, &IID_IDispatch, (void**)&disp); + if(SUCCEEDED(hres)) { + IDispatch *html_doc; + + /* Some broken apps cast returned IDispatch to IHTMLDocument2 + * without QueryInterface call */ + hres = IDispatch_QueryInterface(disp, &IID_IHTMLDocument2, (void**)&html_doc); + if(SUCCEEDED(hres)) { + IDispatch_Release(disp); + disp = html_doc; + } + } + } + + *ppDisp = disp; return S_OK; } diff --git a/reactos/dll/win32/shlwapi/ordinal.c b/reactos/dll/win32/shlwapi/ordinal.c index 22851d92010..5f332f38cf7 100644 --- a/reactos/dll/win32/shlwapi/ordinal.c +++ b/reactos/dll/win32/shlwapi/ordinal.c @@ -4487,8 +4487,8 @@ DWORD WINAPI GetUIVersion(void) INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText, LPCWSTR lpCaption, UINT uType, ...) { - WCHAR szText[100], szTitle[100]; - LPCWSTR pszText = szText, pszTitle = szTitle; + WCHAR *szText = NULL, szTitle[100]; + LPCWSTR pszText, pszTitle = szTitle; LPWSTR pszTemp; __ms_va_list args; int ret; @@ -4503,7 +4503,22 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText, pszTitle = lpCaption; if (IS_INTRESOURCE(lpText)) - LoadStringW(hInstance, LOWORD(lpText), szText, sizeof(szText)/sizeof(szText[0])); + { + const WCHAR *ptr; + UINT len = LoadStringW(hInstance, LOWORD(lpText), (LPWSTR)&ptr, 0); + + if (len) + { + szText = HeapAlloc(GetProcessHeap(), 0, (len + 1) * sizeof(WCHAR)); + if (szText) LoadStringW(hInstance, LOWORD(lpText), szText, len + 1); + } + pszText = szText; + if (!pszText) { + WARN("Failed to load id %d\n", LOWORD(lpText)); + __ms_va_end(args); + return 0; + } + } else pszText = lpText; @@ -4513,6 +4528,8 @@ INT WINAPIV ShellMessageBoxWrapW(HINSTANCE hInstance, HWND hWnd, LPCWSTR lpText, __ms_va_end(args); ret = MessageBoxW(hWnd, pszTemp, pszTitle, uType); + + HeapFree(GetProcessHeap(), 0, szText); LocalFree(pszTemp); return ret; } diff --git a/reactos/dll/win32/shlwapi/url.c b/reactos/dll/win32/shlwapi/url.c index ad7d989a4bb..d7a36dbec46 100644 --- a/reactos/dll/win32/shlwapi/url.c +++ b/reactos/dll/win32/shlwapi/url.c @@ -486,7 +486,9 @@ HRESULT WINAPI UrlCanonicalizeW(LPCWSTR pszUrl, LPWSTR pszCanonicalized, while ((nLen > 0) && ((lpszUrlCpy[nLen-1] <= ' '))) lpszUrlCpy[--nLen]=0; - if(dwFlags & (URL_UNESCAPE | URL_FILE_USE_PATHURL)) + if((dwFlags & URL_UNESCAPE) || + ((dwFlags & URL_FILE_USE_PATHURL) && nByteLen >= sizeof(wszFile) + && !memcmp(wszFile, pszUrl, sizeof(wszFile)))) UrlUnescapeW(lpszUrlCpy, NULL, &nLen, URL_UNESCAPE_INPLACE); if((EscapeFlags = dwFlags & (URL_ESCAPE_UNSAFE | diff --git a/reactos/dll/win32/snmpapi/debug.h b/reactos/dll/win32/snmpapi/debug.h deleted file mode 100644 index 87cc8f3d872..00000000000 --- a/reactos/dll/win32/snmpapi/debug.h +++ /dev/null @@ -1,67 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS WinSock 2 Helper DLL for TCP/IP - * FILE: include/debug.h - * PURPOSE: Debugging support macros - * DEFINES: DBG - Enable debug output - * NASSERT - Disable assertions - */ -#ifndef __DEBUG_H -#define __DEBUG_H - -#define NORMAL_MASK 0x000000FF -#define SPECIAL_MASK 0xFFFFFF00 -#define MIN_TRACE 0x00000001 -#define MID_TRACE 0x00000002 -#define MAX_TRACE 0x00000003 - -#define DEBUG_ULTRA 0xFFFFFFFF - -ULONG DbgPrint(PCH Format,...); - -#if DBG - -extern DWORD DebugTraceLevel; - -#define WSH_DbgPrint(_t_, _x_) \ - if (((DebugTraceLevel & NORMAL_MASK) >= _t_) || \ - ((DebugTraceLevel & _t_) > NORMAL_MASK)) { \ - DbgPrint("(%hS:%d)(%hS) ", __FILE__, __LINE__, __FUNCTION__); \ - DbgPrint _x_; \ - } - -#ifdef ASSERT -#undef ASSERT -#endif - -#ifdef NASSERT -#define ASSERT(x) -#else /* NASSERT */ -#define ASSERT(x) if (!(x)) { WSH_DbgPrint(MIN_TRACE, ("Assertion "#x" failed at %s:%d\n", __FILE__, __LINE__)); ExitProcess(0); } -#endif /* NASSERT */ - -#else /* DBG */ - -#define WSH_DbgPrint(_t_, _x_) - -#define ASSERT(x) - -#endif /* DBG */ - - -#define assert(x) ASSERT(x) -#define assert_irql(x) ASSERT_IRQL(x) - - -#define UNIMPLEMENTED \ - WSH_DbgPrint(MIN_TRACE, ("(%s:%d)(%s) is unimplemented, \ - please try again later.\n", __FILE__, __LINE__, __FUNCTION__)); - -#define CHECKPOINT \ - WSH_DbgPrint(MIN_TRACE, ("\n")); - -#define CP CHECKPOINT - -#endif /* __DEBUG_H */ - -/* EOF */ diff --git a/reactos/dll/win32/snmpapi/main.c b/reactos/dll/win32/snmpapi/main.c index 0fabba444b6..1c4d1fa36cd 100644 --- a/reactos/dll/win32/snmpapi/main.c +++ b/reactos/dll/win32/snmpapi/main.c @@ -112,6 +112,8 @@ static void asn_any_free(AsnAny *any) any->asnType = ASN_NULL; } +static ULONGLONG startTime; + /*********************************************************************** * DllMain for SNMPAPI */ @@ -127,6 +129,7 @@ BOOL WINAPI DllMain( return FALSE; /* prefer native version */ case DLL_PROCESS_ATTACH: DisableThreadLibraryCalls(hInstDLL); + startTime = GetTickCount64(); break; case DLL_PROCESS_DETACH: break; @@ -135,6 +138,21 @@ BOOL WINAPI DllMain( return TRUE; } +/*********************************************************************** + * SnmpSvcGetUptime (SNMPAPI.@) + * + * BUGS + * This returns the number of centiseconds since the DLL was loaded, + * rather than the number of centiseconds since the SNMP service was + * started, since there isn't yet any SNMP service in Wine. + */ +DWORD WINAPI SnmpSvcGetUptime(void) +{ + ULONGLONG now = GetTickCount64(); + + return (now - startTime) / 10; +} + /*********************************************************************** * SnmpUtilDbgPrint (SNMPAPI.@) * @@ -145,7 +163,7 @@ BOOL WINAPI DllMain( * probably ignored by Microsoft's compiler in this case. So declare it * correctly in Wine so it works with all compilers. */ -VOID WINAPI SnmpUtilDbgPrint(INT loglevel, LPSTR format, ...) +VOID WINAPIV SnmpUtilDbgPrint(INT loglevel, LPSTR format, ...) { FIXME("(%d, %s)\n", loglevel, debugstr_a(format)); } diff --git a/reactos/dll/win32/snmpapi/snmpapi.c b/reactos/dll/win32/snmpapi/snmpapi.c deleted file mode 100644 index 99c67588527..00000000000 --- a/reactos/dll/win32/snmpapi/snmpapi.c +++ /dev/null @@ -1,227 +0,0 @@ -/* - * COPYRIGHT: See COPYING in the top level directory - * PROJECT: ReactOS Sockets 2 Simple Network Management Protocol API DLL - * FILE: snmpapi.c - * PURPOSE: DLL entry - * PROGRAMMERS: Robert Dickenson (robd@reactos.org) - * REVISIONS: - * RDD August 18, 2002 Created - */ -//#include "snmpapi.h" - -#include -#include - -#define SNMP_FUNC_TYPE WINAPI -#include -#include "debug.h" - -#if DBG - -/* See debug.h for debug/trace constants */ -DWORD DebugTraceLevel = MAX_TRACE; - -#endif /* DBG */ - - -DWORD dwUptimeStartTicks; - - -/* To make the linker happy */ -//VOID WINAPI KeBugCheck (ULONG BugCheckCode) {} - -//////////////////////////////////////////////////////////////////////////////// -/* -? SnmpSvcAddrIsIpx -? SnmpSvcAddrToSocket -? SnmpSvcGetEnterpriseOID -? SnmpTfxClose -? SnmpTfxOpen -? SnmpTfxQuery -? SnmpUtilAnsiToUnicode -? SnmpUtilUTF8ToUnicode -? SnmpUtilUnicodeToAnsi -? SnmpUtilUnicodeToUTF8 - */ -//////////////////////////////////////////////////////////////////////////////// - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpSvcAddrIsIpx(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpSvcAddrToSocket(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpSvcGetEnterpriseOID(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @implemented - */ -VOID -SNMP_FUNC_TYPE -SnmpSvcInitUptime() -{ - dwUptimeStartTicks = GetTickCount(); -} - - -/* - * @implemented - */ -DWORD -SNMP_FUNC_TYPE -SnmpSvcGetUptime() -{ - DWORD dwUptime; - DWORD dwTickCount = GetTickCount(); - dwUptime = dwTickCount - dwUptimeStartTicks; - return dwUptime; -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpSvcSetLogLevel(INT nLogLevel) -{ - switch (nLogLevel) { - case SNMP_LOG_SILENT: - break; - case SNMP_LOG_FATAL: - break; - case SNMP_LOG_ERROR: - break; - case SNMP_LOG_WARNING: - break; - case SNMP_LOG_TRACE: - break; - case SNMP_LOG_VERBOSE: - break; - } - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpSvcSetLogType(INT nLogType) -{ - switch (nLogType) { - case SNMP_OUTPUT_TO_CONSOLE: - break; - case SNMP_OUTPUT_TO_LOGFILE: - break; - case SNMP_OUTPUT_TO_DEBUGGER: - break; - } - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpTfxClose(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpTfxOpen(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpTfxQuery(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpUtilAnsiToUnicode(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpUtilUTF8ToUnicode(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpUtilUnicodeToAnsi(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - - -/* - * @unimplemented - */ -VOID -SNMP_FUNC_TYPE -SnmpUtilUnicodeToUTF8(void* unknown, void* unknown2) -{ - UNIMPLEMENTED -} - -/* EOF */ - diff --git a/reactos/dll/win32/snmpapi/snmpapi.rbuild b/reactos/dll/win32/snmpapi/snmpapi.rbuild index e0a5e9b012a..b361ddf082b 100644 --- a/reactos/dll/win32/snmpapi/snmpapi.rbuild +++ b/reactos/dll/win32/snmpapi/snmpapi.rbuild @@ -1,11 +1,11 @@ - + . include/reactos/wine + 0x600 ntdll wine main.c - snmpapi.c snmpapi.rc diff --git a/reactos/dll/win32/snmpapi/snmpapi.spec b/reactos/dll/win32/snmpapi/snmpapi.spec index fb8f792aeeb..208231ecfbe 100644 --- a/reactos/dll/win32/snmpapi/snmpapi.spec +++ b/reactos/dll/win32/snmpapi/snmpapi.spec @@ -1,17 +1,26 @@ -@ stdcall SnmpSvcAddrIsIpx(ptr ptr) -@ stdcall SnmpSvcAddrToSocket(ptr ptr) -@ stdcall SnmpSvcGetEnterpriseOID(ptr ptr) +@ stub SnmpSvcAddrIsIpx +@ stub SnmpSvcAddrToSocket +@ stub SnmpSvcBufRevAndCpy +@ stub SnmpSvcBufRevInPlace +@ stub SnmpSvcDecodeMessage +@ stub SnmpSvcEncodeMessage +@ stub SnmpSvcGenerateAuthFailTrap +@ stub SnmpSvcGenerateColdStartTrap +@ stub SnmpSvcGenerateLinkDownTrap +@ stub SnmpSvcGenerateLinkUpTrap +@ stub SnmpSvcGenerateTrap +@ stub SnmpSvcGenerateWarmStartTrap +@ stub SnmpSvcGetEnterpriseOID @ stdcall SnmpSvcGetUptime() -@ stdcall SnmpSvcInitUptime() -@ stdcall SnmpSvcSetLogLevel(long) -@ stdcall SnmpSvcSetLogType(long) -@ stdcall SnmpTfxClose(ptr ptr) -@ stdcall SnmpTfxOpen(ptr ptr) -@ stdcall SnmpTfxQuery(ptr ptr) -@ stdcall SnmpUtilAnsiToUnicode(ptr ptr) +@ stub SnmpSvcInitUptime +@ stub SnmpSvcReleaseMessage +@ stub SnmpSvcReportEvent +@ stub SnmpSvcSetLogLevel +@ stub SnmpSvcSetLogType +@ stub SnmpUtilAnsiToUnicode @ stdcall SnmpUtilAsnAnyCpy(ptr ptr) @ stdcall SnmpUtilAsnAnyFree(ptr) -@ cdecl SnmpUtilDbgPrint(long str) +@ varargs SnmpUtilDbgPrint(long str) @ stdcall SnmpUtilIdsToA(ptr long) @ stdcall SnmpUtilMemAlloc(long) @ stdcall SnmpUtilMemFree(ptr) @@ -28,9 +37,8 @@ @ stdcall SnmpUtilOidToA(ptr) @ stdcall SnmpUtilPrintAsnAny(ptr) @ stdcall SnmpUtilPrintOid(ptr) -@ stdcall SnmpUtilUTF8ToUnicode(ptr ptr) -@ stdcall SnmpUtilUnicodeToAnsi(ptr ptr) -@ stdcall SnmpUtilUnicodeToUTF8(ptr ptr) +@ stub SnmpUtilStrlenW +@ stub SnmpUtilUnicodeToAnsi @ stdcall SnmpUtilVarBindCpy(ptr ptr) @ stdcall SnmpUtilVarBindFree(ptr) @ stdcall SnmpUtilVarBindListCpy(ptr ptr) diff --git a/reactos/dll/win32/twain_32/Makefile.in b/reactos/dll/win32/twain_32/Makefile.in deleted file mode 100644 index 07539f6d287..00000000000 --- a/reactos/dll/win32/twain_32/Makefile.in +++ /dev/null @@ -1,23 +0,0 @@ -TOPSRCDIR = @top_srcdir@ -TOPOBJDIR = ../.. -SRCDIR = @srcdir@ -VPATH = @srcdir@ -MODULE = twain_32.dll -IMPORTS = user32 gdi32 kernel32 -EXTRALIBS = @SANELIBS@ -EXTRAINCL = @SANEINCL@ - -LDDLLFLAGS = @LDDLLFLAGS@ -SYMBOLFILE = $(MODULE).tmp.o - -C_SRCS = \ - capability.c \ - ds_audio.c \ - ds_ctrl.c \ - ds_image.c \ - dsm_ctrl.c \ - twain32_main.c - -@MAKE_DLL_RULES@ - -### Dependencies: diff --git a/reactos/dll/win32/urlmon/umon.c b/reactos/dll/win32/urlmon/umon.c index 7ce22cc6de8..9a54e11ea21 100644 --- a/reactos/dll/win32/urlmon/umon.c +++ b/reactos/dll/win32/urlmon/umon.c @@ -24,6 +24,8 @@ #include "winreg.h" #include "shlwapi.h" +#include "hlink.h" +#include "shellapi.h" #include "wine/debug.h" @@ -742,7 +744,27 @@ HRESULT WINAPI HlinkSimpleNavigateToString( LPCWSTR szTarget, LPCWSTR szLocation, LPCWSTR szTargetFrameName, IUnknown *pUnk, IBindCtx *pbc, IBindStatusCallback *pbsc, DWORD grfHLNF, DWORD dwReserved) { - FIXME("%s\n", debugstr_w( szTarget ) ); + FIXME("%s %s %s %p %p %p %u %u partial stub\n", debugstr_w( szTarget ), debugstr_w( szLocation ), + debugstr_w( szTargetFrameName ), pUnk, pbc, pbsc, grfHLNF, dwReserved); + + /* undocumented: 0 means HLNF_OPENINNEWWINDOW*/ + if (!grfHLNF) grfHLNF = HLNF_OPENINNEWWINDOW; + + if (grfHLNF == HLNF_OPENINNEWWINDOW) + { + SHELLEXECUTEINFOW sei; + static const WCHAR openW[] = { 'o', 'p', 'e', 'n', 0 }; + + memset(&sei, 0, sizeof(sei)); + sei.cbSize = sizeof(sei); + sei.lpVerb = openW; + sei.nShow = SW_SHOWNORMAL; + sei.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NO_CONSOLE; + sei.lpFile = szTarget; + + if (ShellExecuteExW(&sei)) return S_OK; + } + return E_NOTIMPL; } diff --git a/reactos/dll/win32/urlmon/uri.c b/reactos/dll/win32/urlmon/uri.c index 27b0863c2cb..df5ca8b1974 100644 --- a/reactos/dll/win32/urlmon/uri.c +++ b/reactos/dll/win32/urlmon/uri.c @@ -84,6 +84,21 @@ static HRESULT WINAPI Uri_GetPropertyBSTR(IUri *iface, Uri_PROPERTY uriProp, BST { Uri *This = URI_THIS(iface); FIXME("(%p)->(%d %p %x)\n", This, uriProp, pbstrProperty, dwFlags); + + if(!pbstrProperty) + return E_POINTER; + + if(uriProp > Uri_PROPERTY_STRING_LAST) { + /* Windows allocates an empty BSTR for invalid Uri_PROPERTY's. */ + *pbstrProperty = SysAllocStringLen(NULL, 0); + + /* It only returns S_FALSE for the ZONE property... */ + if(uriProp == Uri_PROPERTY_ZONE) + return S_FALSE; + else + return S_OK; + } + return E_NOTIMPL; } @@ -91,6 +106,14 @@ static HRESULT WINAPI Uri_GetPropertyLength(IUri *iface, Uri_PROPERTY uriProp, D { Uri *This = URI_THIS(iface); FIXME("(%p)->(%d %p %x)\n", This, uriProp, pcchProperty, dwFlags); + + if(!pcchProperty) + return E_INVALIDARG; + + /* Can only return a length for a property if it's a string. */ + if(uriProp > Uri_PROPERTY_STRING_LAST) + return E_INVALIDARG; + return E_NOTIMPL; } @@ -112,13 +135,22 @@ static HRESULT WINAPI Uri_GetPropertyDWORD(IUri *iface, Uri_PROPERTY uriProp, DW return E_NOTIMPL; } + if(uriProp < Uri_PROPERTY_DWORD_START) { + *pcchProperty = 0; + return E_INVALIDARG; + } + return E_NOTIMPL; } static HRESULT WINAPI Uri_HasProperty(IUri *iface, Uri_PROPERTY uriProp, BOOL *pfHasProperty) { Uri *This = URI_THIS(iface); - FIXME("(%p)->()\n", This); + FIXME("(%p)->(%d %p)\n", This, uriProp, pfHasProperty); + + if(!pfHasProperty) + return E_INVALIDARG; + return E_NOTIMPL; } @@ -192,6 +224,10 @@ static HRESULT WINAPI Uri_GetHost(IUri *iface, BSTR *pstrHost) { Uri *This = URI_THIS(iface); FIXME("(%p)->(%p)\n", This, pstrHost); + + if(!pstrHost) + return E_POINTER; + return E_NOTIMPL; } @@ -335,12 +371,28 @@ static HRESULT WINAPI Uri_GetProperties(IUri *iface, DWORD *pdwProperties) { Uri *This = URI_THIS(iface); FIXME("(%p)->(%p)\n", This, pdwProperties); + + if(!pdwProperties) + return E_INVALIDARG; + return E_NOTIMPL; } static HRESULT WINAPI Uri_IsEqual(IUri *iface, IUri *pUri, BOOL *pfEqual) { Uri *This = URI_THIS(iface); + TRACE("(%p)->(%p %p)\n", This, pUri, pfEqual); + + if(!pfEqual) + return E_POINTER; + + if(!pUri) { + *pfEqual = FALSE; + + /* For some reason Windows returns S_OK here... */ + return S_OK; + } + FIXME("(%p)->(%p %p)\n", This, pUri, pfEqual); return E_NOTIMPL; } diff --git a/reactos/dll/win32/urlmon/urlmon.rbuild b/reactos/dll/win32/urlmon/urlmon.rbuild index c904c5726a0..ffca7d9514b 100644 --- a/reactos/dll/win32/urlmon/urlmon.rbuild +++ b/reactos/dll/win32/urlmon/urlmon.rbuild @@ -35,7 +35,9 @@ uuid rpcrt4 ole32 + oleaut32 shlwapi + shell32 wininet user32 advapi32 diff --git a/reactos/dll/win32/user32/resources/obm_close.bmp b/reactos/dll/win32/user32/resources/obm_close.bmp index bb5bd6b54da..f800b069add 100644 Binary files a/reactos/dll/win32/user32/resources/obm_close.bmp and b/reactos/dll/win32/user32/resources/obm_close.bmp differ diff --git a/reactos/dll/win32/user32/resources/obm_mnarrow.bmp b/reactos/dll/win32/user32/resources/obm_mnarrow.bmp index ebcaa4b9737..58302e78842 100644 Binary files a/reactos/dll/win32/user32/resources/obm_mnarrow.bmp and b/reactos/dll/win32/user32/resources/obm_mnarrow.bmp differ diff --git a/reactos/dll/win32/user32/resources/ocr_appstarting.cur b/reactos/dll/win32/user32/resources/ocr_appstarting.cur index ed13fd97801..f85869feb05 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_appstarting.cur and b/reactos/dll/win32/user32/resources/ocr_appstarting.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_cross.cur b/reactos/dll/win32/user32/resources/ocr_cross.cur index 1eee76ce346..79a64023b24 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_cross.cur and b/reactos/dll/win32/user32/resources/ocr_cross.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_dragobject.cur b/reactos/dll/win32/user32/resources/ocr_dragobject.cur index 2bf0c732f20..45f593fb3e6 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_dragobject.cur and b/reactos/dll/win32/user32/resources/ocr_dragobject.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_hand.cur b/reactos/dll/win32/user32/resources/ocr_hand.cur index 9815d03bcc3..00b031ff807 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_hand.cur and b/reactos/dll/win32/user32/resources/ocr_hand.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_help.cur b/reactos/dll/win32/user32/resources/ocr_help.cur index 52cd8599491..28fc1f9be79 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_help.cur and b/reactos/dll/win32/user32/resources/ocr_help.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_ibeam.cur b/reactos/dll/win32/user32/resources/ocr_ibeam.cur index 517e1104d91..f8b53aa5c28 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_ibeam.cur and b/reactos/dll/win32/user32/resources/ocr_ibeam.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_icon.cur b/reactos/dll/win32/user32/resources/ocr_icon.cur index 223b3b3a814..5db254f64d7 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_icon.cur and b/reactos/dll/win32/user32/resources/ocr_icon.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_no.cur b/reactos/dll/win32/user32/resources/ocr_no.cur index f88fbd5c9a6..363347bc438 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_no.cur and b/reactos/dll/win32/user32/resources/ocr_no.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_normal.cur b/reactos/dll/win32/user32/resources/ocr_normal.cur index 6bbf28a4bae..a7d5afc1b37 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_normal.cur and b/reactos/dll/win32/user32/resources/ocr_normal.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_size.cur b/reactos/dll/win32/user32/resources/ocr_size.cur index d7610fa9227..bb8e4ea94f4 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_size.cur and b/reactos/dll/win32/user32/resources/ocr_size.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_sizeall.cur b/reactos/dll/win32/user32/resources/ocr_sizeall.cur index d7610fa9227..bb8e4ea94f4 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_sizeall.cur and b/reactos/dll/win32/user32/resources/ocr_sizeall.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_sizenesw.cur b/reactos/dll/win32/user32/resources/ocr_sizenesw.cur index 301adb60744..d2198e8fac4 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_sizenesw.cur and b/reactos/dll/win32/user32/resources/ocr_sizenesw.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_sizens.cur b/reactos/dll/win32/user32/resources/ocr_sizens.cur index d227473dd12..f5ae7dc281a 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_sizens.cur and b/reactos/dll/win32/user32/resources/ocr_sizens.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_sizenwse.cur b/reactos/dll/win32/user32/resources/ocr_sizenwse.cur index d0c6c256e77..a4933c51df8 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_sizenwse.cur and b/reactos/dll/win32/user32/resources/ocr_sizenwse.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_sizewe.cur b/reactos/dll/win32/user32/resources/ocr_sizewe.cur index c5e3a15f83f..6d682254de2 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_sizewe.cur and b/reactos/dll/win32/user32/resources/ocr_sizewe.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_up.cur b/reactos/dll/win32/user32/resources/ocr_up.cur index c5940471efd..906e8a0a6de 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_up.cur and b/reactos/dll/win32/user32/resources/ocr_up.cur differ diff --git a/reactos/dll/win32/user32/resources/ocr_wait.cur b/reactos/dll/win32/user32/resources/ocr_wait.cur index 2be0cbb1ac1..21404185e12 100644 Binary files a/reactos/dll/win32/user32/resources/ocr_wait.cur and b/reactos/dll/win32/user32/resources/ocr_wait.cur differ diff --git a/reactos/dll/win32/user32/resources/oic_bang.ico b/reactos/dll/win32/user32/resources/oic_bang.ico index c0eab380c16..e8075da0c0c 100644 Binary files a/reactos/dll/win32/user32/resources/oic_bang.ico and b/reactos/dll/win32/user32/resources/oic_bang.ico differ diff --git a/reactos/dll/win32/user32/resources/oic_hand.ico b/reactos/dll/win32/user32/resources/oic_hand.ico index 178a4a6a5af..b0380690e31 100644 Binary files a/reactos/dll/win32/user32/resources/oic_hand.ico and b/reactos/dll/win32/user32/resources/oic_hand.ico differ diff --git a/reactos/dll/win32/user32/resources/oic_note.ico b/reactos/dll/win32/user32/resources/oic_note.ico index 484634f0604..08303e9b4a8 100644 Binary files a/reactos/dll/win32/user32/resources/oic_note.ico and b/reactos/dll/win32/user32/resources/oic_note.ico differ diff --git a/reactos/dll/win32/user32/resources/oic_ques.ico b/reactos/dll/win32/user32/resources/oic_ques.ico index 85dd1c0058c..43d2b85b618 100644 Binary files a/reactos/dll/win32/user32/resources/oic_ques.ico and b/reactos/dll/win32/user32/resources/oic_ques.ico differ diff --git a/reactos/dll/win32/user32/resources/oic_sample.ico b/reactos/dll/win32/user32/resources/oic_sample.ico index 787ca71f7ff..8cdda91509f 100644 Binary files a/reactos/dll/win32/user32/resources/oic_sample.ico and b/reactos/dll/win32/user32/resources/oic_sample.ico differ diff --git a/reactos/dll/win32/usp10/bidi.c b/reactos/dll/win32/usp10/bidi.c index 28b5d3e76ce..83c7873352d 100644 --- a/reactos/dll/win32/usp10/bidi.c +++ b/reactos/dll/win32/usp10/bidi.c @@ -859,7 +859,7 @@ int BIDI_ReorderV2lLevel(int level, int *pIndexs, const BYTE* plevel, int cch, B return ich; } -/* Applies the reorder in reverse. Taking an already reordered string and returing the original */ +/* Applies the reorder in reverse. Taking an already reordered string and returning the original */ int BIDI_ReorderL2vLevel(int level, int *pIndexs, const BYTE* plevel, int cch, BOOL fReverse) { int ich = 0; diff --git a/reactos/dll/win32/usp10/mirror.c b/reactos/dll/win32/usp10/mirror.c new file mode 100644 index 00000000000..65a5a280ec8 --- /dev/null +++ b/reactos/dll/win32/usp10/mirror.c @@ -0,0 +1,437 @@ +/* Unicode BiDi mirroring */ +/* generated from http://www.unicode.org/Public/5.2.0/ucd/BidiMirroring.txt */ +/* DO NOT EDIT!! */ + +#include "wine/unicode.h" + +const WCHAR wine_mirror_map[3292] = +{ + /* index */ + 0x01d8, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x029e, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0303, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x03ca, 0x0100, 0x04c2, 0x05c1, 0x0100, 0x0100, 0x0100, 0x0659, + 0x0100, 0x0749, 0x0847, 0x0100, 0x0100, 0x0100, 0x0945, 0x0100, + 0x0a3d, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, + 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0ae4, 0x0bdc, + /* defaults */ + 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x0028 .. 0x00ff */ + 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0xfffe, 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, + 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0xfffe, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0xfffe, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0010, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0xfff0, 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, 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, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x0f3a .. 0x0fff */ + 0x0001, 0xffff, 0x0001, 0xffff, 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, 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, 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, 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, + 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, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x169b .. 0x16ff */ + 0x0001, 0xffff, 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, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x2039 .. 0x20ff */ + 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 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, 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, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 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, 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, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x2208 .. 0x22ff */ + 0x0003, 0x0003, 0x0003, 0xfffd, 0xfffd, 0xfffd, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x07e0, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x008a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0001, + 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0720, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, 0x0838, 0x0000, + 0x083c, 0x083a, 0x0000, 0x083a, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0xff76, 0x0000, 0x0000, + 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, + 0x0001, 0xffff, 0x0008, 0x0008, 0x0008, 0x0000, 0x0007, 0x0007, + 0x0000, 0x0000, 0xfff8, 0xfff8, 0xfff8, 0xfff9, 0xfff9, 0x0000, + /* 0x2301 .. 0x23ff */ + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0xffff, 0x0001, 0xffff, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0xffff, 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, 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, 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, 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, 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, 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, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x2768 .. 0x27ff */ + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 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, 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, + 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, 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, + 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, + 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x2910 .. 0x29ff */ + 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, + 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0003, 0x0001, 0xffff, + 0xfffd, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, + 0xffff, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0xf8e0, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0xffff, 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0xffff, 0x0001, 0xffff, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, + 0x0001, 0xffff, 0x0001, 0xffff, 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, 0xf820, 0x0000, 0x0000, + 0x0001, 0xffff, 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, + /* 0x2a02 .. 0x2aff */ + 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0xffff, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0xffff, 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, + 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, + 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0xffff, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0001, 0xffff, 0x0000, + 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, + 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, + 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0xf7c8, 0x0000, 0x0000, 0x0000, + 0x0000, 0xf7c6, 0xf7c4, 0xf7c6, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, + 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x2e02 .. 0x2eff */ + 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0001, + 0xffff, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0xffff, 0x0000, 0x0000, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 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, 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, 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, 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, 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, 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, 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, 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, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0x3008 .. 0x30ff */ + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0000, 0x0000, 0x0001, 0xffff, 0x0001, 0xffff, + 0x0001, 0xffff, 0x0001, 0xffff, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, + /* 0xfe59 .. 0xfeff */ + 0x0001, 0xffff, 0x0001, 0xffff, 0x0001, 0xffff, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0xffff, 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, 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, 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, + 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, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, + /* 0xff08 .. 0xffff */ + 0x0001, 0xffff, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0xfffe, 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, + 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0xfffe, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0002, 0x0000, 0xfffe, 0x0000, 0x0001, + 0xffff, 0x0000, 0x0001, 0xffff, 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, 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, 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, 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, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 +}; diff --git a/reactos/dll/win32/usp10/shape.c b/reactos/dll/win32/usp10/shape.c new file mode 100644 index 00000000000..0a4f5b90771 --- /dev/null +++ b/reactos/dll/win32/usp10/shape.c @@ -0,0 +1,742 @@ +/* + * Implementation of Shaping for the Uniscribe Script Processor (usp10.dll) + * + * Copyright 2010 CodeWeavers, Aric Stewart + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + * + */ +#include + +#include "windef.h" +#include "winbase.h" +#include "wingdi.h" +#include "winuser.h" +#include "winnls.h" +#include "usp10.h" +#include "winternl.h" + +#include "usp10_internal.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(uniscribe); + +#define FIRST_ARABIC_CHAR 0x0600 +#define LAST_ARABIC_CHAR 0x06ff + +extern const unsigned short wine_shaping_table[]; +extern const unsigned short wine_shaping_forms[LAST_ARABIC_CHAR - FIRST_ARABIC_CHAR + 1][4]; + +enum joining_types { + jtU, + jtT, + jtR, + jtL, + jtD, + jtC +}; + +enum joined_forms { + Xn=0, + Xr, + Xl, + Xm +}; + +#ifdef WORDS_BIGENDIAN +#define GET_BE_WORD(x) (x) +#else +#define GET_BE_WORD(x) RtlUshortByteSwap(x) +#endif + +/* These are all structures needed for the GSUB table */ +#define MS_MAKE_TAG( _x1, _x2, _x3, _x4 ) \ + ( ( (ULONG)_x4 << 24 ) | \ + ( (ULONG)_x3 << 16 ) | \ + ( (ULONG)_x2 << 8 ) | \ + (ULONG)_x1 ) + +#define GSUB_TAG MS_MAKE_TAG('G', 'S', 'U', 'B') +#define GSUB_E_NOFEATURE -2 +#define GSUB_E_NOGLYPH -1 + +typedef struct { + DWORD version; + WORD ScriptList; + WORD FeatureList; + WORD LookupList; +} GSUB_Header; + +typedef struct { + CHAR ScriptTag[4]; + WORD Script; +} GSUB_ScriptRecord; + +typedef struct { + WORD ScriptCount; + GSUB_ScriptRecord ScriptRecord[1]; +} GSUB_ScriptList; + +typedef struct { + CHAR LangSysTag[4]; + WORD LangSys; +} GSUB_LangSysRecord; + +typedef struct { + WORD DefaultLangSys; + WORD LangSysCount; + GSUB_LangSysRecord LangSysRecord[1]; +} GSUB_Script; + +typedef struct { + WORD LookupOrder; /* Reserved */ + WORD ReqFeatureIndex; + WORD FeatureCount; + WORD FeatureIndex[1]; +} GSUB_LangSys; + +typedef struct { + CHAR FeatureTag[4]; + WORD Feature; +} GSUB_FeatureRecord; + +typedef struct { + WORD FeatureCount; + GSUB_FeatureRecord FeatureRecord[1]; +} GSUB_FeatureList; + +typedef struct { + WORD FeatureParams; /* Reserved */ + WORD LookupCount; + WORD LookupListIndex[1]; +} GSUB_Feature; + +typedef struct { + WORD LookupCount; + WORD Lookup[1]; +} GSUB_LookupList; + +typedef struct { + WORD LookupType; + WORD LookupFlag; + WORD SubTableCount; + WORD SubTable[1]; +} GSUB_LookupTable; + +typedef struct { + WORD CoverageFormat; + WORD GlyphCount; + WORD GlyphArray[1]; +} GSUB_CoverageFormat1; + +typedef struct { + WORD Start; + WORD End; + WORD StartCoverageIndex; +} GSUB_RangeRecord; + +typedef struct { + WORD CoverageFormat; + WORD RangeCount; + GSUB_RangeRecord RangeRecord[1]; +} GSUB_CoverageFormat2; + +typedef struct { + WORD SubstFormat; /* = 1 */ + WORD Coverage; + WORD DeltaGlyphID; +} GSUB_SingleSubstFormat1; + +typedef struct { + WORD SubstFormat; /* = 2 */ + WORD Coverage; + WORD GlyphCount; + WORD Substitute[1]; +}GSUB_SingleSubstFormat2; + +typedef struct { + WORD SubstFormat; /* = 1 */ + WORD Coverage; + WORD LigSetCount; + WORD LigatureSet[1]; +}GSUB_LigatureSubstFormat1; + +typedef struct { + WORD LigatureCount; + WORD Ligature[1]; +}GSUB_LigatureSet; + +typedef struct{ + WORD LigGlyph; + WORD CompCount; + WORD Component[1]; +}GSUB_Ligature; + +/* the orders of joined_forms and contextual_features need to line up */ +static const char* contextual_features[] = +{ + "isol", + "fina", + "init", + "medi" +}; + +static const char* arabic_GSUB_features[] = +{ + "rlig", + "calt", + "liga", + "dlig", + "cswh", + "mset", + NULL +}; + +static INT GSUB_is_glyph_covered(LPCVOID table , UINT glyph) +{ + const GSUB_CoverageFormat1* cf1; + + cf1 = table; + + if (GET_BE_WORD(cf1->CoverageFormat) == 1) + { + int count = GET_BE_WORD(cf1->GlyphCount); + int i; + TRACE("Coverage Format 1, %i glyphs\n",count); + for (i = 0; i < count; i++) + if (glyph == GET_BE_WORD(cf1->GlyphArray[i])) + return i; + return -1; + } + else if (GET_BE_WORD(cf1->CoverageFormat) == 2) + { + const GSUB_CoverageFormat2* cf2; + int i; + int count; + cf2 = (const GSUB_CoverageFormat2*)cf1; + + count = GET_BE_WORD(cf2->RangeCount); + TRACE("Coverage Format 2, %i ranges\n",count); + for (i = 0; i < count; i++) + { + if (glyph < GET_BE_WORD(cf2->RangeRecord[i].Start)) + return -1; + if ((glyph >= GET_BE_WORD(cf2->RangeRecord[i].Start)) && + (glyph <= GET_BE_WORD(cf2->RangeRecord[i].End))) + { + return (GET_BE_WORD(cf2->RangeRecord[i].StartCoverageIndex) + + glyph - GET_BE_WORD(cf2->RangeRecord[i].Start)); + } + } + return -1; + } + else + ERR("Unknown CoverageFormat %i\n",GET_BE_WORD(cf1->CoverageFormat)); + + return -1; +} + +static const GSUB_Script* GSUB_get_script_table( const GSUB_Header* header, const char* tag) +{ + const GSUB_ScriptList *script; + const GSUB_Script *deflt = NULL; + int i; + script = (const GSUB_ScriptList*)((const BYTE*)header + GET_BE_WORD(header->ScriptList)); + + TRACE("%i scripts in this font\n",GET_BE_WORD(script->ScriptCount)); + for (i = 0; i < GET_BE_WORD(script->ScriptCount); i++) + { + const GSUB_Script *scr; + int offset; + + offset = GET_BE_WORD(script->ScriptRecord[i].Script); + scr = (const GSUB_Script*)((const BYTE*)script + offset); + + if (strncmp(script->ScriptRecord[i].ScriptTag, tag,4)==0) + return scr; + if (strncmp(script->ScriptRecord[i].ScriptTag, "dflt",4)==0) + deflt = scr; + } + return deflt; +} + +static const GSUB_LangSys* GSUB_get_lang_table( const GSUB_Script* script, const char* tag) +{ + int i; + int offset; + const GSUB_LangSys *Lang; + + TRACE("Deflang %x, LangCount %i\n",GET_BE_WORD(script->DefaultLangSys), GET_BE_WORD(script->LangSysCount)); + + for (i = 0; i < GET_BE_WORD(script->LangSysCount) ; i++) + { + offset = GET_BE_WORD(script->LangSysRecord[i].LangSys); + Lang = (const GSUB_LangSys*)((const BYTE*)script + offset); + + if ( strncmp(script->LangSysRecord[i].LangSysTag,tag,4)==0) + return Lang; + } + offset = GET_BE_WORD(script->DefaultLangSys); + if (offset) + { + Lang = (const GSUB_LangSys*)((const BYTE*)script + offset); + return Lang; + } + return NULL; +} + +static const GSUB_Feature * GSUB_get_feature(const GSUB_Header *header, const GSUB_LangSys *lang, const char* tag) +{ + int i; + const GSUB_FeatureList *feature; + feature = (const GSUB_FeatureList*)((const BYTE*)header + GET_BE_WORD(header->FeatureList)); + + TRACE("%i features\n",GET_BE_WORD(lang->FeatureCount)); + for (i = 0; i < GET_BE_WORD(lang->FeatureCount); i++) + { + int index = GET_BE_WORD(lang->FeatureIndex[i]); + if (strncmp(feature->FeatureRecord[index].FeatureTag,tag,4)==0) + { + const GSUB_Feature *feat; + feat = (const GSUB_Feature*)((const BYTE*)feature + GET_BE_WORD(feature->FeatureRecord[index].Feature)); + return feat; + } + } + return NULL; +} + +static INT GSUB_apply_SingleSubst(const GSUB_LookupTable *look, WORD *glyphs, INT glyph_index, INT write_dir, INT *glyph_count) +{ + int j; + TRACE("Single Substitution Subtable\n"); + + for (j = 0; j < GET_BE_WORD(look->SubTableCount); j++) + { + int offset; + const GSUB_SingleSubstFormat1 *ssf1; + offset = GET_BE_WORD(look->SubTable[j]); + ssf1 = (const GSUB_SingleSubstFormat1*)((const BYTE*)look+offset); + if (GET_BE_WORD(ssf1->SubstFormat) == 1) + { + int offset = GET_BE_WORD(ssf1->Coverage); + TRACE(" subtype 1, delta %i\n", GET_BE_WORD(ssf1->DeltaGlyphID)); + if (GSUB_is_glyph_covered((const BYTE*)ssf1+offset, glyphs[glyph_index]) != -1) + { + TRACE(" Glyph 0x%x ->",glyphs[glyph_index]); + glyphs[glyph_index] = glyphs[glyph_index] + GET_BE_WORD(ssf1->DeltaGlyphID); + TRACE(" 0x%x\n",glyphs[glyph_index]); + return glyph_index + 1; + } + } + else + { + const GSUB_SingleSubstFormat2 *ssf2; + INT index; + INT offset; + + ssf2 = (const GSUB_SingleSubstFormat2 *)ssf1; + offset = GET_BE_WORD(ssf1->Coverage); + TRACE(" subtype 2, glyph count %i\n", GET_BE_WORD(ssf2->GlyphCount)); + index = GSUB_is_glyph_covered((const BYTE*)ssf2+offset, glyphs[glyph_index]); + TRACE(" Coverage index %i\n",index); + if (index != -1) + { + TRACE(" Glyph is 0x%x ->",glyphs[glyph_index]); + glyphs[glyph_index] = GET_BE_WORD(ssf2->Substitute[index]); + TRACE("0x%x\n",glyphs[glyph_index]); + return glyph_index + 1; + } + } + } + return GSUB_E_NOGLYPH; +} + +static INT GSUB_apply_LigatureSubst(const GSUB_LookupTable *look, WORD *glyphs, INT glyph_index, INT write_dir, INT *glyph_count) +{ + int j; + + TRACE("Ligature Substitution Subtable\n"); + for (j = 0; j < GET_BE_WORD(look->SubTableCount); j++) + { + const GSUB_LigatureSubstFormat1 *lsf1; + int offset,index; + + offset = GET_BE_WORD(look->SubTable[j]); + lsf1 = (const GSUB_LigatureSubstFormat1*)((const BYTE*)look+offset); + offset = GET_BE_WORD(lsf1->Coverage); + index = GSUB_is_glyph_covered((const BYTE*)lsf1+offset, glyphs[glyph_index]); + TRACE(" Coverage index %i\n",index); + if (index != -1) + { + const GSUB_LigatureSet *ls; + int k, count; + + offset = GET_BE_WORD(lsf1->LigatureSet[index]); + ls = (const GSUB_LigatureSet*)((const BYTE*)lsf1+offset); + count = GET_BE_WORD(ls->LigatureCount); + TRACE(" LigatureSet has %i members\n",count); + for (k = 0; k < count; k++) + { + const GSUB_Ligature *lig; + int CompCount,l,CompIndex; + + offset = GET_BE_WORD(ls->Ligature[k]); + lig = (const GSUB_Ligature*)((const BYTE*)ls+offset); + CompCount = GET_BE_WORD(lig->CompCount) - 1; + CompIndex = glyph_index+write_dir; + for (l = 0; l < CompCount && CompIndex >= 0 && CompIndex < *glyph_count; l++) + { + int CompGlyph; + CompGlyph = GET_BE_WORD(lig->Component[l]); + if (CompGlyph != glyphs[CompIndex]) + break; + CompIndex += write_dir; + } + if (l == CompCount) + { + int replaceIdx = glyph_index; + if (write_dir < 0) + replaceIdx = glyph_index - CompCount; + + TRACE(" Glyph is 0x%x (+%i) ->",glyphs[glyph_index],CompCount); + glyphs[replaceIdx] = GET_BE_WORD(lig->LigGlyph); + TRACE("0x%x\n",glyphs[replaceIdx]); + if (CompCount > 0) + { + int j; + for (j = replaceIdx + 1; j < *glyph_count; j++) + glyphs[j] =glyphs[j+CompCount]; + *glyph_count = *glyph_count - CompCount; + } + return replaceIdx + 1; + } + } + } + } + return GSUB_E_NOGLYPH; +} + +static INT GSUB_apply_lookup(const GSUB_LookupList* lookup, INT lookup_index, WORD *glyphs, INT glyph_index, INT write_dir, INT *glyph_count) +{ + int offset; + const GSUB_LookupTable *look; + + offset = GET_BE_WORD(lookup->Lookup[lookup_index]); + look = (const GSUB_LookupTable*)((const BYTE*)lookup + offset); + TRACE("type %i, flag %x, subtables %i\n",GET_BE_WORD(look->LookupType),GET_BE_WORD(look->LookupFlag),GET_BE_WORD(look->SubTableCount)); + switch(GET_BE_WORD(look->LookupType)) + { + case 1: + return GSUB_apply_SingleSubst(look, glyphs, glyph_index, write_dir, glyph_count); + case 4: + return GSUB_apply_LigatureSubst(look, glyphs, glyph_index, write_dir, glyph_count); + default: + FIXME("We do not handle SubType %i\n",GET_BE_WORD(look->LookupType)); + } + return GSUB_E_NOGLYPH; +} + +static INT GSUB_apply_feature(const GSUB_Header * header, const GSUB_Feature* feature, WORD *glyphs, INT glyph_index, INT write_dir, INT *glyph_count) +{ + int i; + int out_index = GSUB_E_NOGLYPH; + const GSUB_LookupList *lookup; + + lookup = (const GSUB_LookupList*)((const BYTE*)header + GET_BE_WORD(header->LookupList)); + + TRACE("%i lookups\n", GET_BE_WORD(feature->LookupCount)); + for (i = 0; i < GET_BE_WORD(feature->LookupCount); i++) + { + out_index = GSUB_apply_lookup(lookup, GET_BE_WORD(feature->LookupListIndex[i]), glyphs, glyph_index, write_dir, glyph_count); + if (out_index != GSUB_E_NOGLYPH) + break; + } + if (out_index == GSUB_E_NOGLYPH) + TRACE("lookups found no glyphs\n"); + return out_index; +} + +static const char* get_opentype_script(HDC hdc, SCRIPT_ANALYSIS *psa) +{ + UINT charset; + + switch (psa->eScript) + { + case Script_Arabic: + return "arab"; + case Script_Syriac: + return "syrc"; + case Script_Hebrew: + return "hebr"; + case Script_Latin: + case Script_Numeric: + case Script_CR: + case Script_LF: + return "latn"; + } + + /* + * fall back to the font charset + */ + charset = GetTextCharsetInfo(hdc, NULL, 0x0); + switch (charset) + { + case ANSI_CHARSET: return "latn"; + case BALTIC_CHARSET: return "latn"; /* ?? */ + case CHINESEBIG5_CHARSET: return "hani"; + case EASTEUROPE_CHARSET: return "latn"; /* ?? */ + case GB2312_CHARSET: return "hani"; + case GREEK_CHARSET: return "grek"; + case HANGUL_CHARSET: return "hang"; + case RUSSIAN_CHARSET: return "cyrl"; + case SHIFTJIS_CHARSET: return "kana"; + case TURKISH_CHARSET: return "latn"; /* ?? */ + case VIETNAMESE_CHARSET: return "latn"; + case JOHAB_CHARSET: return "latn"; /* ?? */ + case ARABIC_CHARSET: return "arab"; + case HEBREW_CHARSET: return "hebr"; + case THAI_CHARSET: return "thai"; + default: return "latn"; + } +} + +static INT apply_GSUB_feature_to_glyph(HDC hdc, SCRIPT_ANALYSIS *psa, void* GSUB_Table, WORD *glyphs, INT index, INT write_dir, INT* glyph_count, const char* feat) +{ + const GSUB_Header *header; + const GSUB_Script *script; + const GSUB_LangSys *language; + const GSUB_Feature *feature; + + if (!GSUB_Table) + return GSUB_E_NOFEATURE; + + header = GSUB_Table; + + script = GSUB_get_script_table(header, get_opentype_script(hdc,psa)); + if (!script) + { + TRACE("Script not found\n"); + return GSUB_E_NOFEATURE; + } + language = GSUB_get_lang_table(script, "xxxx"); /* Need to get Lang tag */ + if (!language) + { + TRACE("Language not found\n"); + return GSUB_E_NOFEATURE; + } + feature = GSUB_get_feature(header, language, feat); + if (!feature) + { + TRACE("%s feature not found\n",feat); + return GSUB_E_NOFEATURE; + } + TRACE("applying feature %s\n",feat); + return GSUB_apply_feature(header, feature, glyphs, index, write_dir, glyph_count); +} + +static VOID *load_gsub_table(HDC hdc) +{ + VOID* GSUB_Table = NULL; + int length = GetFontData(hdc, GSUB_TAG , 0, NULL, 0); + if (length != GDI_ERROR) + { + GSUB_Table = HeapAlloc(GetProcessHeap(),0,length); + GetFontData(hdc, GSUB_TAG , 0, GSUB_Table, length); + TRACE("Loaded GSUB table of %i bytes\n",length); + } + return GSUB_Table; +} + +static int apply_GSUB_feature(HDC hdc, SCRIPT_ANALYSIS *psa, void* GSUB_Table, WORD *pwOutGlyphs, int write_dir, INT* pcGlyphs, const char* feat) +{ + int i; + + if (GSUB_Table) + { + const GSUB_Header *header; + const GSUB_Script *script; + const GSUB_LangSys *language; + const GSUB_Feature *feature; + + if (!GSUB_Table) + return GSUB_E_NOFEATURE; + + header = GSUB_Table; + + script = GSUB_get_script_table(header, get_opentype_script(hdc,psa)); + if (!script) + { + TRACE("Script not found\n"); + return GSUB_E_NOFEATURE; + } + language = GSUB_get_lang_table(script, "xxxx"); + if (!language) + { + TRACE("Language not found\n"); + return GSUB_E_NOFEATURE; + } + feature = GSUB_get_feature(header, language, feat); + if (!feature) + { + TRACE("%s feature not found\n",feat); + return GSUB_E_NOFEATURE; + } + + i = 0; + TRACE("applying feature %s\n",feat); + while(i < *pcGlyphs) + { + INT nextIndex; + nextIndex = GSUB_apply_feature(header, feature, pwOutGlyphs, i, write_dir, pcGlyphs); + if (nextIndex > GSUB_E_NOGLYPH) + i = nextIndex; + else + i++; + } + return *pcGlyphs; + } + return GSUB_E_NOFEATURE; +} + +static CHAR neighbour_joining_type(int i, int delta, const CHAR* context_type, INT cchLen, SCRIPT_ANALYSIS *psa) +{ + if (i + delta < 0) + { + if (psa->fLinkBefore) + return jtR; + else + return jtU; + } + if ( i+ delta >= cchLen) + { + if (psa->fLinkAfter) + return jtL; + else + return jtU; + } + + i += delta; + + if (context_type[i] == jtT) + return neighbour_joining_type(i,delta,context_type,cchLen,psa); + else + return context_type[i]; +} + +static inline BOOL right_join_causing(CHAR joining_type) +{ + return (joining_type == jtL || joining_type == jtD || joining_type == jtC); +} + +static inline BOOL left_join_causing(CHAR joining_type) +{ + return (joining_type == jtR || joining_type == jtD || joining_type == jtC); +} + +/* SHAPE_ShapeArabicGlyphs + */ +void SHAPE_ShapeArabicGlyphs(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *psa, WCHAR* pwcChars, INT cChars, WORD* pwOutGlyphs, INT* pcGlyphs, INT cMaxGlyphs) +{ + CHAR *context_type; + INT *context_shape; + INT dirR, dirL; + int i; + + if (psa->eScript != Script_Arabic) + return; + + if (*pcGlyphs != cChars) + { + ERR("Number of Glyphs and Chars need to match at the beginning\n"); + return; + } + + + if (!psa->fLogicalOrder && psa->fRTL) + { + dirR = 1; + dirL = -1; + } + else + { + dirR = -1; + dirL = 1; + } + + if (!psc->GSUB_Table) + psc->GSUB_Table = load_gsub_table(hdc); + + context_type = HeapAlloc(GetProcessHeap(),0,cChars); + context_shape = HeapAlloc(GetProcessHeap(),0,sizeof(INT) * cChars); + + for (i = 0; i < cChars; i++) + context_type[i] = wine_shaping_table[wine_shaping_table[pwcChars[i] >> 8] + (pwcChars[i] & 0xff)]; + + for (i = 0; i < cChars; i++) + { + if (context_type[i] == jtR && right_join_causing(neighbour_joining_type(i,dirR,context_type,cChars,psa))) + context_shape[i] = Xr; + else if (context_type[i] == jtL && left_join_causing(neighbour_joining_type(i,dirL,context_type,cChars,psa))) + context_shape[i] = Xl; + else if (context_type[i] == jtD && left_join_causing(neighbour_joining_type(i,dirL,context_type,cChars,psa)) && right_join_causing(neighbour_joining_type(i,dirR,context_type,cChars,psa))) + context_shape[i] = Xm; + else if (context_type[i] == jtD && right_join_causing(neighbour_joining_type(i,dirR,context_type,cChars,psa))) + context_shape[i] = Xr; + else if (context_type[i] == jtD && left_join_causing(neighbour_joining_type(i,dirL,context_type,cChars,psa))) + context_shape[i] = Xl; + else + context_shape[i] = Xn; + } + + /* Contextual Shaping */ + i = 0; + while(i < *pcGlyphs) + { + BOOL shaped = FALSE; + + if (psc->GSUB_Table) + { + INT nextIndex; + nextIndex = apply_GSUB_feature_to_glyph(hdc, psa, psc->GSUB_Table, pwOutGlyphs, i, dirL, pcGlyphs, contextual_features[context_shape[i]]); + if (nextIndex > GSUB_E_NOGLYPH) + i = nextIndex; + shaped = (nextIndex > GSUB_E_NOGLYPH); + } + + if (!shaped) + { + WORD newGlyph = pwOutGlyphs[i]; + if (pwcChars[i] >= FIRST_ARABIC_CHAR && pwcChars[i] <= LAST_ARABIC_CHAR) + { + /* fall back to presentation form B */ + WCHAR context_char = wine_shaping_forms[pwcChars[i] - FIRST_ARABIC_CHAR][context_shape[i]]; + if (context_char != pwcChars[i] && GetGlyphIndicesW(hdc, &context_char, 1, &newGlyph, 0) != GDI_ERROR && newGlyph != 0x0000) + pwOutGlyphs[i] = newGlyph; + } + i++; + } + } + + i = 0; + while (arabic_GSUB_features[i] != NULL) + { + apply_GSUB_feature(hdc, psa, psc->GSUB_Table, pwOutGlyphs, dirL, pcGlyphs, arabic_GSUB_features[i]); + i++; + } + + HeapFree(GetProcessHeap(),0,context_shape); + HeapFree(GetProcessHeap(),0,context_type); +} diff --git a/reactos/dll/win32/usp10/shaping.c b/reactos/dll/win32/usp10/shaping.c new file mode 100644 index 00000000000..ec9abbdedec --- /dev/null +++ b/reactos/dll/win32/usp10/shaping.c @@ -0,0 +1,1455 @@ +/* Unicode Arabic shaping */ +/* generated from http://www.unicode.org/Public/5.2.0/ucd/ArabicShaping.txt */ +/* DO NOT EDIT!! */ + +#include "wine/unicode.h" + +const unsigned short wine_shaping_table[9472] = +{ + /* offsets */ + 0x0100, 0x0200, 0x0200, 0x0300, 0x0400, 0x0500, 0x0600, 0x0700, + 0x0800, 0x0900, 0x0a00, 0x0b00, 0x0c00, 0x0d00, 0x0e00, 0x0f00, + 0x1000, 0x0200, 0x0200, 0x1100, 0x0200, 0x0200, 0x0200, 0x1200, + 0x1300, 0x1400, 0x1500, 0x1600, 0x1700, 0x1800, 0x0200, 0x0200, + 0x1900, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x1a00, 0x1b00, 0x0200, 0x0200, + 0x1c00, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x1d00, 0x0200, + 0x1e00, 0x1f00, 0x2000, 0x2100, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, 0x0200, + 0x0200, 0x0200, 0x0200, 0x2200, 0x0200, 0x0200, 0x2300, 0x2400, + /* values */ + 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, 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, 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, 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, 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, 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, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 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, 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, + 0x0000, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0000, 0x0001, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0102, 0x0102, 0x0202, 0x0102, 0x0304, 0x0102, + 0x0404, 0x0502, 0x0404, 0x0404, 0x0604, 0x0604, 0x0604, 0x0702, + 0x0702, 0x0802, 0x0802, 0x0904, 0x0904, 0x0a04, 0x0a04, 0x0b04, + 0x0b04, 0x0c04, 0x0c04, 0x0d04, 0x0d04, 0x0e04, 0x0e04, 0x0e04, + 0x0005, 0x0f04, 0x1004, 0x1104, 0x1204, 0x1304, 0x1404, 0x1504, + 0x0202, 0x0304, 0x0304, 0x0001, 0x0001, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0404, 0x1004, + 0x0001, 0x0102, 0x0102, 0x0102, 0x0000, 0x0102, 0x0202, 0x0202, + 0x0304, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, + 0x0404, 0x0604, 0x0604, 0x0604, 0x0604, 0x0604, 0x0604, 0x0604, + 0x0702, 0x0702, 0x0702, 0x0702, 0x0702, 0x0702, 0x0702, 0x0702, + 0x0702, 0x0802, 0x0802, 0x0802, 0x0802, 0x0802, 0x0802, 0x0802, + 0x0802, 0x0802, 0x0904, 0x0904, 0x0904, 0x0a04, 0x0a04, 0x0b04, + 0x0c04, 0x0f04, 0x0f04, 0x0f04, 0x0f04, 0x0f04, 0x0f04, 0x1004, + 0x1004, 0x0d04, 0x1604, 0x0d04, 0x1104, 0x1104, 0x1104, 0x0d04, + 0x0d04, 0x0d04, 0x0d04, 0x0d04, 0x0d04, 0x1204, 0x1204, 0x1204, + 0x1204, 0x1404, 0x1404, 0x1404, 0x1404, 0x1704, 0x1804, 0x0604, + 0x0502, 0x1504, 0x1504, 0x1902, 0x0202, 0x0202, 0x0202, 0x0202, + 0x0202, 0x0202, 0x0202, 0x0202, 0x0e04, 0x0302, 0x0e04, 0x0202, + 0x0304, 0x0304, 0x0302, 0x0302, 0x0000, 0x0502, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0001, + 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0702, 0x0802, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0904, 0x0a04, 0x0c04, 0x0000, 0x0000, 0x1804, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0x1a02, 0x0001, 0x1b04, 0x1c04, 0x1c04, 0x1d02, 0x1d02, 0x1e02, + 0x1f02, 0x2002, 0x2104, 0x2204, 0x2204, 0x2304, 0x2302, 0x2404, + 0x2504, 0x2604, 0x2704, 0x2804, 0x2904, 0x2a04, 0x2b04, 0x2c04, + 0x2d02, 0x2e04, 0x1d02, 0x2f04, 0x3002, 0x1b04, 0x1c04, 0x1d02, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x3102, 0x3204, 0x3304, + 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0404, 0x0604, + 0x0604, 0x0702, 0x0702, 0x0802, 0x0904, 0x0c04, 0x0c04, 0x0c04, + 0x0f04, 0x0f04, 0x0d04, 0x0d04, 0x0d04, 0x1304, 0x1304, 0x1404, + 0x1404, 0x1404, 0x1204, 0x0802, 0x0802, 0x0904, 0x0604, 0x0604, + 0x0904, 0x0802, 0x0604, 0x0102, 0x0102, 0x0e04, 0x0e04, 0x0304, + 0x0202, 0x0202, 0x3404, 0x3404, 0x0604, 0x0904, 0x0904, 0x1104, + 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 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, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, + 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, + 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, + 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, 0x0004, + 0x0004, 0x0004, 0x0004, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0005, 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, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 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, 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, + 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, 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, 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, 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, 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, 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, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0001, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, 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, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 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, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 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, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 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, 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, 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, + 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 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, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 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, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 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, 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, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0001, 0x0000, 0x0001, + 0x0000, 0x0001, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 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, 0x0001, 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, + 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, 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, 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, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, 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, + 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, 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, + 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, 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 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, 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, 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, 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, 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, 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, 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, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 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, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 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, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 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, 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, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 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, 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, + 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 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, 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, 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, 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, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 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, 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, 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, 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, + 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0x0001, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, + 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0001, + 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, 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, + 0x0001, 0x0001, 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, 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, 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, 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, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, + 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, 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, 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, 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, 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, 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, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, 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, + 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, 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, 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, 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, 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, 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, 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, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0005, 0x0001, 0x0001, + 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, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 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, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 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, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 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, + 0x0001, 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, 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, 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, + 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, 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, 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, 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, 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, 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, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0x0001, 0x0001, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, + 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, 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, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 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, 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, 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, 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, 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, + 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, 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, 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, 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, + 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, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 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, 0x0001, 0x0001, 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, + 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, 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, 0x0000, 0x0000, + 0x0001, 0x0001, 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, 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, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 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, 0x0001, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, + 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 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, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0001, 0x0001, 0x0000, 0x0000, 0x0001, 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, 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, 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, + 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0000, 0x0000, 0x0001, 0x0001, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, 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, 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, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0001, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0001, + 0x0000, 0x0001, 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, 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, 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, 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, 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, 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, + 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, 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, 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, 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, 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, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0000, 0x0000, + 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 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, + 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, 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, 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, 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, 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, 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, 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, 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, + 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, 0x0000, 0x0000, 0x0000, + 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 0x0001, 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, + 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, 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, 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, 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, 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, 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, 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, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0001, + 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, 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, 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, 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, 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, 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, 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, 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, + 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, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, + 0x0000, 0x0001, 0x0001, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000 +}; + +const unsigned short wine_shaping_forms[256][4] = +{ + { 0x0600, 0x0600, 0x0600, 0x0600 }, + { 0x0601, 0x0601, 0x0601, 0x0601 }, + { 0x0602, 0x0602, 0x0602, 0x0602 }, + { 0x0603, 0x0603, 0x0603, 0x0603 }, + { 0x0604, 0x0604, 0x0604, 0x0604 }, + { 0x0605, 0x0605, 0x0605, 0x0605 }, + { 0x0606, 0x0606, 0x0606, 0x0606 }, + { 0x0607, 0x0607, 0x0607, 0x0607 }, + { 0x0608, 0x0608, 0x0608, 0x0608 }, + { 0x0609, 0x0609, 0x0609, 0x0609 }, + { 0x060a, 0x060a, 0x060a, 0x060a }, + { 0x060b, 0x060b, 0x060b, 0x060b }, + { 0x060c, 0x060c, 0x060c, 0x060c }, + { 0x060d, 0x060d, 0x060d, 0x060d }, + { 0x060e, 0x060e, 0x060e, 0x060e }, + { 0x060f, 0x060f, 0x060f, 0x060f }, + { 0x0610, 0x0610, 0x0610, 0x0610 }, + { 0x0611, 0x0611, 0x0611, 0x0611 }, + { 0x0612, 0x0612, 0x0612, 0x0612 }, + { 0x0613, 0x0613, 0x0613, 0x0613 }, + { 0x0614, 0x0614, 0x0614, 0x0614 }, + { 0x0615, 0x0615, 0x0615, 0x0615 }, + { 0x0616, 0x0616, 0x0616, 0x0616 }, + { 0x0617, 0x0617, 0x0617, 0x0617 }, + { 0x0618, 0x0618, 0x0618, 0x0618 }, + { 0x0619, 0x0619, 0x0619, 0x0619 }, + { 0x061a, 0x061a, 0x061a, 0x061a }, + { 0x061b, 0x061b, 0x061b, 0x061b }, + { 0x061c, 0x061c, 0x061c, 0x061c }, + { 0x061d, 0x061d, 0x061d, 0x061d }, + { 0x061e, 0x061e, 0x061e, 0x061e }, + { 0x061f, 0x061f, 0x061f, 0x061f }, + { 0x0620, 0x0620, 0x0620, 0x0620 }, + { 0xfe80, 0x0621, 0x0621, 0x0621 }, + { 0xfe81, 0xfe82, 0x0622, 0x0622 }, + { 0xfe83, 0xfe84, 0x0623, 0x0623 }, + { 0xfe85, 0xfe86, 0x0624, 0x0624 }, + { 0xfe87, 0xfe88, 0x0625, 0x0625 }, + { 0xfe89, 0xfe8a, 0xfe8b, 0xfe8c }, + { 0xfe8d, 0xfe8e, 0x0627, 0x0627 }, + { 0xfe8f, 0xfe90, 0xfe91, 0xfe92 }, + { 0xfe93, 0xfe94, 0x0629, 0x0629 }, + { 0xfe95, 0xfe96, 0xfe97, 0xfe98 }, + { 0xfe99, 0xfe9a, 0xfe9b, 0xfe9c }, + { 0xfe9d, 0xfe9e, 0xfe9f, 0xfea0 }, + { 0xfea1, 0xfea2, 0xfea3, 0xfea4 }, + { 0xfea5, 0xfea6, 0xfea7, 0xfea8 }, + { 0xfea9, 0xfeaa, 0x062f, 0x062f }, + { 0xfeab, 0xfeac, 0x0630, 0x0630 }, + { 0xfead, 0xfeae, 0x0631, 0x0631 }, + { 0xfeaf, 0xfeb0, 0x0632, 0x0632 }, + { 0xfeb1, 0xfeb2, 0xfeb3, 0xfeb4 }, + { 0xfeb5, 0xfeb6, 0xfeb7, 0xfeb8 }, + { 0xfeb9, 0xfeba, 0xfebb, 0xfebc }, + { 0xfebd, 0xfebe, 0xfebf, 0xfec0 }, + { 0xfec1, 0xfec2, 0xfec3, 0xfec4 }, + { 0xfec5, 0xfec6, 0xfec7, 0xfec8 }, + { 0xfec9, 0xfeca, 0xfecb, 0xfecc }, + { 0xfecd, 0xfece, 0xfecf, 0xfed0 }, + { 0x063b, 0x063b, 0x063b, 0x063b }, + { 0x063c, 0x063c, 0x063c, 0x063c }, + { 0x063d, 0x063d, 0x063d, 0x063d }, + { 0x063e, 0x063e, 0x063e, 0x063e }, + { 0x063f, 0x063f, 0x063f, 0x063f }, + { 0x0640, 0x0640, 0x0640, 0x0640 }, + { 0xfed1, 0xfed2, 0xfed3, 0xfed4 }, + { 0xfed5, 0xfed6, 0xfed7, 0xfed8 }, + { 0xfed9, 0xfeda, 0xfedb, 0xfedc }, + { 0xfedd, 0xfede, 0xfedf, 0xfee0 }, + { 0xfee1, 0xfee2, 0xfee3, 0xfee4 }, + { 0xfee5, 0xfee6, 0xfee7, 0xfee8 }, + { 0xfee9, 0xfeea, 0xfeeb, 0xfeec }, + { 0xfeed, 0xfeee, 0x0648, 0x0648 }, + { 0xfeef, 0xfef0, 0xfbe8, 0xfbe9 }, + { 0xfef1, 0xfef2, 0xfef3, 0xfef4 }, + { 0x064b, 0x064b, 0x064b, 0x064b }, + { 0x064c, 0x064c, 0x064c, 0x064c }, + { 0x064d, 0x064d, 0x064d, 0x064d }, + { 0x064e, 0x064e, 0x064e, 0x064e }, + { 0x064f, 0x064f, 0x064f, 0x064f }, + { 0x0650, 0x0650, 0x0650, 0x0650 }, + { 0x0651, 0x0651, 0x0651, 0x0651 }, + { 0x0652, 0x0652, 0x0652, 0x0652 }, + { 0x0653, 0x0653, 0x0653, 0x0653 }, + { 0x0654, 0x0654, 0x0654, 0x0654 }, + { 0x0655, 0x0655, 0x0655, 0x0655 }, + { 0x0656, 0x0656, 0x0656, 0x0656 }, + { 0x0657, 0x0657, 0x0657, 0x0657 }, + { 0x0658, 0x0658, 0x0658, 0x0658 }, + { 0x0659, 0x0659, 0x0659, 0x0659 }, + { 0x065a, 0x065a, 0x065a, 0x065a }, + { 0x065b, 0x065b, 0x065b, 0x065b }, + { 0x065c, 0x065c, 0x065c, 0x065c }, + { 0x065d, 0x065d, 0x065d, 0x065d }, + { 0x065e, 0x065e, 0x065e, 0x065e }, + { 0x065f, 0x065f, 0x065f, 0x065f }, + { 0x0660, 0x0660, 0x0660, 0x0660 }, + { 0x0661, 0x0661, 0x0661, 0x0661 }, + { 0x0662, 0x0662, 0x0662, 0x0662 }, + { 0x0663, 0x0663, 0x0663, 0x0663 }, + { 0x0664, 0x0664, 0x0664, 0x0664 }, + { 0x0665, 0x0665, 0x0665, 0x0665 }, + { 0x0666, 0x0666, 0x0666, 0x0666 }, + { 0x0667, 0x0667, 0x0667, 0x0667 }, + { 0x0668, 0x0668, 0x0668, 0x0668 }, + { 0x0669, 0x0669, 0x0669, 0x0669 }, + { 0x066a, 0x066a, 0x066a, 0x066a }, + { 0x066b, 0x066b, 0x066b, 0x066b }, + { 0x066c, 0x066c, 0x066c, 0x066c }, + { 0x066d, 0x066d, 0x066d, 0x066d }, + { 0x066e, 0x066e, 0x066e, 0x066e }, + { 0x066f, 0x066f, 0x066f, 0x066f }, + { 0x0670, 0x0670, 0x0670, 0x0670 }, + { 0xfb50, 0xfb51, 0x0671, 0x0671 }, + { 0x0672, 0x0672, 0x0672, 0x0672 }, + { 0x0673, 0x0673, 0x0673, 0x0673 }, + { 0x0674, 0x0674, 0x0674, 0x0674 }, + { 0x0675, 0x0675, 0x0675, 0x0675 }, + { 0x0676, 0x0676, 0x0676, 0x0676 }, + { 0xfbdd, 0x0677, 0x0677, 0x0677 }, + { 0x0678, 0x0678, 0x0678, 0x0678 }, + { 0xfb66, 0xfb67, 0xfb68, 0xfb69 }, + { 0xfb5e, 0xfb5f, 0xfb60, 0xfb61 }, + { 0xfb52, 0xfb53, 0xfb54, 0xfb55 }, + { 0x067c, 0x067c, 0x067c, 0x067c }, + { 0x067d, 0x067d, 0x067d, 0x067d }, + { 0xfb56, 0xfb57, 0xfb58, 0xfb59 }, + { 0xfb62, 0xfb63, 0xfb64, 0xfb65 }, + { 0xfb5a, 0xfb5b, 0xfb5c, 0xfb5d }, + { 0x0681, 0x0681, 0x0681, 0x0681 }, + { 0x0682, 0x0682, 0x0682, 0x0682 }, + { 0xfb76, 0xfb77, 0xfb78, 0xfb79 }, + { 0xfb72, 0xfb73, 0xfb74, 0xfb75 }, + { 0x0685, 0x0685, 0x0685, 0x0685 }, + { 0xfb7a, 0xfb7b, 0xfb7c, 0xfb7d }, + { 0xfb7e, 0xfb7f, 0xfb80, 0xfb81 }, + { 0xfb88, 0xfb89, 0x0688, 0x0688 }, + { 0x0689, 0x0689, 0x0689, 0x0689 }, + { 0x068a, 0x068a, 0x068a, 0x068a }, + { 0x068b, 0x068b, 0x068b, 0x068b }, + { 0xfb84, 0xfb85, 0x068c, 0x068c }, + { 0xfb82, 0xfb83, 0x068d, 0x068d }, + { 0xfb86, 0xfb87, 0x068e, 0x068e }, + { 0x068f, 0x068f, 0x068f, 0x068f }, + { 0x0690, 0x0690, 0x0690, 0x0690 }, + { 0xfb8c, 0xfb8d, 0x0691, 0x0691 }, + { 0x0692, 0x0692, 0x0692, 0x0692 }, + { 0x0693, 0x0693, 0x0693, 0x0693 }, + { 0x0694, 0x0694, 0x0694, 0x0694 }, + { 0x0695, 0x0695, 0x0695, 0x0695 }, + { 0x0696, 0x0696, 0x0696, 0x0696 }, + { 0x0697, 0x0697, 0x0697, 0x0697 }, + { 0xfb8a, 0xfb8b, 0x0698, 0x0698 }, + { 0x0699, 0x0699, 0x0699, 0x0699 }, + { 0x069a, 0x069a, 0x069a, 0x069a }, + { 0x069b, 0x069b, 0x069b, 0x069b }, + { 0x069c, 0x069c, 0x069c, 0x069c }, + { 0x069d, 0x069d, 0x069d, 0x069d }, + { 0x069e, 0x069e, 0x069e, 0x069e }, + { 0x069f, 0x069f, 0x069f, 0x069f }, + { 0x06a0, 0x06a0, 0x06a0, 0x06a0 }, + { 0x06a1, 0x06a1, 0x06a1, 0x06a1 }, + { 0x06a2, 0x06a2, 0x06a2, 0x06a2 }, + { 0x06a3, 0x06a3, 0x06a3, 0x06a3 }, + { 0xfb6a, 0xfb6b, 0xfb6c, 0xfb6d }, + { 0x06a5, 0x06a5, 0x06a5, 0x06a5 }, + { 0xfb6e, 0xfb6f, 0xfb70, 0xfb71 }, + { 0x06a7, 0x06a7, 0x06a7, 0x06a7 }, + { 0x06a8, 0x06a8, 0x06a8, 0x06a8 }, + { 0xfb8e, 0xfb8f, 0xfb90, 0xfb91 }, + { 0x06aa, 0x06aa, 0x06aa, 0x06aa }, + { 0x06ab, 0x06ab, 0x06ab, 0x06ab }, + { 0x06ac, 0x06ac, 0x06ac, 0x06ac }, + { 0xfbd3, 0xfbd4, 0xfbd5, 0xfbd6 }, + { 0x06ae, 0x06ae, 0x06ae, 0x06ae }, + { 0xfb92, 0xfb93, 0xfb94, 0xfb95 }, + { 0x06b0, 0x06b0, 0x06b0, 0x06b0 }, + { 0xfb9a, 0xfb9b, 0xfb9c, 0xfb9d }, + { 0x06b2, 0x06b2, 0x06b2, 0x06b2 }, + { 0xfb96, 0xfb97, 0xfb98, 0xfb99 }, + { 0x06b4, 0x06b4, 0x06b4, 0x06b4 }, + { 0x06b5, 0x06b5, 0x06b5, 0x06b5 }, + { 0x06b6, 0x06b6, 0x06b6, 0x06b6 }, + { 0x06b7, 0x06b7, 0x06b7, 0x06b7 }, + { 0x06b8, 0x06b8, 0x06b8, 0x06b8 }, + { 0x06b9, 0x06b9, 0x06b9, 0x06b9 }, + { 0xfb9e, 0xfb9f, 0x06ba, 0x06ba }, + { 0xfba0, 0xfba1, 0xfba2, 0xfba3 }, + { 0x06bc, 0x06bc, 0x06bc, 0x06bc }, + { 0x06bd, 0x06bd, 0x06bd, 0x06bd }, + { 0xfbaa, 0xfbab, 0xfbac, 0xfbad }, + { 0x06bf, 0x06bf, 0x06bf, 0x06bf }, + { 0xfba4, 0xfba5, 0x06c0, 0x06c0 }, + { 0xfba6, 0xfba7, 0xfba8, 0xfba9 }, + { 0x06c2, 0x06c2, 0x06c2, 0x06c2 }, + { 0x06c3, 0x06c3, 0x06c3, 0x06c3 }, + { 0x06c4, 0x06c4, 0x06c4, 0x06c4 }, + { 0xfbe0, 0xfbe1, 0x06c5, 0x06c5 }, + { 0xfbd9, 0xfbda, 0x06c6, 0x06c6 }, + { 0xfbd7, 0xfbd8, 0x06c7, 0x06c7 }, + { 0xfbdb, 0xfbdc, 0x06c8, 0x06c8 }, + { 0xfbe2, 0xfbe3, 0x06c9, 0x06c9 }, + { 0x06ca, 0x06ca, 0x06ca, 0x06ca }, + { 0xfbde, 0xfbdf, 0x06cb, 0x06cb }, + { 0xfbfc, 0xfbfd, 0xfbfe, 0xfbff }, + { 0x06cd, 0x06cd, 0x06cd, 0x06cd }, + { 0x06ce, 0x06ce, 0x06ce, 0x06ce }, + { 0x06cf, 0x06cf, 0x06cf, 0x06cf }, + { 0xfbe4, 0xfbe5, 0xfbe6, 0xfbe7 }, + { 0x06d1, 0x06d1, 0x06d1, 0x06d1 }, + { 0xfbae, 0xfbaf, 0x06d2, 0x06d2 }, + { 0xfbb0, 0xfbb1, 0x06d3, 0x06d3 }, + { 0x06d4, 0x06d4, 0x06d4, 0x06d4 }, + { 0x06d5, 0x06d5, 0x06d5, 0x06d5 }, + { 0x06d6, 0x06d6, 0x06d6, 0x06d6 }, + { 0x06d7, 0x06d7, 0x06d7, 0x06d7 }, + { 0x06d8, 0x06d8, 0x06d8, 0x06d8 }, + { 0x06d9, 0x06d9, 0x06d9, 0x06d9 }, + { 0x06da, 0x06da, 0x06da, 0x06da }, + { 0x06db, 0x06db, 0x06db, 0x06db }, + { 0x06dc, 0x06dc, 0x06dc, 0x06dc }, + { 0x06dd, 0x06dd, 0x06dd, 0x06dd }, + { 0x06de, 0x06de, 0x06de, 0x06de }, + { 0x06df, 0x06df, 0x06df, 0x06df }, + { 0x06e0, 0x06e0, 0x06e0, 0x06e0 }, + { 0x06e1, 0x06e1, 0x06e1, 0x06e1 }, + { 0x06e2, 0x06e2, 0x06e2, 0x06e2 }, + { 0x06e3, 0x06e3, 0x06e3, 0x06e3 }, + { 0x06e4, 0x06e4, 0x06e4, 0x06e4 }, + { 0x06e5, 0x06e5, 0x06e5, 0x06e5 }, + { 0x06e6, 0x06e6, 0x06e6, 0x06e6 }, + { 0x06e7, 0x06e7, 0x06e7, 0x06e7 }, + { 0x06e8, 0x06e8, 0x06e8, 0x06e8 }, + { 0x06e9, 0x06e9, 0x06e9, 0x06e9 }, + { 0x06ea, 0x06ea, 0x06ea, 0x06ea }, + { 0x06eb, 0x06eb, 0x06eb, 0x06eb }, + { 0x06ec, 0x06ec, 0x06ec, 0x06ec }, + { 0x06ed, 0x06ed, 0x06ed, 0x06ed }, + { 0x06ee, 0x06ee, 0x06ee, 0x06ee }, + { 0x06ef, 0x06ef, 0x06ef, 0x06ef }, + { 0x06f0, 0x06f0, 0x06f0, 0x06f0 }, + { 0x06f1, 0x06f1, 0x06f1, 0x06f1 }, + { 0x06f2, 0x06f2, 0x06f2, 0x06f2 }, + { 0x06f3, 0x06f3, 0x06f3, 0x06f3 }, + { 0x06f4, 0x06f4, 0x06f4, 0x06f4 }, + { 0x06f5, 0x06f5, 0x06f5, 0x06f5 }, + { 0x06f6, 0x06f6, 0x06f6, 0x06f6 }, + { 0x06f7, 0x06f7, 0x06f7, 0x06f7 }, + { 0x06f8, 0x06f8, 0x06f8, 0x06f8 }, + { 0x06f9, 0x06f9, 0x06f9, 0x06f9 }, + { 0x06fa, 0x06fa, 0x06fa, 0x06fa }, + { 0x06fb, 0x06fb, 0x06fb, 0x06fb }, + { 0x06fc, 0x06fc, 0x06fc, 0x06fc }, + { 0x06fd, 0x06fd, 0x06fd, 0x06fd }, + { 0x06fe, 0x06fe, 0x06fe, 0x06fe }, + { 0x06ff, 0x06ff, 0x06ff, 0x06ff }, +}; diff --git a/reactos/dll/win32/usp10/usp10.c b/reactos/dll/win32/usp10/usp10.c index 85957143557..cb82f9179c4 100644 --- a/reactos/dll/win32/usp10/usp10.c +++ b/reactos/dll/win32/usp10/usp10.c @@ -141,18 +141,6 @@ static const SCRIPT_PROPERTIES *script_props[] = &props[73] }; -#define GLYPH_BLOCK_SHIFT 8 -#define GLYPH_BLOCK_SIZE (1UL << GLYPH_BLOCK_SHIFT) -#define GLYPH_BLOCK_MASK (GLYPH_BLOCK_SIZE - 1) -#define GLYPH_MAX 65536 - -typedef struct { - LOGFONTW lf; - TEXTMETRICW tm; - WORD *glyphs[GLYPH_MAX / GLYPH_BLOCK_SIZE]; - ABC *widths[GLYPH_MAX / GLYPH_BLOCK_SIZE]; -} ScriptCache; - typedef struct { int numGlyphs; WORD* glyphs; @@ -271,6 +259,12 @@ static HRESULT init_script_cache(const HDC hdc, SCRIPT_CACHE *psc) return S_OK; } +static WCHAR mirror_char( WCHAR ch ) +{ + extern const WCHAR wine_mirror_map[]; + return ch + wine_mirror_map[wine_mirror_map[ch >> 8] + (ch & 0xff)]; +} + /*********************************************************************** * DllMain * @@ -312,6 +306,7 @@ HRESULT WINAPI ScriptFreeCache(SCRIPT_CACHE *psc) heap_free(((ScriptCache *)*psc)->glyphs[i]); heap_free(((ScriptCache *)*psc)->widths[i]); } + heap_free(((ScriptCache *)*psc)->GSUB_Table); heap_free(*psc); *psc = NULL; } @@ -517,17 +512,17 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem #define Numeric_space 0x0020 #define Arabic_start 0x0600 #define Arabic_stop 0x06ff +#define Hebrew_start 0x0590 +#define Hebrew_stop 0x05ff +#define Syriac_start 0x0700 +#define Syriac_stop 0x074f #define Latin_start 0x0001 #define Latin_stop 0x024f -#define Script_Arabic 6 -#define Script_Latin 1 -#define Script_Numeric 5 -#define Script_CR 22 -#define Script_LF 23 int cnt = 0, index = 0; int New_Script = SCRIPT_UNDEFINED; WORD *levels = NULL; + WORD baselevel = 0; TRACE("%s,%d,%d,%p,%p,%p,%p\n", debugstr_wn(pwcInChars, cInChars), cInChars, cMaxItems, psControl, psState, pItems, pcItems); @@ -543,6 +538,7 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem return E_OUTOFMEMORY; BIDI_DetermineLevels(pwcInChars, cInChars, psState, psControl, levels); + baselevel = levels[0]; for (i = 0; i < cInChars; i++) if (levels[i]!=levels[0]) break; @@ -568,6 +564,12 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem if (pwcInChars[cnt] >= Arabic_start && pwcInChars[cnt] <= Arabic_stop) pItems[index].a.eScript = Script_Arabic; else + if (pwcInChars[cnt] >= Hebrew_start && pwcInChars[cnt] <= Hebrew_stop) + pItems[index].a.eScript = Script_Hebrew; + else + if (pwcInChars[cnt] >= Syriac_start && pwcInChars[cnt] <= Syriac_stop) + pItems[index].a.eScript = Script_Syriac; + else if (pwcInChars[cnt] >= Latin_start && pwcInChars[cnt] <= Latin_stop) pItems[index].a.eScript = Script_Latin; @@ -577,13 +579,20 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem pItems[index].a.fLayoutRTL = odd(levels[cnt]); pItems[index].a.s.uBidiLevel = levels[cnt]; } - else if (pItems[index].a.eScript == Script_Arabic) + else if ((pItems[index].a.eScript == Script_Arabic) || + (pItems[index].a.eScript == Script_Hebrew) || + (pItems[index].a.eScript == Script_Syriac)) { pItems[index].a.s.uBidiLevel = 1; pItems[index].a.fRTL = 1; pItems[index].a.fLayoutRTL = 1; } - + else + { + pItems[index].a.s.uBidiLevel = baselevel; + pItems[index].a.fLayoutRTL = odd(baselevel); + pItems[index].a.fRTL = odd(baselevel); + } TRACE("New_Level=%i New_Script=%d, eScript=%d index=%d cnt=%d iCharPos=%d\n", levels?levels[cnt]:-1, New_Script, pItems[index].a.eScript, index, cnt, @@ -608,6 +617,14 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem || (New_Script == Script_Arabic && pwcInChars[cnt] == Numeric_space)) New_Script = Script_Arabic; else + if ((pwcInChars[cnt] >= Hebrew_start && pwcInChars[cnt] <= Hebrew_stop) + || (New_Script == Script_Hebrew && pwcInChars[cnt] == Numeric_space)) + New_Script = Script_Hebrew; + else + if ((pwcInChars[cnt] >= Syriac_start && pwcInChars[cnt] <= Syriac_stop) + || (New_Script == Script_Syriac && pwcInChars[cnt] == Numeric_space)) + New_Script = Script_Syriac; + else if ((pwcInChars[cnt] >= Latin_start && pwcInChars[cnt] <= Latin_stop) || (New_Script == Script_Latin && pwcInChars[cnt] == Numeric_space)) New_Script = Script_Latin; @@ -630,12 +647,21 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem pItems[index].a.fLayoutRTL = odd(levels[cnt]); pItems[index].a.s.uBidiLevel = levels[cnt]; } - else if (New_Script == Script_Arabic) + else if ((New_Script == Script_Arabic) || + (New_Script == Script_Hebrew) || + (New_Script == Script_Syriac)) { pItems[index].a.s.uBidiLevel = 1; pItems[index].a.fRTL = 1; pItems[index].a.fLayoutRTL = 1; } + else + { + pItems[index].a.s.uBidiLevel = baselevel; + pItems[index].a.fLayoutRTL = odd(baselevel); + pItems[index].a.fRTL = odd(baselevel); + } + pItems[index].a.eScript = New_Script; TRACE("index=%d cnt=%d iCharPos=%d\n", index, cnt, pItems[index].iCharPos); @@ -645,16 +671,17 @@ HRESULT WINAPI ScriptItemize(const WCHAR *pwcInChars, int cInChars, int cMaxItem /* While not strictly necessary according to the spec, make sure the n+1 * item is set up to prevent random behaviour if the caller erroneously * checks the n+1 structure */ - memset(&pItems[index+1].a, 0, sizeof(SCRIPT_ANALYSIS)); + index++; + memset(&pItems[index].a, 0, sizeof(SCRIPT_ANALYSIS)); - TRACE("index=%d cnt=%d iCharPos=%d\n", index+1, cnt, pItems[index+1].iCharPos); + TRACE("index=%d cnt=%d iCharPos=%d\n", index, cnt, pItems[index].iCharPos); /* Set one SCRIPT_STATE item being returned */ - if (pcItems) *pcItems = index + 1; + if (index + 1 > cMaxItems) return E_OUTOFMEMORY; + if (pcItems) *pcItems = index; /* Set SCRIPT_ITEM */ - pItems[index+1].iCharPos = cnt; /* the last + 1 item - contains the ptr to the lastchar */ + pItems[index].iCharPos = cnt; /* the last item contains the ptr to the lastchar */ heap_free(levels); return S_OK; } @@ -1350,18 +1377,28 @@ HRESULT WINAPI ScriptShape(HDC hdc, SCRIPT_CACHE *psc, const WCHAR *pwcChars, if ((get_cache_pitch_family(psc) & TMPF_TRUETYPE) && !psa->fNoGlyphIndex) { + WCHAR *rChars = heap_alloc(sizeof(WCHAR) * cChars); + if (!rChars) return E_OUTOFMEMORY; for (i = 0; i < cChars; i++) { int idx = i; + WCHAR chInput; if (rtl) idx = cChars - 1 - i; - if (!(pwOutGlyphs[i] = get_cache_glyph(psc, pwcChars[idx]))) + if (psa->fRTL) + chInput = mirror_char(pwcChars[idx]); + else + chInput = pwcChars[idx]; + if (!(pwOutGlyphs[i] = get_cache_glyph(psc, chInput))) { WORD glyph; if (!hdc) return E_PENDING; - if (GetGlyphIndicesW(hdc, &pwcChars[idx], 1, &glyph, 0) == GDI_ERROR) return S_FALSE; - pwOutGlyphs[i] = set_cache_glyph(psc, pwcChars[idx], glyph); + if (GetGlyphIndicesW(hdc, &chInput, 1, &glyph, 0) == GDI_ERROR) return S_FALSE; + pwOutGlyphs[i] = set_cache_glyph(psc, chInput, glyph); } + rChars[i] = chInput; } + SHAPE_ShapeArabicGlyphs(hdc, (ScriptCache *)*psc, psa, rChars, cChars, pwOutGlyphs, pcGlyphs, cMaxGlyphs); + heap_free(rChars); } else { @@ -1369,6 +1406,7 @@ HRESULT WINAPI ScriptShape(HDC hdc, SCRIPT_CACHE *psc, const WCHAR *pwcChars, for (i = 0; i < cChars; i++) { int idx = i; + /* No mirroring done here */ if (rtl) idx = cChars - 1 - i; pwOutGlyphs[i] = pwcChars[idx]; } @@ -1489,25 +1527,45 @@ HRESULT WINAPI ScriptGetCMap(HDC hdc, SCRIPT_CACHE *psc, const WCHAR *pwcInChars if ((hr = init_script_cache(hdc, psc)) != S_OK) return hr; + hr = S_OK; + if ((get_cache_pitch_family(psc) & TMPF_TRUETYPE)) { for (i = 0; i < cChars; i++) { - if (!(pwOutGlyphs[i] = get_cache_glyph(psc, pwcInChars[i]))) + WCHAR inChar; + if (dwFlags == SGCM_RTL) + inChar = mirror_char(pwcInChars[i]); + else + inChar = pwcInChars[i]; + if (!(pwOutGlyphs[i] = get_cache_glyph(psc, inChar))) { WORD glyph; if (!hdc) return E_PENDING; - if (GetGlyphIndicesW(hdc, &pwcInChars[i], 1, &glyph, GGI_MARK_NONEXISTING_GLYPHS) == GDI_ERROR) return S_FALSE; - pwOutGlyphs[i] = set_cache_glyph(psc, pwcInChars[i], glyph); + if (GetGlyphIndicesW(hdc, &inChar, 1, &glyph, GGI_MARK_NONEXISTING_GLYPHS) == GDI_ERROR) return S_FALSE; + if (glyph == 0xffff) + { + hr = S_FALSE; + glyph = 0x0; + } + pwOutGlyphs[i] = set_cache_glyph(psc, inChar, glyph); } } } else { TRACE("no glyph translation\n"); - for (i = 0; i < cChars; i++) pwOutGlyphs[i] = pwcInChars[i]; + for (i = 0; i < cChars; i++) + { + WCHAR inChar; + if (dwFlags == SGCM_RTL) + inChar = mirror_char(pwcInChars[i]); + else + inChar = pwcInChars[i]; + pwOutGlyphs[i] = inChar; + } } - return S_OK; + return hr; } /*********************************************************************** @@ -1529,11 +1587,29 @@ HRESULT WINAPI ScriptTextOut(const HDC hdc, SCRIPT_CACHE *psc, int x, int y, UIN if (!piAdvance || !psa || !pwGlyphs) return E_INVALIDARG; fuOptions &= ETO_CLIPPED + ETO_OPAQUE; + fuOptions |= ETO_IGNORELANGUAGE; if (!psa->fNoGlyphIndex) /* Have Glyphs? */ fuOptions |= ETO_GLYPH_INDEX; /* Say don't do translation to glyph */ - if (!ExtTextOutW(hdc, x, y, fuOptions, lprc, pwGlyphs, cGlyphs, NULL)) - hr = S_FALSE; + if (psa->fRTL && psa->fLogicalOrder) + { + int i; + WORD *rtlGlyphs; + + rtlGlyphs = heap_alloc(cGlyphs * sizeof(WORD)); + if (!rtlGlyphs) + return E_OUTOFMEMORY; + + for (i = 0; i < cGlyphs; i++) + rtlGlyphs[i] = pwGlyphs[cGlyphs-1-i]; + + if (!ExtTextOutW(hdc, x, y, fuOptions, lprc, rtlGlyphs, cGlyphs, NULL)) + hr = S_FALSE; + heap_free(rtlGlyphs); + } + else + if (!ExtTextOutW(hdc, x, y, fuOptions, lprc, pwGlyphs, cGlyphs, NULL)) + hr = S_FALSE; return hr; } @@ -1913,3 +1989,9 @@ HRESULT WINAPI ScriptJustify(const SCRIPT_VISATTR *sva, const int *advance, for (i = 0; i < num_glyphs; i++) justify[i] = advance[i]; return S_OK; } + +BOOL gbLpkPresent = FALSE; +VOID WINAPI LpkPresent() +{ + gbLpkPresent = TRUE; /* Turn it on this way! Wine is out of control! */ +} diff --git a/reactos/dll/win32/usp10/usp10.rbuild b/reactos/dll/win32/usp10/usp10.rbuild index 527578c6edd..eda28014bbc 100644 --- a/reactos/dll/win32/usp10/usp10.rbuild +++ b/reactos/dll/win32/usp10/usp10.rbuild @@ -8,8 +8,12 @@ bidi.c usp10.c + mirror.c + shape.c + shaping.c wine gdi32 ntdll + msvcrt diff --git a/reactos/dll/win32/usp10/usp10.spec b/reactos/dll/win32/usp10/usp10.spec index 5e358707c41..0f7b0aa87c5 100644 --- a/reactos/dll/win32/usp10/usp10.spec +++ b/reactos/dll/win32/usp10/usp10.spec @@ -1,4 +1,4 @@ -@ stub LpkPresent +@ stdcall LpkPresent() @ stdcall ScriptApplyDigitSubstitution(ptr ptr ptr) @ stdcall ScriptApplyLogicalWidth(ptr long long ptr ptr ptr ptr ptr ptr) @ stdcall ScriptBreak(ptr long ptr ptr) diff --git a/reactos/dll/win32/usp10/usp10_internal.h b/reactos/dll/win32/usp10/usp10_internal.h index 60e4eff14ab..56226eec5f0 100644 --- a/reactos/dll/win32/usp10/usp10_internal.h +++ b/reactos/dll/win32/usp10/usp10_internal.h @@ -19,6 +19,27 @@ * */ +#define Script_Syriac 8 +#define Script_Hebrew 7 +#define Script_Arabic 6 +#define Script_Latin 1 +#define Script_Numeric 5 +#define Script_CR 22 +#define Script_LF 23 + +#define GLYPH_BLOCK_SHIFT 8 +#define GLYPH_BLOCK_SIZE (1UL << GLYPH_BLOCK_SHIFT) +#define GLYPH_BLOCK_MASK (GLYPH_BLOCK_SIZE - 1) +#define GLYPH_MAX 65536 + +typedef struct { + LOGFONTW lf; + TEXTMETRICW tm; + WORD *glyphs[GLYPH_MAX / GLYPH_BLOCK_SIZE]; + ABC *widths[GLYPH_MAX / GLYPH_BLOCK_SIZE]; + LPVOID *GSUB_Table; +} ScriptCache; + #define odd(x) ((x) & 1) BOOL BIDI_DetermineLevels( LPCWSTR lpString, INT uCount, const SCRIPT_STATE *s, @@ -26,3 +47,4 @@ BOOL BIDI_DetermineLevels( LPCWSTR lpString, INT uCount, const SCRIPT_STATE *s, INT BIDI_ReorderV2lLevel(int level, int *pIndexs, const BYTE* plevel, int cch, BOOL fReverse); INT BIDI_ReorderL2vLevel(int level, int *pIndexs, const BYTE* plevel, int cch, BOOL fReverse); +void SHAPE_ShapeArabicGlyphs(HDC hdc, ScriptCache *psc, SCRIPT_ANALYSIS *psa, WCHAR* pwcChars, INT cChars, WORD* pwOutGlyphs, INT* pcGlyphs, INT cMaxGlyphs); diff --git a/reactos/dll/win32/uxtheme/buffer.c b/reactos/dll/win32/uxtheme/buffer.c index af004d08d3c..f4d8229b5a2 100644 --- a/reactos/dll/win32/uxtheme/buffer.c +++ b/reactos/dll/win32/uxtheme/buffer.c @@ -61,8 +61,14 @@ HPAINTBUFFER WINAPI BeginBufferedPaint(HDC hdcTarget, BP_PAINTPARAMS *pPaintParams, HDC *phdc) { - FIXME("Stub (%p %p %d %p %p)\n", hdcTarget, prcTarget, dwFormat, + static int i; + + TRACE("Stub (%p %p %d %p %p)\n", hdcTarget, prcTarget, dwFormat, pPaintParams, phdc); + + if (!i++) + FIXME("Stub (%p %p %d %p %p)\n", hdcTarget, prcTarget, dwFormat, + pPaintParams, phdc); return NULL; } diff --git a/reactos/dll/win32/windowscodecs/fliprotate.c b/reactos/dll/win32/windowscodecs/fliprotate.c new file mode 100644 index 00000000000..7dac252b03c --- /dev/null +++ b/reactos/dll/win32/windowscodecs/fliprotate.c @@ -0,0 +1,255 @@ +/* + * Copyright 2010 Vincent Povirk for CodeWeavers + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "config.h" + +#include + +#define COBJMACROS + +#include "windef.h" +#include "winbase.h" +#include "objbase.h" +#include "wincodec.h" + +#include "wincodecs_private.h" + +#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(wincodecs); + +typedef struct FlipRotator { + const IWICBitmapFlipRotatorVtbl *lpVtbl; + LONG ref; + IWICBitmapSource *source; + int flip_x; + int flip_y; + int swap_xy; + CRITICAL_SECTION lock; /* must be held when initialized */ +} FlipRotator; + +static HRESULT WINAPI FlipRotator_QueryInterface(IWICBitmapFlipRotator *iface, REFIID iid, + void **ppv) +{ + FlipRotator *This = (FlipRotator*)iface; + TRACE("(%p,%s,%p)\n", iface, debugstr_guid(iid), ppv); + + if (!ppv) return E_INVALIDARG; + + if (IsEqualIID(&IID_IUnknown, iid) || + IsEqualIID(&IID_IWICBitmapSource, iid) || + IsEqualIID(&IID_IWICBitmapFlipRotator, iid)) + { + *ppv = This; + } + else + { + *ppv = NULL; + return E_NOINTERFACE; + } + + IUnknown_AddRef((IUnknown*)*ppv); + return S_OK; +} + +static ULONG WINAPI FlipRotator_AddRef(IWICBitmapFlipRotator *iface) +{ + FlipRotator *This = (FlipRotator*)iface; + ULONG ref = InterlockedIncrement(&This->ref); + + TRACE("(%p) refcount=%u\n", iface, ref); + + return ref; +} + +static ULONG WINAPI FlipRotator_Release(IWICBitmapFlipRotator *iface) +{ + FlipRotator *This = (FlipRotator*)iface; + ULONG ref = InterlockedDecrement(&This->ref); + + TRACE("(%p) refcount=%u\n", iface, ref); + + if (ref == 0) + { + This->lock.DebugInfo->Spare[0] = 0; + DeleteCriticalSection(&This->lock); + if (This->source) IWICBitmapSource_Release(This->source); + HeapFree(GetProcessHeap(), 0, This); + } + + return ref; +} + +static HRESULT WINAPI FlipRotator_GetSize(IWICBitmapFlipRotator *iface, + UINT *puiWidth, UINT *puiHeight) +{ + FlipRotator *This = (FlipRotator*)iface; + TRACE("(%p,%p,%p)\n", iface, puiWidth, puiHeight); + + if (!This->source) + return WINCODEC_ERR_WRONGSTATE; + else if (This->swap_xy) + return IWICBitmapSource_GetSize(This->source, puiHeight, puiWidth); + else + return IWICBitmapSource_GetSize(This->source, puiWidth, puiHeight); +} + +static HRESULT WINAPI FlipRotator_GetPixelFormat(IWICBitmapFlipRotator *iface, + WICPixelFormatGUID *pPixelFormat) +{ + FIXME("(%p,%p): stub\n", iface, pPixelFormat); + + return E_NOTIMPL; +} + +static HRESULT WINAPI FlipRotator_GetResolution(IWICBitmapFlipRotator *iface, + double *pDpiX, double *pDpiY) +{ + FIXME("(%p,%p,%p): stub\n", iface, pDpiX, pDpiY); + + return E_NOTIMPL; +} + +static HRESULT WINAPI FlipRotator_CopyPalette(IWICBitmapFlipRotator *iface, + IWICPalette *pIPalette) +{ + FIXME("(%p,%p): stub\n", iface, pIPalette); + return E_NOTIMPL; +} + +static HRESULT WINAPI FlipRotator_CopyPixels(IWICBitmapFlipRotator *iface, + const WICRect *prc, UINT cbStride, UINT cbBufferSize, BYTE *pbBuffer) +{ + FlipRotator *This = (FlipRotator*)iface; + HRESULT hr; + UINT y; + UINT srcy, srcwidth, srcheight; + WICRect rc; + + TRACE("(%p,%p,%u,%u,%p)\n", iface, prc, cbStride, cbBufferSize, pbBuffer); + + if (!This->source) return WINCODEC_ERR_WRONGSTATE; + + if (This->swap_xy || This->flip_x) + { + /* This requires knowledge of the pixel format. */ + FIXME("flipping x and rotating are not implemented\n"); + return E_NOTIMPL; + } + + hr = IWICBitmapSource_GetSize(This->source, &srcwidth, &srcheight); + if (FAILED(hr)) return hr; + + for (y=prc->Y; y - prc->Y < prc->Height; y++) + { + if (This->flip_y) + srcy = srcheight - 1 - y; + else + srcy = y; + + rc.X = prc->X; + rc.Y = srcy; + rc.Width = prc->Width; + rc.Height = 1; + + hr = IWICBitmapSource_CopyPixels(This->source, &rc, cbStride, cbStride, + pbBuffer); + + if (FAILED(hr)) break; + + pbBuffer += cbStride; + } + + return hr; +} + +static HRESULT WINAPI FlipRotator_Initialize(IWICBitmapFlipRotator *iface, + IWICBitmapSource *pISource, WICBitmapTransformOptions options) +{ + FlipRotator *This = (FlipRotator*)iface; + HRESULT hr=S_OK; + + TRACE("(%p,%p,%u)\n", iface, pISource, options); + + EnterCriticalSection(&This->lock); + + if (This->source) + { + hr = WINCODEC_ERR_WRONGSTATE; + goto end; + } + + if (options&WICBitmapTransformRotate90) + { + This->swap_xy = 1; + This->flip_x = !This->flip_x; + } + + if (options&WICBitmapTransformRotate180) + { + This->flip_x = !This->flip_x; + This->flip_y = !This->flip_y; + } + + if (options&WICBitmapTransformFlipHorizontal) + This->flip_x = !This->flip_x; + + if (options&WICBitmapTransformFlipVertical) + This->flip_y = !This->flip_y; + + IWICBitmapSource_AddRef(pISource); + This->source = pISource; + +end: + LeaveCriticalSection(&This->lock); + + return hr; +} + +static const IWICBitmapFlipRotatorVtbl FlipRotator_Vtbl = { + FlipRotator_QueryInterface, + FlipRotator_AddRef, + FlipRotator_Release, + FlipRotator_GetSize, + FlipRotator_GetPixelFormat, + FlipRotator_GetResolution, + FlipRotator_CopyPalette, + FlipRotator_CopyPixels, + FlipRotator_Initialize +}; + +HRESULT FlipRotator_Create(IWICBitmapFlipRotator **fliprotator) +{ + FlipRotator *This; + + This = HeapAlloc(GetProcessHeap(), 0, sizeof(FlipRotator)); + if (!This) return E_OUTOFMEMORY; + + This->lpVtbl = &FlipRotator_Vtbl; + This->ref = 1; + This->source = NULL; + This->flip_x = 0; + This->flip_y = 0; + This->swap_xy = 0; + InitializeCriticalSection(&This->lock); + This->lock.DebugInfo->Spare[0] = (DWORD_PTR)(__FILE__ ": FlipRotator.lock"); + + *fliprotator = (IWICBitmapFlipRotator*)This; + + return S_OK; +} diff --git a/reactos/dll/win32/windowscodecs/icoformat.c b/reactos/dll/win32/windowscodecs/icoformat.c index e1ea7c6c8d6..8012b4e1ae7 100644 --- a/reactos/dll/win32/windowscodecs/icoformat.c +++ b/reactos/dll/win32/windowscodecs/icoformat.c @@ -189,10 +189,10 @@ static HRESULT IcoFrameDecode_ReadPixels(IcoFrameDecode *This) hr = IStream_Read(This->parent->stream, &bih, sizeof(BITMAPINFOHEADER), &bytesread); if (FAILED(hr) || bytesread != sizeof(BITMAPINFOHEADER)) goto fail; - if (This->entry.wBitCount <= 8) + if (bih.biBitCount <= 8) { /* read the palette */ - colorcount = This->entry.bColorCount ? This->entry.bColorCount : 256; + colorcount = bih.biClrUsed ? bih.biClrUsed : 1 << bih.biBitCount; hr = IStream_Read(This->parent->stream, colors, sizeof(RGBQUAD)*colorcount, &bytesread); if (FAILED(hr) || bytesread != sizeof(RGBQUAD)*colorcount) goto fail; @@ -202,7 +202,7 @@ static HRESULT IcoFrameDecode_ReadPixels(IcoFrameDecode *This) bitsSize = bitsStride * height; /* read the XOR data */ - switch (This->entry.wBitCount) + switch (bih.biBitCount) { case 1: { @@ -440,11 +440,11 @@ static HRESULT IcoFrameDecode_ReadPixels(IcoFrameDecode *This) break; } default: - FIXME("unsupported bitcount: %u\n", This->entry.wBitCount); + FIXME("unsupported bitcount: %u\n", bih.biBitCount); goto fail; } - if (This->entry.wBitCount < 32) + if (bih.biBitCount < 32) { /* set alpha data based on the AND mask */ UINT andBytesPerRow = (width+31)/32*4; diff --git a/reactos/dll/win32/windowscodecs/imgfactory.c b/reactos/dll/win32/windowscodecs/imgfactory.c index a98aeb81295..5c81b9885ae 100644 --- a/reactos/dll/win32/windowscodecs/imgfactory.c +++ b/reactos/dll/win32/windowscodecs/imgfactory.c @@ -26,6 +26,7 @@ #include "winbase.h" #include "winreg.h" #include "objbase.h" +#include "shellapi.h" #include "wincodec.h" #include "wincodecs_private.h" @@ -89,9 +90,27 @@ static HRESULT WINAPI ImagingFactory_CreateDecoderFromFilename( DWORD dwDesiredAccess, WICDecodeOptions metadataOptions, IWICBitmapDecoder **ppIDecoder) { - FIXME("(%p,%s,%s,%u,%u,%p): stub\n", iface, debugstr_w(wzFilename), + IWICStream *stream; + HRESULT hr; + + TRACE("(%p,%s,%s,%u,%u,%p)\n", iface, debugstr_w(wzFilename), debugstr_guid(pguidVendor), dwDesiredAccess, metadataOptions, ppIDecoder); - return E_NOTIMPL; + + hr = StreamImpl_Create(&stream); + if (SUCCEEDED(hr)) + { + hr = IWICStream_InitializeFromFilename(stream, wzFilename, dwDesiredAccess); + + if (SUCCEEDED(hr)) + { + hr = IWICImagingFactory_CreateDecoderFromStream(iface, (IStream*)stream, + pguidVendor, metadataOptions, ppIDecoder); + } + + IWICStream_Release(stream); + } + + return hr; } static HRESULT WINAPI ImagingFactory_CreateDecoderFromStream( @@ -228,8 +247,7 @@ static HRESULT WINAPI ImagingFactory_CreatePalette(IWICImagingFactory *iface, static HRESULT WINAPI ImagingFactory_CreateFormatConverter(IWICImagingFactory *iface, IWICFormatConverter **ppIFormatConverter) { - FIXME("(%p,%p): stub\n", iface, ppIFormatConverter); - return E_NOTIMPL; + return FormatConverter_CreateInstance(NULL, &IID_IWICFormatConverter, (void**)ppIFormatConverter); } static HRESULT WINAPI ImagingFactory_CreateBitmapScaler(IWICImagingFactory *iface, @@ -249,8 +267,8 @@ static HRESULT WINAPI ImagingFactory_CreateBitmapClipper(IWICImagingFactory *ifa static HRESULT WINAPI ImagingFactory_CreateBitmapFlipRotator(IWICImagingFactory *iface, IWICBitmapFlipRotator **ppIBitmapFlipRotator) { - FIXME("(%p,%p): stub\n", iface, ppIBitmapFlipRotator); - return E_NOTIMPL; + TRACE("(%p,%p)\n", iface, ppIBitmapFlipRotator); + return FlipRotator_Create(ppIBitmapFlipRotator); } static HRESULT WINAPI ImagingFactory_CreateStream(IWICImagingFactory *iface, diff --git a/reactos/dll/win32/windowscodecs/info.c b/reactos/dll/win32/windowscodecs/info.c index 2e558a80619..f790dbc0eec 100644 --- a/reactos/dll/win32/windowscodecs/info.c +++ b/reactos/dll/win32/windowscodecs/info.c @@ -817,7 +817,8 @@ static HRESULT WINAPI ComponentEnum_Next(IEnumUnknown *iface, ULONG celt, This->cursor = list_next(&This->objects, This->cursor); } LeaveCriticalSection(&This->lock); - *pceltFetched = num_fetched; + if (pceltFetched) + *pceltFetched = num_fetched; return hr; } diff --git a/reactos/dll/win32/windowscodecs/pngformat.c b/reactos/dll/win32/windowscodecs/pngformat.c index 3dcbd9aeb44..a3c7730a267 100644 --- a/reactos/dll/win32/windowscodecs/pngformat.c +++ b/reactos/dll/win32/windowscodecs/pngformat.c @@ -1384,7 +1384,7 @@ static HRESULT WINAPI PngEncoder_Commit(IWICBitmapEncoder *iface) This->committed = TRUE; - EnterCriticalSection(&This->lock); + LeaveCriticalSection(&This->lock); return S_OK; } diff --git a/reactos/dll/win32/windowscodecs/stream.c b/reactos/dll/win32/windowscodecs/stream.c index bd5592b9f30..bee27dba0da 100644 --- a/reactos/dll/win32/windowscodecs/stream.c +++ b/reactos/dll/win32/windowscodecs/stream.c @@ -23,6 +23,7 @@ #include "winbase.h" #include "winreg.h" #include "objbase.h" +#include "shlwapi.h" #include "wincodec.h" #include "wincodecs_private.h" @@ -434,8 +435,35 @@ static HRESULT WINAPI IWICStreamImpl_InitializeFromIStream(IWICStream *iface, static HRESULT WINAPI IWICStreamImpl_InitializeFromFilename(IWICStream *iface, LPCWSTR wzFileName, DWORD dwDesiredAccess) { - FIXME("(%p): stub\n", iface); - return E_NOTIMPL; + IWICStreamImpl *This = (IWICStreamImpl*)iface; + HRESULT hr; + DWORD dwMode; + IStream *stream; + + TRACE("(%p, %s, %u)\n", iface, debugstr_w(wzFileName), dwDesiredAccess); + + if (This->pStream) return WINCODEC_ERR_WRONGSTATE; + + if(dwDesiredAccess & GENERIC_WRITE) + dwMode = STGM_SHARE_DENY_WRITE | STGM_WRITE | STGM_CREATE; + else if(dwDesiredAccess & GENERIC_READ) + dwMode = STGM_SHARE_DENY_WRITE | STGM_READ | STGM_FAILIFTHERE; + else + return E_INVALIDARG; + + hr = SHCreateStreamOnFileW(wzFileName, dwMode, &stream); + + if (SUCCEEDED(hr)) + { + if (InterlockedCompareExchangePointer((void**)&This->pStream, stream, NULL)) + { + /* Some other thread set the stream first. */ + IStream_Release(stream); + hr = WINCODEC_ERR_WRONGSTATE; + } + } + + return hr; } /****************************************** diff --git a/reactos/dll/win32/windowscodecs/tiffformat.c b/reactos/dll/win32/windowscodecs/tiffformat.c index fe87ddd6ba5..d069fd15a3c 100644 --- a/reactos/dll/win32/windowscodecs/tiffformat.c +++ b/reactos/dll/win32/windowscodecs/tiffformat.c @@ -756,16 +756,20 @@ static HRESULT WINAPI TiffFrameDecode_CopyPixels(IWICBitmapFrameDecode *iface, if (prc->X+prc->Width > (tile_x+1) * This->decode_info.tile_width) rc.Width = This->decode_info.tile_width - rc.X; + else if (prc->X < tile_x * This->decode_info.tile_width) + rc.Width = prc->Width + prc->X - tile_x * This->decode_info.tile_width; else - rc.Width = prc->Width + rc.X - prc->X; + rc.Width = prc->Width; if (prc->Y+prc->Height > (tile_y+1) * This->decode_info.tile_height) rc.Height = This->decode_info.tile_height - rc.Y; + else if (prc->Y < tile_y * This->decode_info.tile_height) + rc.Height = prc->Height + prc->Y - tile_y * This->decode_info.tile_height; else - rc.Height = prc->Height + rc.Y - prc->Y; + rc.Height = prc->Height; - dst_tilepos = pbBuffer + (cbStride * (rc.Y - prc->Y)) + - ((This->decode_info.bpp * (rc.X - prc->X) + 7) / 8); + dst_tilepos = pbBuffer + (cbStride * ((rc.Y + tile_y * This->decode_info.tile_height) - prc->Y)) + + ((This->decode_info.bpp * ((rc.X + tile_x * This->decode_info.tile_width) - prc->X) + 7) / 8); hr = copy_pixels(This->decode_info.bpp, This->cached_tile, This->decode_info.tile_width, This->decode_info.tile_height, This->decode_info.tile_stride, diff --git a/reactos/dll/win32/windowscodecs/wincodecs_private.h b/reactos/dll/win32/windowscodecs/wincodecs_private.h index 0e72793dafc..059d8e7a83e 100644 --- a/reactos/dll/win32/windowscodecs/wincodecs_private.h +++ b/reactos/dll/win32/windowscodecs/wincodecs_private.h @@ -30,6 +30,7 @@ extern HRESULT IcoDecoder_CreateInstance(IUnknown *pUnkOuter, REFIID iid, void** extern HRESULT JpegDecoder_CreateInstance(IUnknown *pUnkOuter, REFIID iid, void** ppv); extern HRESULT TiffDecoder_CreateInstance(IUnknown *pUnkOuter, REFIID iid, void** ppv); +extern HRESULT FlipRotator_Create(IWICBitmapFlipRotator **fliprotator); extern HRESULT PaletteImpl_Create(IWICPalette **palette); extern HRESULT StreamImpl_Create(IWICStream **stream); diff --git a/reactos/dll/win32/windowscodecs/windowscodecs.rbuild b/reactos/dll/win32/windowscodecs/windowscodecs.rbuild index da8e3e46618..5ea644345e4 100644 --- a/reactos/dll/win32/windowscodecs/windowscodecs.rbuild +++ b/reactos/dll/win32/windowscodecs/windowscodecs.rbuild @@ -11,12 +11,14 @@ wine uuid ole32 + shlwapi advapi32 bmpdecode.c bmpencode.c clsfactory.c converter.c + fliprotate.c gifformat.c icoformat.c imgfactory.c diff --git a/reactos/dll/win32/wldap32/wldap32.rc b/reactos/dll/win32/wldap32/wldap32.rc index 379e2b205ab..1c627adf792 100644 --- a/reactos/dll/win32/wldap32/wldap32.rc +++ b/reactos/dll/win32/wldap32/wldap32.rc @@ -29,13 +29,15 @@ #include "wldap32_Nl.rc" #include "wldap32_No.rc" #include "wldap32_Pl.rc" -#include "wldap32_Pt.rc" #include "wldap32_Sv.rc" #include "wldap32_Tr.rc" /* UTF-8 */ #include "wldap32_De.rc" #include "wldap32_Fr.rc" +#include "wldap32_Hu.rc" +#include "wldap32_It.rc" #include "wldap32_Lt.rc" +#include "wldap32_Pt.rc" #include "wldap32_Ru.rc" #include "wldap32_Uk.rc" diff --git a/reactos/dll/win32/wldap32/wldap32_Hu.rc b/reactos/dll/win32/wldap32/wldap32_Hu.rc new file mode 100644 index 00000000000..935720820bd --- /dev/null +++ b/reactos/dll/win32/wldap32/wldap32_Hu.rc @@ -0,0 +1,128 @@ +/* + * Hungarian resources for WLDAP32 + * + * Copyright 2010 Andras Kovacs + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "windef.h" + +/* UTF-8 */ +#pragma code_page(65001) + +LANGUAGE LANG_HUNGARIAN, SUBLANG_DEFAULT + +STRINGTABLE DISCARDABLE +{ + 0 "Sikeres" + 1 "Műveleti hiba" + 2 "Protokoll hiba" + 3 "Időkorlát túllépés" + 4 "Méretkorlát túllépés" + 5 "Hasonlítás hamis" + 6 "Hasonlítás igaz" + 7 "Hitelesítési mód nem támogatott" + 8 "erős hitelesítés szükséges" + 9 "Beszámoló (v2)" + 10 "Beszámoló" + 11 "Adminisztrációs korlát túllépés" + 12 "Nem elérhető kritikus kiterjesztés" + 13 "Bizalmasság szükséges" + 14 "" + 15 "" + 16 "Nincs ilyen attribútum" + 17 "Definiálatlan típus" + 18 "Alkalmatlan egyezés" + 19 "Megszorítás megsértés" + 20 "Attribútum vagy érték létezik" + 21 "Érvénytelen szintakszis" + 22 "" + 23 "" + 24 "" + 25 "" + 26 "" + 27 "" + 28 "" + 29 "" + 30 "" + 31 "" + 32 "Nincs ilyen objektum" + 33 "Álnév probléma" + 34 "Érvénytelen DN szintakszis" + 35 "Ez egy levél" + 36 "Álnév dereferencia probléma" + 37 "" + 38 "" + 39 "" + 40 "" + 41 "" + 42 "" + 43 "" + 44 "" + 45 "" + 46 "" + 47 "" + 48 "Nem megfelelő hitelesítés" + 49 "Érvénytelen azonosítók" + 50 "Nem elegendő jogok" + 51 "Foglalt" + 52 "Nem elérhető" + 53 "Nem akarja végrehajtani" + 54 "Ciklus találva" + 55 "" + 56 "" + 57 "" + 58 "" + 59 "" + 60 "Rendezési vezérlés hiányzik" + 61 "Index tartomány hiba" + 62 "" + 63 "" + 64 "Elnevezési összeférhetetlenség" + 65 "Objektum osztály összeférhetetlenség" + 66 "Nem negedélyezett nem levélen" + 67 "Nem engedélyezett RDN-en" + 68 "Már létezik" + 69 "Nincsenek objektum osztály modok" + 70 "Eredmény túl nagy" + 71 "Több DSA-ra van hatással" + 72 "" + 73 "" + 74 "" + 75 "" + 76 "" + 77 "" + 78 "" + 79 "" + 80 "Egyéb" + 81 "Kiszolgáló nem elérhető" + 82 "Helyi hiba" + 83 "Kódolási hiba" + 84 "Dekódolási hiba" + 85 "Időtúllépés" + 86 "Ismeretlen hitelesítés" + 87 "Szűrő hiba" + 88 "Felhasználó megszakította" + 89 "Paraméter hiba" + 90 "Nincs memória" + 91 "Nem tudok csatlakozni az LDAP kiszolgálóhoz" + 92 "A műveletet az LDAP protokoll ezen verziója nem támogatja" + 93 "A megadott vezérlő nem található az üzenetben" + 94 "Nincs eredmény az üzenetben" + 95 "Több eredmény jött vissza" + 96 "Ciklus a beszámolók kezelése közben" + 97 "Beszámolási ugrás limit túllépve" +} diff --git a/reactos/dll/win32/wldap32/wldap32_It.rc b/reactos/dll/win32/wldap32/wldap32_It.rc new file mode 100644 index 00000000000..a7c9b6bbfe3 --- /dev/null +++ b/reactos/dll/win32/wldap32/wldap32_It.rc @@ -0,0 +1,128 @@ +/* + * Italian resources for WLDAP32 + * + * Copyright 2010 Luca Bennati + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#include "windef.h" + +/*UTF-8*/ +#pragma code_page(65001) + +LANGUAGE LANG_ITALIAN, SUBLANG_NEUTRAL + +STRINGTABLE DISCARDABLE +{ + 0 "Successo" + 1 "Errore nelle operazioni" + 2 "Errore nel protocollo" + 3 "Superato il tempo limite" + 4 "Superata la dimensione massima" + 5 "Compara falso" + 6 "Compara vero" + 7 "Metodo di autenticazione non supportato" + 8 "Autenticazione forte richiesta" + 9 "Referral (v2)" + 10 "Referral" + 11 "Superato il limite di amministrazione" + 12 "Estensione critica non disponibile" + 13 "Richiesta confidenzialità" + 14 "" + 15 "" + 16 "Attributo inesistente" + 17 "Tipo non definito" + 18 "Matching inappropriato" + 19 "Violazione del vincolo" + 20 "Attributo o valore esistente" + 21 "Sintassi non valida" + 22 "" + 23 "" + 24 "" + 25 "" + 26 "" + 27 "" + 28 "" + 29 "" + 30 "" + 31 "" + 32 "Oggetto inesistente" + 33 "Problema di alias" + 34 "Sintassi DN non valida" + 35 "È foglia" + 36 "Problema di dereferenziazione di alias" + 37 "" + 38 "" + 39 "" + 40 "" + 41 "" + 42 "" + 43 "" + 44 "" + 45 "" + 46 "" + 47 "" + 48 "Autenticazione non appropriata" + 49 "Credenziali non valide" + 50 "Diritti insufficenti" + 51 "Occupato" + 52 "Non disponibile" + 53 "Non intenzionato ad agire" + 54 "Trovato Loop" + 55 "" + 56 "" + 57 "" + 58 "" + 59 "" + 60 "Controllo dell'ordine mancante" + 61 "Errore di range dell'indice" + 62 "" + 63 "" + 64 "Violazione di nominazione" + 65 "Violazione di classe dell'oggetto" + 66 "Non permesso su non-foglie" + 67 "Non permesso su RDN" + 68 "Esiste già" + 69 "Nessuna mod di classi di oggetto" + 70 "Risultati troppo grandi" + 71 "Ha effetto su molti DSA" + 72 "" + 73 "" + 74 "" + 75 "" + 76 "" + 77 "" + 78 "" + 79 "" + 80 "Altro" + 81 "Server irraggiungibile" + 82 "Errore locale" + 83 "Errore di codifica" + 84 "Errore di decodifica" + 85 "Timeout" + 86 "Autenticazione sconosciuta" + 87 "Errore del filtro" + 88 "Utente eliminato" + 89 "Errore del parametro" + 90 "Memoria non disponibile" + 91 "Impossibile connettersi al server LDAP" + 92 "Operazione non supportata da questa versione del protocollo LDAP" + 93 "Il controllo specificato non è stato trovato nel messaggio" + 94 "Nessun rislutato presente nel messaggio" + 95 "Più risultati ricevuti" + 96 "Loop nel gestire i referral" + 97 "Ecceduto il limite di salti di referral" +} diff --git a/reactos/dll/win32/wldap32/wldap32_Nl.rc b/reactos/dll/win32/wldap32/wldap32_Nl.rc index 58ac2efc531..7de79d2f033 100644 --- a/reactos/dll/win32/wldap32/wldap32_Nl.rc +++ b/reactos/dll/win32/wldap32/wldap32_Nl.rc @@ -41,7 +41,7 @@ STRINGTABLE DISCARDABLE 14 "" 15 "" 16 "Attribuut bestaat niet" - 17 "Ongedefinierd type" + 17 "Ongedefinieerd type" 18 "Foutieve vergelijking" 19 "Schending van restrictie" 20 "Attribuut of waarde bestaat" @@ -58,7 +58,7 @@ STRINGTABLE DISCARDABLE 31 "" 32 "Object bestaat niet" 33 "Aliasprobleem" - 34 "Ongeldige DN syntax" + 34 "Ongeldige DN-syntax" 35 "Eindknoop" 36 "Alias volgprobleem" 37 "" @@ -78,7 +78,7 @@ STRINGTABLE DISCARDABLE 51 "Bezig" 52 "Niet beschikbaar" 53 "Uitvoering geweigerd" - 54 "Cirkel gedetecteerd" + 54 "Lus gedetecteerd" 55 "" 56 "" 57 "" @@ -95,7 +95,7 @@ STRINGTABLE DISCARDABLE 68 "Bestaat reeds" 69 "Geen objectklassemodificaties" 70 "Resultaten te groot" - 71 "Betreft meerdere DSAs" + 71 "Betreft meerdere DSA's" 72 "" 73 "" 74 "" @@ -120,6 +120,6 @@ STRINGTABLE DISCARDABLE 93 "Opgegeven besturingselement niet gevonden in bericht" 94 "Geen resultaat aanwezig in bericht" 95 "Meer resultaten teruggekregen" - 96 "Cirkel gevonden bij het verwerken van verwijzingen" + 96 "Lus gevonden bij het verwerken van verwijzingen" 97 "Overschrijding van limiet op verwijzingen" } diff --git a/reactos/dll/win32/wldap32/wldap32_Pt.rc b/reactos/dll/win32/wldap32/wldap32_Pt.rc index 386c7a5b11f..754dbebc890 100644 --- a/reactos/dll/win32/wldap32/wldap32_Pt.rc +++ b/reactos/dll/win32/wldap32/wldap32_Pt.rc @@ -2,6 +2,7 @@ * Portuguese resources for WLDAP32 * * Copyright 2008 Ricardo Filipe + * Copyright 2010 Gustavo Henrique Milaré * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -20,32 +21,34 @@ #include "windef.h" -LANGUAGE LANG_PORTUGUESE, SUBLANG_NEUTRAL +#pragma code_page(65001) + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE_BRAZILIAN STRINGTABLE DISCARDABLE { 0 "Sucesso" - 1 "Erro de operaes" - 2 "Erro de protocolo" - 3 "Tempo limite excedido" - 4 "Tamanho limite excedido" + 1 "Erro de Operações" + 2 "Erro de Protocolo" + 3 "Tempo Limite Excedido" + 4 "Tamanho Limite Excedido" 5 "Comparar Falso" 6 "Comparar Verdadeiro" - 7 "Mtodo de autenticao no suportado" - 8 "Autenticao forte necessria" - 9 "Referncia (v2)" - 10 "Referncia" - 11 "Limite de administrao excedido" - 12 "Extenso Crtica indisponvel" - 13 "Confidencialidade necessria" + 7 "Método de Autenticação Não Suportado" + 8 "Autenticação Forte Necessária" + 9 "Referência (v2)" + 10 "Referência" + 11 "Limite de Administração Excedido" + 12 "Extensão Crítica Indisponível" + 13 "Confidencialidade Necessária" 14 "" 15 "" - 16 "Atributo no encontrado" - 17 "Tipo indefinido" - 18 "Atribuio imprpria" - 19 "Violao de restries" - 20 "Valor ou atributo existente" - 21 "Sintaxe Invlida" + 16 "Atributo Não Encontrado" + 17 "Tipo Indefinido" + 18 "Atribuição Imprópria" + 19 "Violação de Restrições" + 20 "Valor ou Atributo Existente" + 21 "Sintaxe Inválida" 22 "" 23 "" 24 "" @@ -56,11 +59,11 @@ STRINGTABLE DISCARDABLE 29 "" 30 "" 31 "" - 32 "Objecto no encontrado" - 33 "Problema de abreviatura" - 34 "Sintaxe DN invlida" - 35 " folha" - 36 "Problema na referncia da abreviatura" + 32 "Objeto Não Encontrado" + 33 "Problema de Abreviatura" + 34 "Sintaxe DN Inválida" + 35 "É Leaf" + 36 "Problema na Referência da Abreviatura" 37 "" 38 "" 39 "" @@ -72,30 +75,30 @@ STRINGTABLE DISCARDABLE 45 "" 46 "" 47 "" - 48 "Autenticao imprpria" - 49 "Credenciais Invlidas" - 50 "Direitos insuficientes" + 48 "Autenticação Imprópria" + 49 "Credenciais Inválidas" + 50 "Direitos Insuficientes" 51 "Ocupado" - 52 "Indisponvel" - 53 "Indisposto a realizar" - 54 "Ciclo detectado" + 52 "Indisponível" + 53 "Indisposto a Realizar" + 54 "Loop Detectado" 55 "" 56 "" 57 "" 58 "" 59 "" - 60 "Falta de controlo de ordenao" - 61 "Erro de limite de ndice" + 60 "Falta de Controle de Ordenação" + 61 "Erro de Limite de Índice" 62 "" 63 "" - 64 "Violao de Nome" - 65 "Violao da Classe de Objecto" - 66 "No permitido em no-folha" - 67 "No permitido em RDN" - 68 "J existe" - 69 "Sem modificaes de Classe de Objecto" - 70 "Resultados muito grandes" - 71 "Afecta mltiplos DSAs" + 64 "Violação de Nome" + 65 "Violação da Classe de Objeto" + 66 "Não Permitido em Non-leaf" + 67 "Não Permitido em RDN" + 68 "Já Existe" + 69 "Sem modificações de Classe de Objeto" + 70 "Resultados Muito Grandes" + 71 "Afeta Múltiplos DSAs" 72 "" 73 "" 74 "" @@ -105,21 +108,125 @@ STRINGTABLE DISCARDABLE 78 "" 79 "" 80 "Outro" - 81 "Servidor em baixo" + 81 "Servidor Desligado" 82 "Erro Local" - 83 "Erro de Codificao" - 84 "Erro de Descodificao" + 83 "Erro de Codificação" + 84 "Erro de Descodificação" 85 "Tempo excedido" - 86 "Autenticao desconhecida" - 87 "Erro de filtro" - 88 "Cancelado pelo utilizador" - 89 "Erro de parmetro" - 90 "Sem memria" - 91 "No consegue ligar ao servidor LDAP" - 92 "Operao no suportada por esta verso do protocolo LDAP" - 93 "O controlo especificado no foi encontrado na mensagem" + 86 "Autenticação desconhecida" + 87 "Erro de Filtro" + 88 "Cancelado pelo Usuário" + 89 "Erro de Parâmetro" + 90 "Sem Memória" + 91 "Impossível conectar-se ao servidor LDAP" + 92 "Operação não suportada por esta versão do protocolo LDAP" + 93 "O controle especificado não foi encontrado na mensagem" 94 "Nenhum resultado presente na mensagem" 95 "Mais resultados devolvidos" - 96 "Ciclo enquanto resolve referncias" - 97 "Limite de salto de referncias excedido" + 96 "Loop enquanto resolve referências" + 97 "Limite de salto de referências excedido" +} + +LANGUAGE LANG_PORTUGUESE, SUBLANG_PORTUGUESE + +STRINGTABLE DISCARDABLE +{ + 0 "Sucesso" + 1 "Erro de Operações" + 2 "Erro de Protocolo" + 3 "Tempo Limite Excedido" + 4 "Tamanho Limite Excedido" + 5 "Comparar Falso" + 6 "Comparar Verdadeiro" + 7 "Método de Autenticação não Suportado" + 8 "Autenticação Forte Necessária" + 9 "Referência (v2)" + 10 "Referência" + 11 "Limite de Administração Excedido" + 12 "Extensão Crítica Indisponível" + 13 "Confidencialidade Necessária" + 14 "" + 15 "" + 16 "Atributo não Encontrado" + 17 "Tipo Indefinido" + 18 "Atribuição Imprópria" + 19 "Violação de Restrições" + 20 "Valor ou Atributo Existente" + 21 "Sintaxe Inválida" + 22 "" + 23 "" + 24 "" + 25 "" + 26 "" + 27 "" + 28 "" + 29 "" + 30 "" + 31 "" + 32 "Objecto Não Encontrado" + 33 "Problema de Abreviatura" + 34 "Sintaxe DN Inválida" + 35 "É folha" + 36 "Problema na Referência da Abreviatura" + 37 "" + 38 "" + 39 "" + 40 "" + 41 "" + 42 "" + 43 "" + 44 "" + 45 "" + 46 "" + 47 "" + 48 "Autenticação Imprópria" + 49 "Credenciais Inválidas" + 50 "Direitos Insuficientes" + 51 "Ocupado" + 52 "Indisponível" + 53 "Indisposto a Realizar" + 54 "Ciclo Detectado" + 55 "" + 56 "" + 57 "" + 58 "" + 59 "" + 60 "Falta de Controlo de Ordenação" + 61 "Erro de Limite de Índice" + 62 "" + 63 "" + 64 "Violação de Nome" + 65 "Violação da Classe de Objecto" + 66 "Não Permitido em Não-folha" + 67 "Não Permitido em RDN" + 68 "Já Existe" + 69 "Sem Modificações de Classe de Objecto" + 70 "Resultados Muito Grandes" + 71 "Afecta Múltiplos DSAs" + 72 "" + 73 "" + 74 "" + 75 "" + 76 "" + 77 "" + 78 "" + 79 "" + 80 "Outro" + 81 "Servidor em Baixo" + 82 "Erro Local" + 83 "Erro de Codificação" + 84 "Erro de Descodificação" + 85 "Tempo Excedido" + 86 "Autenticação Desconhecida" + 87 "Erro de Filtro" + 88 "Cancelado pelo Utilizador" + 89 "Erro de Parâmetro" + 90 "Sem Memória" + 91 "Não consegue ligar ao servidor LDAP" + 92 "Operação não suportada por esta versão do protocolo LDAP" + 93 "O controlo especificado não foi encontrado na mensagem" + 94 "Nenhum resultado presente na mensagem" + 95 "Mais resultados devolvidos" + 96 "Ciclo enquanto resolve referências" + 97 "Limite de salto de referências excedido" } diff --git a/reactos/dll/win32/wldap32/wldap32_Ru.rc b/reactos/dll/win32/wldap32/wldap32_Ru.rc index 9029b8afa8d..530da522d7a 100644 --- a/reactos/dll/win32/wldap32/wldap32_Ru.rc +++ b/reactos/dll/win32/wldap32/wldap32_Ru.rc @@ -44,7 +44,7 @@ STRINGTABLE DISCARDABLE 14 "" 15 "" 16 "Нет такого атрибута" - 17 "Неопределенный тип" + 17 "Неопределённый тип" 18 "Неподходящее соответствие" 19 "Нарушение ограничения" 20 "Атрибут или значение существует" @@ -122,7 +122,7 @@ STRINGTABLE DISCARDABLE 92 "Операция не поддерживается этой версией протокола LDAP" 93 "Указанный управляющий элемент не найден в сообщении" 94 "Результата нет в сообщении" - 95 "Еще есть результаты" + 95 "Ещё есть результаты" 96 "Зацикливание при обработке ссылок" 97 "Предел числа пересылки ссылок превышен" } diff --git a/reactos/dll/win32/wldap32/wldap32_Uk.rc b/reactos/dll/win32/wldap32/wldap32_Uk.rc index 54fe9431f72..56c54c6b15c 100644 --- a/reactos/dll/win32/wldap32/wldap32_Uk.rc +++ b/reactos/dll/win32/wldap32/wldap32_Uk.rc @@ -38,18 +38,18 @@ STRINGTABLE DISCARDABLE 6 "Порівняння вірне" 7 "Метод авторизації не підтримується" 8 "Потрібна тверда авторизація" - 9 "Referral (v2)" - 10 "Referral" + 9 "Посилання (v2)" + 10 "Посилання" 11 "Перевищено обмеження адміністрування" - 12 "Unavailable Critical Extension" + 12 "Критичне розширення недоступне" 13 "Потрібна конфіденційність" 14 "" 15 "" 16 "Немає такої властивості" 17 "Невизначений тип" - 18 "Inappropriate Matching" - 19 "Constraint Violation" - 20 "Всастивість або значення існує" + 18 "Недоречна відповідність" + 19 "Порушення обмеження" + 20 "Властивість або значення існує" 21 "Неправильний синтакс" 22 "" 23 "" @@ -77,12 +77,12 @@ STRINGTABLE DISCARDABLE 45 "" 46 "" 47 "" - 48 "Inappropriate Authentication" + 48 "Невідповідна ідентифікація" 49 "Невірні облікові дані" 50 "Недостатньо прав" 51 "Зайнято" 52 "Недоступно" - 53 "Unwilling To Perform" + 53 "Не бажає виконувати" 54 "Виявлено зациклювання" 55 "" 56 "" @@ -95,7 +95,7 @@ STRINGTABLE DISCARDABLE 63 "" 64 "Порушення прав найменування" 65 "Порушення класу об'єкту" - 66 "Не дозволено не налисті дерева" + 66 "Не дозволено не на листі дерева" 67 "Не дозволено на RDN" 68 "Вже існує" 69 "Немає режимів класу об'єкту" @@ -114,8 +114,8 @@ STRINGTABLE DISCARDABLE 82 "Локальна помилка" 83 "Помилка кодування" 84 "Помилка декодування" - 85 "Timeout" - 86 "Auth Unknown" + 85 "Тайм-аут" + 86 "Невідома авторизація" 87 "Помилка фільтру" 88 "Відмінено користувачем" 89 "Помилка параметра" @@ -124,7 +124,7 @@ STRINGTABLE DISCARDABLE 92 "Операція не підтримується цією версією протоколу LDAP" 93 "Вказаний елемент керування не знайдено в повідомленні" 94 "В повідомленні немає результату" - 95 "More results returned" - 96 "Loop while handling referrals" - 97 "Referral hop limit exceeded" + 95 "Існують ще результати" + 96 "Зациклювання при обробці посилань" + 97 "Перевищено граничну кількість пересилання посилань" } diff --git a/reactos/dll/win32/wtsapi32/wtsapi32.c b/reactos/dll/win32/wtsapi32/wtsapi32.c index 880f3c9a925..ab35de4f2ea 100644 --- a/reactos/dll/win32/wtsapi32/wtsapi32.c +++ b/reactos/dll/win32/wtsapi32/wtsapi32.c @@ -15,25 +15,13 @@ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA */ -#define WIN32_NO_STATUS #include "config.h" #include +#include #include "windef.h" - #include "winbase.h" #include "wtsapi32.h" -#include "winnls.h" -#include "aclapi.h" -#include "debug.h" - -#if defined(_MSC_VER) - #include "ntstatus.h" -#endif - -#include "ketypes.h" -#include "extypes.h" -#include "exfuncs.h" -#include "rtlfuncs.h" +#include "wine/debug.h" WINE_DEFAULT_DEBUG_CHANNEL(wtsapi); @@ -59,8 +47,6 @@ BOOL WINAPI DllMain (HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved) return TRUE; } -static PVOID WTSMallocMemory(SIZE_T nSize); - /************************************************************ * WTSCloseServer (WTSAPI32.@) */ @@ -78,205 +64,19 @@ BOOL WINAPI WTSDisconnectSession(HANDLE hServer, DWORD SessionId, BOOL bWait) return TRUE; } -/************************************************************ -* QueryProcesses -* Helper function for getting processes list from NtQuerySystemInformation -*/ -static PSYSTEM_PROCESS_INFORMATION QueryProcesses() -{ - PSYSTEM_PROCESS_INFORMATION SysProcessesInfo = NULL; - NTSTATUS Status; - ULONG BufferSize = 0x8000; - ULONG ReturnedBufferSize = 0; - do - { - /* free the buffer, and reallocate it to the new size. RATIONALE: since we - ignore the buffer's contents at this point, there's no point in a realloc() - that could end up copying a large chunk of data we'd discard anyway */ - WTSFreeMemory(SysProcessesInfo); - SysProcessesInfo = (PSYSTEM_PROCESS_INFORMATION)WTSMallocMemory(BufferSize); - - if (SysProcessesInfo == NULL) - { - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return FALSE; - } - - /* query the information */ - Status = NtQuerySystemInformation(SystemProcessInformation, - SysProcessesInfo, - BufferSize, - &ReturnedBufferSize); - - /* adjust necessary buffer size with returned value or double its size */ - BufferSize = ReturnedBufferSize; - } - while (Status == STATUS_INFO_LENGTH_MISMATCH); - return SysProcessesInfo; -} - -/************************************************************ -* GetNextProcess -* Helper function for iterating NtQuerySystemInformation response -*/ -static PSYSTEM_PROCESS_INFORMATION GetNextProcess(PSYSTEM_PROCESS_INFORMATION Process) -{ - if (Process->NextEntryOffset == 0) - { - return NULL; - } - return (PSYSTEM_PROCESS_INFORMATION)((LPBYTE)Process + Process->NextEntryOffset); -} - -/************************************************************ -* CountProcesses -* Helper function for calculating process count -* Also calculates necessary space for ImageName unicode strings -*/ -static DWORD CountProcesses(IN PSYSTEM_PROCESS_INFORMATION Process, OUT PDWORD pImageNameLength) -{ - DWORD ProcessCount = 0; - DWORD Length = 0; - *pImageNameLength = 0; - while (Process != NULL) - { - ++ProcessCount; - Length = Process->ImageName.Length + sizeof(WCHAR); - *pImageNameLength += ALIGN_UP(Length, 8); - Process = GetNextProcess(Process); - } - return ProcessCount; -} -/************************************************************ -* GetProcessOwner -* Helper function for getting owner SID for process -*/ -static BOOL GetProcessOwner(DWORD ProcessId, PSID pSid, DWORD BufferSize) -{ - BOOL Success = FALSE; - HANDLE hProcess = NULL; - PSID ProcessUser = NULL; - PSECURITY_DESCRIPTOR ProcessSD = NULL; - DWORD Error; - hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | READ_CONTROL, FALSE, ProcessId); - if (hProcess != NULL) - { - ProcessUser = NULL; - ProcessSD = NULL; - Error = GetSecurityInfo(hProcess, - SE_KERNEL_OBJECT, - OWNER_SECURITY_INFORMATION, - &ProcessUser, - NULL, - NULL, - NULL, - &ProcessSD); - if (!Error) - { - if (ProcessUser != NULL) - { - Success = !RtlCopySid(BufferSize, pSid, ProcessUser); - } - LocalFree(ProcessSD); - } - CloseHandle(hProcess); - } - return Success; -} - /************************************************************ * WTSEnumerateProcessesA (WTSAPI32.@) */ BOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version, - PWTS_PROCESS_INFOA* ppProcessInfo, DWORD* pCount) + PWTS_PROCESS_INFOA* ppProcessInfo, DWORD* pCount) { - PSYSTEM_PROCESS_INFORMATION SysProcessInfo = NULL; - PSYSTEM_PROCESS_INFORMATION SysProcess; - PBYTE Data; - PWTS_PROCESS_INFOA Process; - ULONG BufferSize = 0; - DWORD ProcessCount = 0; - DWORD Offset; - DWORD Length; - DWORD ProcessId; + FIXME("Stub %p 0x%08x 0x%08x %p %p\n", hServer, Reserved, Version, + ppProcessInfo, pCount); if (!ppProcessInfo || !pCount) return FALSE; *pCount = 0; - - if (Version != 1) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - if (hServer != WTS_CURRENT_SERVER_HANDLE) - { - FIXME("Stub %p 0x%08x 0x%08x %p %p\n", hServer, Reserved, Version, - ppProcessInfo, pCount); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; - } - - SysProcessInfo = QueryProcesses(); - if (SysProcessInfo == NULL) - { - return FALSE; - } - // Calculates buffer size for processes information - ProcessCount = CountProcesses(SysProcessInfo, &BufferSize); - // Doubles space for strings (in case of UTF-8 or UTF-7 is used as default code page) - BufferSize *= 2; - // And count space for records and SIDs - BufferSize += ProcessCount * (sizeof(WTS_PROCESS_INFOA) + SECURITY_MAX_SID_SIZE); - - Data = (PBYTE)WTSMallocMemory(BufferSize); - if (Data == NULL) - { - WTSFreeMemory(SysProcessInfo); - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return FALSE; - } - - // WTS_PROCESS_INFOW structures are put in beginning of the buffer - // FileName paths and SIDs should be located later after this part - // That way user will be able to free buffer memory - // with single WTSFreeMemory call - for (SysProcess = SysProcessInfo, Process = (PWTS_PROCESS_INFOA)Data, - Offset = ProcessCount * sizeof(WTS_PROCESS_INFOA); - SysProcess != NULL; - SysProcess = GetNextProcess(SysProcess), ++Process) - { - ProcessId = PtrToUint(SysProcess->UniqueProcessId); - Process->SessionId = SysProcess->SessionId; - // Get unique process id - Process->ProcessId = ProcessId; - Process->pProcessName = (LPSTR)(Data + Offset); - RtlUnicodeToMultiByteN(Process->pProcessName, BufferSize - Offset, &Length, - SysProcess->ImageName.Buffer, SysProcess->ImageName.Length); - Process->pProcessName[Length++] = 0; - Offset += ALIGN_UP(Length, 8); - Process->pUserSid = NULL; - if (ProcessId > 0) - { - Process->pUserSid = (PSID)(Data + Offset); - if (GetProcessOwner(ProcessId, Process->pUserSid, BufferSize - Offset)) - { - Length = RtlLengthSid(Process->pUserSid); - Offset += ALIGN_UP(Length, 8); - } - else - { - Process->pUserSid = NULL; - } - } - } - - WTSFreeMemory(SysProcessInfo); - - // Now we may assign output values - *pCount = ProcessCount; - *ppProcessInfo = (PWTS_PROCESS_INFOA)Data; + *ppProcessInfo = NULL; return TRUE; } @@ -285,99 +85,15 @@ BOOL WINAPI WTSEnumerateProcessesA(HANDLE hServer, DWORD Reserved, DWORD Version * WTSEnumerateProcessesW (WTSAPI32.@) */ BOOL WINAPI WTSEnumerateProcessesW(HANDLE hServer, DWORD Reserved, DWORD Version, - PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount) + PWTS_PROCESS_INFOW* ppProcessInfo, DWORD* pCount) { - PSYSTEM_PROCESS_INFORMATION SysProcessInfo = NULL; - PSYSTEM_PROCESS_INFORMATION SysProcess; - PBYTE Data; - PWTS_PROCESS_INFOW Process; - ULONG BufferSize; - DWORD ProcessCount = 0; - DWORD Offset; - DWORD Length; - DWORD ProcessId; + FIXME("Stub %p 0x%08x 0x%08x %p %p\n", hServer, Reserved, Version, + ppProcessInfo, pCount); if (!ppProcessInfo || !pCount) return FALSE; *pCount = 0; - - if (Version != 1) - { - SetLastError(ERROR_INVALID_PARAMETER); - return FALSE; - } - - if (hServer != WTS_CURRENT_SERVER_HANDLE) - { - FIXME("Stub %p 0x%08x 0x%08x %p %p\n", hServer, Reserved, Version, - ppProcessInfo, pCount); - SetLastError(ERROR_CALL_NOT_IMPLEMENTED); - return FALSE; - } - - SysProcessInfo = QueryProcesses(); - if (SysProcessInfo == NULL) - { - return FALSE; - } - /* Calculating necessary buffer length */ - ProcessCount = CountProcesses(SysProcessInfo, &BufferSize); - BufferSize += ProcessCount * (sizeof(WTS_PROCESS_INFOW) + SECURITY_MAX_SID_SIZE); - - Data = (PBYTE)WTSMallocMemory(BufferSize); - if (Data == NULL) - { - WTSFreeMemory(SysProcessInfo); - SetLastError(ERROR_NOT_ENOUGH_MEMORY); - return FALSE; - } - - // WTS_PROCESS_INFOW structures are put in beginning of the buffer - // FileName paths and SIDs should be located later after this part - // That way user will be able to free buffer memory - // with single WTSFreeMemory call - for (SysProcess = SysProcessInfo, Process = (PWTS_PROCESS_INFOW)Data, - Offset = ProcessCount * sizeof(WTS_PROCESS_INFOW); - SysProcess != NULL; - SysProcess = GetNextProcess(SysProcess), ++Process) - { - ProcessId = PtrToUint(SysProcess->UniqueProcessId); - Process->SessionId = SysProcess->SessionId; - // Get unique process id - Process->ProcessId = ProcessId; - Process->pProcessName = (LPWSTR)(Data + Offset); - if (SysProcess->ImageName.Buffer != NULL) - { - Length = SysProcess->ImageName.Length + sizeof(WCHAR); - RtlCopyMemory(Process->pProcessName, SysProcess->ImageName.Buffer, Length); - } - else - { - *Process->pProcessName = L'\0'; - Length = sizeof(*Process->pProcessName); - } - Offset += ALIGN_UP(Length, 8); - Process->pUserSid = NULL; - if (ProcessId > 0) - { - Process->pUserSid = (PSID)(Data + Offset); - if (GetProcessOwner(ProcessId, Process->pUserSid, BufferSize - Offset)) - { - Length = RtlLengthSid(Process->pUserSid); - Offset += ALIGN_UP(Length, 8); - } - else - { - Process->pUserSid = NULL; - } - } - } - - WTSFreeMemory(SysProcessInfo); - - // Now we may assign output values - *pCount = ProcessCount; - *ppProcessInfo = (PWTS_PROCESS_INFOW)Data; + *ppProcessInfo = NULL; return TRUE; } @@ -416,21 +132,13 @@ BOOL WINAPI WTSEnumerateSessionsW(HANDLE hServer, DWORD Reserved, DWORD Version, return TRUE; } -/************************************************************ -* WTSMallocMemory -* Complimentary function to WTSFreeMemory from API -*/ -static PVOID WTSMallocMemory(SIZE_T nSize) -{ - return HeapAlloc(GetProcessHeap(), 0, nSize); -} - /************************************************************ * WTSFreeMemory (WTSAPI32.@) */ void WINAPI WTSFreeMemory(PVOID pMemory) { - HeapFree(GetProcessHeap(), 0, pMemory); + FIXME("Stub %p\n", pMemory); + return; } /************************************************************ @@ -487,36 +195,6 @@ BOOL WINAPI WTSQuerySessionInformationW( return FALSE; } -/************************************************************ - * WTSQueryUserToken (WTSAPI32.@) - * - * Obtains the primary access token of the logged-on user specified by the session ID. - * - * PARAMS - * SessionId [in] -- RDP session identifier - * phToken [out] -- pointer to the token handle for the logged-on user - * - * - * RETURNS - * - On success - pointer to the primary token of the user - * - On failure - zero - * - * - * NOTES - * - token handle should be closed after use with CloseHandle - * - on Failure, extended error information is available via GetLastError - * - */ -BOOL WINAPI WTSQueryUserToken( - ULONG SessionId, - PHANDLE phToken) -{ - *phToken = (HANDLE)0; - SetLastError(ERROR_NO_TOKEN); - FIXME("Stub %d\n", SessionId); - return FALSE; -} - /************************************************************ * WTSWaitSystemEvent (WTSAPI32.@) */ @@ -544,3 +222,12 @@ BOOL WINAPI WTSUnRegisterSessionNotification(HWND hWnd) FIXME("Stub %p\n", hWnd); return FALSE; } + +/************************************************************ + * WTSQueryUserToken (WTSAPI32.@) + */ +BOOL WINAPI WTSQueryUserToken(ULONG session_id, PHANDLE token) +{ + FIXME("%u %p\n", session_id, token); + return FALSE; +} diff --git a/reactos/dll/win32/wuapi/updates.c b/reactos/dll/win32/wuapi/updates.c index 1bf063b999f..0366ebc94bf 100644 --- a/reactos/dll/win32/wuapi/updates.c +++ b/reactos/dll/win32/wuapi/updates.c @@ -144,7 +144,7 @@ static HRESULT WINAPI automatic_updates_Pause( IAutomaticUpdates *This ) { FIXME("\n"); - return E_NOTIMPL; + return S_OK; } static HRESULT WINAPI automatic_updates_Resume( diff --git a/reactos/dll/win32/xinput1_3/xinput1_3_main.c b/reactos/dll/win32/xinput1_3/xinput1_3_main.c index fc55cef37b7..2b3a5f737d6 100644 --- a/reactos/dll/win32/xinput1_3/xinput1_3_main.c +++ b/reactos/dll/win32/xinput1_3/xinput1_3_main.c @@ -69,7 +69,10 @@ DWORD WINAPI XInputSetState(DWORD dwUserIndex, XINPUT_VIBRATION* pVibration) DWORD WINAPI XInputGetState(DWORD dwUserIndex, XINPUT_STATE* pState) { - FIXME("(%u %p)\n", dwUserIndex, pState); + static int warn_once; + + if (!warn_once++) + FIXME("(%u %p)\n", dwUserIndex, pState); if (dwUserIndex < XUSER_MAX_COUNT) { @@ -93,7 +96,10 @@ DWORD WINAPI XInputGetKeystroke(DWORD dwUserIndex, DWORD dwReserve, PXINPUT_KEYS DWORD WINAPI XInputGetCapabilities(DWORD dwUserIndex, DWORD dwFlags, XINPUT_CAPABILITIES* pCapabilities) { - FIXME("(%d %d %p)\n", dwUserIndex, dwFlags, pCapabilities); + static int warn_once; + + if (!warn_once++) + FIXME("(%d %d %p)\n", dwUserIndex, dwFlags, pCapabilities); if (dwUserIndex < XUSER_MAX_COUNT) { diff --git a/reactos/include/psdk/snmp.h b/reactos/include/psdk/snmp.h index d069b704b7c..cedf7b0acc0 100644 --- a/reactos/include/psdk/snmp.h +++ b/reactos/include/psdk/snmp.h @@ -1,261 +1,298 @@ /* - snmp.h - Header file for the Windows SNMP API + * Copyright (C) 2005 Juan Lang + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ +#ifndef _WINE_SNMP_H +#define _WINE_SNMP_H - Written by Filip Navara - - References (2003-08-25): - http://msdn.microsoft.com/library/en-us/snmp/snmp/snmp_reference.asp - - This library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. -*/ - -#ifndef _SNMP_H -#define _SNMP_H - -#ifndef _WINDOWS_H -#include +#ifndef __WINESRC__ +# include +#else +# include #endif #include -#ifndef WINSNMPAPI -#define WINSNMPAPI WINAPI -#endif +typedef struct { + BYTE *stream; + UINT length; + BOOL dynamic; +} AsnOctetString; -#ifdef __cplusplus -extern "C" { -#endif +typedef struct { + UINT idLength; + UINT *ids; +} AsnObjectIdentifier; -#define DEFAULT_SNMP_PORT_UDP 161 -#define DEFAULT_SNMP_PORT_IPX 36879 -#define DEFAULT_SNMPTRAP_PORT_UDP 162 -#define DEFAULT_SNMPTRAP_PORT_IPX 36880 -#ifndef _SNMP_ASN_DEFINED -#define _SNMP_ASN_DEFINED -#define ASN_UNIVERSAL 0x00 -#define ASN_PRIMITIVE 0x00 -#define ASN_CONSTRUCTOR 0x20 -#define ASN_APPLICATION 0x40 -#define ASN_CONTEXT 0x80 -#define ASN_PRIVATE 0xC0 -#define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0) -#define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 1) -#define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 2) -#define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 3) -#define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 4) -#define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 4) -#define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 6) -#define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 7) -#define SNMP_PDU_REPORT (ASN_CONTEXT | ASN_CONSTRUCTOR | 8) -#endif /* _SNMP_ASN_DEFINED */ -#define ASN_INTEGER (ASN_UNIVERSAL | ASN_PRIMITIVE | 2) -#define ASN_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 3) -#define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 4) -#define ASN_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 5) -#define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | ASN_PRIMITIVE | 6) -#define ASN_INTEGER32 ASN_INTEGER -#define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10) -#define ASN_SEQUENCEOF ASN_SEQUENCE -#define ASN_IPADDRESS (ASN_APPLICATION | ASN_PRIMITIVE | 0x00) -#define ASN_COUNTER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01) -#define ASN_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02) -#define ASN_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03) -#define ASN_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04) -#define ASN_COUNTER64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06) -#define ASN_UNSIGNED32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07) -#define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00) -#define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01) -#define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02) -#define SNMP_EXTENSION_GET SNMP_PDU_GET -#define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT -#define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK -#define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0) -#define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET -#define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1) -#define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2) -#define SNMP_ERRORSTATUS_NOERROR 0 -#define SNMP_ERRORSTATUS_TOOBIG 1 -#define SNMP_ERRORSTATUS_NOSUCHNAME 2 -#define SNMP_ERRORSTATUS_BADVALUE 3 -#define SNMP_ERRORSTATUS_READONLY 4 -#define SNMP_ERRORSTATUS_GENERR 5 -#define SNMP_ERRORSTATUS_NOACCESS 6 -#define SNMP_ERRORSTATUS_WRONGTYPE 7 -#define SNMP_ERRORSTATUS_WRONGLENGTH 8 -#define SNMP_ERRORSTATUS_WRONGENCODING 9 -#define SNMP_ERRORSTATUS_WRONGVALUE 10 -#define SNMP_ERRORSTATUS_NOCREATION 11 -#define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12 -#define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13 -#define SNMP_ERRORSTATUS_COMMITFAILED 14 -#define SNMP_ERRORSTATUS_UNDOFAILED 15 -#define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16 -#define SNMP_ERRORSTATUS_NOTWRITABLE 17 -#define SNMP_ERRORSTATUS_INCONSISTENTNAME 18 -#define SNMP_GENERICTRAP_COLDSTART 0 -#define SNMP_GENERICTRAP_WARMSTART 1 -#define SNMP_GENERICTRAP_LINKDOWN 2 -#define SNMP_GENERICTRAP_LINKUP 3 -#define SNMP_GENERICTRAP_AUTHFAILURE 4 -#define SNMP_GENERICTRAP_EGPNEIGHLOSS 5 -#define SNMP_GENERICTRAP_ENTERSPECIFIC 6 -#define SNMP_ACCESS_NONE 0 -#define SNMP_ACCESS_NOTIFY 1 -#define SNMP_ACCESS_READ_ONLY 2 -#define SNMP_ACCESS_READ_WRITE 3 -#define SNMP_ACCESS_READ_CREATE 4 -#define SNMPAPI_ERROR FALSE -#define SNMPAPI_NOERROR TRUE -#define SNMP_LOG_SILENT 0 -#define SNMP_LOG_FATAL 1 -#define SNMP_LOG_ERROR 2 -#define SNMP_LOG_WARNING 3 -#define SNMP_LOG_TRACE 4 -#define SNMP_LOG_VERBOSE 5 -#define SNMP_OUTPUT_TO_CONSOLE 1 -#define SNMP_OUTPUT_TO_LOGFILE 2 -#define SNMP_OUTPUT_TO_EVENTLOG 4 -#define SNMP_OUTPUT_TO_DEBUGGER 8 -#define SNMP_MAX_OID_LEN 128 -#define SNMP_MEM_ALLOC_ERROR 1 -#define SNMP_BERAPI_INVALID_LENGTH 10 -#define SNMP_BERAPI_INVALID_TAG 11 -#define SNMP_BERAPI_OVERFLOW 12 -#define SNMP_BERAPI_SHORT_BUFFER 13 -#define SNMP_BERAPI_INVALID_OBJELEM 14 -#define SNMP_PDUAPI_UNRECOGNIZED_PDU 20 -#define SNMP_PDUAPI_INVALID_ES 21 -#define SNMP_PDUAPI_INVALID_GT 22 -#define SNMP_AUTHAPI_INVALID_VERSION 30 -#define SNMP_AUTHAPI_INVALID_MSG_TYPE 31 -#define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32 +typedef LONG AsnInteger32; +typedef ULONG AsnUnsigned32; +typedef ULARGE_INTEGER AsnCounter64; +typedef AsnUnsigned32 AsnCounter32; +typedef AsnUnsigned32 AsnGauge32; +typedef AsnUnsigned32 AsnTimeticks; +typedef AsnOctetString AsnBits; +typedef AsnOctetString AsnSequence; +typedef AsnOctetString AsnImplicitSequence; +typedef AsnOctetString AsnIPAddress; +typedef AsnOctetString AsnNetworkAddress; +typedef AsnOctetString AsnDisplayString; +typedef AsnOctetString AsnOpaque; + +typedef struct { + BYTE asnType; + union { + AsnInteger32 number; + AsnUnsigned32 unsigned32; + AsnCounter64 counter64; + AsnOctetString string; + AsnBits bits; + AsnObjectIdentifier object; + AsnSequence sequence; + AsnIPAddress address; + AsnCounter32 counter; + AsnGauge32 gauge; + AsnTimeticks ticks; + AsnOpaque arbitrary; + } asnValue; +} AsnAny; + +typedef AsnObjectIdentifier AsnObjectName; +typedef AsnAny AsnObjectSyntax; + +typedef struct { + AsnObjectName name; + AsnObjectSyntax value; +} SnmpVarBind; + +typedef struct { + SnmpVarBind *list; + UINT len; +} SnmpVarBindList; + +#include + +#define ASN_UNIVERSAL 0x00 +#define ASN_APPLICATION 0x40 +#define ASN_CONTEXT 0x80 +#define ASN_PRIVATE 0xc0 +#define ASN_PRIMITIVE 0x00 +#define ASN_CONSTRUCTOR 0x20 + +#define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x00) +#define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x01) +#define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x02) +#define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x03) +#define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x04) +#define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x05) +#define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x06) +#define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x07) + +#define ASN_INTEGER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x02) +#define ASN_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03) +#define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04) +#define ASN_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x05) +#define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x06) +#define ASN_INTEGER32 ASN_INTEGER + +#define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10) +#define ASN_SEQUENCEOF ASN_SEQUENCE + +#define ASN_IPADDRESS (ASN_APPLICATION | ASN_PRIMITIVE | 0x00) +#define ASN_COUNTER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01) +#define ASN_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02) +#define ASN_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03) +#define ASN_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04) +#define ASN_COUNTER64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06) +#define ASN_UNSIGNED32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07) + +#define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00) +#define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01) +#define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02) + +#define SNMP_EXTENSION_GET SNMP_PDU_GET +#define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT +#define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK +#define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0) +#define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET +#define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1) +#define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2) + +#define SNMP_ERRORSTATUS_NOERROR 0 +#define SNMP_ERRORSTATUS_TOOBIG 1 +#define SNMP_ERRORSTATUS_NOSUCHNAME 2 +#define SNMP_ERRORSTATUS_BADVALUE 3 +#define SNMP_ERRORSTATUS_READONLY 4 +#define SNMP_ERRORSTATUS_GENERR 5 +#define SNMP_ERRORSTATUS_NOACCESS 6 +#define SNMP_ERRORSTATUS_WRONGTYPE 7 +#define SNMP_ERRORSTATUS_WRONGLENGTH 8 +#define SNMP_ERRORSTATUS_WRONGENCODING 9 +#define SNMP_ERRORSTATUS_WRONGVALUE 10 +#define SNMP_ERRORSTATUS_NOCREATION 11 +#define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12 +#define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13 +#define SNMP_ERRORSTATUS_COMMITFAILED 14 +#define SNMP_ERRORSTATUS_UNDOFAILED 15 +#define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16 +#define SNMP_ERRORSTATUS_NOTWRITABLE 17 +#define SNMP_ERRORSTATUS_INCONSISTENTNAME 18 + +#define SNMP_GENERICTRAP_COLDSTART 0 +#define SNMP_GENERICTRAP_WARMSTART 1 +#define SNMP_GENERICTRAP_LINKDOWN 2 +#define SNMP_GENERICTRAP_LINKUP 3 +#define SNMP_GENERICTRAP_AUTHFAILURE 4 +#define SNMP_GENERICTRAP_EGPNEIGHLOSS 5 +#define SNMP_GENERICTRAP_ENTERSPECIFIC 6 + +#define SNMP_ACCESS_NONE 0 +#define SNMP_ACCESS_NOTIFY 1 +#define SNMP_ACCESS_READ_ONLY 2 +#define SNMP_ACCESS_READ_WRITE 3 +#define SNMP_ACCESS_READ_CREATE 4 + +#define SNMP_LOG_SILENT 0 +#define SNMP_LOG_FATAL 1 +#define SNMP_LOG_ERROR 2 +#define SNMP_LOG_WARNING 3 +#define SNMP_LOG_TRACE 4 +#define SNMP_LOG_VERBOSE 5 + +#define SNMP_OUTPUT_TO_CONSOLE 1 +#define SNMP_OUTPUT_TO_LOGFILE 2 +#define SNMP_OUTPUT_TO_EVENTLOG 4 +#define SNMP_OUTPUT_TO_DEBUGGER 8 #define DEFINE_SIZEOF(x) (sizeof(x)/sizeof((x)[0])) #define DEFINE_OID(x) { DEFINE_SIZEOF(x),(x) } #define DEFINE_NULLOID() { 0, NULL } #define DEFINE_NULLOCTENTS() { NULL, 0, FALSE } -#ifndef RC_INVOKED +#define DEFAULT_SNMP_PORT_UDP 161 +#define DEFAULT_SNMP_PORT_IPX 36879 +#define DEFAULT_SNMPTRAP_PORT_UDP 162 +#define DEFAULT_SNMPTRAP_PORT_IPX 36880 -typedef INT SNMPAPI; -typedef LONG AsnInteger32; -typedef ULONG AsnUnsigned32; -typedef ULARGE_INTEGER AsnCounter64; -typedef AsnUnsigned32 AsnCounter32; -typedef AsnUnsigned32 AsnGauge32; -typedef AsnUnsigned32 AsnTimeticks; -typedef struct { - BYTE *stream; - UINT length; - BOOL dynamic; -} AsnOctetString, AsnBits, AsnSequence, AsnImplicitSequence, AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque; -typedef struct { - UINT idLength; - UINT *ids; -} AsnObjectIdentifier, AsnObjectName; -typedef struct { - BYTE asnType; - union { - AsnInteger32 number; - AsnUnsigned32 unsigned32; - AsnCounter64 counter64; - AsnOctetString string; - AsnBits bits; - AsnObjectIdentifier object; - AsnSequence sequence; - AsnIPAddress address; - AsnCounter32 counter; - AsnGauge32 gauge; - AsnTimeticks ticks; - AsnOpaque arbitrary; - } asnValue; -} AsnAny, AsnObjectSyntax; -typedef struct { - AsnObjectName name; - AsnObjectSyntax value; -} SnmpVarBind; -typedef struct { - SnmpVarBind *list; - UINT len; -} SnmpVarBindList; +#define SNMP_MAX_OID_LEN 128 -VOID WINSNMPAPI SnmpExtensionClose(void); -BOOL WINSNMPAPI SnmpExtensionInit(DWORD,HANDLE*,AsnObjectIdentifier*); -BOOL WINSNMPAPI SnmpExtensionInitEx(AsnObjectIdentifier*); -BOOL WINSNMPAPI SnmpExtensionMonitor(LPVOID); -BOOL WINSNMPAPI SnmpExtensionQuery(BYTE,SnmpVarBindList*,AsnInteger32*,AsnInteger32*); -BOOL WINSNMPAPI SnmpExtensionQueryEx(DWORD,DWORD,SnmpVarBindList*,AsnOctetString*,AsnInteger32*,AsnInteger32*); -BOOL WINSNMPAPI SnmpExtensionTrap(AsnObjectIdentifier*,AsnInteger32*,AsnInteger32*,AsnTimeticks*,SnmpVarBindList*); -DWORD WINSNMPAPI SnmpSvcGetUptime(void); -VOID WINSNMPAPI SnmpSvcSetLogLevel(INT); -VOID WINSNMPAPI SnmpSvcSetLogType(INT); -SNMPAPI WINSNMPAPI SnmpUtilAsnAnyCpy(AsnAny*,AsnAny*); -VOID WINSNMPAPI SnmpUtilAsnAnyFree(AsnAny*); -VOID WINSNMPAPI SnmpUtilDbgPrint(INT,LPSTR,...); -LPSTR WINSNMPAPI SnmpUtilIdsToA(UINT*,UINT); -LPVOID WINSNMPAPI SnmpUtilMemAlloc(UINT); -VOID WINSNMPAPI SnmpUtilMemFree(LPVOID); -LPVOID WINSNMPAPI SnmpUtilMemReAlloc(LPVOID,UINT); -SNMPAPI WINSNMPAPI SnmpUtilOctetsCmp(AsnOctetString*,AsnOctetString*); -SNMPAPI WINSNMPAPI SnmpUtilOctetsCpy(AsnOctetString*,AsnOctetString*); -VOID WINSNMPAPI SnmpUtilOctetsFree(AsnOctetString*); -SNMPAPI WINSNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*,AsnOctetString*,UINT); -SNMPAPI WINSNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*,AsnObjectIdentifier*); -SNMPAPI WINSNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*,AsnObjectIdentifier*); -SNMPAPI WINSNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*,AsnObjectIdentifier*); -VOID WINSNMPAPI SnmpUtilOidFree(AsnObjectIdentifier*); -SNMPAPI WINSNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*,AsnObjectIdentifier*,UINT); -LPSTR WINSNMPAPI SnmpUtilOidToA(AsnObjectIdentifier*); -VOID WINSNMPAPI SnmpUtilPrintAsnAny(AsnAny*); -VOID WINSNMPAPI SnmpUtilPrintOid(AsnObjectIdentifier*); -SNMPAPI WINSNMPAPI SnmpUtilVarBindCpy( SnmpVarBind*,SnmpVarBind*); -SNMPAPI WINSNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*,SnmpVarBindList*); -VOID WINSNMPAPI SnmpUtilVarBindFree(SnmpVarBind*); -VOID WINSNMPAPI SnmpUtilVarBindListFree(SnmpVarBindList*); +#define SNMP_MEM_ALLOC_ERROR 0 +#define SNMP_BERAPI_INVALID_LENGTH 10 +#define SNMP_BERAPI_INVALID_TAG 11 +#define SNMP_BERAPI_OVERFLOW 12 +#define SNMP_BERAPI_SHORT_BUFFER 13 +#define SNMP_BERAPI_INVALID_OBJELEM 14 +#define SNMP_PDUAPI_UNRECOGNIZED_PDU 20 +#define SNMP_PDUAPI_INVALID_ES 21 +#define SNMP_PDUAPI_INVALID_GT 22 +#define SNMP_AUTHAPI_INVALID_VERSION 30 +#define SNMP_AUTHAPI_INVALID_MSG_TYPE 31 +#define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32 -#ifndef SNMPSTRICT -#define SNMP_malloc SnmpUtilMemAlloc -#define SNMP_free SnmpUtilMemFree -#define SNMP_realloc SnmpUtilMemReAlloc -#define SNMP_DBG_malloc SnmpUtilMemAlloc -#define SNMP_DBG_free SnmpUtilMemFree -#define SNMP_DBG_realloc SnmpUtilMemReAlloc -#define SNMP_oidappend SnmpUtilOidAppend -#define SNMP_oidcmp SnmpUtilOidCmp -#define SNMP_oidcpy SnmpUtilOidCpy -#define SNMP_oidfree SnmpUtilOidFree -#define SNMP_oidncmp SnmpUtilOidNCmp -#define SNMP_printany SnmpUtilPrintAsnAny -#define SNMP_CopyVarBind SnmpUtilVarBindCpy -#define SNMP_CopyVarBindList SnmpUtilVarBindListCpy -#define SNMP_FreeVarBind SnmpUtilVarBindFree -#define SNMP_FreeVarBindList SnmpUtilVarBindListFree -#define ASN_RFC1155_IPADDRESS ASN_IPADDRESS -#define ASN_RFC1155_COUNTER ASN_COUNTER32 -#define ASN_RFC1155_GAUGE ASN_GAUGE32 -#define ASN_RFC1155_TIMETICKS ASN_TIMETICKS -#define ASN_RFC1155_OPAQUE ASN_OPAQUE -#define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING -#define ASN_RFC1157_GETREQUEST SNMP_PDU_GET -#define ASN_RFC1157_GETNEXTREQUEST SNMP_PDU_GETNEXT -#define ASN_RFC1157_GETRESPONSE SNMP_PDU_RESPONSE -#define ASN_RFC1157_SETREQUEST SNMP_PDU_SET -#define ASN_RFC1157_TRAP SNMP_PDU_V1TRAP -#define ASN_CONTEXTSPECIFIC ASN_CONTEXT -#define ASN_PRIMATIVE ASN_PRIMITIVE -#define RFC1157VarBindList SnmpVarBindList -#define RFC1157VarBind SnmpVarBind -#define AsnInteger AsnInteger32 -#define AsnCounter AsnCounter32 -#define AsnGauge AsnGauge32 -#endif /* SNMPSTRICT */ +#define SNMPAPI_NOERROR TRUE +#define SNMPAPI_ERROR FALSE -#endif /* RC_INVOKED */ +#ifdef __cplusplus +extern "C" { +#endif + +BOOL WINAPI SnmpExtensionInit(DWORD dwUptimeReference, + HANDLE *phSubagentTrapEvent, AsnObjectIdentifier *pFirstSupportedRegion); +BOOL WINAPI SnmpExtensionInitEx(AsnObjectIdentifier *pNextSupportedRegion); + +BOOL WINAPI SnmpExtensionMonitor(LPVOID pAgentMgmtData); + +BOOL WINAPI SnmpExtensionQuery(BYTE bPduType, SnmpVarBindList *pVarBindList, + AsnInteger32 *pErrorStatus, AsnInteger32 *pErrorIndex); +BOOL WINAPI SnmpExtensionQueryEx(UINT nRequestType, UINT nTransactionId, + SnmpVarBindList *pVarBindList, AsnOctetString *pContextInfo, + AsnInteger32 *pErrorStatus, AsnInteger32 *pErrorIndex); + +BOOL WINAPI SnmpExtensionTrap(AsnObjectIdentifier *pEnterpriseOid, + AsnInteger32 *pGenericTrapId, AsnInteger32 *pSpecificTrapId, + AsnTimeticks *pTimeStamp, SnmpVarBindList *pVarBindList); + +VOID WINAPI SnmpExtensionClose(VOID); + +typedef BOOL (WINAPI *PFNSNMPEXTENSIONINIT)(DWORD dwUptimeReference, + HANDLE *phSubagentTrapEvent, AsnObjectIdentifier *pFirstSupportedRegion); +typedef BOOL (WINAPI *PFNSNMPEXTENSIONINITEX)( + AsnObjectIdentifier *pNextSupportedRegion); + +typedef BOOL (WINAPI *PFNSNMPEXTENSIONMONITOR)(LPVOID pAgentMgmtData); + +typedef BOOL (WINAPI *PFNSNMPEXTENSIONQUERY)(BYTE bPduType, + SnmpVarBindList *pVarBindList, AsnInteger32 *pErrorStatus, + AsnInteger32 *pErrorIndex); +typedef BOOL (WINAPI *PFNSNMPEXTENSIONQUERYEX)(UINT nRequestType, + UINT nTransactionId, SnmpVarBindList *pVarBindList, + AsnOctetString *pContextInfo, AsnInteger32 *pErrorStatus, + AsnInteger32 *pErrorIndex); + +typedef BOOL (WINAPI *PFNSNMPEXTENSIONTRAP)(AsnObjectIdentifier *pEnterpriseOid, + AsnInteger32 *pGenericTrapId, AsnInteger32 *pSpecificTrapId, + AsnTimeticks *pTimeStamp, SnmpVarBindList *pVarBindList); + +typedef VOID (WINAPI *PFNSNMPEXTENSIONCLOSE)(VOID); + +INT WINAPI SnmpUtilOidCpy(AsnObjectIdentifier *pOidDst, + AsnObjectIdentifier *pOidSrc); +INT WINAPI SnmpUtilOidAppend(AsnObjectIdentifier *pOidDst, + AsnObjectIdentifier *pOidSrc); +INT WINAPI SnmpUtilOidCmp(AsnObjectIdentifier *pOid1, + AsnObjectIdentifier *pOid2); +INT WINAPI SnmpUtilOidNCmp(AsnObjectIdentifier *pOid1, + AsnObjectIdentifier *pOid2, UINT nSubIds); +VOID WINAPI SnmpUtilOidFree(AsnObjectIdentifier *pOid); + +INT WINAPI SnmpUtilOctetsCmp(AsnOctetString *pOctets1, + AsnOctetString *pOctets2); +INT WINAPI SnmpUtilOctetsNCmp(AsnOctetString *pOctets1, + AsnOctetString *pOctets2, UINT nChars); +INT WINAPI SnmpUtilOctetsCpy(AsnOctetString *pOctetsDst, + AsnOctetString *pOctetsSrc); +VOID WINAPI SnmpUtilOctetsFree(AsnOctetString *pOctets); + +INT WINAPI SnmpUtilAsnAnyCpy(AsnAny *pAnyDst, AsnAny *pAnySrc); +VOID WINAPI SnmpUtilAsnAnyFree(AsnAny *pAny); + +INT WINAPI SnmpUtilVarBindCpy(SnmpVarBind *pVbDst, SnmpVarBind *pVbSrc); +VOID WINAPI SnmpUtilVarBindFree(SnmpVarBind *pVb); + +INT WINAPI SnmpUtilVarBindListCpy(SnmpVarBindList *pVblDst, + SnmpVarBindList *pVblSrc); +VOID WINAPI SnmpUtilVarBindListFree(SnmpVarBindList *pVbl); + +LPVOID WINAPI SnmpUtilMemAlloc(UINT nBytes) __WINE_ALLOC_SIZE(1); +LPVOID WINAPI SnmpUtilMemReAlloc(LPVOID pMem, UINT nBytes) __WINE_ALLOC_SIZE(2); +VOID WINAPI SnmpUtilMemFree(LPVOID pMem); + +LPSTR WINAPI SnmpUtilOidToA(AsnObjectIdentifier *Oid); +LPSTR WINAPI SnmpUtilIdsToA(UINT *Ids, UINT IdLength); + +VOID WINAPI SnmpUtilPrintOid(AsnObjectIdentifier *Oid); +VOID WINAPI SnmpUtilPrintAsnAny(AsnAny *pAny); + +DWORD WINAPI SnmpSvcGetUptime(VOID); +VOID WINAPI SnmpSvcSetLogLevel(INT nLogLevel); +VOID WINAPI SnmpSvcSetLogType(INT nLogType); + +VOID WINAPIV SnmpUtilDbgPrint(INT nLogLevel, LPSTR szFormat, ...); #ifdef __cplusplus } #endif -#include -#endif + +#endif /* _WINE_SNMP_H */