decolmor 1.1.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54f8407f171d29fb366e8a75caa8dde7f133bfe8d035495936ccc467272ed135
4
- data.tar.gz: 982d9f6c6e640a5485783d189c00bb9d0edeae24dbf4e05ac4a77d8f38513742
3
+ metadata.gz: 9bad9f3f292018ddb773baabedc9fd9d7cd6da14d7932dae3768640124ec8c0a
4
+ data.tar.gz: 1846c3b81edf98d162ce5c3ac8be9a48475f60d35c4ca57c83ae0c3590fd79c1
5
5
  SHA512:
6
- metadata.gz: 25f9e5569646ce8d1bcc4744caa7a1b372e2ff146a1087b1c0785077353e12dda0687052b93a3ae689c7ce3c871a58979424fb95961e609a979990415327370a
7
- data.tar.gz: 9ffb5732412c5771da28c3344806aab52d278b7374de18b368bf38713ad93933983629ffc8bd8f9f48fe8cc61ef93854387773d55880af0b3ce333230bb823a0
6
+ metadata.gz: a3bb07b37d6f970dd81c29cd4aca46f01d8eb6131cd2f2516f43b8e618ef18d4c65ea72c5a26c51f1c0b7ee6b1f63df3f21931fc886610100eb8815eac2e4119
7
+ data.tar.gz: a3984305b33fd84a30ef1faee7129bcb4da307ee702830f69cf1873f9c0557e6dceee25238d054d42e16deba276e24d1d9293cf9ed6a7b92546ef2a10da079ef
data/CHANGELOG.md CHANGED
@@ -1,15 +1,57 @@
1
1
  # Changelog
2
2
 
3
- ## 1.0.0 (September 13, 2021)
3
+ ## 1.3.0 (September 27, 2021)
4
4
 
5
- * Initial release
5
+ * Added support HSI <==> RGB
6
+ > _RGB => HSI when rounding 1 ~2k RGB colors will be slightly different, 2 will fix this_
7
+ * Added methods for HEX <==> HSL/HSV/HSB/HSI/CMYK
8
+ * Fixed incorrect conversion to RGB when HUE == 360
9
+ it was about the methods:
10
+ * hsl_to_rgb_alt
11
+ * hsv_to_rgb_alt
12
+ and new:
13
+ * hsi_to_rgb
14
+
15
+ ## 1.2.0 (September 21, 2021)
16
+
17
+ * `.hex_to_rgb` now support a returnable alpha in range `0..255`
18
+ `.rgb_to_hex` now support incoming alpha in range `0..255`
19
+ use the option: `alpha_255: true`
20
+ * refactor code for methods:
21
+ - hsl_to_rgb
22
+ - hsv_to_rgb
23
+ - hsb_to_rgb
24
+ - hsl_to_rgb_alt
25
+ - hsv_to_rgb_alt
26
+ - hsb_to_rgb_alt
27
+ Removed some inaccuracies in the math, which didn't affect the result.
28
+ Code in the _alt methods became clearer.
29
+ Improved performance, especially _alt methods
30
+ (but its still a bit slower than the main methods ~1.3X)
31
+
32
+ ## 1.1.2 (September 16, 2021)
33
+
34
+ * Migrate: Travis CI => Github Actions Workflow
35
+ * Fix: returned helper methods to private
36
+ * Now the main code is in one file: lib/decolmor/main.rb
37
+ You can just `include` it in and use it (separately from the gem)
38
+
39
+ ## 1.1.1 (September 16, 2021)
40
+
41
+ * Now you can `include` the module into your class
42
+ * gem methods will be available as class methods
43
+ * Fixed default branch in .gemspec metadata paths
6
44
 
7
45
  ## 1.1.0 (September 14, 2021)
8
46
 
9
- * ::hex_to_rgb
47
+ * .hex_to_rgb
10
48
  * change default rounding 5 => 3 for Alpha channel
11
49
  *reason: 3 digits is enough for a lossless conversion `0..255` -> `0..1` -> `0..255`*
12
- * for the Alpha channel you can now set rounding as the second argument:
13
- `Decolmor::hex_to_rgb(hex, 2)`
50
+ * for the Alpha channel now you can set rounding as the second argument:
51
+ `Decolmor.hex_to_rgb(hex, 2)`
14
52
  * support short version of HEX
