Move DCFuncs ExtTextOut and GetTextExtentPoint to Unicode. Map a few Unicode chars to the first 0xff in psdrv. Don't expect x11drv to display Unicode chars yet.
diff --git a/include/gdi.h b/include/gdi.h index dad6816..c2aace3 100644 --- a/include/gdi.h +++ b/include/gdi.h
@@ -198,7 +198,7 @@ INT (*pExtDeviceMode)(LPSTR,HWND,LPDEVMODEA,LPSTR,LPSTR,LPDEVMODEA, LPSTR,DWORD); BOOL (*pExtFloodFill)(DC*,INT,INT,COLORREF,UINT); - BOOL (*pExtTextOut)(DC*,INT,INT,UINT,const RECT*,LPCSTR,UINT, + BOOL (*pExtTextOut)(DC*,INT,INT,UINT,const RECT*,LPCWSTR,UINT, const INT*); BOOL (*pFillPath)(DC*); BOOL (*pFillRgn)(DC*,HRGN,HBRUSH); @@ -206,7 +206,7 @@ BOOL (*pFrameRgn)(DC*,HRGN,HBRUSH,INT,INT); BOOL (*pGetCharWidth)(DC*,UINT,UINT,LPINT); COLORREF (*pGetPixel)(DC*,INT,INT); - BOOL (*pGetTextExtentPoint)(DC*,LPCSTR,INT,LPSIZE); + BOOL (*pGetTextExtentPoint)(DC*,LPCWSTR,INT,LPSIZE); BOOL (*pGetTextMetrics)(DC*,TEXTMETRICA*); INT (*pIntersectClipRect)(DC*,INT,INT,INT,INT); BOOL (*pInvertRgn)(DC*,HRGN);
diff --git a/include/metafiledrv.h b/include/metafiledrv.h index 9157909..1502218 100644 --- a/include/metafiledrv.h +++ b/include/metafiledrv.h
@@ -54,7 +54,7 @@ extern BOOL MFDRV_ExtFloodFill( DC *dc, INT x, INT y, COLORREF color, UINT fillType ); extern BOOL MFDRV_ExtTextOut( DC *dc, INT x, INT y, - UINT flags, const RECT *lprect, LPCSTR str, + UINT flags, const RECT *lprect, LPCWSTR str, UINT count, const INT *lpDx ); extern BOOL MFDRV_FillPath( DC *dc ); extern BOOL MFDRV_FillRgn( DC *dc, HRGN hrgn, HBRUSH hbrush );
diff --git a/include/psdrv.h b/include/psdrv.h index a08b888..46a46ae 100644 --- a/include/psdrv.h +++ b/include/psdrv.h
@@ -264,6 +264,7 @@ extern BOOL PSDRV_CopyColor(PSCOLOR *col1, PSCOLOR *col2); extern void PSDRV_CreateColor( PSDRV_PDEVICE *physDev, PSCOLOR *pscolor, COLORREF wincolor ); +extern char PSDRV_UnicodeToANSI(int u); extern INT PSDRV_WriteHeader( DC *dc, LPCSTR title ); @@ -278,7 +279,7 @@ extern BOOL PSDRV_WriteRRectangle(DC *dc, INT x, INT y, INT width, INT height); extern BOOL PSDRV_WriteSetFont(DC *dc, BOOL UseANSI); -extern BOOL PSDRV_WriteShow(DC *dc, char *str, INT count); +extern BOOL PSDRV_WriteShow(DC *dc, LPCWSTR str, INT count); extern BOOL PSDRV_WriteReencodeFont(DC *dc); extern BOOL PSDRV_WriteSetPen(DC *dc); extern BOOL PSDRV_WriteArc(DC *dc, INT x, INT y, INT w, INT h, @@ -328,11 +329,11 @@ extern INT PSDRV_Escape( DC *dc, INT nEscape, INT cbInput, SEGPTR lpInData, SEGPTR lpOutData ); extern BOOL PSDRV_ExtTextOut( DC *dc, INT x, INT y, UINT flags, - const RECT *lprect, LPCSTR str, UINT count, + const RECT *lprect, LPCWSTR str, UINT count, const INT *lpDx ); extern BOOL PSDRV_GetCharWidth( DC *dc, UINT firstChar, UINT lastChar, LPINT buffer ); -extern BOOL PSDRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT count, +extern BOOL PSDRV_GetTextExtentPoint( DC *dc, LPCWSTR str, INT count, LPSIZE size ); extern BOOL PSDRV_GetTextMetrics( DC *dc, TEXTMETRICA *metrics ); extern BOOL PSDRV_LineTo( DC *dc, INT x, INT y );
diff --git a/include/ts_xlib.h b/include/ts_xlib.h index 05b9465..ac414b5 100644 --- a/include/ts_xlib.h +++ b/include/ts_xlib.h
@@ -69,8 +69,8 @@ extern int TSXDrawPoint(Display*, Drawable, GC, int, int); extern int TSXDrawRectangle(Display*, Drawable, GC, int, int, unsigned int, unsigned int); extern int TSXDrawSegments(Display*, Drawable, GC, XSegment*, int); -extern int TSXDrawString(Display*, Drawable, GC, int, int, const char*, int); -extern int TSXDrawText(Display*, Drawable, GC, int, int, XTextItem*, int); +extern int TSXDrawString16(Display*, Drawable, GC, int, int, const XChar2b*, int); +extern int TSXDrawText16(Display*, Drawable, GC, int, int, XTextItem16*, int); extern int TSXFillArc(Display*, Drawable, GC, int, int, unsigned int, unsigned int, int, int); extern int TSXFillPolygon(Display*, Drawable, GC, XPoint*, int, int, int); extern int TSXFillRectangle(Display*, Drawable, GC, int, int, unsigned int, unsigned int); @@ -129,8 +129,8 @@ extern int TSXStoreColor(Display*, Colormap, XColor*); extern int TSXStoreName(Display*, Window, const char*); extern int TSXSync(Display*, int); -extern int TSXTextExtents(XFontStruct*, const char*, int, int*, int*, int*, XCharStruct*); -extern int TSXTextWidth(XFontStruct*, const char*, int); +extern int TSXTextExtents16(XFontStruct*, const XChar2b*, int, int*, int*, int*, XCharStruct*); +extern int TSXTextWidth16(XFontStruct*, const XChar2b*, int); extern int TSXUngrabKeyboard(Display*, Time); extern int TSXUngrabPointer(Display*, Time); extern int TSXUngrabServer(Display*);
diff --git a/include/ttydrv.h b/include/ttydrv.h index 4eef618..cdfa46c 100644 --- a/include/ttydrv.h +++ b/include/ttydrv.h
@@ -75,11 +75,11 @@ extern BOOL TTYDRV_DC_Ellipse(struct tagDC *dc, INT left, INT top, INT right, INT bottom); extern INT TTYDRV_DC_Escape(struct tagDC *dc, INT nEscape, INT cbInput, SEGPTR lpInData, SEGPTR lpOutData); extern BOOL TTYDRV_DC_ExtFloodFill(struct tagDC *dc, INT x, INT y, COLORREF color, UINT fillType); -extern BOOL TTYDRV_DC_ExtTextOut(struct tagDC *dc, INT x, INT y, UINT flags, const RECT *lpRect, LPCSTR str, UINT count, const INT *lpDx); +extern BOOL TTYDRV_DC_ExtTextOut(struct tagDC *dc, INT x, INT y, UINT flags, const RECT *lpRect, LPCWSTR str, UINT count, const INT *lpDx); extern BOOL TTYDRV_DC_GetCharWidth(struct tagDC *dc, UINT firstChar, UINT lastChar, LPINT buffer); extern COLORREF TTYDRV_DC_GetPixel(struct tagDC *dc, INT x, INT y); -extern BOOL TTYDRV_DC_GetTextExtentPoint(struct tagDC *dc, LPCSTR str, INT count, LPSIZE size); +extern BOOL TTYDRV_DC_GetTextExtentPoint(struct tagDC *dc, LPCWSTR str, INT count, LPSIZE size); extern BOOL TTYDRV_DC_GetTextMetrics(struct tagDC *dc, TEXTMETRICA *metrics); extern BOOL TTYDRV_DC_LineTo(struct tagDC *dc, INT x, INT y); extern HANDLE TTYDRV_DC_LoadOEMResource(WORD resid, WORD type);
diff --git a/include/win16drv.h b/include/win16drv.h index 8cf53d6..0fb32be 100644 --- a/include/win16drv.h +++ b/include/win16drv.h
@@ -208,12 +208,12 @@ extern BOOL WIN16DRV_GetCharWidth( struct tagDC *dc, UINT firstChar, UINT lastChar, LPINT buffer ); -extern BOOL WIN16DRV_GetTextExtentPoint( DC *dc, LPCSTR str, INT count, +extern BOOL WIN16DRV_GetTextExtentPoint( DC *dc, LPCWSTR str, INT count, LPSIZE size ); extern BOOL WIN16DRV_GetTextMetrics( DC *dc, TEXTMETRICA *metrics ); extern BOOL WIN16DRV_ExtTextOut( DC *dc, INT x, INT y, UINT flags, - const RECT *lprect, LPCSTR str, UINT count, + const RECT *lprect, LPCWSTR str, UINT count, const INT *lpDx ); extern BOOL WIN16DRV_LineTo( DC *dc, INT x, INT y ); extern BOOL WIN16DRV_MoveToEx(DC *dc,INT x,INT y,LPPOINT pt);
diff --git a/include/x11drv.h b/include/x11drv.h index a3c9c40..33810ea 100644 --- a/include/x11drv.h +++ b/include/x11drv.h
@@ -93,7 +93,7 @@ DEVICEFONTENUMPROC dfeproc, LPARAM lp ); extern BOOL X11DRV_GetCharWidth( struct tagDC *dc, UINT firstChar, UINT lastChar, LPINT buffer ); -extern BOOL X11DRV_GetTextExtentPoint( struct tagDC *dc, LPCSTR str, +extern BOOL X11DRV_GetTextExtentPoint( struct tagDC *dc, LPCWSTR str, INT count, LPSIZE size ); extern BOOL X11DRV_GetTextMetrics(struct tagDC *dc, TEXTMETRICA *metrics); extern BOOL X11DRV_PatBlt( struct tagDC *dc, INT left, INT top, @@ -139,7 +139,7 @@ COLORREF color, UINT fillType ); extern BOOL X11DRV_ExtTextOut( struct tagDC *dc, INT x, INT y, UINT flags, const RECT *lprect, - LPCSTR str, UINT count, const INT *lpDx ); + LPCWSTR str, UINT count, const INT *lpDx ); extern BOOL X11DRV_CreateBitmap( HBITMAP hbitmap ); extern BOOL X11DRV_DeleteObject( HGDIOBJ handle ); extern LONG X11DRV_BitmapBits( HBITMAP hbitmap, void *bits, LONG count,