Sha256: cf973c97ee928de3a072ab53eb8f99b6492797232c259b656320d506b2b3a0f8

Contents?: true

Size: 1.94 KB

Versions: 27

Compression:

Stored size: 1.94 KB

Contents

module Compass::SassExtensions::Functions::Colors

  # a genericized version of lighten/darken so that negative values can be used.
  def adjust_lightness(color, amount)
    assert_type color, :Color
    assert_type amount, :Number
    color.with(:lightness => Compass::Util.restrict(color.lightness + amount.value, 0..100))
  end

  # Scales a color's lightness by some percentage.
  # If the amount is negative, the color is scaled darker, if positive, it is scaled lighter.
  # This will never return a pure light or dark color unless the amount is 100%.
  def scale_lightness(color, amount)
    assert_type color, :Color
    assert_type amount, :Number
    color.with(:lightness => scale_color_value(color.lightness, amount.value))
  end

  # a genericized version of saturation/desaturate so that negative values can be used.
  def adjust_saturation(color, amount)
    assert_type color, :Color
    assert_type amount, :Number
    color.with(:saturation => Compass::Util.restrict(color.saturation + amount.value, 0..100))
  end

  # Scales a color's saturation by some percentage.
  # If the amount is negative, the color is desaturated, if positive, it is saturated.
  # This will never return a pure saturated or desaturated color unless the amount is 100%.
  def scale_saturation(color, amount)
    assert_type color, :Color
    assert_type amount, :Number
    color.with(:saturation => scale_color_value(color.saturation, amount.value))
  end

  # returns an IE hex string for a color with an alpha channel
  # suitable for passing to IE filters.
  def ie_hex_str(color)
    assert_type color, :Color
    alpha = (color.alpha * 255).round
    alphastr = alpha.to_s(16).rjust(2, '0')
    Sass::Script::String.new("##{alphastr}#{color.send(:hex_str)[1..-1]}".upcase)
  end
  
  private
  def scale_color_value(value, amount)
    if amount > 0
      value += (100 - value) * (amount / 100.0)
    elsif amount < 0
      value += value * amount / 100.0
    end
    value
  end
end

Version data entries

27 entries across 27 versions & 3 rubygems

Version Path
compass-0.12.2.rc.1 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.2.rc.0 lib/compass/sass_extensions/functions/colors.rb
compass-0.13.alpha.0 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.1 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.0 lib/compass/sass_extensions/functions/colors.rb
radiant-1.0.0 ruby-debug/ruby/1.8/gems/compass-0.11.7/lib/compass/sass_extensions/functions/colors.rb
compass-0.12.rc.1 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.rc.0 lib/compass/sass_extensions/functions/colors.rb
compass-0.11.7 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.alpha.4 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.alpha.3 lib/compass/sass_extensions/functions/colors.rb
compass-0.11.6 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.alpha.2 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.alpha.1 lib/compass/sass_extensions/functions/colors.rb
compass-0.12.alpha.0 lib/compass/sass_extensions/functions/colors.rb
compass-rails31-0.12.0.alpha.0.91a748a lib/compass/sass_extensions/functions/colors.rb
compass-0.11.5 lib/compass/sass_extensions/functions/colors.rb
compass-0.11.4 lib/compass/sass_extensions/functions/colors.rb
compass-0.11.3 lib/compass/sass_extensions/functions/colors.rb
compass-0.11.2 lib/compass/sass_extensions/functions/colors.rb