paleta 0.2.3 → 0.3.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 +4 -4
- data/.gitignore +2 -1
- data/.travis.yml +9 -0
- data/Gemfile +3 -1
- data/lib/paleta.rb +11 -0
- data/lib/paleta/color.rb +3 -3
- data/lib/paleta/palette.rb +19 -28
- data/lib/paleta/version.rb +1 -1
- data/paleta.gemspec +1 -1
- data/readme.markdown +5 -0
- data/spec/models/palette_spec.rb +21 -8
- metadata +3 -2
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: a3e1531d51066d39da5e89abe5aca0a8ac4ee15a
         | 
| 4 | 
            +
              data.tar.gz: c74e22eec380ab93b18a57220c0bc95d81ecb9d4
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: ecd84c4445cffafb2f0f8d801a9601315bf375eddad66b9353c21304c9ea5801199f3d79d3cb82378a53454618c153a9a214ca0726f1cda7de793f5e92759f46
         | 
| 7 | 
            +
              data.tar.gz: 3b46763b1cdf9568d835100c101d9bcd70e6138aaadbcac5b524606a5e2a2bce8a4e6fe50bd1fa8f75915c5f73c4be949299aa70b80c715fd48af80d8105860e
         | 
    
        data/.gitignore
    CHANGED
    
    
    
        data/.travis.yml
    ADDED
    
    
    
        data/Gemfile
    CHANGED
    
    
    
        data/lib/paleta.rb
    CHANGED
    
    | @@ -3,4 +3,15 @@ require 'paleta/color' | |
| 3 3 | 
             
            require 'paleta/palette'
         | 
| 4 4 |  | 
| 5 5 | 
             
            module Paleta
         | 
| 6 | 
            +
              class MissingDependencyError < StandardError; end
         | 
| 7 | 
            +
             | 
| 8 | 
            +
              @rmagick_available = begin
         | 
| 9 | 
            +
                require "rmagick"
         | 
| 10 | 
            +
              rescue LoadError
         | 
| 11 | 
            +
                false
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              def self.rmagick_available?
         | 
| 15 | 
            +
                @rmagick_available
         | 
| 16 | 
            +
              end
         | 
| 6 17 | 
             
            end
         | 
    
        data/lib/paleta/color.rb
    CHANGED
    
    | @@ -302,9 +302,9 @@ module Paleta | |
| 302 302 | 
             
                  else; @red, @green, @blue = 0, 0, 0
         | 
| 303 303 | 
             
                  end
         | 
| 304 304 |  | 
| 305 | 
            -
                  @red = 255 * (@red + d3)
         | 
| 306 | 
            -
                  @green = 255 * (@green + d3)
         | 
| 307 | 
            -
                  @blue = 255 * (@blue + d3)
         | 
| 305 | 
            +
                  @red = (255 * (@red + d3)).to_i
         | 
| 306 | 
            +
                  @green = (255 * (@green + d3)).to_i
         | 
| 307 | 
            +
                  @blue = (255 * (@blue + d3)).to_i
         | 
| 308 308 | 
             
                end
         | 
| 309 309 |  | 
| 310 310 | 
             
                def update_hex
         | 
    
        data/lib/paleta/palette.rb
    CHANGED
    
    | @@ -1,38 +1,10 @@ | |
| 1 1 | 
             
            require 'paleta/core_ext/math'
         | 
| 2 2 |  | 
| 3 3 | 
             
            module Paleta
         | 
| 4 | 
            -
              module MagickDependent
         | 
| 5 | 
            -
                def self.included(klass)
         | 
| 6 | 
            -
                  require 'RMagick' unless defined?(Magick)
         | 
| 7 | 
            -
                  klass.extend(ClassMethods)
         | 
| 8 | 
            -
                rescue LoadError
         | 
| 9 | 
            -
                  puts "You must install RMagick to use Palette.generate(:from => :image, ...)"
         | 
| 10 | 
            -
                end
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                module ClassMethods
         | 
| 13 | 
            -
                  def generate_from_image(path, size = 5)
         | 
