module Sass::Extras::SvgDataUrls

Public Class Methods

included(base) click to toggle source
# File lib/sass/extras/svg_data_urls.rb, line 7
def self.included(base)
  base.declare :circle_image_data_url, [:color, :radius]
  base.declare :linear_gradient_image_data_url, [:color, :height]
  base.declare :radial_gradient_image_data_url, [:color, :height]
end

Public Instance Methods

circle_image_data_url(color = Sass::Script::Color.new([0, 0, 0]), radius = Sass::Script::Number.new(10)) click to toggle source
# File lib/sass/extras/svg_data_urls.rb, line 13
      def circle_image_data_url(color = Sass::Script::Color.new([0, 0, 0]), radius = Sass::Script::Number.new(10))
        assert_type color, :Color
        assert_type radius, :Number
        svg_data_url(<<-SVG)
          <svg xmlns="http://www.w3.org/2000/svg">
            <circle cx="#{radius}" cy="#{radius}" r="#{radius}" fill="#{svg_color(color)}"/>
          </svg>
        SVG
      end
linear_gradient_image_data_url(color = Sass::Script::Color.new([255, 255, 255]), height = Sass::Script::Number.new(100, ['%'])) click to toggle source
# File lib/sass/extras/svg_data_urls.rb, line 39
      def linear_gradient_image_data_url(color = Sass::Script::Color.new([255, 255, 255]), height = Sass::Script::Number.new(100, ['%']))
        assert_type color, :Color
        assert_type height, :Number
        svg_data_url(<<-SVG)
          <svg xmlns="http://www.w3.org/2000/svg">
            <defs>
              <linearGradient id="gradient" x1="0" x2="0" y1="0" y2="100%">
                <stop offset="25%" stop-color="#{svg_color(color)}" stop-opacity="1"/>
                <stop offset="100%" stop-color="#{svg_color(color)}" stop-opacity="0"/>
              </linearGradient>
            </defs>
            <rect width="100%" height="#{height}" fill="url(#gradient)"></rect>
          </svg>
        SVG
      end
radial_gradient_image_data_url(color = Sass::Script::Color.new([0, 0, 0]), height = Sass::Script::Number.new(5)) click to toggle source
# File lib/sass/extras/svg_data_urls.rb, line 23
      def radial_gradient_image_data_url(color = Sass::Script::Color.new([0, 0, 0]), height = Sass::Script::Number.new(5))
        assert_type color, :Color
        assert_type height, :Number
        svg_data_url(<<-SVG)
          <svg xmlns="http://www.w3.org/2000/svg">
            <defs>
              <radialGradient id="gradient">
                <stop offset="50%" stop-color="#{svg_color(color)}" stop-opacity="0.2"/>
                <stop offset="100%" stop-color="#{svg_color(color)}" stop-opacity="0"/>
              </radialGradient>
            </defs>
            <rect width="100%" height="#{Sass::Script::Number.new(2).times(height)}" y="-#{height}" fill="url(#gradient)"></rect>
          </svg>
        SVG
      end

Protected Instance Methods

svg_color(color) click to toggle source
# File lib/sass/extras/svg_data_urls.rb, line 57
def svg_color(color)
  "rgb(#{color.rgb.join(',')})"
end
svg_data_url(svg) click to toggle source
# File lib/sass/extras/svg_data_urls.rb, line 61
def svg_data_url(svg)
  base64 = Base64.encode64(svg).gsub(/\s+/, "")
  Sass::Script::String.new("url(data:image/svg+xml;base64,#{Rack::Utils.escape(base64)})")
end