Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
e2905ea4
Commit
e2905ea4
authored
Mar 26, 2000
by
Hidenori Takeshima
Committed by
Alexandre Julliard
Mar 26, 2000
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Fixes for i18n.
parent
9505c1c8
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
87 additions
and
34 deletions
+87
-34
resource.c
loader/resource.c
+38
-13
enhmetafile.c
objects/enhmetafile.c
+6
-4
font.c
objects/font.c
+8
-3
text.c
objects/text.c
+26
-11
console.c
win32/console.c
+9
-3
No files found.
loader/resource.c
View file @
e2905ea4
...
...
@@ -913,22 +913,47 @@ INT WINAPI LoadStringW( HINSTANCE instance, UINT resource_id,
INT
WINAPI
LoadStringA
(
HINSTANCE
instance
,
UINT
resource_id
,
LPSTR
buffer
,
INT
buflen
)
{
INT
retval
;
LPWSTR
buffer2
=
NULL
;
if
(
buffer
&&
buflen
)
buffer2
=
HeapAlloc
(
GetProcessHeap
(),
0
,
buflen
*
2
);
retval
=
LoadStringW
(
instance
,
resource_id
,
buffer2
,
buflen
);
if
(
buffer2
)
INT
retval
;
INT
wbuflen
;
INT
abuflen
;
LPWSTR
wbuf
=
NULL
;
LPSTR
abuf
=
NULL
;
if
(
buffer
!=
NULL
&&
buflen
>
0
)
*
buffer
=
0
;
wbuflen
=
LoadStringW
(
instance
,
resource_id
,
NULL
,
0
);
if
(
!
wbuflen
)
return
0
;
wbuflen
++
;
retval
=
0
;
wbuf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
wbuflen
*
sizeof
(
WCHAR
)
);
wbuflen
=
LoadStringW
(
instance
,
resource_id
,
wbuf
,
wbuflen
);
if
(
wbuflen
>
0
)
{
if
(
retval
)
{
lstrcpynWtoA
(
buffer
,
buffer2
,
buflen
);
retval
=
lstrlenA
(
buffer
);
abuflen
=
WideCharToMultiByte
(
CP_ACP
,
0
,
wbuf
,
wbuflen
,
NULL
,
0
,
NULL
,
NULL
);
if
(
abuflen
>
0
)
{
if
(
buffer
==
NULL
||
buflen
==
0
)
retval
=
abuflen
;
else
{
abuf
=
HeapAlloc
(
GetProcessHeap
(),
0
,
abuflen
*
sizeof
(
CHAR
)
);
abuflen
=
WideCharToMultiByte
(
CP_ACP
,
0
,
wbuf
,
wbuflen
,
abuf
,
abuflen
,
NULL
,
NULL
);
if
(
abuflen
>
0
)
{
abuflen
=
min
(
abuflen
,
buflen
-
1
);
memcpy
(
buffer
,
abuf
,
abuflen
);
buffer
[
abuflen
]
=
0
;
retval
=
abuflen
;
}
HeapFree
(
GetProcessHeap
(),
0
,
abuf
);
}
}
else
*
buffer
=
0
;
HeapFree
(
GetProcessHeap
(),
0
,
buffer2
);
}
HeapFree
(
GetProcessHeap
(),
0
,
wbuf
);
return
retval
;
}
...
...
objects/enhmetafile.c
View file @
e2905ea4
...
...
@@ -193,7 +193,7 @@ UINT WINAPI GetEnhMetaFileDescriptionA(
)
{
LPENHMETAHEADER
emh
=
EMF_GetEnhMetaHeader
(
hmf
);
INT
first
;
INT
first
,
first_A
;
if
(
!
emh
)
return
FALSE
;
if
(
emh
->
nDescription
==
0
||
emh
->
offDescription
==
0
)
{
...
...
@@ -208,12 +208,14 @@ UINT WINAPI GetEnhMetaFileDescriptionA(
first
=
lstrlenW
(
(
WCHAR
*
)
((
char
*
)
emh
+
emh
->
offDescription
));
lstrcpynWtoA
(
buf
,
(
WCHAR
*
)
((
char
*
)
emh
+
emh
->
offDescription
),
size
);
buf
+=
first
+
1
;
first_A
=
lstrlenA
(
buf
);
buf
+=
first_A
+
1
;
lstrcpynWtoA
(
buf
,
(
WCHAR
*
)
((
char
*
)
emh
+
emh
->
offDescription
+
2
*
(
first
+
1
)),
size
-
first
-
1
);
size
-
first_A
-
1
);
/* i18n ready */
first_A
+=
lstrlenA
(
buf
)
+
1
;
EMF_ReleaseEnhMetaHeader
(
hmf
);
return
min
(
size
,
emh
->
nDescription
);
return
min
(
size
,
first_A
);
}
/*****************************************************************************
...
...
objects/font.c
View file @
e2905ea4
...
...
@@ -15,6 +15,7 @@
#include "debugtools.h"
#include "winerror.h"
#include "dc.h"
#include "winnls.h"
DEFAULT_DEBUG_CHANNEL
(
font
)
DECLARE_DEBUG_CHANNEL
(
gdi
)
...
...
@@ -869,15 +870,19 @@ BOOL WINAPI GetTextExtentPoint32A( HDC hdc, LPCSTR str, INT count,
{
LPWSTR
p
;
BOOL
ret
;
UINT
codepage
=
CP_ACP
;
/* FIXME: get codepage of font charset */
UINT
wlen
;
/* str may not be 0 terminated so we can't use HEAP_strdupWtoA.
* We allocate one more than we need so that lstrcpynWtoA can write a
* trailing 0 if it wants.
*/
p
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
count
+
1
)
*
sizeof
(
WCHAR
)
);
lstrcpynAtoW
(
p
,
str
,
count
+
1
);
ret
=
GetTextExtentPoint32W
(
hdc
,
p
,
count
,
size
);
wlen
=
MultiByteToWideChar
(
codepage
,
0
,
str
,
count
,
NULL
,
0
);
p
=
HeapAlloc
(
GetProcessHeap
(),
0
,
wlen
*
sizeof
(
WCHAR
)
);
wlen
=
MultiByteToWideChar
(
codepage
,
0
,
str
,
count
,
p
,
wlen
);
ret
=
GetTextExtentPoint32W
(
hdc
,
p
,
wlen
,
size
);
HeapFree
(
GetProcessHeap
(),
0
,
p
);
return
ret
;
}
...
...
objects/text.c
View file @
e2905ea4
...
...
@@ -18,6 +18,7 @@
#include "heap.h"
#include "debugtools.h"
#include "cache.h"
#include "winnls.h"
DEFAULT_DEBUG_CHANNEL
(
text
);
...
...
@@ -381,12 +382,16 @@ BOOL WINAPI ExtTextOutA( HDC hdc, INT x, INT y, UINT flags,
const
RECT
*
lprect
,
LPCSTR
str
,
UINT
count
,
const
INT
*
lpDx
)
{
/* str need not be \0 terminated but lstrcpynAtoW adds \0 so we allocate one
more byte */
LPWSTR
p
=
HeapAlloc
(
GetProcessHeap
(),
0
,
(
count
+
1
)
*
sizeof
(
WCHAR
)
);
LPWSTR
p
;
INT
ret
;
lstrcpynAtoW
(
p
,
str
,
count
+
1
);
ret
=
ExtTextOutW
(
hdc
,
x
,
y
,
flags
,
lprect
,
p
,
count
,
lpDx
);
UINT
codepage
=
CP_ACP
;
/* FIXME: get codepage of font charset */
UINT
wlen
;
wlen
=
MultiByteToWideChar
(
codepage
,
0
,
str
,
count
,
NULL
,
0
);
p
=
HeapAlloc
(
GetProcessHeap
(),
0
,
wlen
*
sizeof
(
WCHAR
)
);
wlen
=
MultiByteToWideChar
(
codepage
,
0
,
str
,
count
,
p
,
wlen
);
ret
=
ExtTextOutW
(
hdc
,
x
,
y
,
flags
,
lprect
,
p
,
wlen
,
lpDx
);
HeapFree
(
GetProcessHeap
(),
0
,
p
);
return
ret
;
}
...
...
@@ -679,9 +684,14 @@ LONG WINAPI TabbedTextOutW( HDC hdc, INT x, INT y, LPCWSTR str,
const
INT
*
lpTabPos
,
INT
nTabOrg
)
{
LONG
ret
;
LPSTR
p
=
HEAP_xalloc
(
GetProcessHeap
(),
0
,
count
+
1
);
lstrcpynWtoA
(
p
,
str
,
count
+
1
);
ret
=
TabbedTextOutA
(
hdc
,
x
,
y
,
p
,
count
,
cTabStops
,
LPSTR
p
;
INT
acount
;
UINT
codepage
=
CP_ACP
;
/* FIXME: get codepage of font charset */
acount
=
WideCharToMultiByte
(
codepage
,
0
,
str
,
count
,
NULL
,
0
,
NULL
,
NULL
);
p
=
HEAP_xalloc
(
GetProcessHeap
(),
0
,
acount
);
acount
=
WideCharToMultiByte
(
codepage
,
0
,
str
,
count
,
p
,
acount
,
NULL
,
NULL
);
ret
=
TabbedTextOutA
(
hdc
,
x
,
y
,
p
,
acount
,
cTabStops
,
lpTabPos
,
nTabOrg
);
HeapFree
(
GetProcessHeap
(),
0
,
p
);
return
ret
;
...
...
@@ -721,9 +731,14 @@ DWORD WINAPI GetTabbedTextExtentW( HDC hdc, LPCWSTR lpstr, INT count,
INT
cTabStops
,
const
INT
*
lpTabPos
)
{
LONG
ret
;
LPSTR
p
=
HEAP_xalloc
(
GetProcessHeap
(),
0
,
count
+
1
);
lstrcpynWtoA
(
p
,
lpstr
,
count
+
1
);
ret
=
GetTabbedTextExtentA
(
hdc
,
p
,
count
,
cTabStops
,
lpTabPos
);
LPSTR
p
;
INT
acount
;
UINT
codepage
=
CP_ACP
;
/* FIXME: get codepage of font charset */
acount
=
WideCharToMultiByte
(
codepage
,
0
,
lpstr
,
count
,
NULL
,
0
,
NULL
,
NULL
);
p
=
HEAP_xalloc
(
GetProcessHeap
(),
0
,
acount
);
acount
=
WideCharToMultiByte
(
codepage
,
0
,
lpstr
,
count
,
p
,
acount
,
NULL
,
NULL
);
ret
=
GetTabbedTextExtentA
(
hdc
,
p
,
acount
,
cTabStops
,
lpTabPos
);
HeapFree
(
GetProcessHeap
(),
0
,
p
);
return
ret
;
}
...
...
win32/console.c
View file @
e2905ea4
...
...
@@ -50,6 +50,7 @@
#include "heap.h"
#include "server.h"
#include "debugtools.h"
#include "winnls.h"
DEFAULT_DEBUG_CHANNEL
(
console
)
...
...
@@ -847,13 +848,18 @@ BOOL WINAPI WriteConsoleW( HANDLE hConsoleOutput,
LPVOID
lpReserved
)
{
BOOL
ret
;
LPSTR
xstring
=
HeapAlloc
(
GetProcessHeap
(),
0
,
nNumberOfCharsToWrite
);
LPSTR
xstring
;
DWORD
n
;
lstrcpynWtoA
(
xstring
,
lpBuffer
,
nNumberOfCharsToWrite
);
n
=
WideCharToMultiByte
(
CP_ACP
,
0
,
lpBuffer
,
nNumberOfCharsToWrite
,
NULL
,
0
,
NULL
,
NULL
);
xstring
=
HeapAlloc
(
GetProcessHeap
(),
0
,
n
);
n
=
WideCharToMultiByte
(
CP_ACP
,
0
,
lpBuffer
,
nNumberOfCharsToWrite
,
xstring
,
n
,
NULL
,
NULL
);
/* FIXME: should I check if this is a console handle? */
ret
=
WriteFile
(
hConsoleOutput
,
xstring
,
n
NumberOfCharsToWrite
,
ret
=
WriteFile
(
hConsoleOutput
,
xstring
,
n
,
lpNumberOfCharsWritten
,
NULL
);
/* FIXME: lpNumberOfCharsWritten should be converted to numofchars in UNICODE */
HeapFree
(
GetProcessHeap
(),
0
,
xstring
);
return
ret
;
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment