colourTools.H
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | www.openfoam.com
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8  Copyright (C) 2019 OpenCFD Ltd.
9 -------------------------------------------------------------------------------
10 License
11  This file is part of OpenFOAM.
12 
13  OpenFOAM is free software: you can redistribute it and/or modify it
14  under the terms of the GNU General Public License as published by
15  the Free Software Foundation, either version 3 of the License, or
16  (at your option) any later version.
17 
18  OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
19  ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
20  FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21  for more details.
22 
23  You should have received a copy of the GNU General Public License
24  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
25 
26 Namespace
27  Foam::colourTools
28 
29 Description
30  Utility methods for colours and colour spaces
31 
32 SourceFiles
33  colourTools.C
34 
35 \*---------------------------------------------------------------------------*/
36 
37 #ifndef colourTools_H
38 #define colourTools_H
39 
40 #include "vector.H"
41 
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 
44 namespace Foam
45 {
46 namespace colourTools
47 {
48 
49 /*---------------------------------------------------------------------------*\
50  Namespace colourTools
51 \*---------------------------------------------------------------------------*/
52 
53 //- Convert RGB to HSV
54 void rgbToHsv(const vector& rgb, vector& hsv);
55 
56 //- Convert RGB to HSV
57 inline vector rgbToHsv(const vector& rgb)
58 {
59  vector hsv;
60  rgbToHsv(rgb, hsv);
61  return hsv;
62 }
63 
64 
65 //- Convert HSV to RGB
66 void hsvToRgb(const vector& hsv, vector& rgb);
67 
68 //- Convert HSV to RGB
69 inline vector hsvToRgb(const vector& hsv)
70 {
71  vector rgb;
72  hsvToRgb(hsv, rgb);
73  return rgb;
74 }
75 
76 
77 //- Convert RGB to XYZ
78 void rgbToXyz(const vector& rgb, vector& xyz);
79 
80 //- Convert RGB to XYZ
81 inline vector rgbToXyz(const vector& rgb)
82 {
83  vector xyz;
84  rgbToXyz(rgb, xyz);
85  return xyz;
86 }
87 
88 //- Convert XYZ to RGB
89 void xyzToRgb(const vector& xyz, vector& rgb);
90 
91 //- Convert XYZ to RGB
92 inline vector xyzToRgb(const vector& xyz)
93 {
94  vector rgb;
95  xyzToRgb(xyz, rgb);
96  return rgb;
97 }
98 
99 
100 //- Convert LAB to XYZ
101 void labToXyz(const vector& lab, vector& xyz);
102 
103 //- Convert LAB to XYZ
104 inline vector labToXyz(const vector& lab)
105 {
106  vector xyz;
107  labToXyz(lab, xyz);
108  return xyz;
109 }
110 
111 
112 //- Convert XYZ to LAB
113 void xyzToLab(const vector& xyz, vector& lab);
114 
115 //- Convert XYZ to LAB
116 inline vector xyzToLab(const vector& xyz)
117 {
118  vector lab;
119  xyzToLab(xyz, lab);
120  return lab;
121 }
122 
123 
124 //- Convert RGB to LAB
125 void rgbToLab(const vector& rgb, vector& lab);
126 
127 //- Convert RGB to LAB
128 inline vector rgbToLab(const vector& rgb)
129 {
130  vector lab;
131  rgbToLab(rgb, lab);
132  return lab;
133 }
134 
135 
136 //- Convert LAB to RGB
137 void labToRgb(const vector& lab, vector& rgb);
138 
139 //- Convert LAB to RGB
140 inline vector labToRgb(const vector& lab)
141 {
142  vector rgb;
143  labToRgb(lab, rgb);
144  return rgb;
145 }
146 
147 
148 //- Interpolate RGB values with diverging color map
150 (
151  scalar s,
152  const vector& rgb1,
153  const vector& rgb2,
154  vector& result
155 );
156 
157 //- Interpolate RGB values with diverging color map
159 (
160  scalar s,
161  const vector& rgb1,
162  const vector& rgb2
163 )
164 {
165  vector result;
166  interpolateDiverging(s, rgb1, rgb2, result);
167  return result;
168 }
169 
170 
171 //- Interpolate RGB values in HSV colourspace
172 void interpolateHSV
173 (
174  scalar s,
175  const vector& rgb1,
176  const vector& rgb2,
177  vector& result
178 );
179 
180 //- Interpolate RGB values in HSV colourspace
181 inline vector interpolateHSV
182 (
183  scalar s,
184  const vector& rgb1,
185  const vector& rgb2
186 )
187 {
188  vector result;
189  interpolateHSV(s, rgb1, rgb2, result);
190  return result;
191 }
192 
193 
194 //- Interpolate RGB values in RGB colourspace
195 inline vector interpolateRGB
196 (
197  scalar s,
198  const vector& rgb1,
199  const vector& rgb2
200 )
201 {
202  return ((1-s)*rgb1 + s*rgb2);
203 }
204 
205 
206 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
207 
208 } // End namespace colourTools
209 } // End namespace Foam
210 
211 
212 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
213 
214 #endif
215 
216 // ************************************************************************* //
s
gmvFile<< "tracers "<< particles.size()<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().x()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().y()<< " ";}gmvFile<< nl;for(const passiveParticle &p :particles){ gmvFile<< p.position().z()<< " ";}gmvFile<< nl;forAll(lagrangianScalarNames, i){ word name=lagrangianScalarNames[i];IOField< scalar > s(IOobject(name, runTime.timeName(), cloud::prefix, mesh, IOobject::MUST_READ, IOobject::NO_WRITE))
Definition: gmvOutputSpray.H:25
Foam::colourTools::rgbToHsv
void rgbToHsv(const vector &rgb, vector &hsv)
Convert RGB to HSV.
Definition: colourTools.C:352
Foam::colourTools::labToRgb
void labToRgb(const vector &lab, vector &rgb)
Convert LAB to RGB.
Definition: colourTools.C:394
Foam::colourTools::labToXyz
void labToXyz(const vector &lab, vector &xyz)
Convert LAB to XYZ.
Definition: colourTools.C:374
Foam::colourTools::xyzToLab
void xyzToLab(const vector &xyz, vector &lab)
Convert XYZ to LAB.
Definition: colourTools.C:380
Foam::colourTools::hsvToRgb
void hsvToRgb(const vector &hsv, vector &rgb)
Convert HSV to RGB.
Definition: colourTools.C:357
Foam::colourTools::rgbToLab
void rgbToLab(const vector &rgb, vector &lab)
Convert RGB to LAB.
Definition: colourTools.C:386
Foam
Namespace for OpenFOAM.
Definition: atmBoundaryLayer.C:33
Foam::vector
Vector< scalar > vector
A scalar version of the templated Vector.
Definition: vector.H:51
Foam::colourTools::xyzToRgb
void xyzToRgb(const vector &xyz, vector &rgb)
Convert XYZ to RGB.
Definition: colourTools.C:368
Foam::colourTools::interpolateRGB
vector interpolateRGB(scalar s, const vector &rgb1, const vector &rgb2)
Interpolate RGB values in RGB colourspace.
Definition: colourTools.H:196
Foam::Vector< scalar >
vector.H
Foam::colourTools::interpolateDiverging
void interpolateDiverging(scalar s, const vector &rgb1, const vector &rgb2, vector &result)
Interpolate RGB values with diverging color map.
Definition: colourTools.C:403
Foam::colourTools::interpolateHSV
void interpolateHSV(scalar s, const vector &rgb1, const vector &rgb2, vector &result)
Interpolate RGB values in HSV colourspace.
Definition: colourTools.C:467
Foam::colourTools::rgbToXyz
void rgbToXyz(const vector &rgb, vector &xyz)
Convert RGB to XYZ.
Definition: colourTools.C:363