15
53
  e.g: `#CF3`, `0F9`, `#0F9F`
54
+
55
+ ## 1.0.0 (September 13, 2021)
56
+
57
+ * Initial release
data/NEWS.md CHANGED
@@ -1,9 +1,30 @@
1
1
  # News
2
2
 
3
- ## 1.0.0 (September 13, 2021)
3
+ ## 1.3.0 (September 27, 2021)
4
4
 
5
- * First version
5
+ * added support HSI <==> RGB
6
+ * added methods for HEX <==> HSL/HSV/HSB/HSI/CMYK
7
+
8
+ ## 1.2.0 (September 21, 2021)
9
+
10
+ * `.hex_to_rgb` now support a returnable alpha in range `0..255`
11
+ `.rgb_to_hex` now support incoming alpha in range `0..255`
12
+ use the option: `alpha_255: true`
13
+ * Improved performance for HSL/HSV/HSB => RGB conversion
14
+
15
+ ## 1.1.2 (September 16, 2021)
16
+
17
+ * Migrate: Travis CI => Github Actions Workflow
18
+
19
+ ## 1.1.1 (September 16, 2021)
20
+
21
+ * Now you can `include` the module into your class
22
+ * gem methods will be available as class methods
6
23
 
7
24
  ## 1.1.0 (September 14, 2021)
8
25
 
9
- * `::hex_to_rgb` Now supports short version of HEX and rounding for the alpha channel
26
+ * `.hex_to_rgb` Now supports short version of HEX and rounding for the alpha channel
27
+
28
+ ## 1.0.0 (September 13, 2021)
29
+
30
+ * First version
data/README.md CHANGED
@@ -1,12 +1,15 @@
1
1
  # Decolmor
