decolmor 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1633188a81e5b270b4e7ba878d9b72df23a864ea98e299428cef3cfb0948b906
4
- data.tar.gz: 5db8fee23dd5652b66943a715058ae04ea47bdbaaf3ceeed6711407e23fc5fff
3
+ metadata.gz: 54f8407f171d29fb366e8a75caa8dde7f133bfe8d035495936ccc467272ed135
4
+ data.tar.gz: 982d9f6c6e640a5485783d189c00bb9d0edeae24dbf4e05ac4a77d8f38513742
5
5
  SHA512:
6
- metadata.gz: b9cf4ffd31d01c26bd2d78337ef316bcb81bd7ad06bc7471a5ccc4738e90103a6443008517a289889a0e0c9cc94e6e0387b188e08508f4ae01f312cf90c5ecd2
7
- data.tar.gz: 602694cadb39dbef406d503ca75e632a650e571710a30a1f1a7935b8aec425b6583e03148f1bc5a07f8128cd63e6b478b0bea5b442f9be1a7a34bd8833ce391d
6
+ metadata.gz: 25f9e5569646ce8d1bcc4744caa7a1b372e2ff146a1087b1c0785077353e12dda0687052b93a3ae689c7ce3c871a58979424fb95961e609a979990415327370a
7
+ data.tar.gz: 9ffb5732412c5771da28c3344806aab52d278b7374de18b368bf38713ad93933983629ffc8bd8f9f48fe8cc61ef93854387773d55880af0b3ce333230bb823a0
data/CHANGELOG.md CHANGED
@@ -3,3 +3,13 @@
3
3
  ## 1.0.0 (September 13, 2021)
4
4
 
5
5
  * Initial release
6
+
7
+ ## 1.1.0 (September 14, 2021)
8
+
9
+ * ::hex_to_rgb
10
+ * change default rounding 5 => 3 for Alpha channel
11
+ *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)`
14
+ * support short version of HEX
15
+ e.g: `#CF3`, `0F9`, `#0F9F`
data/NEWS.md CHANGED
@@ -1,4 +1,9 @@
1
1
  # News
2
2
 
3
3
  ## 1.0.0 (September 13, 2021)
4
+
4
5
  * First version
6
+
7
+ ## 1.1.0 (September 14, 2021)
8
+
9
+ * `::hex_to_rgb` Now supports short version of HEX and rounding for the alpha channel
data/README.md CHANGED
@@ -1,9 +1,9 @@
1
1
  # Decolmor
