FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
rstudio/src/cpp/core/ColorUtils.cpp at main · ssh352/rstudio · GitHub
ssh352
/
rstudio
Public
forked from
rstudio/rstudio
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
rstudio
/
src
/
cpp
/
core
/
ColorUtils.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
103 lines (90 loc) · 2.09 KB
Breadcrumbs
rstudio
/
src
/
cpp
/
core
/
ColorUtils.cpp
Copy path
File metadata and controls
103 lines (90 loc) · 2.09 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
/*
* ColorUtils.cpp
*
* Copyright (C) 2022 by Posit Software, PBC
*
* Unless you have received this program directly from Posit Software pursuant
* to the terms of a commercial license agreement with Posit Software, then
* this program is licensed to you under the terms of version 3 of the
* GNU Affero General Public License. This program is distributed WITHOUT
* ANY EXPRESS OR IMPLIED WARRANTY, INCLUDING THOSE OF NON-INFRINGEMENT,
* MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Please refer to the
* AGPL (http://www.gnu.org/licenses/agpl-3.0.txt) for more details.
*
*/
#
include
<
core/ColorUtils.hpp
>
#
include
<
boost/format.hpp
>
namespace
rstudio
{
namespace
core
{
namespace
color_utils
{
//
HSV/RGB conversion code originally via
//
http://stackoverflow.com/a/6930407/347549; modified to remove C-style casts,
//
fix formatting, etc.
rgb
hsvToRGB
(
const
hsv& in)
{
double
hh, p, q, t, ff;
long
i;
rgb out;
if
(in.
s
<=
0.0
)
{
out.
r
= in.
v
;
out.
g
= in.
v
;
out.
b
= in.
v
;
return
out;
}
hh = in.
h
;
if
(hh >=
360.0
)
hh =
0.0
;
hh /=
60.0
;
i =
static_cast
<
long
>(hh);
ff = hh - i;
p = in.
v
* (
1.0
- in.
s
);
q = in.
v
* (
1.0
- (in.
s
* ff));
t = in.
v
* (
1.0
- (in.
s
* (
1.0
- ff)));
switch
(i)
{
case
0
:
out.
r
= in.
v
;
out.
g
= t;
out.
b
= p;
break
;
case
1
:
out.
r
= q;
out.
g
= in.
v
;
out.
b
= p;
break
;
case
2
:
out.
r
= p;
out.
g
= in.
v
;
out.
b
= t;
break
;
case
3
:
out.
r
= p;
out.
g
= q;
out.
b
= in.
v
;
break
;
case
4
:
out.
r
= t;
out.
g
= p;
out.
b
= in.
v
;
break
;
case
5
:
default
:
out.
r
= in.
v
;
out.
g
= p;
out.
b
= q;
break
;
}
return
out;
}
//
given RGB values, convert to an HTML color string
std::string
rgbToHTML
(
const
rgb& in)
{
return
(
boost::format
(
"
#%02X%02X%02X
"
) %
static_cast
<
int
>(in.
r
*
255.0
) %
static_cast
<
int
>(in.
g
*
255.0
) %
static_cast
<
int
>(in.
b
*
255.0
)).
str
();
}
}
//
namespace color_utils
}
//
namespace core
}
//
namespace rstudio
Back
|
FazBrowse Home
|
New Git URL