blob: a899e46a00fa591a4c5f50510d689c5c504bf25a (
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
|
using System;
using Colourful.Implementation.Conversion;
namespace Colourful.Conversion
{
public partial class ColourfulConverter
{
private XYZToLinearRGBConverter _lastXYZToLinearRGBConverter;
private XYZToLinearRGBConverter GetXYZToLinearRGBConverter(IRGBWorkingSpace workingSpace)
{
if (_lastXYZToLinearRGBConverter != null &&
_lastXYZToLinearRGBConverter.TargetRGBWorkingSpace.Equals(workingSpace))
return _lastXYZToLinearRGBConverter;
return _lastXYZToLinearRGBConverter = new XYZToLinearRGBConverter(workingSpace);
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in LinearRGBColor color)
{
// conversion
var converter = LinearRGBToRGBConverter.Default;
var result = converter.Convert(color);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in XYZColor color)
{
// conversion
var linear = ToLinearRGB(color);
// companding to RGB
var result = ToRGB(linear);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in xyYColor color)
{
var xyzColor = ToXYZ(color);
var result = ToRGB(xyzColor);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in LabColor color)
{
var xyzColor = ToXYZ(color);
var result = ToRGB(xyzColor);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in LChabColor color)
{
var xyzColor = ToXYZ(color);
var result = ToRGB(xyzColor);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in HunterLabColor color)
{
var xyzColor = ToXYZ(color);
var result = ToRGB(xyzColor);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in LuvColor color)
{
var xyzColor = ToXYZ(color);
var result = ToRGB(xyzColor);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in LChuvColor color)
{
var xyzColor = ToXYZ(color);
var result = ToRGB(xyzColor);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB(in LMSColor color)
{
var xyzColor = ToXYZ(color);
var result = ToRGB(xyzColor);
return result;
}
/// <summary>
/// Convert to RGB color
/// </summary>
public RGBColor ToRGB<T>(T color) where T : IColorVector
{
switch (color)
{
case RGBColor typedColor:
return typedColor;
case LinearRGBColor typedColor:
return ToRGB(in typedColor);
case XYZColor typedColor:
return ToRGB(in typedColor);
case xyYColor typedColor:
return ToRGB(in typedColor);
case HunterLabColor typedColor:
return ToRGB(in typedColor);
case LabColor typedColor:
return ToRGB(in typedColor);
case LChabColor typedColor:
return ToRGB(in typedColor);
case LuvColor typedColor:
return ToRGB(in typedColor);
case LChuvColor typedColor:
return ToRGB(in typedColor);
case LMSColor typedColor:
return ToRGB(in typedColor);
default:
throw new ArgumentException($"Cannot accept type '{typeof(T)}'.", nameof(color));
}
}
}
}
|