Commit b9178da5 authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

gdi32: Merge in Uniscribe functionality.

parent d202e02f
......@@ -249,7 +249,7 @@ F: dlls/gphoto2.ds/
Uniscribe
M: Aric Stewart <aric@codeweavers.com>
F: dlls/usp10/
F: dlls/gdi32/uniscribe/
URL Moniker
M: Jacek Caban <jacek@codeweavers.com>
......
......@@ -4,7 +4,7 @@ IMPORTLIB = gdi32
IMPORTS = advapi32
EXTRAINCL = $(FREETYPE_CFLAGS) $(FONTCONFIG_CFLAGS)
EXTRALIBS = $(CARBON_LIBS) $(APPKIT_LIBS)
DELAYIMPORTS = usp10 setupapi
DELAYIMPORTS = setupapi
EXTRADLLFLAGS = -mno-cygwin
......@@ -22,7 +22,6 @@ C_SRCS = \
dibdrv/objects.c \
dibdrv/opengl.c \
dibdrv/primitives.c \
direction.c \
driver.c \
enhmetafile.c \
enhmfdrv/bitblt.c \
......@@ -49,6 +48,18 @@ C_SRCS = \
pen.c \
printdrv.c \
region.c \
uniscribe/bidi.c \
uniscribe/bracket.c \
uniscribe/breaking.c \
uniscribe/direction.c \
uniscribe/indic.c \
uniscribe/indicsyllable.c \
uniscribe/linebreak.c \
uniscribe/mirror.c \
uniscribe/opentype.c \
uniscribe/shape.c \
uniscribe/shaping.c \
uniscribe/usp10.c \
vertical.c \
vulkan.c
......
......@@ -427,6 +427,44 @@
@ stdcall SaveDC(long)
@ stdcall ScaleViewportExtEx(long long long long long ptr)
@ stdcall ScaleWindowExtEx(long long long long long ptr)
@ stdcall ScriptApplyDigitSubstitution(ptr ptr ptr)
@ stdcall ScriptApplyLogicalWidth(ptr long long ptr ptr ptr ptr ptr ptr)
@ stdcall ScriptBreak(ptr long ptr ptr)
@ stdcall ScriptCacheGetHeight(ptr ptr ptr)
@ stdcall ScriptCPtoX(long long long long ptr ptr ptr ptr ptr)
@ stdcall ScriptFreeCache(ptr)
@ stdcall ScriptGetCMap(ptr ptr ptr long long ptr)
@ stdcall ScriptGetFontAlternateGlyphs(long ptr ptr long long long long long ptr ptr)
@ stdcall ScriptGetFontFeatureTags(long ptr ptr long long long ptr ptr)
@ stdcall ScriptGetFontLanguageTags(long ptr ptr long long ptr ptr)
@ stdcall ScriptGetFontProperties(long ptr ptr)
@ stdcall ScriptGetFontScriptTags(long ptr ptr long ptr ptr)
@ stdcall ScriptGetGlyphABCWidth(ptr ptr long ptr)
@ stdcall ScriptGetLogicalWidths(ptr long long ptr ptr ptr ptr)
@ stdcall ScriptGetProperties(ptr ptr)
@ stdcall ScriptIsComplex(wstr long long)
@ stdcall ScriptItemize(wstr long long ptr ptr ptr ptr)
@ stdcall ScriptItemizeOpenType(wstr long long ptr ptr ptr ptr ptr)
@ stdcall ScriptJustify(ptr ptr long long long ptr)
@ stdcall ScriptLayout(long ptr ptr ptr)
@ stdcall ScriptPlace(ptr ptr ptr long ptr ptr ptr ptr ptr)
@ stdcall ScriptPlaceOpenType(ptr ptr ptr long long ptr ptr long wstr ptr ptr long ptr ptr long ptr ptr ptr)
@ stdcall ScriptRecordDigitSubstitution(long ptr)
@ stdcall ScriptShape(ptr ptr ptr long long ptr ptr ptr ptr ptr)
@ stdcall ScriptShapeOpenType(ptr ptr ptr long long ptr ptr long wstr long long ptr ptr ptr ptr ptr)
@ stdcall ScriptStringAnalyse(ptr ptr long long long long long ptr ptr ptr ptr ptr ptr)
@ stdcall ScriptStringCPtoX(ptr long long ptr)
@ stdcall ScriptStringFree(ptr)
@ stdcall ScriptStringGetLogicalWidths(ptr ptr)
@ stdcall ScriptStringGetOrder(ptr ptr)
@ stdcall ScriptStringOut(ptr long long long ptr long long long)
@ stdcall ScriptStringValidate(ptr)
@ stdcall ScriptStringXtoCP(ptr long ptr ptr)
@ stdcall ScriptString_pLogAttr(ptr)
@ stdcall ScriptString_pSize(ptr)
@ stdcall ScriptString_pcOutChars(ptr)
@ stdcall ScriptTextOut(ptr ptr long long long ptr ptr ptr long ptr long ptr ptr ptr)
@ stdcall ScriptXtoCP(long long long ptr ptr ptr ptr ptr ptr)
@ stub SelectBrushLocal
@ stdcall SelectClipPath(long long)
@ stdcall SelectClipRgn(long long)
......
......@@ -2194,6 +2194,18 @@ static inline BOOL does_glyph_start_cluster(const SCRIPT_VISATTR *pva, const WOR
return FALSE;
}
static DWORD get_sys_color(INT index)
{
static DWORD (WINAPI *pGetSysColor)(INT index);
if (!pGetSysColor)
{
HMODULE user = GetModuleHandleW( L"user32.dll" );
if (user) pGetSysColor = (void *)GetProcAddress( user, "GetSysColor" );
}
return pGetSysColor(index);
}
static HRESULT SS_ItemOut( SCRIPT_STRING_ANALYSIS ssa,
int iX,
......@@ -2227,17 +2239,18 @@ static HRESULT SS_ItemOut( SCRIPT_STRING_ANALYSIS ssa,
(cEnd >= 0 && analysis->pItem[iItem].iCharPos >= cEnd))
return S_OK;
CopyRect(&crc,prc);
if (prc)
memcpy(&crc, prc, sizeof(crc));
if (fSelected)
{
BkMode = GetBkMode(analysis->hdc);
SetBkMode( analysis->hdc, OPAQUE);
BkColor = GetBkColor(analysis->hdc);
SetBkColor(analysis->hdc, GetSysColor(COLOR_HIGHLIGHT));
SetBkColor(analysis->hdc, get_sys_color(COLOR_HIGHLIGHT));
if (!fDisabled)
{
TextColor = GetTextColor(analysis->hdc);
SetTextColor(analysis->hdc, GetSysColor(COLOR_HIGHLIGHTTEXT));
SetTextColor(analysis->hdc, get_sys_color(COLOR_HIGHLIGHTTEXT));
}
}
if (analysis->glyphs[iItem].fallbackFont)
......@@ -3449,7 +3462,7 @@ HRESULT WINAPI ScriptPlaceOpenType( HDC hdc, SCRIPT_CACHE *psc, SCRIPT_ANALYSIS
else
{
INT width;
if (!GetCharWidthW(hdc, pwGlyphs[i], pwGlyphs[i], &width)) return S_FALSE;
if (!GetCharWidth32W(hdc, pwGlyphs[i], pwGlyphs[i], &width)) return S_FALSE;
abc.abcB = width;
abc.abcA = abc.abcC = 0;
}
......
MODULE = usp10.dll
IMPORTLIB = usp10
IMPORTS = advapi32 user32 gdi32
EXTRADLLFLAGS = -mno-cygwin
C_SRCS = \
bidi.c \
bracket.c \
breaking.c \
direction.c \
indic.c \
indicsyllable.c \
linebreak.c \
mirror.c \
opentype.c \
shape.c \
shaping.c \
usp10.c
@ stub LpkPresent
@ stdcall ScriptApplyDigitSubstitution(ptr ptr ptr)
@ stdcall ScriptApplyLogicalWidth(ptr long long ptr ptr ptr ptr ptr ptr)
@ stdcall ScriptBreak(ptr long ptr ptr)
@ stdcall ScriptCPtoX(long long long long ptr ptr ptr ptr ptr)
@ stdcall ScriptCacheGetHeight(ptr ptr ptr)
@ stdcall ScriptFreeCache(ptr)
@ stdcall ScriptGetCMap(ptr ptr ptr long long ptr)
@ stdcall ScriptGetFontAlternateGlyphs(long ptr ptr long long long long long ptr ptr)
@ stdcall ScriptGetFontFeatureTags(long ptr ptr long long long ptr ptr)
@ stdcall ScriptGetFontLanguageTags(long ptr ptr long long ptr ptr)
@ stdcall ScriptGetFontProperties(long ptr ptr)
@ stdcall ScriptGetFontScriptTags(long ptr ptr long ptr ptr)
@ stdcall ScriptGetGlyphABCWidth(ptr ptr long ptr)
@ stdcall ScriptGetLogicalWidths(ptr long long ptr ptr ptr ptr)
@ stdcall ScriptGetProperties(ptr ptr)
@ stdcall ScriptIsComplex(wstr long long)
@ stdcall ScriptItemize(wstr long long ptr ptr ptr ptr)
@ stdcall ScriptItemizeOpenType(wstr long long ptr ptr ptr ptr ptr)
@ stdcall ScriptJustify(ptr ptr long long long ptr)
@ stdcall ScriptLayout(long ptr ptr ptr)
@ stdcall ScriptPlace(ptr ptr ptr long ptr ptr ptr ptr ptr)
@ stdcall ScriptPlaceOpenType(ptr ptr ptr long long ptr ptr long wstr ptr ptr long ptr ptr long ptr ptr ptr)
@ stdcall ScriptApplyDigitSubstitution(ptr ptr ptr) gdi32.ScriptApplyDigitSubstitution
@ stdcall ScriptApplyLogicalWidth(ptr long long ptr ptr ptr ptr ptr ptr) gdi32.ScriptApplyLogicalWidth
@ stdcall ScriptBreak(ptr long ptr ptr) gdi32.ScriptBreak
@ stdcall ScriptCPtoX(long long long long ptr ptr ptr ptr ptr) gdi32.ScriptCPtoX
@ stdcall ScriptCacheGetHeight(ptr ptr ptr) gdi32.ScriptCacheGetHeight
@ stdcall ScriptFreeCache(ptr) gdi32.ScriptFreeCache
@ stdcall ScriptGetCMap(ptr ptr ptr long long ptr) gdi32.ScriptGetCMap
@ stdcall ScriptGetFontAlternateGlyphs(long ptr ptr long long long long long ptr ptr) gdi32.ScriptGetFontAlternateGlyphs
@ stdcall ScriptGetFontFeatureTags(long ptr ptr long long long ptr ptr) gdi32.ScriptGetFontFeatureTags
@ stdcall ScriptGetFontLanguageTags(long ptr ptr long long ptr ptr) gdi32.ScriptGetFontLanguageTags
@ stdcall ScriptGetFontProperties(long ptr ptr) gdi32.ScriptGetFontProperties
@ stdcall ScriptGetFontScriptTags(long ptr ptr long ptr ptr) gdi32.ScriptGetFontScriptTags
@ stdcall ScriptGetGlyphABCWidth(ptr ptr long ptr) gdi32.ScriptGetGlyphABCWidth
@ stdcall ScriptGetLogicalWidths(ptr long long ptr ptr ptr ptr) gdi32.ScriptGetLogicalWidths
@ stdcall ScriptGetProperties(ptr ptr) gdi32.ScriptGetProperties
@ stdcall ScriptIsComplex(wstr long long) gdi32.ScriptIsComplex
@ stdcall ScriptItemize(wstr long long ptr ptr ptr ptr) gdi32.ScriptItemize
@ stdcall ScriptItemizeOpenType(wstr long long ptr ptr ptr ptr ptr) gdi32.ScriptItemizeOpenType
@ stdcall ScriptJustify(ptr ptr long long long ptr) gdi32.ScriptJustify
@ stdcall ScriptLayout(long ptr ptr ptr) gdi32.ScriptLayout
@ stdcall ScriptPlace(ptr ptr ptr long ptr ptr ptr ptr ptr) gdi32.ScriptPlace
@ stdcall ScriptPlaceOpenType(ptr ptr ptr long long ptr ptr long wstr ptr ptr long ptr ptr long ptr ptr ptr) gdi32.ScriptPlaceOpenType
@ stub ScriptPositionSingleGlyph
@ stdcall ScriptRecordDigitSubstitution(long ptr)
@ stdcall ScriptShape(ptr ptr ptr long long ptr ptr ptr ptr ptr)
@ stdcall ScriptShapeOpenType(ptr ptr ptr long long ptr ptr long wstr long long ptr ptr ptr ptr ptr)
@ stdcall ScriptStringAnalyse(ptr ptr long long long long long ptr ptr ptr ptr ptr ptr)
@ stdcall ScriptStringCPtoX(ptr long long ptr)
@ stdcall ScriptStringFree(ptr)
@ stdcall ScriptStringGetLogicalWidths(ptr ptr)
@ stdcall ScriptStringGetOrder(ptr ptr)
@ stdcall ScriptStringOut(ptr long long long ptr long long long)
@ stdcall ScriptStringValidate(ptr)
@ stdcall ScriptStringXtoCP(ptr long ptr ptr)
@ stdcall ScriptString_pLogAttr(ptr)
@ stdcall ScriptString_pSize(ptr)
@ stdcall ScriptString_pcOutChars(ptr)
@ stdcall ScriptRecordDigitSubstitution(long ptr) gdi32.ScriptRecordDigitSubstitution
@ stdcall ScriptShape(ptr ptr ptr long long ptr ptr ptr ptr ptr) gdi32.ScriptShape
@ stdcall ScriptShapeOpenType(ptr ptr ptr long long ptr ptr long wstr long long ptr ptr ptr ptr ptr) gdi32.ScriptShapeOpenType
@ stdcall ScriptStringAnalyse(ptr ptr long long long long long ptr ptr ptr ptr ptr ptr) gdi32.ScriptStringAnalyse
@ stdcall ScriptStringCPtoX(ptr long long ptr) gdi32.ScriptStringCPtoX
@ stdcall ScriptStringFree(ptr) gdi32.ScriptStringFree
@ stdcall ScriptStringGetLogicalWidths(ptr ptr) gdi32.ScriptStringGetLogicalWidths
@ stdcall ScriptStringGetOrder(ptr ptr) gdi32.ScriptStringGetOrder
@ stdcall ScriptStringOut(ptr long long long ptr long long long) gdi32.ScriptStringOut
@ stdcall ScriptStringValidate(ptr) gdi32.ScriptStringValidate
@ stdcall ScriptStringXtoCP(ptr long ptr ptr) gdi32.ScriptStringXtoCP
@ stdcall ScriptString_pLogAttr(ptr) gdi32.ScriptString_pLogAttr
@ stdcall ScriptString_pSize(ptr) gdi32.ScriptString_pSize
@ stdcall ScriptString_pcOutChars(ptr) gdi32.ScriptString_pcOutChars
@ stub ScriptSubstituteSingleGlyph
@ stdcall ScriptTextOut(ptr ptr long long long ptr ptr ptr long ptr long ptr ptr ptr)
@ stdcall ScriptXtoCP(long long long ptr ptr ptr ptr ptr ptr)
@ stdcall ScriptTextOut(ptr ptr long long long ptr ptr ptr long ptr long ptr ptr ptr) gdi32.ScriptTextOut
@ stdcall ScriptXtoCP(long long long ptr ptr ptr ptr ptr ptr) gdi32.ScriptXtoCP
@ stub UspAllocCache
@ stub UspAllocTemp
@ stub UspFreeMem
......@@ -463,6 +463,7 @@ my @dll_groups =
"ext-ms-win-rtcore-gdi-devcaps-l1-1-0",
"ext-ms-win-rtcore-gdi-object-l1-1-0",
"ext-ms-win-rtcore-gdi-rgn-l1-1-0",
"usp10"
],
[
"combase",
......
......@@ -2787,19 +2787,18 @@ load_data();
dump_case_mappings( "libs/port/casemap.c" );
dump_sortkeys( "dlls/kernelbase/collation.c" );
dump_ctype_tables( "libs/port/wctype.c" );
dump_bidi_dir_table( "dlls/gdi32/direction.c" );
dump_bidi_dir_table( "dlls/usp10/direction.c" );
dump_bidi_dir_table( "dlls/gdi32/uniscribe/direction.c" );
dump_bidi_dir_table( "dlls/dwrite/direction.c" );
dump_digit_folding( "dlls/kernelbase/digitmap.c" );
dump_mirroring( "dlls/usp10/mirror.c" );
dump_mirroring( "dlls/gdi32/uniscribe/mirror.c" );
dump_mirroring( "dlls/dwrite/mirror.c" );
dump_bracket( "dlls/usp10/bracket.c" );
dump_bracket( "dlls/gdi32/uniscribe/bracket.c" );
dump_bracket( "dlls/dwrite/bracket.c" );
dump_shaping( "dlls/usp10/shaping.c" );
dump_linebreak( "dlls/usp10/linebreak.c" );
dump_shaping( "dlls/gdi32/uniscribe/shaping.c" );
dump_linebreak( "dlls/gdi32/uniscribe/linebreak.c" );
dump_linebreak( "dlls/dwrite/linebreak.c" );
dump_scripts( "dlls/dwrite/scripts" );
dump_indic( "dlls/usp10/indicsyllable.c" );
dump_indic( "dlls/gdi32/uniscribe/indicsyllable.c" );
dump_vertical( "dlls/gdi32/vertical.c" );
dump_vertical( "dlls/wineps.drv/vertical.c" );
dump_intl_nls("nls/l_intl.nls");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment