2
2
// Licensed under the Six Labors Split License.
3
3
4
4
using System . Numerics ;
5
+ using System . Runtime . Intrinsics ;
5
6
using SixLabors . ImageSharp . PixelFormats . PixelBlenders ;
6
7
using SixLabors . ImageSharp . Tests . TestUtilities ;
7
8
8
9
namespace SixLabors . ImageSharp . Tests . PixelFormats . PixelBlenders ;
9
10
10
11
public class PorterDuffFunctionsTests
11
12
{
12
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > NormalBlendFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
13
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > NormalBlendFunctionData { get ; } = new ( )
13
14
{
14
15
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 1 , 1 , 1 , 1 ) } ,
15
16
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( 0.6f , 0.6f , 0.6f , 1 ) }
@@ -23,7 +24,19 @@ public void NormalBlendFunction(TestVector4 back, TestVector4 source, float amou
23
24
Assert . Equal ( expected , actual ) ;
24
25
}
25
26
26
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > MultiplyFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
27
+ [ Theory ]
28
+ [ MemberData ( nameof ( NormalBlendFunctionData ) ) ]
29
+ public void NormalBlendFunction256 ( TestVector4 back , TestVector4 source , float amount , TestVector4 expected )
30
+ {
31
+ Vector256 < float > back256 = Vector256 . Create ( back . X , back . Y , back . Z , back . W , back . X , back . Y , back . Z , back . W ) ;
32
+ Vector256 < float > source256 = Vector256 . Create ( source . X , source . Y , source . Z , source . W , source . X , source . Y , source . Z , source . W ) ;
33
+
34
+ Vector256 < float > expected256 = Vector256 . Create ( expected . X , expected . Y , expected . Z , expected . W , expected . X , expected . Y , expected . Z , expected . W ) ;
35
+ Vector256 < float > actual = PorterDuffFunctions . NormalSrcOver ( back256 , source256 , Vector256 . Create ( amount ) ) ;
36
+ Assert . Equal ( expected256 , actual ) ;
37
+ }
38
+
39
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > MultiplyFunctionData { get ; } = new ( )
27
40
{
28
41
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 1 , 1 , 1 , 1 ) } ,
29
42
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( 0.6f , 0.6f , 0.6f , 1 ) } ,
@@ -38,7 +51,7 @@ public void MultiplyFunction(TestVector4 back, TestVector4 source, float amount,
38
51
VectorAssert . Equal ( expected , actual , 5 ) ;
39
52
}
40
53
41
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > AddFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
54
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > AddFunctionData { get ; } = new ( )
42
55
{
43
56
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 1 , 1 , 1 , 1 ) } ,
44
57
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( .6f , .6f , .6f , 1f ) } ,
@@ -53,7 +66,7 @@ public void AddFunction(TestVector4 back, TestVector4 source, float amount, Test
53
66
VectorAssert . Equal ( expected , actual , 5 ) ;
54
67
}
55
68
56
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > SubtractFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
69
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > SubtractFunctionData { get ; } = new ( )
57
70
{
58
71
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 0 , 0 , 0 , 1 ) } ,
59
72
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( 1 , 1 , 1 , 1f ) } ,
@@ -68,7 +81,7 @@ public void SubtractFunction(TestVector4 back, TestVector4 source, float amount,
68
81
VectorAssert . Equal ( expected , actual , 5 ) ;
69
82
}
70
83
71
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > ScreenFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
84
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > ScreenFunctionData { get ; } = new ( )
72
85
{
73
86
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 1 , 1 , 1 , 1 ) } ,
74
87
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( 1 , 1 , 1 , 1f ) } ,
@@ -83,7 +96,7 @@ public void ScreenFunction(TestVector4 back, TestVector4 source, float amount, T
83
96
VectorAssert . Equal ( expected , actual , 5 ) ;
84
97
}
85
98
86
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > DarkenFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
99
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > DarkenFunctionData { get ; } = new ( )
87
100
{
88
101
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 1 , 1 , 1 , 1 ) } ,
89
102
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( .6f , .6f , .6f , 1f ) } ,
@@ -98,7 +111,7 @@ public void DarkenFunction(TestVector4 back, TestVector4 source, float amount, T
98
111
VectorAssert . Equal ( expected , actual , 5 ) ;
99
112
}
100
113
101
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > LightenFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
114
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > LightenFunctionData { get ; } = new ( )
102
115
{
103
116
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 1 , 1 , 1 , 1 ) } ,
104
117
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( 1 , 1 , 1 , 1f ) } ,
@@ -113,7 +126,7 @@ public void LightenFunction(TestVector4 back, TestVector4 source, float amount,
113
126
VectorAssert . Equal ( expected , actual , 5 ) ;
114
127
}
115
128
116
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > OverlayFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
129
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > OverlayFunctionData { get ; } = new ( )
117
130
{
118
131
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 1 , 1 , 1 , 1 ) } ,
119
132
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( 1 , 1 , 1 , 1f ) } ,
@@ -128,7 +141,7 @@ public void OverlayFunction(TestVector4 back, TestVector4 source, float amount,
128
141
VectorAssert . Equal ( expected , actual , 5 ) ;
129
142
}
130
143
131
- public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > HardLightFunctionData = new TheoryData < TestVector4 , TestVector4 , float , TestVector4 >
144
+ public static TheoryData < TestVector4 , TestVector4 , float , TestVector4 > HardLightFunctionData { get ; } = new ( )
132
145
{
133
146
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 1 , 1 , 1 , 1 ) , 1 , new TestVector4 ( 1 , 1 , 1 , 1 ) } ,
134
147
{ new TestVector4 ( 1 , 1 , 1 , 1 ) , new TestVector4 ( 0 , 0 , 0 , .8f ) , .5f , new TestVector4 ( 0.6f , 0.6f , 0.6f , 1f ) } ,
0 commit comments