2
- [![Gem Version](https://badge.fury.io/rb/decolmor.svg)](http://badge.fury.io/rb/decolmor)
2
+ [![Gem Version](https://badge.fury.io/rb/decolmor.svg)](https://badge.fury.io/rb/decolmor)
3
3
  [![Build Status](https://app.travis-ci.com/ChildrenofkoRn/decolmor.svg?token=ssJ5zvqjK7iZ4F1TaeQn&branch=main)](https://app.travis-ci.com/ChildrenofkoRn/decolmor)
4
4
  [![codecov](https://codecov.io/gh/ChildrenofkoRn/decolmor/branch/main/graph/badge.svg?token=5P4OQUXC3N)](https://codecov.io/gh/ChildrenofkoRn/decolmor)
5
5
 
6
- Gem for converting the color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK
6
+ Gem for converting color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK
7
7
  The Alpha channel (transparency) is supported.
8
8
  There is also a simple RGB generator.
9
9
 
@@ -46,6 +46,7 @@ This is enough to loselessly convert RGB -> HSL/HSV/HSB/CMYK -> RGB:
46
46
  Decolmor::hsl_to_rgb(hsl) # => [224, 23, 131]
47
47
  ```
48
48
  If you convert between HSL <==> HSV (HSB) with a rounding of 2, you can get more accurate results.
49
+ This can also be useful if you use HSL/HSB for intermediate changes and then go back to RGB.
49
50
  You can change rounding globally:
50
51
  ```ruby
51
52
  Decolmor::hsx_round = 2
@@ -58,13 +59,24 @@ You can also specify rounding as a second argument when calling the method:
58
59
  ```
59
60
  In this case, the global rounding will be ignored.
60
61
  If you need to get integers, use 0.
61
-
62
+
63
+ ## HEX to RGB(A)
64
+ - with & without prefix `#`
65
+ - short HEX are supported (including Alpha)
66
+ - can be set rounding for the Alpha channel
67
+
62
68
  ## Alpha channel
63
- When converting from HEX to RGBA Alpha channel is converted to a value from the range `0..1` with rounding 5:
69
+ When converting from HEX to RGBA Alpha channel is converted to a value from the range `0..1` with rounding 3:
70
+ - 3 digits is enough for a lossless conversion `0..255` -> `0..1` -> `0..255`
64
71
  ```ruby
65
- Decolmor::hex_to_rgb('#19988BB8') # => [25, 152, 139, 0.72157]
72
+ Decolmor::hex_to_rgb('#19988BB8') # => [25, 152, 139, 0.722]
66
73
  ```
67
74
  Consequently, when converting to HEX from RGBA, Alpha from the range `0..1` is assumed.
75
+ You can also set rounding for Alpha channel as a second argument:
76
+ ```ruby
77
+ Decolmor::hex_to_rgb('#19988BB8', 2) # => [25, 152, 139, 0.72]
78
+ ```
79
+ This only works for converting HEX to RGBA.
68
80
  In other cases (conversions between RGB/HSL/HSV/HSB/CMYK) Alpha channel remains unchanged.
69
81
 
70
82
  ## HSV or HSB
@@ -100,7 +112,7 @@ The results when rounded to an integer will be the same as when using graphics e
100
112
 
101
113
  ## Supported Methods
102
114
  - Setter global rounding for conversion to HSL/HSV/HSB/CMYK
103
- - Decolmor::hsx_round =
115
+ - hsx_round =
104
116
  - HEX <==> RGB(A)
105
117
  - hex_to_rgb
106
118
  - rgb_to_hex
data/decolmor.gemspec CHANGED
@@ -5,7 +5,7 @@ Gem::Specification.new do |spec|
5
5
  spec.version = Decolmor::VERSION
6
6
  spec.licenses = ['MIT']
7
7
  spec.summary = "Converter color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK"
8
- spec.description = "Gem for converting color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK\n" \
8
+ spec.description = "Converter color spaces from/to: HEX/RGB/HSL/HSV/HSB/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"]
data/lib/decolmor/main.rb CHANGED
@@ -2,9 +2,15 @@ module Decolmor
2
2
 
3
3
  #========= HEX <==> RGB(A) =============================================
4
4
 
5
- def self.hex_to_rgb(hex)
6
- rgb = hex.gsub('#','').scan(/../).map(&:hex).map(&:to_i)
7
- rgb.size == 4 ? rgb + [(rgb.delete_at(3) / 255.to_f).round(5)] : rgb
5
+ def self.hex_to_rgb(hex, alpha_round = 3)
6
+ hex = hex.gsub('#','')
7
+ hex = if [3, 4].include? hex.length
8
+ hex.chars.map{ |char| char * 2 }
9
+ else
10
+ hex.scan(/../)
11
+ end
12
+ rgb = hex.map(&:hex)
13
+ rgb.size == 4 ? rgb + [(rgb.delete_at(3) / 255.to_f).round(alpha_round)] : rgb
8
14
  end
9
15
 
10
16
  def self.rgb_to_hex(rgb)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Decolmor
4
- VERSION = '1.0.0'
4
+ VERSION = '1.1.0'
5
5
  end
@@ -37,7 +37,7 @@ RSpec.describe Decolmor do
37
37
  end
38
38
 
39
39
  it "HEX w alpha channel and prefix # to RGBA" do
40
- docs "alpha into range 0..1 and rounding 5"
40
+ docs "alpha into range 0..1 and rounding 3"
41
41
  color = colors.keys.sample
42
42
  alphas.each_pair do |hex_alpha, alpha|
43
43
  hex = format('%s%s', color, hex_alpha)
@@ -46,6 +46,16 @@ RSpec.describe Decolmor do
46
46
  end
47
47
  end
48
48
 
49
+ it "set rounding for alpha channel" do
50
+ color = colors.keys.sample
51
+ alphas.each_pair do |hex_alpha, alpha|
52
+ rounding = 2
53
+ hex = format('%s%s', color, hex_alpha)
54
+ rgba = colors[color][:rgb] + [alpha[:rgb].round(rounding)]
55
+ expect( Decolmor::hex_to_rgb(hex, rounding) ).to eq rgba
56
+ end
57
+ end
58
+
49
59
  it "HEX w alpha channel and w/o prefix # to RGBA" do
50
60
  color = colors.keys.sample
51
61
 
@@ -55,6 +65,14 @@ RSpec.describe Decolmor do
55
65
  expect( Decolmor::hex_to_rgb(hex) ).to eq rgba
56
66
  end
57
67
  end
68
+
69
+ it "HEX short version to RGB(A)" do
70
+ colors = {'6FC' => [102, 255, 204], '#9C3' => [153, 204, 51], '36FF' => [51, 102, 255, 1]}
71
+
72
+ colors.each_pair do |hex_short, rgb|
73
+ expect( Decolmor::hex_to_rgb(hex_short) ).to eq rgb
74
+ end
75
+ end
58
76
  end
59
77
 
60
78
  describe ".rgb_to_hex" do
@@ -6,7 +6,7 @@ FactoryBot.define do
6
6
 
7
7
  values = samples.each_with_object(Hash.new) do |value, hash|
8
8
  hex = "%02X" % value
9
- range_01 = (value / 255.to_f).round(5)
9
+ range_01 = (value / 255.to_f).round(3)
10
10
  hash[hex] = {rgb: range_01, rgb_255: value}
11
11
  end
12
12
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: decolmor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - ChildrenofkoRn
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-13 00:00:00.000000000 Z
11
+ date: 2021-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -93,7 +93,7 @@ dependencies:
93
93
  - !ruby/object:Gem::Version
94
94
  version: '7.0'
95
95
  description: |-
96
- Gem for converting color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK
96
+ Converter color spaces from/to: HEX/RGB/HSL/HSV/HSB/CMYK.
97
97
  The Alpha channel (transparency) is supported.
98
98
  There is also a simple RGB generator.
99
99
  email: Rick-ROR@ya.ru