| 14 | 
            -
                    include Magick
         | 
| 15 | 
            -
                    begin
         | 
| 16 | 
            -
                      image = Magick::ImageList.new(path)
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                      # quantize image to the nearest power of 2 greater the desired palette size
         | 
| 19 | 
            -
                      quantized_image = image.quantize((Math.sqrt(size).ceil ** 2), Magick::RGBColorspace)
         | 
| 20 | 
            -
                      colors = quantized_image.color_histogram.sort { |a, b| b[1] <=> a[1] }[0..(size - 1)].map do |color|
         | 
| 21 | 
            -
                        Paleta::Color.new(color[0].red / 256, color[0].green / 256, color[0].blue / 256)
         | 
| 22 | 
            -
                      end
         | 
| 23 | 
            -
                      return Paleta::Palette.new(colors)
         | 
| 24 | 
            -
                    rescue Magick::ImageMagickError
         | 
| 25 | 
            -
                      raise "Invalid image at " << path
         | 
| 26 | 
            -
                    end
         | 
| 27 | 
            -
                  end
         | 
| 28 | 
            -
                end
         | 
| 29 | 
            -
              end
         | 
| 30 | 
            -
             | 
| 31 4 | 
             
              # Represents a palette, a collection of {Color}s
         | 
| 32 5 | 
             
              class Palette
         | 
| 33 6 | 
             
                include Math
         | 
| 34 7 | 
             
                include Enumerable
         | 
| 35 | 
            -
                include MagickDependent
         | 
| 36 8 |  | 
| 37 9 | 
             
                attr_accessor :colors
         | 
| 38 10 |  | 
| @@ -237,6 +209,25 @@ module Paleta | |
| 237 209 |  | 
| 238 210 | 
             
                private
         | 
| 239 211 |  | 
| 212 | 
            +
                def self.generate_from_image(path, size = 5)
         | 
| 213 | 
            +
                  unless Paleta.rmagick_available?
         | 
| 214 | 
            +
                    raise Paleta::MissingDependencyError, "You must install RMagick to use Palette.generate(:from => :image, ...)"
         | 
| 215 | 
            +
                  end
         | 
| 216 | 
            +
             | 
| 217 | 
            +
                  begin
         | 
| 218 | 
            +
                    image = Magick::ImageList.new(path)
         | 
| 219 | 
            +
             | 
| 220 | 
            +
                    # quantize image to the nearest power of 2 greater the desired palette size
         | 
| 221 | 
            +
                    quantized_image = image.quantize((Math.sqrt(size).ceil ** 2), Magick::RGBColorspace)
         | 
| 222 | 
            +
                    colors = quantized_image.color_histogram.sort { |a, b| b[1] <=> a[1] }[0..(size - 1)].map do |color|
         | 
| 223 | 
            +
                      Paleta::Color.new(color[0].red / 256, color[0].green / 256, color[0].blue / 256)
         | 
| 224 | 
            +
                    end
         | 
| 225 | 
            +
                    return Paleta::Palette.new(colors)
         | 
| 226 | 
            +
                  rescue Magick::ImageMagickError
         | 
| 227 | 
            +
                    raise "Invalid image at " << path
         | 
| 228 | 
            +
                  end
         | 
| 229 | 
            +
                end
         | 
| 230 | 
            +
             | 
| 240 231 | 
             
                def self.generate_analogous_from_color(color, size)
         | 
| 241 232 | 
             
                  raise(ArgumentError, "Passed argument is not a Color") unless color.is_a?(Color)
         | 
| 242 233 | 
             
                  palette = self.new(color)
         | 
    
        data/lib/paleta/version.rb
    CHANGED
    
    
    
        data/paleta.gemspec
    CHANGED
    
    | @@ -17,5 +17,5 @@ Gem::Specification.new do |gem| | |
| 17 17 |  | 
| 18 18 | 
             
              gem.add_development_dependency "rspec", "~> 2.8"
         | 
| 19 19 | 
             
              gem.add_development_dependency "guard-rspec", "~> 1.2"
         | 