2
- [![Gem Version](https://badge.fury.io/rb/decolmor.svg)](https://badge.fury.io/rb/decolmor)
3
- [![Build Status](https://app.travis-ci.com/ChildrenofkoRn/decolmor.svg?token=ssJ5zvqjK7iZ4F1TaeQn&branch=main)](https://app.travis-ci.com/ChildrenofkoRn/decolmor)
4
- [![codecov](https://codecov.io/gh/ChildrenofkoRn/decolmor/branch/main/graph/badge.svg?token=5P4OQUXC3N)](https://codecov.io/gh/ChildrenofkoRn/decolmor)
2
+ [![badge-gem][badge-gem]][gem]
3
+ [![badge-build][badge-build]][github-workflow]
4
+ [![badge-codecov][badge-codecov]][codecov]
5
+ [![badge-license][badge-license]][license]
5
6
 
6
- Gem for converting color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK
7
+ Gem for converting color spaces from/to: HEX/RGB/HSL/HSV/HSB/HSI/CMYK
7
8
  The Alpha channel (transparency) is supported.
8
9
  There is also a simple RGB generator.
9
10
 
11
+ [News][news] . [Recent releases][releases] . [Changelog][changelog] . [Wiki][wiki]
12
+
10
13
  ## Install
11
14
  Add the following line to Gemfile:
12
15
 
@@ -32,35 +35,48 @@ gem install decolmor
32
35
  require 'decolmor'
33
36
 
34
37
  rgb = [29, 128, 86]
35
- Decolmor::rgb_to_hsb(rgb)
38
+ Decolmor.rgb_to_hsb(rgb)
36
39
  => [154.5, 77.3, 50.2]
37
40
  ```
38
- ## Rounding for HSL/HSV/HSB/CMYK
39
- By default, rounding 1 is used to convert to HSL/HSV/HSB/CMYK.
40
- This is enough to loselessly convert RGB -> HSL/HSV/HSB/CMYK -> RGB:
41
+ or `include` into class:
42
+ ```ruby
43
+ class SomeClass
44
+ include Decolmor
45
+ end
46
+ SomeClass.rgb_to_hsb(rgb)
47
+ => [154.5, 77.3, 50.2]
48
+ ```
49
+ Gem methods will be available as class methods.
50
+
51
+ See [WIKI](https://github.com/ChildrenofkoRn/decolmor/wiki/Examples) for more examples.
52
+
53
+ ## Rounding for HSL/HSV/HSB/HSI/CMYK
54
+ By default, rounding 1 is used to convert to HSL/HSV/HSB/HSI/CMYK.
55
+ This is enough to loselessly convert RGB -> HSL/HSV/HSB/HSI/CMYK -> RGB:
56
+ * _for HSI this is not quite true ~2k (of 16.6M) RGB colors will be slightly different, rounding 2 fixes this._
41
57
  ```ruby
42
58
  rgb = [224, 23, 131]
43
- hsl = Decolmor::rgb_to_hsl(rgb) # => [327.8, 81.4, 48.4]
44
- hsv = Decolmor::rgb_to_hsv(rgb) # => [327.8, 89.7, 87.8]
45
- Decolmor::hsv_to_rgb(hsv) # => [224, 23, 131]
46
- Decolmor::hsl_to_rgb(hsl) # => [224, 23, 131]
59
+ hsl = Decolmor.rgb_to_hsl(rgb) # => [327.8, 81.4, 48.4]
60
+ hsv = Decolmor.rgb_to_hsv(rgb) # => [327.8, 89.7, 87.8]
61
+ Decolmor.hsv_to_rgb(hsv) # => [224, 23, 131]
62
+ Decolmor.hsl_to_rgb(hsl) # => [224, 23, 131]
47
63
  ```
48
64
  If you convert between HSL <==> HSV (HSB) with a rounding of 2, you can get more accurate results.
49
65
  This can also be useful if you use HSL/HSB for intermediate changes and then go back to RGB.
50
66
  You can change rounding globally:
51
67
  ```ruby
52
- Decolmor::hsx_round = 2
53
- Decolmor::rgb_to_hsl(rgb) # => [154.55, 63.06, 30.78]
54
- Decolmor::hsx_round # => 2
68
+ Decolmor.hsx_round = 2
69
+ Decolmor.rgb_to_hsl(rgb) # => [154.55, 63.06, 30.78]
70
+ Decolmor.hsx_round # => 2
55
71
  ```
56
72
  You can also specify rounding as a second argument when calling the method:
57
73
  ```ruby
58
- Decolmor::rgb_to_hsl(rgb, 3) # => [154.545, 63.057, 30.784]
74
+ Decolmor.rgb_to_hsl(rgb, 3) # => [154.545, 63.057, 30.784]
59
75
  ```
60
76
  In this case, the global rounding will be ignored.
61
77
  If you need to get integers, use 0.
62
78
 
63
- ## HEX to RGB(A)
79
+ ## HEX to
64
80
  - with & without prefix `#`
65
81
  - short HEX are supported (including Alpha)
66
82
  - can be set rounding for the Alpha channel
@@ -69,23 +85,34 @@ If you need to get integers, use 0.
69
85
  When converting from HEX to RGBA Alpha channel is converted to a value from the range `0..1` with rounding 3:
70
86
  - 3 digits is enough for a lossless conversion `0..255` -> `0..1` -> `0..255`
71
87
  ```ruby
72
- Decolmor::hex_to_rgb('#19988BB8') # => [25, 152, 139, 0.722]
88
+ Decolmor.hex_to_rgb('#19988BB8') # => [25, 152, 139, 0.722]
89
+ Decolmor.hex_to_rgb([25, 152, 139, 0.722) # => "#19988BB8"
73
90
  ```
74
91
  Consequently, when converting to HEX from RGBA, Alpha from the range `0..1` is assumed.
92
+ But you can set range 0..255 for alpha channel:
93
+ ```ruby
94
+ Decolmor.hex_to_rgb('#19988BB8', alpha_255: true) # => [25, 152, 139, 184]
95
+ Decolmor.rgb_to_hex([25, 152, 139, 184], alpha_255: true) # => "#19988BB8"
96
+ ```
75
97
  You can also set rounding for Alpha channel as a second argument:
76
98
  ```ruby
77
- Decolmor::hex_to_rgb('#19988BB8', 2) # => [25, 152, 139, 0.72]
99
+ Decolmor.hex_to_rgb('#19988BB8', 2) # => [25, 152, 139, 0.72]
78
100
  ```
79
- This only works for converting HEX to RGBA.
80
- In other cases (conversions between RGB/HSL/HSV/HSB/CMYK) Alpha channel remains unchanged.
101
+ This only works for converting from HEX.
102
+ In other cases (conversions between RGB/HSL/HSV/HSB/HSI/CMYK) Alpha channel remains unchanged.
103
+
104
+ ## HSL, HSI, HSV or HSB
105
+ **HSL**, **HSI**, **HSV** - are three _different_ color spaces.
106
+ They have only one common parameter **HUE**.
107
+ **S** - **Suturation**, despite the same name, is _different_ in all three spaces,
108
+ like the last component: **Lightness** / **Intensity** / **Value** (**Brightness**).
81
109
 
82
- ## HSV or HSB
83
- HSB is an alternative name for HSV, it is the same thing.
110
+ **HSB** is an alternative name for **HSV**, it is the same thing.
84
111
  However, for convenience, aliasing methods are made for HSB from HSV.
85
112
  ```ruby
86
113
  rgb = [255, 109, 55]
87
- Decolmor::rgb_to_hsv(rgb) # => [16.2, 78.4, 100.0]
88
- Decolmor::rgb_to_hsb(rgb) # => [16.2, 78.4, 100.0]
114
+ Decolmor.rgb_to_hsv(rgb) # => [16.2, 78.4, 100.0]
115
+ Decolmor.rgb_to_hsb(rgb) # => [16.2, 78.4, 100.0]
89
116
  ```
90
117
  ## HSL/HSV/HSB to RGB conversion
91
118
  HSL/HSV/HSB to RGB conversion has two implementations, the gem includes both:
@@ -98,7 +125,7 @@ or
98
125
  - hsv_to_rgb_alt
99
126
  - hsb_to_rgb_alt
100
127
 
101
- The results of the two implementations are identical, but the alternative versions (postfix `_alt`) are ~1.6X slower.
128
+ The results of the two implementations are identical, but the alternative versions (postfix `_alt`) are slightly slower.
102
129
 
103
130
  ## Attention for CMYK !
104
131
  Unfortunately, there is no simple formula for linear RGB to/from CMYK conversion.
@@ -106,7 +133,7 @@ This implementation is a simplified/dirty/simulation.
106
133
  CMYK is used for printing and the correct conversion will be non-linear, based on the color profile for the particular printing device.
107
134
  Therefore, the CMYK conversion results will not match Adobe products.
108
135
  **BUT:**
109
- Conversion to HEX/RGB/HSL/HSV/HSB is simple and is described by formulas.
136
+ Conversion from/to HEX/RGB/HSL/HSV/HSB/HSI is simple and is described by formulas.
110
137
  Read more: https://en.wikipedia.org/wiki/HSL_and_HSV
111
138
  The results when rounded to an integer will be the same as when using graphics editors, such as CorelDRAW or Adobe Photoshop.
112
139
 
@@ -118,15 +145,17 @@ The results when rounded to an integer will be the same as when using graphics e
118
145
  - rgb_to_hex
119
146
  - Simple generator RGB, you can set any channel(s)
120
147
  - new_rgb
121
- - RGB(A) to HSL/HSV/HSB
148
+ - RGB(A) to HSL/HSV/HSB/HSI
122
149
  - rgb_to_hsl
123
150
  - rgb_to_hsv
124
151
  - rgb_to_hsb
125
- - HSL/HSV/HSB to RGB(A)
152
+ - rgb_to_hsi
153
+ - HSL/HSV/HSB/HSI to RGB(A)
126
154
  - hsl_to_rgb
127
155
  - hsv_to_rgb
128
156
  - hsb_to_rgb
129
- - Alternative implementation HSL/HSV/HSB to RGB(A) (~1.6X slower)
157
+ - hsi_to_rgb
158
+ - Alternative implementation HSL/HSV/HSB to RGB(A) (a little slower)
130
159
  - hsl_to_rgb_alt
131
160
  - hsv_to_rgb_alt
132
161
  - hsb_to_rgb_alt
@@ -138,8 +167,37 @@ The results when rounded to an integer will be the same as when using graphics e
138
167
  - RGB(A) <==> CMYK
139
168
  - rgb_to_cmyk
140
169
  - cmyk_to_rgb
170
+ - HEX => HSL/HSV/HSB/HSI/CMYK
171
+ - hex_to_hsl
172
+ - hex_to_hsv
173
+ - hex_to_hsb
174
+ - hex_to_hsi
175
+ - hex_to_cmyk
176
+ - HSL/HSV/HSB/HSI/CMYK => HEX
177
+ - hsl_to_hex
178
+ - hsv_to_hex
179
+ - hsb_to_hex
180
+ - hsi_to_hex
181
+ - cmyk_to_hex
141
182
 
142
183
  ## License
143
184
  MIT License
144
185
  Copyright (c) 2021 ChildrenofkoRn
145
186
  [LICENSE](https://github.com/ChildrenofkoRn/decolmor/blob/master/LICENSE)
187
+
188
+
189
+
190
+ [gem]: https://rubygems.org/gems/decolmor "gem version"
191
+ [badge-gem]: https://img.shields.io/gem/v/decolmor?color=bri&label=gem%20version&logo=ruby&logoColor=f01f7a "gem version"
192
+ [codecov]: https://codecov.io/gh/ChildrenofkoRn/decolmor "codecov"
193
+ [badge-codecov]: https://codecov.io/gh/ChildrenofkoRn/decolmor/branch/main/graph/badge.svg?token=5P4OQUXC3N "codecov"
194
+ [github-workflow]: https://github.com/ChildrenofkoRn/decolmor/actions/workflows/build.yml "build"
195
+ [badge-build]: https://img.shields.io/github/workflow/status/ChildrenofkoRn/decolmor/build/main "build status"
196
+ [license]: https://github.com/ChildrenofkoRn/decolmor/blob/main/LICENSE "MIT"
197
+ [badge-license]: https://img.shields.io/github/license/ChildrenofkoRn/decolmor?color=%23239393 "license"
198
+
199
+
200
+ [changelog]: https://github.com/ChildrenofkoRn/decolmor/blob/main/CHANGELOG.md "changelog"
201
+ [news]: https://github.com/ChildrenofkoRn/decolmor/blob/main/NEWS.md "news"
202
+ [releases]: https://github.com/ChildrenofkoRn/decolmor/releases "releases"
203
+ [wiki]: https://github.com/ChildrenofkoRn/decolmor/wiki "wiki"
data/decolmor.gemspec CHANGED
@@ -4,8 +4,8 @@ Gem::Specification.new do |spec|
4
4
  spec.name = 'decolmor'
5
5
  spec.version = Decolmor::VERSION
6
6
  spec.licenses = ['MIT']
7
- spec.summary = "Converter color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK"
8
- spec.description = "Converter color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK.\n" \
7
+ spec.summary = "Converter color spaces from/to: HEX/RGB/HSL/HSV/HSB/HSI/CMYK"
8
+ spec.description = "Converter color spaces from/to: HEX/RGB/HSL/HSV/HSB/HSI/CMYK.\n" \
9
9
  "The Alpha channel (transparency) is supported.\n" \
10
10
  "There is also a simple RGB generator."
11
11
  spec.authors = ["ChildrenofkoRn"]
@@ -24,9 +24,9 @@ Gem::Specification.new do |spec|
24
24
  if spec.respond_to?(:metadata)
25
25
  spec.metadata = {
26
26
  "homepage_uri" => spec.homepage.to_s,
27
- "news_uri" => "#{spec.homepage}/blob/master/NEWS.md",
28
- "changelog_uri" => "#{spec.homepage}/blob/master/CHANGELOG.md",
29
- "documentation_uri" => "#{spec.homepage}/blob/master/README.md",
27
+ "news_uri" => "#{spec.homepage}/blob/main/NEWS.md",
28
+ "changelog_uri" => "#{spec.homepage}/blob/main/CHANGELOG.md",
29
+ "documentation_uri" => "#{spec.homepage}/blob/main/README.md",
30
30
  "bug_tracker_uri" => "#{spec.homepage}/issues",
31
31
  "source_code_uri" => spec.homepage.to_s
32
32
  }