blob: 963ba4b40bcb5c9e70fc2141600118b4945fb13d (
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
|
using System;
using Colourful.Implementation.Conversion;
namespace Colourful.Conversion
{
public partial class ColourfulConverter
{
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in RGBColor color)
{
var xyzColor = ToXYZ(color);
var result = ToHunterLab(xyzColor);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in LinearRGBColor color)
{
var xyzColor = ToXYZ(color);
var result = ToHunterLab(xyzColor);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in XYZColor color)
{
// adaptation
var adapted = !WhitePoint.Equals(TargetHunterLabWhitePoint) && IsChromaticAdaptationPerformed
? ChromaticAdaptation.Transform(color, WhitePoint, TargetHunterLabWhitePoint)
: color;
// conversion
var converter = new XYZToHunterLabConverter(TargetHunterLabWhitePoint);
var result = converter.Convert(adapted);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in xyYColor color)
{
var xyzColor = ToXYZ(color);
var result = ToHunterLab(xyzColor);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in LabColor color)
{
var xyzColor = ToXYZ(color);
var result = ToHunterLab(xyzColor);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in LChabColor color)
{
var xyzColor = ToXYZ(color);
var result = ToHunterLab(xyzColor);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in LuvColor color)
{
var xyzColor = ToXYZ(color);
var result = ToHunterLab(xyzColor);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in LChuvColor color)
{
var xyzColor = ToXYZ(color);
var result = ToHunterLab(xyzColor);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab(in LMSColor color)
{
var xyzColor = ToXYZ(color);
var result = ToHunterLab(xyzColor);
return result;
}
/// <summary>
/// Convert to Hunter Lab color
/// </summary>
public HunterLabColor ToHunterLab<T>(T color) where T : struct, IColorVector
{
switch (color)
{
case RGBColor typedColor:
return ToHunterLab(in typedColor);
case LinearRGBColor typedColor:
return ToHunterLab(in typedColor);
case XYZColor typedColor:
return ToHunterLab(in typedColor);
case xyYColor typedColor:
return ToHunterLab(in typedColor);
case HunterLabColor typedColor:
return typedColor;
case LabColor typedColor:
return ToHunterLab(in typedColor);
case LChabColor typedColor:
return ToHunterLab(in typedColor);
case LuvColor typedColor:
return ToHunterLab(in typedColor);
case LChuvColor typedColor:
return ToHunterLab(in typedColor);
case LMSColor typedColor:
return ToHunterLab(in typedColor);
default:
throw new ArgumentException($"Cannot accept type '{typeof(T)}'.", nameof(color));
}
}
}
}
|