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
39406039
Commit
39406039
authored
Feb 03, 2017
by
Henri Verbeet
Committed by
Alexandre Julliard
Feb 03, 2017
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
d2d1: Implement initial support for line joins.
Signed-off-by:
Henri Verbeet
<
hverbeet@codeweavers.com
>
Signed-off-by:
Alexandre Julliard
<
julliard@winehq.org
>
parent
f3563f4e
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
172 additions
and
54 deletions
+172
-54
d2d1_private.h
dlls/d2d1/d2d1_private.h
+2
-1
geometry.c
dlls/d2d1/geometry.c
+94
-13
render_target.c
dlls/d2d1/render_target.c
+69
-33
d2d1.c
dlls/d2d1/tests/d2d1.c
+7
-7
No files found.
dlls/d2d1/d2d1_private.h
View file @
39406039
...
@@ -308,7 +308,8 @@ struct d2d_vec4
...
@@ -308,7 +308,8 @@ struct d2d_vec4
struct
d2d_outline_vertex
struct
d2d_outline_vertex
{
{
D2D1_POINT_2F
position
;
D2D1_POINT_2F
position
;
D2D1_POINT_2F
direction
;
D2D1_POINT_2F
prev
;
D2D1_POINT_2F
next
;
};
};
struct
d2d_geometry
struct
d2d_geometry
...
...
dlls/d2d1/geometry.c
View file @
39406039
...
@@ -135,10 +135,11 @@ static void d2d_face_set(struct d2d_face *f, UINT16 v0, UINT16 v1, UINT16 v2)
...
@@ -135,10 +135,11 @@ static void d2d_face_set(struct d2d_face *f, UINT16 v0, UINT16 v1, UINT16 v2)
}
}
static
void
d2d_outline_vertex_set
(
struct
d2d_outline_vertex
*
v
,
float
x
,
float
y
,
static
void
d2d_outline_vertex_set
(
struct
d2d_outline_vertex
*
v
,
float
x
,
float
y
,
float
direction_x
,
float
direction
_y
)
float
prev_x
,
float
prev_y
,
float
next_x
,
float
next
_y
)
{
{
d2d_point_set
(
&
v
->
position
,
x
,
y
);
d2d_point_set
(
&
v
->
position
,
x
,
y
);
d2d_point_set
(
&
v
->
direction
,
direction_x
,
direction_y
);
d2d_point_set
(
&
v
->
prev
,
prev_x
,
prev_y
);
d2d_point_set
(
&
v
->
next
,
next_x
,
next_y
);
}
}
static
void
d2d_fp_two_sum
(
float
*
out
,
float
a
,
float
b
)
static
void
d2d_fp_two_sum
(
float
*
out
,
float
a
,
float
b
)
...
@@ -1735,6 +1736,62 @@ static BOOL d2d_path_geometry_add_figure(struct d2d_geometry *geometry)
...
@@ -1735,6 +1736,62 @@ static BOOL d2d_path_geometry_add_figure(struct d2d_geometry *geometry)
return
TRUE
;
return
TRUE
;
}
}
static
BOOL
d2d_geometry_outline_add_join
(
struct
d2d_geometry
*
geometry
,
const
D2D1_POINT_2F
*
prev
,
const
D2D1_POINT_2F
*
p0
,
const
D2D1_POINT_2F
*
next
)
{
D2D1_POINT_2F
q_prev
,
q_next
;
struct
d2d_outline_vertex
*
v
;
struct
d2d_face
*
f
;
size_t
base_idx
;
if
(
!
d2d_array_reserve
((
void
**
)
&
geometry
->
outline
.
vertices
,
&
geometry
->
outline
.
vertices_size
,
geometry
->
outline
.
vertex_count
+
4
,
sizeof
(
*
geometry
->
outline
.
vertices
)))
{
ERR
(
"Failed to grow outline vertices array.
\n
"
);
return
FALSE
;
}
base_idx
=
geometry
->
outline
.
vertex_count
;
v
=
&
geometry
->
outline
.
vertices
[
base_idx
];
if
(
!
d2d_array_reserve
((
void
**
)
&
geometry
->
outline
.
faces
,
&
geometry
->
outline
.
faces_size
,
geometry
->
outline
.
face_count
+
2
,
sizeof
(
*
geometry
->
outline
.
faces
)))
{
ERR
(
"Failed to grow outline faces array.
\n
"
);
return
FALSE
;
}
f
=
&
geometry
->
outline
.
faces
[
geometry
->
outline
.
face_count
];
d2d_point_subtract
(
&
q_prev
,
p0
,
prev
);
d2d_point_subtract
(
&
q_next
,
next
,
p0
);
d2d_point_normalise
(
&
q_prev
);
d2d_point_normalise
(
&
q_next
);
if
(
d2d_point_dot
(
&
q_prev
,
&
q_next
)
==
-
1
.
0
f
)
{
d2d_outline_vertex_set
(
&
v
[
0
],
p0
->
x
,
p0
->
y
,
q_prev
.
x
,
q_prev
.
y
,
q_prev
.
x
,
q_prev
.
y
);
d2d_outline_vertex_set
(
&
v
[
1
],
p0
->
x
,
p0
->
y
,
-
q_prev
.
x
,
-
q_prev
.
y
,
-
q_prev
.
x
,
-
q_prev
.
y
);
d2d_outline_vertex_set
(
&
v
[
2
],
p0
->
x
+
25
.
0
f
*
q_prev
.
x
,
p0
->
y
+
25
.
0
f
*
q_prev
.
y
,
-
q_prev
.
x
,
-
q_prev
.
y
,
-
q_prev
.
x
,
-
q_prev
.
y
);
d2d_outline_vertex_set
(
&
v
[
3
],
p0
->
x
+
25
.
0
f
*
q_prev
.
x
,
p0
->
y
+
25
.
0
f
*
q_prev
.
y
,
q_prev
.
x
,
q_prev
.
y
,
q_prev
.
x
,
q_prev
.
y
);
}
else
{
d2d_outline_vertex_set
(
&
v
[
0
],
p0
->
x
,
p0
->
y
,
0
.
0
f
,
0
.
0
f
,
0
.
0
f
,
0
.
0
f
);
d2d_outline_vertex_set
(
&
v
[
1
],
p0
->
x
,
p0
->
y
,
q_prev
.
x
,
q_prev
.
y
,
q_prev
.
x
,
q_prev
.
y
);
d2d_outline_vertex_set
(
&
v
[
2
],
p0
->
x
,
p0
->
y
,
q_prev
.
x
,
q_prev
.
y
,
q_next
.
x
,
q_next
.
y
);
d2d_outline_vertex_set
(
&
v
[
3
],
p0
->
x
,
p0
->
y
,
q_next
.
x
,
q_next
.
y
,
q_next
.
x
,
q_next
.
y
);
}
geometry
->
outline
.
vertex_count
+=
4
;
d2d_face_set
(
&
f
[
0
],
base_idx
+
1
,
base_idx
+
0
,
base_idx
+
2
);
d2d_face_set
(
&
f
[
1
],
base_idx
+
2
,
base_idx
+
0
,
base_idx
+
3
);
geometry
->
outline
.
face_count
+=
2
;
return
TRUE
;
}
static
BOOL
d2d_geometry_outline_add_line_segment
(
struct
d2d_geometry
*
geometry
,
static
BOOL
d2d_geometry_outline_add_line_segment
(
struct
d2d_geometry
*
geometry
,
const
D2D1_POINT_2F
*
p0
,
const
D2D1_POINT_2F
*
next
)
const
D2D1_POINT_2F
*
p0
,
const
D2D1_POINT_2F
*
next
)
{
{
...
@@ -1763,10 +1820,10 @@ static BOOL d2d_geometry_outline_add_line_segment(struct d2d_geometry *geometry,
...
@@ -1763,10 +1820,10 @@ static BOOL d2d_geometry_outline_add_line_segment(struct d2d_geometry *geometry,
d2d_point_subtract
(
&
q_next
,
next
,
p0
);
d2d_point_subtract
(
&
q_next
,
next
,
p0
);
d2d_point_normalise
(
&
q_next
);
d2d_point_normalise
(
&
q_next
);
d2d_outline_vertex_set
(
&
v
[
0
],
p0
->
x
,
p0
->
y
,
q_next
.
x
,
q_next
.
y
);
d2d_outline_vertex_set
(
&
v
[
0
],
p0
->
x
,
p0
->
y
,
q_next
.
x
,
q_next
.
y
,
q_next
.
x
,
q_next
.
y
);
d2d_outline_vertex_set
(
&
v
[
1
],
p0
->
x
,
p0
->
y
,
-
q_next
.
x
,
-
q_next
.
y
);
d2d_outline_vertex_set
(
&
v
[
1
],
p0
->
x
,
p0
->
y
,
-
q_next
.
x
,
-
q_next
.
y
,
-
q_next
.
x
,
-
q_next
.
y
);
d2d_outline_vertex_set
(
&
v
[
2
],
next
->
x
,
next
->
y
,
q_next
.
x
,
q_next
.
y
);
d2d_outline_vertex_set
(
&
v
[
2
],
next
->
x
,
next
->
y
,
q_next
.
x
,
q_next
.
y
,
q_next
.
x
,
q_next
.
y
);
d2d_outline_vertex_set
(
&
v
[
3
],
next
->
x
,
next
->
y
,
-
q_next
.
x
,
-
q_next
.
y
);
d2d_outline_vertex_set
(
&
v
[
3
],
next
->
x
,
next
->
y
,
-
q_next
.
x
,
-
q_next
.
y
,
-
q_next
.
x
,
-
q_next
.
y
);
geometry
->
outline
.
vertex_count
+=
4
;
geometry
->
outline
.
vertex_count
+=
4
;
d2d_face_set
(
&
f
[
0
],
base_idx
+
0
,
base_idx
+
1
,
base_idx
+
2
);
d2d_face_set
(
&
f
[
0
],
base_idx
+
0
,
base_idx
+
1
,
base_idx
+
2
);
...
@@ -1779,26 +1836,50 @@ static BOOL d2d_geometry_outline_add_line_segment(struct d2d_geometry *geometry,
...
@@ -1779,26 +1836,50 @@ static BOOL d2d_geometry_outline_add_line_segment(struct d2d_geometry *geometry,
static
BOOL
d2d_geometry_add_figure_outline
(
struct
d2d_geometry
*
geometry
,
static
BOOL
d2d_geometry_add_figure_outline
(
struct
d2d_geometry
*
geometry
,
struct
d2d_figure
*
figure
,
D2D1_FIGURE_END
figure_end
)
struct
d2d_figure
*
figure
,
D2D1_FIGURE_END
figure_end
)
{
{
const
D2D1_POINT_2F
*
p0
,
*
next
;
const
D2D1_POINT_2F
*
p
rev
,
*
p
0
,
*
next
;
enum
d2d_vertex_type
type
;
enum
d2d_vertex_type
prev_type
,
type
;
size_t
bezier_idx
,
i
;
size_t
bezier_idx
,
i
;
for
(
i
=
0
,
bezier_idx
=
0
;
i
<
figure
->
vertex_count
;
++
i
)
for
(
i
=
0
,
bezier_idx
=
0
;
i
<
figure
->
vertex_count
;
++
i
)
{
{
type
=
figure
->
vertex_types
[
i
];
type
=
figure
->
vertex_types
[
i
];
if
(
type
==
D2D_VERTEX_TYPE_BEZIER
)
if
(
type
==
D2D_VERTEX_TYPE_NONE
)
++
bezier_idx
;
if
(
type
!=
D2D_VERTEX_TYPE_LINE
)
continue
;
continue
;
p0
=
&
figure
->
vertices
[
i
];
p0
=
&
figure
->
vertices
[
i
];
if
(
i
==
figure
->
vertex_count
-
1
)
if
(
!
i
)
{
prev_type
=
figure
->
vertex_types
[
figure
->
vertex_count
-
1
];
if
(
prev_type
==
D2D_VERTEX_TYPE_BEZIER
)
prev
=
&
figure
->
bezier_controls
[
figure
->
bezier_control_count
-
1
];
else
prev
=
&
figure
->
vertices
[
figure
->
vertex_count
-
1
];
}
else
{
prev_type
=
figure
->
vertex_types
[
i
-
1
];
if
(
prev_type
==
D2D_VERTEX_TYPE_BEZIER
)
prev
=
&
figure
->
bezier_controls
[
bezier_idx
-
1
];
else
prev
=
&
figure
->
vertices
[
i
-
1
];
}
if
(
type
==
D2D_VERTEX_TYPE_BEZIER
)
next
=
&
figure
->
bezier_controls
[
bezier_idx
++
];
else
if
(
i
==
figure
->
vertex_count
-
1
)
next
=
&
figure
->
vertices
[
0
];
next
=
&
figure
->
vertices
[
0
];
else
else
next
=
&
figure
->
vertices
[
i
+
1
];
next
=
&
figure
->
vertices
[
i
+
1
];
if
((
figure_end
==
D2D1_FIGURE_END_CLOSED
||
i
<
figure
->
vertex_count
-
1
)
if
((
figure_end
==
D2D1_FIGURE_END_CLOSED
||
(
i
&&
i
<
figure
->
vertex_count
-
1
))
&&
!
d2d_geometry_outline_add_join
(
geometry
,
prev
,
p0
,
next
))
{
ERR
(
"Failed to add join.
\n
"
);
return
FALSE
;
}
if
(
type
==
D2D_VERTEX_TYPE_LINE
&&
(
figure_end
==
D2D1_FIGURE_END_CLOSED
||
i
<
figure
->
vertex_count
-
1
)
&&
!
d2d_geometry_outline_add_line_segment
(
geometry
,
p0
,
next
))
&&
!
d2d_geometry_outline_add_line_segment
(
geometry
,
p0
,
next
))
{
{
ERR
(
"Failed to add line segment.
\n
"
);
ERR
(
"Failed to add line segment.
\n
"
);
...
...
dlls/d2d1/render_target.c
View file @
39406039
...
@@ -1883,7 +1883,8 @@ HRESULT d2d_d3d_render_target_init(struct d2d_d3d_render_target *render_target,
...
@@ -1883,7 +1883,8 @@ HRESULT d2d_d3d_render_target_init(struct d2d_d3d_render_target *render_target,
static
const
D3D10_INPUT_ELEMENT_DESC
il_desc_outline
[]
=
static
const
D3D10_INPUT_ELEMENT_DESC
il_desc_outline
[]
=
{
{
{
"POSITION"
,
0
,
DXGI_FORMAT_R32G32_FLOAT
,
0
,
0
,
D3D10_INPUT_PER_VERTEX_DATA
,
0
},
{
"POSITION"
,
0
,
DXGI_FORMAT_R32G32_FLOAT
,
0
,
0
,
D3D10_INPUT_PER_VERTEX_DATA
,
0
},
{
"DIRECTION"
,
0
,
DXGI_FORMAT_R32G32_FLOAT
,
0
,
8
,
D3D10_INPUT_PER_VERTEX_DATA
,
0
},
{
"PREV"
,
0
,
DXGI_FORMAT_R32G32_FLOAT
,
0
,
8
,
D3D10_INPUT_PER_VERTEX_DATA
,
0
},
{
"NEXT"
,
0
,
DXGI_FORMAT_R32G32_FLOAT
,
0
,
16
,
D3D10_INPUT_PER_VERTEX_DATA
,
0
},
};
};
static
const
D3D10_INPUT_ELEMENT_DESC
il_desc_triangle
[]
=
static
const
D3D10_INPUT_ELEMENT_DESC
il_desc_triangle
[]
=
{
{
...
@@ -1902,44 +1903,79 @@ HRESULT d2d_d3d_render_target_init(struct d2d_d3d_render_target *render_target,
...
@@ -1902,44 +1903,79 @@ HRESULT d2d_d3d_render_target_init(struct d2d_d3d_render_target *render_target,
float4 transform_rtx;
float4 transform_rtx;
float4 transform_rty;
float4 transform_rty;
float4 main(float2 position : POSITION, float2 direction : DIRECTION) : SV_POSITION
/* The lines PₚᵣₑᵥP₀ and P₀Pₙₑₓₜ, both offset by ±½w, intersect each other at:
*
* Pᵢ = P₀ ± w · ½q⃑ᵢ.
*
* Where:
*
* q⃑ᵢ = q̂ₚᵣₑᵥ⊥ + tan(½θ) · -q̂ₚᵣₑᵥ
* θ = ∠PₚᵣₑᵥP₀Pₙₑₓₜ
* q⃑ₚᵣₑᵥ = P₀ - Pₚᵣₑᵥ */
float4 main(float2 position : POSITION, float2 prev : PREV, float2 next : NEXT) : SV_POSITION
{
{
float2 v_p;
float2 q_prev, q_next, v_p, q_i;
float l;
v_p = normalize(float2(-dot(direction.xy, transform_geometry._12_22),
dot(direction.xy, transform_geometry._11_21)));
q_prev.x = dot(prev, transform_geometry._11_21);
position = mul(float3(position, 1.0f), transform_geometry) + stroke_width * 0.5f * v_p;
q_prev.y = dot(prev, transform_geometry._12_22);
q_prev = normalize(q_prev);
q_next.x = dot(next, transform_geometry._11_21);
q_next.y = dot(next, transform_geometry._12_22);
q_next = normalize(q_next);
/* tan(½θ) = sin(θ) / (1 + cos(θ))
* = (q̂ₚᵣₑᵥ⊥ · q̂ₙₑₓₜ) / (1 + (q̂ₚᵣₑᵥ · q̂ₙₑₓₜ)) */
v_p = float2(-q_prev.y, q_prev.x);
l = -dot(v_p, q_next) / (1.0f + dot(q_prev, q_next));
q_i = l * q_prev + v_p;
if (l < 0.0f)
q_i *= -1.0f;
position = mul(float3(position, 1.0f), transform_geometry) + stroke_width * 0.5f * q_i;
return float4(mul(float2x3(transform_rtx.xyz * transform_rtx.w, transform_rty.xyz * transform_rty.w),
return float4(mul(float2x3(transform_rtx.xyz * transform_rtx.w, transform_rty.xyz * transform_rty.w),
float3(position.xy, 1.0f)) + float2(-1.0f, 1.0f), 0.0f, 1.0f);
float3(position.xy, 1.0f)) + float2(-1.0f, 1.0f), 0.0f, 1.0f);
}
}
#endif
#endif
0x43425844
,
0xdae1a8d0
,
0x71b89c55
,
0x19c91fd3
,
0x3192cf04
,
0x00000001
,
0x00000334
,
0x00000003
,
0x43425844
,
0xb58748c9
,
0x99343e01
,
0x92198e38
,
0x667ab784
,
0x00000001
,
0x000004c0
,
0x00000003
,
0x0000002c
,
0x00000080
,
0x000000b4
,
0x4e475349
,
0x0000004c
,
0x00000002
,
0x00000008
,
0x00000038
,
0x0000002c
,
0x00000098
,
0x000000cc
,
0x4e475349
,
0x00000064
,
0x00000003
,
0x00000008
,
0x00000050
,
0x00000000
,
0x00000000
,
0x00000003
,
0x00000000
,
0x00000303
,
0x00000041
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000003
,
0x00000000
,
0x00000303
,
0x00000059
,
0x00000000
,
0x00000000
,
0x00000003
,
0x00000001
,
0x00000303
,
0x49534f50
,
0x4e4f4954
,
0x52494400
,
0x49544345
,
0xab004e4f
,
0x00000003
,
0x00000001
,
0x00000303
,
0x0000005e
,
0x00000000
,
0x00000000
,
0x00000003
,
0x00000002
,
0x4e47534f
,
0x0000002c
,
0x00000001
,
0x00000008
,
0x00000020
,
0x00000000
,
0x00000001
,
0x00000003
,
0x00000303
,
0x49534f50
,
0x4e4f4954
,
0x45525000
,
0x454e0056
,
0xab005458
,
0x4e47534f
,
0x0000002c
,
0x00000000
,
0x0000000f
,
0x505f5653
,
0x5449534f
,
0x004e4f49
,
0x52444853
,
0x00000278
,
0x00010040
,
0x00000001
,
0x00000008
,
0x00000020
,
0x00000000
,
0x00000001
,
0x00000003
,
0x00000000
,
0x0000000f
,
0x0000009e
,
0x04000059
,
0x00208e46
,
0x00000000
,
0x00000004
,
0x0300005f
,
0x00101032
,
0x00000000
,
0x505f5653
,
0x5449534f
,
0x004e4f49
,
0x52444853
,
0x000003ec
,
0x00010040
,
0x000000fb
,
0x04000059
,
0x0300005f
,
0x00101032
,
0x00000001
,
0x04000067
,
0x001020f2
,
0x00000000
,
0x00000001
,
0x02000068
,
0x00208e46
,
0x00000000
,
0x00000004
,
0x0300005f
,
0x00101032
,
0x00000000
,
0x0300005f
,
0x00101032
,
0x00000003
,
0x0800000f
,
0x00100012
,
0x00000000
,
0x00101046
,
0x00000001
,
0x00208046
,
0x00000000
,
0x00000001
,
0x0300005f
,
0x00101032
,
0x00000002
,
0x04000067
,
0x001020f2
,
0x00000000
,
0x00000001
,
0x00000001
,
0x06000036
,
0x00100012
,
0x00000000
,
0x8010000a
,
0x00000041
,
0x00000000
,
0x0800000f
,
0x02000068
,
0x00000003
,
0x0800000f
,
0x00100012
,
0x00000000
,
0x00101046
,
0x00000002
,
0x00208046
,
0x00100022
,
0x00000000
,
0x00101046
,
0x00000001
,
0x00208046
,
0x00000000
,
0x00000000
,
0x0700000f
,
0x00000000
,
0x00000000
,
0x0800000f
,
0x00100022
,
0x00000000
,
0x00101046
,
0x00000002
,
0x00208046
,
0x00100042
,
0x00000000
,
0x00100046
,
0x00000000
,
0x00100046
,
0x00000000
,
0x05000044
,
0x00100042
,
0x00000000
,
0x00000001
,
0x0700000f
,
0x00100042
,
0x00000000
,
0x00100046
,
0x00000000
,
0x00100046
,
0x00000000
,
0x0010002a
,
0x00000000
,
0x07000038
,
0x00100032
,
0x00000000
,
0x00100aa6
,
0x00000000
,
0x00000000
,
0x05000044
,
0x00100042
,
0x00000000
,
0x0010002a
,
0x00000000
,
0x07000038
,
0x00100032
,
0x00100046
,
0x00000000
,
0x08000038
,
0x00100042
,
0x00000000
,
0x0020803a
,
0x00000000
,
0x00000001
,
0x00000000
,
0x00100aa6
,
0x00000000
,
0x00100046
,
0x00000000
,
0x0800000f
,
0x00100012
,
0x00000001
,
0x00004001
,
0x3f000000
,
0x05000036
,
0x00100032
,
0x00000001
,
0x00101046
,
0x00000000
,
0x05000036
,
0x00101046
,
0x00000001
,
0x00208046
,
0x00000000
,
0x00000000
,
0x0800000f
,
0x00100022
,
0x00000001
,
0x00100042
,
0x00000001
,
0x00004001
,
0x3f800000
,
0x08000010
,
0x00100012
,
0x00000002
,
0x00100246
,
0x00101046
,
0x00000001
,
0x00208046
,
0x00000000
,
0x00000001
,
0x0700000f
,
0x00100042
,
0x00000000
,
0x00000001
,
0x00208246
,
0x00000000
,
0x00000000
,
0x08000010
,
0x00100022
,
0x00000002
,
0x00100246
,
0x00100046
,
0x00000001
,
0x00100046
,
0x00000001
,
0x05000044
,
0x00100042
,
0x00000000
,
0x0010002a
,
0x00000001
,
0x00208246
,
0x00000000
,
0x00000001
,
0x09000032
,
0x00100032
,
0x00000000
,
0x00100aa6
,
0x00000000
,
0x07000038
,
0x00100032
,
0x00000001
,
0x00100aa6
,
0x00000000
,
0x00100046
,
0x00000001
,
0x00000000
,
0x00100046
,
0x00000000
,
0x00100046
,
0x00000002
,
0x09000038
,
0x00100072
,
0x00000001
,
0x06000036
,
0x001000c2
,
0x00000001
,
0x80100556
,
0x00000041
,
0x00000001
,
0x0700000f
,
0x00100042
,
0x00208ff6
,
0x00000000
,
0x00000002
,
0x00208246
,
0x00000000
,
0x00000002
,
0x05000036
,
0x00100042
,
0x00000000
,
0x00100a26
,
0x00000001
,
0x00100046
,
0x00000000
,
0x0700000f
,
0x00100012
,
0x00000000
,
0x00000000
,
0x00004001
,
0x3f800000
,
0x07000010
,
0x00100012
,
0x00000001
,
0x00100246
,
0x00000001
,
0x00100046
,
0x00000001
,
0x00100046
,
0x00000000
,
0x07000000
,
0x00100012
,
0x00000000
,
0x0010000a
,
0x00100246
,
0x00000000
,
0x09000038
,
0x00100072
,
0x00000002
,
0x00208ff6
,
0x00000000
,
0x00000003
,
0x00000000
,
0x00004001
,
0x3f800000
,
0x0800000e
,
0x00100012
,
0x00000000
,
0x8010002a
,
0x00000041
,
0x00208246
,
0x00000000
,
0x00000003
,
0x07000010
,
0x00100022
,
0x00000001
,
0x00100246
,
0x00000002
,
0x00000000
,
0x0010000a
,
0x00000000
,
0x09000032
,
0x00100062
,
0x00000000
,
0x00100006
,
0x00000000
,
0x00100246
,
0x00000000
,
0x0a000000
,
0x00102032
,
0x00000000
,
0x00100046
,
0x00000001
,
0x00004002
,
0x00100106
,
0x00000001
,
0x00100cf6
,
0x00000001
,
0x07000031
,
0x00100012
,
0x00000000
,
0x0010000a
,
0xbf800000
,
0x3f800000
,
0x00000000
,
0x00000000
,
0x08000036
,
0x001020c2
,
0x00000000
,
0x00004002
,
0x00000000
,
0x00004001
,
0x00000000
,
0x0a000037
,
0x00100032
,
0x00000000
,
0x00100006
,
0x00000000
,
0x00000000
,
0x00000000
,
0x00000000
,
0x3f800000
,
0x0100003e
,
0x80100596
,
0x00000041
,
0x00000000
,
0x00100596
,
0x00000000
,
0x08000038
,
0x00100042
,
0x00000000
,
0x0020803a
,
0x00000000
,
0x00000001
,
0x00004001
,
0x3f000000
,
0x05000036
,
0x00100032
,
0x00000001
,
0x00101046
,
0x00000000
,
0x05000036
,
0x00100042
,
0x00000001
,
0x00004001
,
0x3f800000
,
0x08000010
,
0x00100012
,
0x00000002
,
0x00100246
,
0x00000001
,
0x00208246
,
0x00000000
,
0x00000000
,
0x08000010
,
0x00100022
,
0x00000002
,
0x00100246
,
0x00000001
,
0x00208246
,
0x00000000
,
0x00000001
,
0x09000032
,
0x00100032
,
0x00000000
,
0x00100aa6
,
0x00000000
,
0x00100046
,
0x00000000
,
0x00100046
,
0x00000002
,
0x09000038
,
0x00100072
,
0x00000001
,
0x00208ff6
,
0x00000000
,
0x00000002
,
0x00208246
,
0x00000000
,
0x00000002
,
0x05000036
,
0x00100042
,
0x00000000
,
0x00004001
,
0x3f800000
,
0x07000010
,
0x00100012
,
0x00000001
,
0x00100246
,
0x00000001
,
0x00100246
,
0x00000000
,
0x09000038
,
0x00100072
,
0x00000002
,
0x00208ff6
,
0x00000000
,
0x00000003
,
0x00208246
,
0x00000000
,
0x00000003
,
0x07000010
,
0x00100022
,
0x00000001
,
0x00100246
,
0x00000002
,
0x00100246
,
0x00000000
,
0x0a000000
,
0x00102032
,
0x00000000
,
0x00100046
,
0x00000001
,
0x00004002
,
0xbf800000
,
0x3f800000
,
0x00000000
,
0x00000000
,
0x08000036
,
0x001020c2
,
0x00000000
,
0x00004002
,
0x00000000
,
0x00000000
,
0x00000000
,
0x3f800000
,
0x0100003e
,
};
};
static
const
DWORD
vs_code_triangle
[]
=
static
const
DWORD
vs_code_triangle
[]
=
{
{
...
...
dlls/d2d1/tests/d2d1.c
View file @
39406039
...
@@ -3704,9 +3704,9 @@ static void test_draw_geometry(void)
...
@@ -3704,9 +3704,9 @@ static void test_draw_geometry(void)
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW"
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW"
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW"
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW"
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQrLIwAA"
);
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQrLIwAA"
);
todo_wine
ok
(
match
,
"Figure does not match.
\n
"
);
ok
(
match
,
"Figure does not match.
\n
"
);
match
=
compare_figure
(
surface
,
320
,
160
,
160
,
160
,
0xff652e89
,
0
,
"4GLAAuBi"
);
match
=
compare_figure
(
surface
,
320
,
160
,
160
,
160
,
0xff652e89
,
0
,
"4GLAAuBi"
);
todo_wine
ok
(
match
,
"Figure does not match.
\n
"
);
ok
(
match
,
"Figure does not match.
\n
"
);
match
=
compare_figure
(
surface
,
480
,
160
,
160
,
160
,
0xff652e89
,
0
,
match
=
compare_figure
(
surface
,
480
,
160
,
160
,
160
,
0xff652e89
,
0
,
"qyIKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEK"
"qyIKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEK"
"lgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEK"
"lgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEKlgEK"
...
@@ -3714,7 +3714,7 @@ static void test_draw_geometry(void)
...
@@ -3714,7 +3714,7 @@ static void test_draw_geometry(void)
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW"
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW"
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW"
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqW"
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQrLIwAA"
);
"AQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQqWAQrLIwAA"
);
todo_wine
ok
(
match
,
"Figure does not match.
\n
"
);
ok
(
match
,
"Figure does not match.
\n
"
);
match
=
compare_figure
(
surface
,
0
,
320
,
160
,
160
,
0xff652e89
,
0
,
match
=
compare_figure
(
surface
,
0
,
320
,
160
,
160
,
0xff652e89
,
0
,
"rycCngECnQEEnAEEmwEGmgEGmQEImAEIlwEKlgEKlQEMlAEMkwEOkgEOkQEQkAEQjwESjgESjQEU"
"rycCngECnQEEnAEEmwEGmgEGmQEImAEIlwEKlgEKlQEMlAEMkwEOkgEOkQEQkAEQjwESjgESjQEU"
...
@@ -3724,7 +3724,7 @@ static void test_draw_geometry(void)
...
@@ -3724,7 +3724,7 @@ static void test_draw_geometry(void)
"ZAooCmMKKgpiCioKYQosCmAKLApfCi4KXgouCl0KMApcCjAKWwoyCloKMgpZCjQKWAo0ClcKNgpW"
"ZAooCmMKKgpiCioKYQosCmAKLApfCi4KXgouCl0KMApcCjAKWwoyCloKMgpZCjQKWAo0ClcKNgpW"
"CjYKVQo4ClQKOApTCjoKUgo6ClEKPApQCjwKTwo+Ck4KPgpNCkAKTApACksKQgpKCkIKSQpECkgK"
"CjYKVQo4ClQKOApTCjoKUgo6ClEKPApQCjwKTwo+Ck4KPgpNCkAKTApACksKQgpKCkIKSQpECkgK"
"RApHCkYKozIA"
);
"RApHCkYKozIA"
);
todo_wine
ok
(
match
,
"Figure does not match.
\n
"
);
ok
(
match
,
"Figure does not match.
\n
"
);
match
=
compare_figure
(
surface
,
160
,
320
,
160
,
160
,
0xff652e89
,
0
,
match
=
compare_figure
(
surface
,
160
,
320
,
160
,
160
,
0xff652e89
,
0
,
"ozIKRgpHCkQKSApECkkKQgpKCkIKSwpACkwKQApNCj4KTgo+Ck8KPApQCjwKUQo6ClIKOgpTCjgK"
"ozIKRgpHCkQKSApECkkKQgpKCkIKSwpACkwKQApNCj4KTgo+Ck8KPApQCjwKUQo6ClIKOgpTCjgK"
"VAo4ClUKNgpWCjYKVwo0ClgKNApZCjIKWgoyClsKMApcCjAKXQouCl4KLgpfCiwKYAosCmEKKgpi"
"VAo4ClUKNgpWCjYKVwo0ClgKNApZCjIKWgoyClsKMApcCjAKXQouCl4KLgpfCiwKYAosCmEKKgpi"
...
@@ -3733,7 +3733,7 @@ static void test_draw_geometry(void)
...
@@ -3733,7 +3733,7 @@ static void test_draw_geometry(void)
"Cn8KDAqAAQoMCoEBCgoKggEKCgqDAQoICoQBCggKhQEKBgqGAQoGCocBCgQKiAEKBAqJAQoCCooB"
"Cn8KDAqAAQoMCoEBCgoKggEKCgqDAQoICoQBCggKhQEKBgqGAQoGCocBCgQKiAEKBAqJAQoCCooB"
"CgIKiwEUjAEUjQESjgESjwEQkAEQkQEOkgEOkwEMlAEMlQEKlgEKlwEImAEImQEGmgEGmwEEnAEE"
"CgIKiwEUjAEUjQESjgESjwEQkAEQkQEOkgEOkwEMlAEMlQEKlgEKlwEImAEImQEGmgEGmwEEnAEE"
"nQECngECrycA"
);
"nQECngECrycA"
);
todo_wine
ok
(
match
,
"Figure does not match.
\n
"
);
ok
(
match
,
"Figure does not match.
\n
"
);
match
=
compare_figure
(
surface
,
320
,
320
,
160
,
160
,
0xff652e89
,
2
,
match
=
compare_figure
(
surface
,
320
,
320
,
160
,
160
,
0xff652e89
,
2
,
"rycCngECnQEEnAEEmwEGmgEGmQEImAEIlwEKlgEKlQEMlAEMkwEOkgEOkQEQkAEQjwESjgESjQEU"
"rycCngECnQEEnAEEmwEGmgEGmQEImAEIlwEKlgEKlQEMlAEMkwEOkgEOkQEQkAEQjwESjgESjQEU"
"jAEUiwEKAgqKAQoCCokBCgQKiAEKBAqHAQoGCoYBCgYKhQEKCAqEAQoICoMBCgoKggEKCgqBAQoM"
"jAEUiwEKAgqKAQoCCokBCgQKiAEKBAqHAQoGCoYBCgYKhQEKCAqEAQoICoMBCgoKggEKCgqBAQoM"
...
@@ -3742,7 +3742,7 @@ static void test_draw_geometry(void)
...
@@ -3742,7 +3742,7 @@ static void test_draw_geometry(void)
"ZAooCmMKKgpiCioKYQosCmAKLApfCi4KXgouCl0KMApcCjAKWwoyCloKMgpZCjQKWAo0ClcKNgpW"
"ZAooCmMKKgpiCioKYQosCmAKLApfCi4KXgouCl0KMApcCjAKWwoyCloKMgpZCjQKWAo0ClcKNgpW"
"CjYKVQo4ClQKOApTCjoKUgo6ClEKPApQCjwKTwo+Ck4KPgpNCkAKTApACksKQgpKCkIKSQpECkgK"
"CjYKVQo4ClQKOApTCjoKUgo6ClEKPApQCjwKTwo+Ck4KPgpNCkAKTApACksKQgpKCkIKSQpECkgK"
"RApHWkZagzEA"
);
"RApHWkZagzEA"
);
todo_wine
ok
(
match
,
"Figure does not match.
\n
"
);
ok
(
match
,
"Figure does not match.
\n
"
);
match
=
compare_figure
(
surface
,
480
,
320
,
160
,
160
,
0xff652e89
,
0
,
match
=
compare_figure
(
surface
,
480
,
320
,
160
,
160
,
0xff652e89
,
0
,
"gzFaRlpHCkQKSApECkkKQgpKCkIKSwpACkwKQApNCj4KTgo+Ck8KPApQCjwKUQo6ClIKOgpTCjgK"
"gzFaRlpHCkQKSApECkkKQgpKCkIKSwpACkwKQApNCj4KTgo+Ck8KPApQCjwKUQo6ClIKOgpTCjgK"
"VAo4ClUKNgpWCjYKVwo0ClgKNApZCjIKWgoyClsKMApcCjAKXQouCl4KLgpfCiwKYAosCmEKKgpi"
"VAo4ClUKNgpWCjYKVwo0ClgKNApZCjIKWgoyClsKMApcCjAKXQouCl4KLgpfCiwKYAosCmEKKgpi"
...
@@ -3751,7 +3751,7 @@ static void test_draw_geometry(void)
...
@@ -3751,7 +3751,7 @@ static void test_draw_geometry(void)
"Cn8KDAqAAQoMCoEBCgoKggEKCgqDAQoICoQBCggKhQEKBgqGAQoGCocBCgQKiAEKBAqJAQoCCooB"
"Cn8KDAqAAQoMCoEBCgoKggEKCgqDAQoICoQBCggKhQEKBgqGAQoGCocBCgQKiAEKBAqJAQoCCooB"
"CgIKiwEUjAEUjQESjgESjwEQkAEQkQEOkgEOkwEMlAEMlQEKlgEKlwEImAEImQEGmgEGmwEEnAEE"
"CgIKiwEUjAEUjQESjgESjwEQkAEQkQEOkgEOkwEMlAEMlQEKlgEKlwEImAEImQEGmgEGmwEEnAEE"
"nQECngECrycA"
);
"nQECngECrycA"
);
todo_wine
ok
(
match
,
"Figure does not match.
\n
"
);
ok
(
match
,
"Figure does not match.
\n
"
);
ID2D1SolidColorBrush_Release
(
brush
);
ID2D1SolidColorBrush_Release
(
brush
);
ID2D1RenderTarget_Release
(
rt
);
ID2D1RenderTarget_Release
(
rt
);
...
...
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