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
0258e531
Commit
0258e531
authored
Jan 21, 2015
by
Nikolay Sivov
Committed by
Alexandre Julliard
Jan 21, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dwrite/tests: Basic test for GetTypographicFeatures().
parent
4d01e6f3
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
118 additions
and
0 deletions
+118
-0
analyzer.c
dlls/dwrite/tests/analyzer.c
+118
-0
No files found.
dlls/dwrite/tests/analyzer.c
View file @
0258e531
...
...
@@ -265,6 +265,14 @@ static HRESULT WINAPI analysissink_SetScriptAnalysis(IDWriteTextAnalysisSink *if
return
S_OK
;
}
static
DWRITE_SCRIPT_ANALYSIS
g_sa
;
static
HRESULT
WINAPI
analysissink_SetScriptAnalysis2
(
IDWriteTextAnalysisSink
*
iface
,
UINT32
position
,
UINT32
length
,
DWRITE_SCRIPT_ANALYSIS
const
*
sa
)
{
g_sa
=
*
sa
;
return
S_OK
;
}
#define BREAKPOINT_COUNT 20
static
DWRITE_LINE_BREAKPOINT
g_actual_bp
[
BREAKPOINT_COUNT
];
...
...
@@ -310,7 +318,18 @@ static IDWriteTextAnalysisSinkVtbl analysissinkvtbl = {
analysissink_SetNumberSubstitution
};
static
IDWriteTextAnalysisSinkVtbl
analysissinkvtbl2
=
{
analysissink_QueryInterface
,
analysissink_AddRef
,
analysissink_Release
,
analysissink_SetScriptAnalysis2
,
analysissink_SetLineBreakpoints
,
analysissink_SetBidiLevel
,
analysissink_SetNumberSubstitution
};
static
IDWriteTextAnalysisSink
analysissink
=
{
&
analysissinkvtbl
};
static
IDWriteTextAnalysisSink
analysissink2
=
{
&
analysissinkvtbl2
};
static
HRESULT
WINAPI
analysissource_QueryInterface
(
IDWriteTextAnalysisSource
*
iface
,
REFIID
riid
,
void
**
obj
)
...
...
@@ -836,6 +855,22 @@ static void init_expected_sa(struct call_sequence **seq, const struct sa_test *t
add_call
(
seq
,
0
,
&
end_of_sequence
);
}
static
void
get_script_analysis
(
const
WCHAR
*
str
,
DWRITE_SCRIPT_ANALYSIS
*
sa
)
{
IDWriteTextAnalyzer
*
analyzer
;
HRESULT
hr
;
g_source
=
str
;
hr
=
IDWriteFactory_CreateTextAnalyzer
(
factory
,
&
analyzer
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
hr
=
IDWriteTextAnalyzer_AnalyzeScript
(
analyzer
,
&
analysissource
,
0
,
lstrlenW
(
g_source
),
&
analysissink2
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
*
sa
=
g_sa
;
}
static
void
test_AnalyzeScript
(
void
)
{
const
struct
sa_test
*
ptr
=
sa_tests
;
...
...
@@ -1174,6 +1209,88 @@ if (0) {
IDWriteFontFace_Release
(
fontface
);
}
static
BOOL
has_feature
(
const
DWRITE_FONT_FEATURE_TAG
*
tags
,
UINT32
count
,
DWRITE_FONT_FEATURE_TAG
feature
)
{
UINT32
i
;
for
(
i
=
0
;
i
<
count
;
i
++
)
if
(
tags
[
i
]
==
feature
)
return
TRUE
;
return
FALSE
;
}
static
void
test_GetTypographicFeatures
(
void
)
{
static
const
WCHAR
localeW
[]
=
{
'c'
,
'a'
,
'd'
,
'a'
,
'b'
,
'r'
,
'a'
,
0
};
static
const
WCHAR
arabicW
[]
=
{
0x064a
,
0x064f
,
0x0633
,
0
};
static
const
WCHAR
abcW
[]
=
{
'a'
,
'b'
,
'c'
,
0
};
DWRITE_FONT_FEATURE_TAG
tags
[
20
];
IDWriteTextAnalyzer2
*
analyzer2
;
IDWriteTextAnalyzer
*
analyzer
;
IDWriteFontFace
*
fontface
;
DWRITE_SCRIPT_ANALYSIS
sa
;
UINT32
count
;
HRESULT
hr
;
BOOL
ret
;
hr
=
IDWriteFactory_CreateTextAnalyzer
(
factory
,
&
analyzer
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
hr
=
IDWriteTextAnalyzer_QueryInterface
(
analyzer
,
&
IID_IDWriteTextAnalyzer2
,
(
void
**
)
&
analyzer2
);
IDWriteTextAnalyzer_Release
(
analyzer
);
if
(
hr
!=
S_OK
)
{
win_skip
(
"GetTypographicFeatures() is not supported.
\n
"
);
return
;
}
fontface
=
create_fontface
();
get_script_analysis
(
abcW
,
&
sa
);
count
=
0
;
hr
=
IDWriteTextAnalyzer2_GetTypographicFeatures
(
analyzer2
,
fontface
,
sa
,
NULL
,
0
,
&
count
,
NULL
);
todo_wine
{
ok
(
hr
==
E_NOT_SUFFICIENT_BUFFER
,
"got 0x%08x
\n
"
,
hr
);
ok
(
count
>
0
,
"got %u
\n
"
,
count
);
}
/* invalid locale name is ignored */
get_script_analysis
(
abcW
,
&
sa
);
count
=
0
;
hr
=
IDWriteTextAnalyzer2_GetTypographicFeatures
(
analyzer2
,
fontface
,
sa
,
localeW
,
0
,
&
count
,
NULL
);
todo_wine
{
ok
(
hr
==
E_NOT_SUFFICIENT_BUFFER
,
"got 0x%08x
\n
"
,
hr
);
ok
(
count
>
0
,
"got %u
\n
"
,
count
);
}
/* both GSUB and GPOS features are reported */
get_script_analysis
(
arabicW
,
&
sa
);
memset
(
tags
,
0
,
sizeof
(
tags
));
count
=
0
;
hr
=
IDWriteTextAnalyzer2_GetTypographicFeatures
(
analyzer2
,
fontface
,
sa
,
NULL
,
sizeof
(
tags
)
/
sizeof
(
tags
[
0
]),
&
count
,
tags
);
todo_wine
{
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
count
>
0
,
"got %u
\n
"
,
count
);
ret
=
has_feature
(
tags
,
count
,
DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES
);
ok
(
ret
,
"expected 'calt' feature
\n
"
);
ret
=
has_feature
(
tags
,
count
,
DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING
);
ok
(
ret
,
"expected 'mkmk' feature
\n
"
);
}
get_script_analysis
(
abcW
,
&
sa
);
memset
(
tags
,
0
,
sizeof
(
tags
));
count
=
0
;
hr
=
IDWriteTextAnalyzer2_GetTypographicFeatures
(
analyzer2
,
fontface
,
sa
,
NULL
,
sizeof
(
tags
)
/
sizeof
(
tags
[
0
]),
&
count
,
tags
);
todo_wine
{
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
count
>
0
,
"got %u
\n
"
,
count
);
ret
=
has_feature
(
tags
,
count
,
DWRITE_FONT_FEATURE_TAG_GLYPH_COMPOSITION_DECOMPOSITION
);
ok
(
ret
,
"expected 'ccmp' feature
\n
"
);
ret
=
has_feature
(
tags
,
count
,
DWRITE_FONT_FEATURE_TAG_MARK_TO_MARK_POSITIONING
);
ok
(
ret
,
"expected 'mkmk' feature
\n
"
);
}
ret
=
has_feature
(
tags
,
count
,
DWRITE_FONT_FEATURE_TAG_CONTEXTUAL_ALTERNATES
);
ok
(
!
ret
,
"unexpected 'calt' feature
\n
"
);
IDWriteFontFace_Release
(
fontface
);
IDWriteTextAnalyzer2_Release
(
analyzer2
);
}
START_TEST
(
analyzer
)
{
HRESULT
hr
;
...
...
@@ -1195,6 +1312,7 @@ START_TEST(analyzer)
test_GetTextComplexity
();
test_GetGlyphs
();
test_numbersubstitution
();
test_GetTypographicFeatures
();
IDWriteFactory_Release
(
factory
);
}
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