| 20 | 
            -
              gem.add_development_dependency | 
| 20 | 
            +
              gem.add_development_dependency("pry-byebug", "~> 2.0") unless defined?(JRUBY_VERSION)
         | 
| 21 21 | 
             
            end
         | 
    
        data/readme.markdown
    CHANGED
    
    | @@ -1,5 +1,10 @@ | |
| 1 1 | 
             
            # Paleta
         | 
| 2 2 |  | 
| 3 | 
            +
            [](https://travis-ci.org/jordanstephens/paleta)
         | 
| 4 | 
            +
            [](https://codeclimate.com/github/jordanstephens/paleta)
         | 
| 5 | 
            +
            [](https://gemnasium.com/jordanstephens/paleta)
         | 
| 6 | 
            +
             | 
| 7 | 
            +
             | 
| 3 8 | 
             
            A gem for working with color palettes
         | 
| 4 9 |  | 
| 5 10 | 
             
            ## Installation
         | 
    
        data/spec/models/palette_spec.rb
    CHANGED
    
    | @@ -224,15 +224,28 @@ describe Paleta::Palette do | |
| 224 224 | 
             
                end
         | 
| 225 225 | 
             
              end
         | 
| 226 226 |  | 
| 227 | 
            -
               | 
| 228 | 
            -
                 | 
| 229 | 
            -
             | 
| 230 | 
            -
             | 
| 231 | 
            -
             | 
| 232 | 
            -
             | 
| 227 | 
            +
              unless defined?(JRUBY_VERSION)
         | 
| 228 | 
            +
                it "should generate a Palette from an image" do
         | 
| 229 | 
            +
                  path = File.join(File.dirname(__FILE__), '..', 'images/test.jpg')
         | 
| 230 | 
            +
                  size = 5
         | 
| 231 | 
            +
                  palette = Paleta::Palette.generate(:from => :image, :image => path, :size => size)
         | 
| 232 | 
            +
                  palette.size.should == size
         | 
| 233 | 
            +
                end
         | 
| 234 | 
            +
             | 
| 235 | 
            +
                it "should raise when generating a Palette from an image without RMagick" do
         | 
| 236 | 
            +
                  # stub Paleta.rmagick_available? to return false
         | 
| 237 | 
            +
                  allow(Paleta).to receive(:rmagick_available?).and_return(false)
         | 
| 233 238 |  | 
| 234 | 
            -
             | 
| 235 | 
            -
             | 
| 239 | 
            +
                  path = File.join(File.dirname(__FILE__), '..', 'images/test.jpg')
         | 
| 240 | 
            +
                  size = 5
         | 
| 241 | 
            +
                  expect do
         | 
| 242 | 
            +
                    Paleta::Palette.generate(:from => :image, :image => path, :size => size)
         | 
| 243 | 
            +
                  end.to raise_error(Paleta::MissingDependencyError)
         | 
| 244 | 
            +
                end
         | 
| 245 | 
            +
             | 
| 246 | 
            +
                it "should raise an error when generating a Palette from an invalid image" do
         | 
| 247 | 
            +
                  expect{ Paleta::Palette.generate(:from => :image, :image => "/no/image.here") }.to raise_error(RuntimeError)
         | 
| 248 | 
            +
                end
         | 
| 236 249 | 
             
              end
         | 
| 237 250 |  | 
| 238 251 | 
             
              it "should return an array of colors, where each color is represented as an array of component values" do
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: paleta
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 0.3.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Jordan Stephens
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2015- | 
| 11 | 
            +
            date: 2015-07-08 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: rspec
         | 
| @@ -60,6 +60,7 @@ extensions: [] | |
| 60 60 | 
             
            extra_rdoc_files: []
         | 
| 61 61 | 
             
            files:
         | 
| 62 62 | 
             
            - ".gitignore"
         | 
| 63 | 
            +
            - ".travis.yml"
         | 
| 63 64 | 
             
            - Gemfile
         | 
| 64 65 | 
             
            - LICENSE
         | 
| 65 66 | 
             
            - lib/paleta.rb
         |