Class: Chroma::Harmonies
- Inherits:
-
Object
- Object
- Chroma::Harmonies
- Defined in:
- lib/chroma/harmonies.rb
Overview
Class to hold all palette methods.
Instance Method Summary collapse
-
#analogous(options = {}) ⇒ Array<Color>, Array<String>
Generate an analogous palette.
-
#complement(options = {}) ⇒ Array<Color>, Array<String>
Generate a complement palette.
-
#initialize(color) ⇒ Harmonies
constructor
A new instance of Harmonies.
-
#monochromatic(options = {}) ⇒ Array<Color>, Array<String>
Generate a monochromatic palette.
-
#split_complement(options = {}) ⇒ Array<Color>, Array<String>
Generate a split complement palette.
-
#tetrad(options = {}) ⇒ Array<Color>, Array<String>
Generate a tetrad palette.
-
#triad(options = {}) ⇒ Array<Color>, Array<String>
Generate a triad palette.
Constructor Details
#initialize(color) ⇒ Harmonies
Returns a new instance of Harmonies.
5 6 7 |
# File 'lib/chroma/harmonies.rb', line 5 def initialize(color) @color = color end |
Instance Method Details
#analogous(options = {}) ⇒ Array<Color>, Array<String>
Generate an analogous palette.
79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 |
# File 'lib/chroma/harmonies.rb', line 79 def analogous( = {}) size = [:size] || 6 slices = [:slice_by] || 30 hsl = @color.hsl part = 360 / slices hsl.h = ((hsl.h - (part * size >> 1)) + 720) % 360 palette = (size - 1).times.reduce([@color]) do |arr, n| hsl.h = (hsl.h + part) % 360 arr << Color.new(hsl, @color.format) end with_reformat(palette, [:as]) end |
#complement(options = {}) ⇒ Array<Color>, Array<String>
Generate a complement palette.
19 20 21 |
# File 'lib/chroma/harmonies.rb', line 19 def complement( = {}) with_reformat([@color, @color.complement], [:as]) end |
#monochromatic(options = {}) ⇒ Array<Color>, Array<String>
Generate a monochromatic palette.
106 107 108 109 110 111 112 113 114 115 116 117 118 119 |
# File 'lib/chroma/harmonies.rb', line 106 def monochromatic( = {}) size = [:size] || 6 h, s, v = @color.hsv modification = 1.0 / size palette = size.times.map do Color.new(ColorModes::Hsv.new(h, s, v), @color.format).tap do v = (v + modification) % 1 end end with_reformat(palette, [:as]) end |
#split_complement(options = {}) ⇒ Array<Color>, Array<String>
Generate a split complement palette.
61 62 63 |
# File 'lib/chroma/harmonies.rb', line 61 def split_complement( = {}) hsl_map([0, 72, 216], ) end |