redgreenblue 0.13.0 → 0.14.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/redgreenblue.rb +1 -1
- data/lib/redgreenblue/gpl.rb +7 -4
- data/lib/redgreenblue/hwb.rb +14 -0
- data/lib/redgreenblue/ostwald.rb +2 -2
- data/lib/redgreenblue/version.rb +1 -1
- data/lib/redgreenblue/web.rb +44 -0
- metadata +9 -8
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a61701a3122fc8e8b4f4352142862f7e3d63ed317cea1321cfe1bafd5d697a42
|
4
|
+
data.tar.gz: 4a76d444f8080acb74656963654375e975eb91eb0068f6c4012e9233daf58bb7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 502bc188625f8df6fc3a55fa53454728602843ddd39f61c8199009f0e55c1fbd38a496d27c889c565b578ae85dd9cd051a457deec87979374d89006833f37707
|
7
|
+
data.tar.gz: b811b0e1bc0bd366406be48eead2f11328c8304eee6eb34192bc92c40c31a4683dc5771a3944650749707df7e5a40e330d64c02b7f7818c0064dca5253ffe019
|
data/lib/redgreenblue.rb
CHANGED
data/lib/redgreenblue/gpl.rb
CHANGED
@@ -64,13 +64,16 @@ class RGB
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
-
|
68
|
-
|
67
|
+
# Returns a header for a .gpl file (Gimp color palette). Includes an optional name and number of columns.
|
68
|
+
#
|
69
|
+
# @example
|
70
|
+
# RGB.gpl_header('Spring')
|
71
|
+
#
|
69
72
|
# Reverse-engineered from:
|
70
73
|
# - https://github.com/GNOME/gimp/blob/5d79fba8238a27b8691556489898d33b3fa0dda0/app/core/gimppalette-load.c
|
71
|
-
def gpl_header(name, columns
|
74
|
+
def gpl_header(name=nil, columns: nil)
|
72
75
|
"GIMP Palette\n" +
|
73
|
-
"Name: #{name}\n" +
|
76
|
+
( name ? "Name: #{name}\n" : '' ) +
|
74
77
|
( columns ? "Columns: #{columns}\n" : '' )
|
75
78
|
end
|
76
79
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
class RGB
|
2
|
+
|
3
|
+
# Returns the color's hue (0..360), whiteness (0..1), and blackness (0..1), as defined by the HWB color model.
|
4
|
+
#
|
5
|
+
# For achromatic colors, hue is nil.
|
6
|
+
#
|
7
|
+
# Based on:
|
8
|
+
# - http://alvyray.com/Papers/CG/HWB_JGTv208.pdf (PDF)
|
9
|
+
# - https://en.wikipedia.org/wiki/HWB_color_model
|
10
|
+
def hwb
|
11
|
+
[ hsv_h, cwk[1,2] ].flatten
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
data/lib/redgreenblue/ostwald.rb
CHANGED
@@ -32,12 +32,12 @@ class RGB
|
|
32
32
|
# Based on:
|
33
33
|
# - Color for the Sciences, pp. 575–591
|
34
34
|
# - https://lirias.kuleuven.be/retrieve/306124 (PDF)
|
35
|
-
def ostwald_cwk
|
35
|
+
def ostwald_cwk(round: true)
|
36
36
|
[
|
37
37
|
color_portion = values.max - values.min,
|
38
38
|
white_portion = values.min,
|
39
39
|
1 - color_portion - white_portion
|
40
|
-
]
|
40
|
+
].map { |v| round ? v.round(8) : v }
|
41
41
|
end
|
42
42
|
|
43
43
|
alias cwk ostwald_cwk
|
data/lib/redgreenblue/version.rb
CHANGED
data/lib/redgreenblue/web.rb
CHANGED
@@ -62,4 +62,48 @@ class RGB
|
|
62
62
|
"##{hex true}"
|
63
63
|
end
|
64
64
|
|
65
|
+
# Returns the names of CSS named colors identical to this color.
|
66
|
+
# @example
|
67
|
+
# RGB.hex('f0f').css_names
|
68
|
+
def css_names
|
69
|
+
RGB.css(self).map &:name
|
70
|
+
end
|
71
|
+
|
72
|
+
# Returns the color's relative luminance, as defined by the Web Content Accessibility Guidelines (WCAG) 2.0.
|
73
|
+
#
|
74
|
+
# This is different from the Y component of CIE 1931 XYZ.
|
75
|
+
#
|
76
|
+
# Based on:
|
77
|
+
# - https://www.w3.org/TR/WCAG20/#relativeluminancedef
|
78
|
+
def wcag20_luminance(round: true)
|
79
|
+
if color_space == 'sRGB'
|
80
|
+
values.map { |v|
|
81
|
+
if v <= 0.03928
|
82
|
+
v / 12.92
|
83
|
+
else
|
84
|
+
( ( v + 0.055 ) / 1.055 ) ** 2.4
|
85
|
+
end
|
86
|
+
}.zip( [0.2126, 0.7152, 0.0722] ).map { |c,f|
|
87
|
+
c * f
|
88
|
+
}.inject(:+).instance_eval { |v| round ? v.round(8) : v }
|
89
|
+
else
|
90
|
+
raise "can not calculate luminance for color space '#{color_space}'"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
# Returns the contrast ratio for this color and another color, as defined by the Web Content Accessibility Guidelines (WCAG) 2.0.
|
95
|
+
#
|
96
|
+
# Based on:
|
97
|
+
# - https://www.w3.org/TR/WCAG20/#contrast-ratiodef
|
98
|
+
def wcag20_contrast_ratio(another, round: true)
|
99
|
+
luminances = [
|
100
|
+
wcag20_luminance(round: false),
|
101
|
+
another.wcag20_luminance(round: false)
|
102
|
+
].sort.reverse
|
103
|
+
|
104
|
+
contrast_ratio = ( luminances[0] + 0.05 ) / ( luminances[1] + 0.05 )
|
105
|
+
|
106
|
+
round ? contrast_ratio.round(8) : contrast_ratio
|
107
|
+
end
|
108
|
+
|
65
109
|
end
|
metadata
CHANGED
@@ -1,17 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: redgreenblue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.14.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- lllist.eu
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
|
-
description:
|
14
|
-
email:
|
13
|
+
description:
|
14
|
+
email:
|
15
15
|
executables: []
|
16
16
|
extensions: []
|
17
17
|
extra_rdoc_files: []
|
@@ -31,6 +31,7 @@ files:
|
|
31
31
|
- lib/redgreenblue/hsl.rb
|
32
32
|
- lib/redgreenblue/hsv.rb
|
33
33
|
- lib/redgreenblue/hsx_shared.rb
|
34
|
+
- lib/redgreenblue/hwb.rb
|
34
35
|
- lib/redgreenblue/inspect.rb
|
35
36
|
- lib/redgreenblue/int.rb
|
36
37
|
- lib/redgreenblue/lazy.rb
|
@@ -58,7 +59,7 @@ metadata:
|
|
58
59
|
homepage_uri: https://github.com/lllisteu/redgreenblue
|
59
60
|
changelog_uri: https://github.com/lllisteu/redgreenblue/blob/master/History.md
|
60
61
|
documentation_uri: https://www.rubydoc.info/gems/redgreenblue/RGB
|
61
|
-
post_install_message:
|
62
|
+
post_install_message:
|
62
63
|
rdoc_options: []
|
63
64
|
require_paths:
|
64
65
|
- lib
|
@@ -73,8 +74,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
73
74
|
- !ruby/object:Gem::Version
|
74
75
|
version: '0'
|
75
76
|
requirements: []
|
76
|
-
rubygems_version: 3.1.
|
77
|
-
signing_key:
|
77
|
+
rubygems_version: 3.1.4
|
78
|
+
signing_key:
|
78
79
|
specification_version: 4
|
79
80
|
summary: A simple Ruby library for handling RGB colors.
|
80
81
|
test_files: []
|