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
65014bca
Commit
65014bca
authored
Aug 24, 2017
by
Nikolay Sivov
Committed by
Alexandre Julliard
Aug 24, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
dwrite/tests: A test to draw trimming sign with drawing effect.
Signed-off-by:
Nikolay Sivov
<
nsivov@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
42e5d270
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
55 additions
and
11 deletions
+55
-11
layout.c
dlls/dwrite/tests/layout.c
+55
-11
No files found.
dlls/dwrite/tests/layout.c
View file @
65014bca
...
...
@@ -782,6 +782,17 @@ static IDWriteInlineObject testinlineobj = { &testinlineobjvtbl };
static
IDWriteInlineObject
testinlineobj2
=
{
&
testinlineobjvtbl
};
static
IDWriteInlineObject
testinlineobj3
=
{
&
testinlineobjvtbl2
};
struct
test_effect
{
IUnknown
IUnknown_iface
;
LONG
ref
;
};
static
inline
struct
test_effect
*
test_effect_from_IUnknown
(
IUnknown
*
iface
)
{
return
CONTAINING_RECORD
(
iface
,
struct
test_effect
,
IUnknown_iface
);
}
static
HRESULT
WINAPI
testeffect_QI
(
IUnknown
*
iface
,
REFIID
riid
,
void
**
obj
)
{
if
(
IsEqualIID
(
riid
,
&
IID_IUnknown
))
{
...
...
@@ -790,18 +801,26 @@ static HRESULT WINAPI testeffect_QI(IUnknown *iface, REFIID riid, void **obj)
return
S_OK
;
}
ok
(
0
,
"Unexpected riid %s.
\n
"
,
wine_dbgstr_guid
(
riid
));
*
obj
=
NULL
;
return
E_NOINTERFACE
;
}
static
ULONG
WINAPI
testeffect_AddRef
(
IUnknown
*
iface
)
{
return
2
;
struct
test_effect
*
effect
=
test_effect_from_IUnknown
(
iface
);
return
InterlockedIncrement
(
&
effect
->
ref
);
}
static
ULONG
WINAPI
testeffect_Release
(
IUnknown
*
iface
)
{
return
1
;
struct
test_effect
*
effect
=
test_effect_from_IUnknown
(
iface
);
LONG
ref
=
InterlockedDecrement
(
&
effect
->
ref
);
if
(
!
ref
)
HeapFree
(
GetProcessHeap
(),
0
,
effect
);
return
ref
;
}
static
const
IUnknownVtbl
testeffectvtbl
=
{
...
...
@@ -810,7 +829,16 @@ static const IUnknownVtbl testeffectvtbl = {
testeffect_Release
};
static
IUnknown
testeffect
=
{
&
testeffectvtbl
};
static
IUnknown
*
create_test_effect
(
void
)
{
struct
test_effect
*
effect
;
effect
=
HeapAlloc
(
GetProcessHeap
(),
0
,
sizeof
(
*
effect
));
effect
->
IUnknown_iface
.
lpVtbl
=
&
testeffectvtbl
;
effect
->
ref
=
1
;
return
&
effect
->
IUnknown_iface
;
}
static
void
test_CreateTextLayout
(
void
)
{
...
...
@@ -1211,7 +1239,7 @@ static void test_CreateEllipsisTrimmingSign(void)
IDWriteTextFormat
*
format
;
IDWriteInlineObject
*
sign
;
IDWriteFactory
*
factory
;
IUnknown
*
unk
;
IUnknown
*
unk
,
*
effect
;
HRESULT
hr
;
factory
=
create_factory
();
...
...
@@ -1254,6 +1282,16 @@ if (0) {/* crashes on native */
hr
=
IDWriteInlineObject_Draw
(
sign
,
NULL
,
&
testrenderer
,
0
.
0
,
0
.
0
,
FALSE
,
FALSE
,
NULL
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok_sequence
(
sequences
,
RENDERER_ID
,
drawellipsis_seq
,
"ellipsis sign draw test"
,
FALSE
);
effect
=
create_test_effect
();
EXPECT_REF
(
effect
,
1
);
hr
=
IDWriteInlineObject_Draw
(
sign
,
NULL
,
&
testrenderer
,
0
.
0
f
,
0
.
0
f
,
FALSE
,
FALSE
,
effect
);
ok
(
hr
==
S_OK
,
"Failed to draw trimming sign, hr %#x.
\n
"
,
hr
);
EXPECT_REF
(
effect
,
1
);
IUnknown_Release
(
effect
);
IDWriteInlineObject_Release
(
sign
);
/* non-orthogonal flow/reading combination */
...
...
@@ -3265,12 +3303,15 @@ static void test_SetDrawingEffect(void)
IDWriteTextFormat
*
format
;
IDWriteTextLayout
*
layout
;
IDWriteFactory
*
factory
;
IUnknown
*
unk
,
*
effect
;
DWRITE_TEXT_RANGE
r
;
IUnknown
*
unk
;
HRESULT
hr
;
LONG
ref
;
factory
=
create_factory
();
effect
=
create_test_effect
();
hr
=
IDWriteFactory_CreateTextFormat
(
factory
,
tahomaW
,
NULL
,
DWRITE_FONT_WEIGHT_NORMAL
,
DWRITE_FONT_STYLE_NORMAL
,
DWRITE_FONT_STRETCH_NORMAL
,
10
.
0
,
enusW
,
&
format
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
...
...
@@ -3282,13 +3323,14 @@ static void test_SetDrawingEffect(void)
/* set effect past the end of text */
r
.
startPosition
=
100
;
r
.
length
=
10
;
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
&
test
effect
,
r
);
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
effect
,
r
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
r
.
startPosition
=
r
.
length
=
0
;
hr
=
IDWriteTextLayout_GetDrawingEffect
(
layout
,
101
,
&
unk
,
&
r
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
ok
(
r
.
startPosition
==
100
&&
r
.
length
==
10
,
"got %u, %u
\n
"
,
r
.
startPosition
,
r
.
length
);
IUnknown_Release
(
unk
);
r
.
startPosition
=
r
.
length
=
0
;
unk
=
(
void
*
)
0xdeadbeef
;
...
...
@@ -3300,7 +3342,7 @@ static void test_SetDrawingEffect(void)
/* effect is applied to clusters, not individual text positions */
r
.
startPosition
=
0
;
r
.
length
=
2
;
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
&
test
effect
,
r
);
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
effect
,
r
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
flush_sequence
(
sequences
,
RENDERER_ID
);
...
...
@@ -3315,7 +3357,7 @@ static void test_SetDrawingEffect(void)
r
.
startPosition
=
0
;
r
.
length
=
2
;
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
&
test
effect
,
r
);
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
effect
,
r
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
flush_sequence
(
sequences
,
RENDERER_ID
);
...
...
@@ -3336,7 +3378,7 @@ static void test_SetDrawingEffect(void)
hr
=
IDWriteTextLayout_SetInlineObject
(
layout
,
sign
,
r
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
&
test
effect
,
r
);
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
effect
,
r
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
flush_sequence
(
sequences
,
RENDERER_ID
);
...
...
@@ -3350,7 +3392,7 @@ static void test_SetDrawingEffect(void)
r
.
startPosition
=
1
;
r
.
length
=
1
;
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
&
test
effect
,
r
);
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
effect
,
r
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* no effect is reported in this case */
...
...
@@ -3366,7 +3408,7 @@ static void test_SetDrawingEffect(void)
r
.
startPosition
=
0
;
r
.
length
=
1
;
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
&
test
effect
,
r
);
hr
=
IDWriteTextLayout_SetDrawingEffect
(
layout
,
effect
,
r
);
ok
(
hr
==
S_OK
,
"got 0x%08x
\n
"
,
hr
);
/* first range position is all that matters for inline ranges */
...
...
@@ -3377,6 +3419,8 @@ static void test_SetDrawingEffect(void)
IDWriteTextLayout_Release
(
layout
);
ref
=
IUnknown_Release
(
effect
);
ok
(
ref
==
0
,
"Unexpected effect refcount %u
\n
"
,
ref
);
IDWriteInlineObject_Release
(
sign
);
IDWriteTextFormat_Release
(
format
);
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