blob: 579c2c39b50587ffe93e169302886f3453f3b6b0 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
using System;
namespace Colourful.Conversion
{
public partial class ColourfulConverter
{
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in RGBColor color)
{
var xyzColor = ToXYZ(color);
var result = ToLMS(xyzColor);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in LinearRGBColor color)
{
var xyzColor = ToXYZ(color);
var result = ToLMS(xyzColor);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in XYZColor color)
{
// conversion
var converter = _cachedXYZAndLMSConverter;
var result = converter.Convert(color);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in xyYColor color)
{
var xyzColor = ToXYZ(color);
var result = ToLMS(xyzColor);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in LabColor color)
{
var xyzColor = ToXYZ(color);
var result = ToLMS(xyzColor);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in LChabColor color)
{
var xyzColor = ToXYZ(color);
var result = ToLMS(xyzColor);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in HunterLabColor color)
{
var xyzColor = ToXYZ(color);
var result = ToLMS(xyzColor);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in LuvColor color)
{
var xyzColor = ToXYZ(color);
var result = ToLMS(xyzColor);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS(in LChuvColor color)
{
var xyzColor = ToXYZ(color);
var result = ToLMS(xyzColor);
return result;
}
/// <summary>
/// Convert to LMS color
/// </summary>
public LMSColor ToLMS<T>(T color) where T : IColorVector
{
switch (color)
{
case RGBColor typedColor:
return ToLMS(in typedColor);
case LinearRGBColor typedColor:
return ToLMS(in typedColor);
case XYZColor typedColor:
return ToLMS(in typedColor);
case xyYColor typedColor:
return ToLMS(in typedColor);
case HunterLabColor typedColor:
return ToLMS(in typedColor);
case LabColor typedColor:
return ToLMS(in typedColor);
case LChabColor typedColor:
return ToLMS(in typedColor);
case LuvColor typedColor:
return ToLMS(in typedColor);
case LChuvColor typedColor:
return ToLMS(in typedColor);
case LMSColor typedColor:
return typedColor;
default:
throw new ArgumentException($"Cannot accept type '{typeof(T)}'.", nameof(color));
}
}
}
}
|