Module: CMYKLibrary

Included in:
Sass::Script::Functions
Defined in:
lib/sass-cmyk.rb

Instance Method Summary collapse

Instance Method Details

#cmyk(c, m, y, k) ⇒ Object



116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# File 'lib/sass-cmyk.rb', line 116

def cmyk(c, m, y, k)
  cmyk_arr = [[:cyan, c], [:magenta, m], [:yellow, y], [:black, k]].map do |(comp_name, comp_value)|
    assert_type comp_value, :Number, comp_name
    if comp_value.is_unit?("%")
      comp_value_normalized = comp_value.value
    else
      comp_value_normalized = (comp_value.value * 100).round
    end

    if comp_value_normalized.is_a?(Fixnum) && comp_value_normalized.between?(0, 100)
      [comp_name, comp_value_normalized]
    else
      raise ArgumentError.new("Invalid #{comp_name} value #{comp_value}. Must be a float between 0 and 1 or a percent between 0 and 100.")
    end
  end

  cmyk_attrs = Hash[cmyk_arr]

  Sass::Script::Value::CMYK.new(cmyk_attrs)
end

#cmyk_mix(cmyk_color1, cmyk_color2) ⇒ Object

Raises:

  • (ArgumentError)


139
140
141
142
# File 'lib/sass-cmyk.rb', line 139

def cmyk_mix(cmyk_color1, cmyk_color2)
  raise ArgumentError.new("Bad arguments to cmyk_mix: #{cmyk_color1}, #{cmyk_color2}. cmyk_mix requires two CMYK colors as arguments") unless (cmyk_color1.is_a?(Sass::Script::Value::CMYK) && cmyk_color2.is_a?(Sass::Script::Value::CMYK))
  cmyk_color1.plus(cmyk_color2)
end

#cmyk_scale(cmyk_color, percent) ⇒ Object

Raises:

  • (ArgumentError)


146
147
148
149
150
# File 'lib/sass-cmyk.rb', line 146

def cmyk_scale(cmyk_color, percent)
  raise ArgumentError.new("Bad argument to cmyk_scale: #{cmyk_color}. First argument must be a CMYK color") unless cmyk_color.is_a?(Sass::Script::Value::CMYK)
  raise ArgumentError.new("Bad argument to cmyk_scale: #{percent}. Second argument must be a percent") unless (percent.is_a?(Sass::Script::Value::Number) && percent.is_unit?('%'))
  cmyk_color.times(percent)
end