raw_image 0.0.1
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.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/Guardfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +41 -0
- data/Rakefile +6 -0
- data/lib/raw_image.rb +17 -0
- data/lib/raw_image/color.rb +50 -0
- data/lib/raw_image/color_formats.rb +10 -0
- data/lib/raw_image/colors.rb +10 -0
- data/lib/raw_image/image.rb +129 -0
- data/lib/raw_image/version.rb +3 -0
- data/raw_image.gemspec +27 -0
- data/spec/color_spec.rb +57 -0
- data/spec/image_spec.rb +40 -0
- data/spec/spec_helper.rb +6 -0
- metadata +176 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/Guardfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Shane Brinkman-Davis
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
# RawImage
|
2
|
+
|
3
|
+
Store uncompressed bitmap images efficiently in Ruby. Provides some basic image manipulations. Is intended to be the basis for other gems that want to work with raw, uncompressed images.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'raw_image'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install raw_image
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
```
|
22
|
+
require "raw_image"
|
23
|
+
include RawImage
|
24
|
+
|
25
|
+
# create 10 wide and 5 pixel high black rgba image
|
26
|
+
image(:size => point(10,5))
|
27
|
+
|
28
|
+
# create 10 wide and 5 pixel high white rgba image
|
29
|
+
image(:size => point(10,5), :color => white)
|
30
|
+
|
31
|
+
# create 10 wide and 5 pixel high white rgb image
|
32
|
+
image(:size => point(10,5), :color => white, :format => :rgb8)
|
33
|
+
```
|
34
|
+
|
35
|
+
## Contributing
|
36
|
+
|
37
|
+
1. Fork it
|
38
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
39
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
40
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
41
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
data/lib/raw_image.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "gui_geometry"
|
2
|
+
|
3
|
+
%w{
|
4
|
+
colors
|
5
|
+
color
|
6
|
+
color_formats
|
7
|
+
image
|
8
|
+
version
|
9
|
+
}.each do |file|
|
10
|
+
require File.join(File.dirname(__FILE__),"raw_image",file)
|
11
|
+
end
|
12
|
+
|
13
|
+
module RawImage
|
14
|
+
include GuiGeo
|
15
|
+
def color(*args) Color.new *args; end
|
16
|
+
def image(*args) Image.new *args; end
|
17
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# encoding: BINARY
|
2
|
+
|
3
|
+
module RawImage
|
4
|
+
class Color
|
5
|
+
include Colors
|
6
|
+
|
7
|
+
attr_accessor :r, :g, :b, :a
|
8
|
+
|
9
|
+
# 0 <= values <= 1
|
10
|
+
def initialize(r=0, g=r, b=r, a=1.0)
|
11
|
+
@r = r; @g = g; @b = b; @a = a
|
12
|
+
end
|
13
|
+
|
14
|
+
# 0 <= val <= 1
|
15
|
+
def gray=(val)
|
16
|
+
@r = @g = @b = g
|
17
|
+
end
|
18
|
+
alias :grey= :gray=
|
19
|
+
|
20
|
+
def byte(int)
|
21
|
+
"%c"%int
|
22
|
+
end
|
23
|
+
|
24
|
+
def inspect
|
25
|
+
"color(#{[r,g,b,a].join(', ')})"
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_s
|
29
|
+
"#%02x%02x%02x%02x"%[r8,g8,b8,a8]
|
30
|
+
end
|
31
|
+
|
32
|
+
def r8; r * 255; end
|
33
|
+
def g8; g * 255; end
|
34
|
+
def b8; b * 255; end
|
35
|
+
def a8; a * 255; end
|
36
|
+
def gray8; g * 255; end
|
37
|
+
alias :grey8 :gray8
|
38
|
+
|
39
|
+
def gray; (r+g+b)/3; end
|
40
|
+
alias :grey :gray
|
41
|
+
|
42
|
+
def to_bytes(format)
|
43
|
+
case format
|
44
|
+
when :g8 then [byte(g8)].join
|
45
|
+
when :rgb8 then [byte(r8), byte(g8), byte(b8)].join
|
46
|
+
when :rgba8 then [byte(r8), byte(g8), byte(b8), byte(a8)].join
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
module RawImage
|
2
|
+
# legal image formats and info about each format
|
3
|
+
def self.color_formats
|
4
|
+
{
|
5
|
+
:g8 => {:byte_size => 1, :bit_size => 8}, # single, monochrome channel
|
6
|
+
:rgb8 => {:byte_size => 3, :bit_size => 24}, # red, green, blue, 8bits per channel
|
7
|
+
:rgba8 => {:byte_size => 4, :bit_size => 32}, # red, green, blue, alpha 8bits per channel
|
8
|
+
}
|
9
|
+
end
|
10
|
+
end
|
@@ -0,0 +1,129 @@
|
|
1
|
+
# encoding: BINARY
|
2
|
+
|
3
|
+
module RawImage
|
4
|
+
class Image
|
5
|
+
include GuiGeo
|
6
|
+
include RawImage
|
7
|
+
include Colors
|
8
|
+
|
9
|
+
# raw image data as a binary string
|
10
|
+
attr_reader :data
|
11
|
+
|
12
|
+
# width & height of the image
|
13
|
+
attr_reader :size
|
14
|
+
|
15
|
+
# pixel format of iamge
|
16
|
+
attr_reader :format
|
17
|
+
|
18
|
+
# length of each line in bytes
|
19
|
+
attr_reader :line_byte_size
|
20
|
+
|
21
|
+
# :format => symbol
|
22
|
+
# :size => point
|
23
|
+
# :data => string
|
24
|
+
# :line_byte_size => integer or nil
|
25
|
+
# :color => Color (clear-to-color if data is nil)
|
26
|
+
def initialize(options={})
|
27
|
+
@format = options[:format] || :rgba8
|
28
|
+
raise ArgumentError.new("unsupported format: #{format.inspect}") unless RawImage.color_formats[format]
|
29
|
+
|
30
|
+
@size = options[:size]
|
31
|
+
raise ArgumentError.new("size#{size} must be at least (1,1)") unless size > point
|
32
|
+
|
33
|
+
@line_byte_size = options[:line_byte_size] || minimum_line_byte_size
|
34
|
+
raise ArgumentError.new("line_byte_size must be at least #{minimum_line_byte_size} for the given format #{format.inspect} and size #{size}") unless line_byte_size >= minimum_line_byte_size
|
35
|
+
|
36
|
+
@data = options[:data] || new_data(options[:color])
|
37
|
+
raise ArgumentError.new("expecting data to be #{byte_size} bytes (was #{data.length})") unless data.length == byte_size
|
38
|
+
end
|
39
|
+
|
40
|
+
# total byte-size of the string (should always == data.length)
|
41
|
+
def byte_size; size.y * line_byte_size; end
|
42
|
+
|
43
|
+
# number of pixels in image
|
44
|
+
def pixel_size; size.x * size.y; end
|
45
|
+
|
46
|
+
# bytes per pixel
|
47
|
+
def pixel_byte_size; RawImage.color_formats[format][:byte_size]; end
|
48
|
+
|
49
|
+
# the rectangle defining the area of the image
|
50
|
+
def area; rect size; end
|
51
|
+
|
52
|
+
# get the byte-offset into data of a given pixel location
|
53
|
+
def byte_offset(loc) loc.y * line_byte_size + loc.x * pixel_byte_size; end
|
54
|
+
|
55
|
+
# return the byte of a single horizontal sub-line of data
|
56
|
+
# (start is a GuiGeo::Point)
|
57
|
+
def sub_horizontal_line(start, length)
|
58
|
+
offset = byte_offset start
|
59
|
+
data[offset .. (offset + (length*pixel_byte_size)-1)]
|
60
|
+
end
|
61
|
+
|
62
|
+
# return a new image with the pixels from the specified sub_area (GuiGeo::Rectangle)
|
63
|
+
def subimage(sub_area)
|
64
|
+
sub_area = area | sub_area
|
65
|
+
|
66
|
+
byte_width_minus_one = sub_area.w * pixel_byte_size - 1
|
67
|
+
stride = line_byte_size
|
68
|
+
offset = byte_offset(sub_area.loc) - stride
|
69
|
+
data = @data
|
70
|
+
Image.new :size => sub_area.size, :format => format, :data => (sub_area.h.times.collect do
|
71
|
+
offset += stride
|
72
|
+
data[offset .. (offset + byte_width_minus_one)]
|
73
|
+
end).join
|
74
|
+
end
|
75
|
+
|
76
|
+
# replace the pixels of the given sub_area (GuiGeo::Rectangle) with the specified Image::Color
|
77
|
+
def replace_rect(sub_area, color)
|
78
|
+
sub_area = area | sub_area
|
79
|
+
return unless sub_area.present?
|
80
|
+
|
81
|
+
replace_line = color.to_bytes(format) * sub_area.w
|
82
|
+
|
83
|
+
data = @data
|
84
|
+
each_line(sub_area) do |range|
|
85
|
+
data[range] = replace_line
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
# replace the pixels of the given sub_area (GuiGeo::Rectangle) with the pixels of the given image (Image)
|
90
|
+
# optional: specify a sub-area of the source image to copy
|
91
|
+
def replace_image(loc, image, source_sub_area = nil)
|
92
|
+
raise ArgumentError.new unless format == image.format
|
93
|
+
loc -= source_sub_area.loc if source_sub_area
|
94
|
+
source_sub_area = (area - loc) | image.area | source_sub_area
|
95
|
+
target_sub_area = source_sub_area + loc
|
96
|
+
return unless target_sub_area.present?
|
97
|
+
|
98
|
+
data = @data
|
99
|
+
w = source_sub_area.w
|
100
|
+
l = source_sub_area.loc
|
101
|
+
each_line(target_sub_area) do |range|
|
102
|
+
data[range] = image.sub_horizontal_line(l, w)
|
103
|
+
l.y += 1
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
private
|
108
|
+
def minimum_line_byte_size; size.x * pixel_byte_size; end
|
109
|
+
|
110
|
+
# assumes sub_area is a strict sub_area of self.area
|
111
|
+
def each_line(sub_area)
|
112
|
+
byte_width_minus_one = sub_area.w * pixel_byte_size - 1
|
113
|
+
stride = line_byte_size
|
114
|
+
offset = byte_offset(sub_area.loc) - stride
|
115
|
+
|
116
|
+
sub_area.h.times do
|
117
|
+
offset += stride
|
118
|
+
range = offset .. (offset + byte_width_minus_one)
|
119
|
+
yield range
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
def new_data(color)
|
124
|
+
color ||= transparent
|
125
|
+
color_string = color.to_bytes(format)
|
126
|
+
color_string * pixel_size
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
data/raw_image.gemspec
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'raw_image/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |gem|
|
7
|
+
gem.name = "raw_image"
|
8
|
+
gem.version = RawImage::VERSION
|
9
|
+
gem.authors = ["Shane Brinkman-Davis"]
|
10
|
+
gem.email = ["shanebdavis@gmail.com"]
|
11
|
+
gem.description = %q{Gem for storing and manipulating raw, uncompressed bitmap images}
|
12
|
+
gem.summary = %q{Gem for storing and manipulating raw, uncompressed bitmap images}
|
13
|
+
gem.homepage = "https://github.com/shanebdavis/raw_image"
|
14
|
+
|
15
|
+
gem.files = `git ls-files`.split($/)
|
16
|
+
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
17
|
+
gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
|
18
|
+
gem.require_paths = ["lib"]
|
19
|
+
|
20
|
+
gem.add_dependency 'gui_geometry', ">= 0.1.1"
|
21
|
+
gem.add_development_dependency 'rake'
|
22
|
+
gem.add_development_dependency 'rspec'
|
23
|
+
gem.add_development_dependency 'guard-rspec'
|
24
|
+
gem.add_development_dependency 'guard-test'
|
25
|
+
gem.add_development_dependency 'rb-fsevent'
|
26
|
+
gem.add_development_dependency 'simplecov'
|
27
|
+
end
|
data/spec/color_spec.rb
ADDED
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module RawImage
|
4
|
+
describe "Color" do
|
5
|
+
include ::RawImage
|
6
|
+
include Colors
|
7
|
+
|
8
|
+
it "new" do
|
9
|
+
Color.new.to_s.should == "#000000ff"
|
10
|
+
Color.new(0.5).to_s.should == "#7f7f7fff"
|
11
|
+
Color.new(1).to_s.should == "#ffffffff"
|
12
|
+
Color.new(1,0.5,0.25,0.1).to_s.should == "#ff7f3f19"
|
13
|
+
end
|
14
|
+
|
15
|
+
it "defined colors" do
|
16
|
+
transparent.to_s.should == "#00000000"
|
17
|
+
black.to_s.should == "#000000ff"
|
18
|
+
gray.to_s.should == "#7f7f7fff"
|
19
|
+
white.to_s.should == "#ffffffff"
|
20
|
+
end
|
21
|
+
|
22
|
+
it "accessors" do
|
23
|
+
c = Color.new 0.1, 0.2, 0.3, 0.4
|
24
|
+
c.r.should == 0.1
|
25
|
+
c.g.should == 0.2
|
26
|
+
c.b.should == 0.3
|
27
|
+
c.a.should == 0.4
|
28
|
+
end
|
29
|
+
|
30
|
+
it "to_bytes - various values" do
|
31
|
+
transparent.to_bytes(:rgba8).should == "\0\0\0\0"
|
32
|
+
black.to_bytes(:rgba8).should == "\0\0\0\xff"
|
33
|
+
white.to_bytes(:rgba8).should == "\xff\xff\xff\xff"
|
34
|
+
Color.new(0.25,1,0.5,1).to_bytes(:rgba8).should == "?\xff\x7f\xff"
|
35
|
+
end
|
36
|
+
|
37
|
+
it "to_bytes - various formats" do
|
38
|
+
gray.to_bytes(:g8).should == "\x7F"
|
39
|
+
gray.to_bytes(:rgb8).should == "\x7F\x7F\x7F"
|
40
|
+
gray.to_bytes(:rgba8).should == "\x7F\x7F\x7F\xFF"
|
41
|
+
end
|
42
|
+
|
43
|
+
it "set gray" do
|
44
|
+
c = Color.new 0.1, 0.2, 0.3, 0.4
|
45
|
+
c.gray = 0.25
|
46
|
+
c.to_s.should == "#33333366"
|
47
|
+
end
|
48
|
+
|
49
|
+
it "inspect" do
|
50
|
+
white.inspect.should == "color(1.0, 1.0, 1.0, 1.0)"
|
51
|
+
end
|
52
|
+
|
53
|
+
it "easy constructor" do
|
54
|
+
color(0.1).to_s.should == "#191919ff"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
data/spec/image_spec.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
module RawImage
|
4
|
+
describe "Image" do
|
5
|
+
include RawImage
|
6
|
+
include Colors
|
7
|
+
it "new" do
|
8
|
+
image(:size => point(10,10)).data.should == "\x00"*400
|
9
|
+
end
|
10
|
+
|
11
|
+
it "subimage" do
|
12
|
+
i = image(:size => point(10,10))
|
13
|
+
i.subimage(rect(2,2,5,5)).data.should == "\x00"*100
|
14
|
+
end
|
15
|
+
|
16
|
+
it "replace_rect" do
|
17
|
+
i = image(:size => point(5,5))
|
18
|
+
i.replace_rect rect(1,1,2,2), white
|
19
|
+
i.data.should ==
|
20
|
+
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+
|
21
|
+
"\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"+
|
22
|
+
"\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\x00\x00\x00\x00\x00\x00\x00\x00"+
|
23
|
+
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+
|
24
|
+
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
|
25
|
+
end
|
26
|
+
|
27
|
+
it "replace_image" do
|
28
|
+
i = image(:size => point(5,5))
|
29
|
+
i2 = image(:size => point(5,5), :color => white)
|
30
|
+
i.replace_image point(3,2), i2
|
31
|
+
i.data.should ==
|
32
|
+
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+
|
33
|
+
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"+
|
34
|
+
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"+
|
35
|
+
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"+
|
36
|
+
"\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF"
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,176 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: raw_image
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Shane Brinkman-Davis
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-01-24 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: gui_geometry
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: 0.1.1
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 0.1.1
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: guard-rspec
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: guard-test
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
type: :development
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
94
|
+
- !ruby/object:Gem::Dependency
|
95
|
+
name: rb-fsevent
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
97
|
+
none: false
|
98
|
+
requirements:
|
99
|
+
- - ! '>='
|
100
|
+
- !ruby/object:Gem::Version
|
101
|
+
version: '0'
|
102
|
+
type: :development
|
103
|
+
prerelease: false
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
110
|
+
- !ruby/object:Gem::Dependency
|
111
|
+
name: simplecov
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
113
|
+
none: false
|
114
|
+
requirements:
|
115
|
+
- - ! '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
126
|
+
description: Gem for storing and manipulating raw, uncompressed bitmap images
|
127
|
+
email:
|
128
|
+
- shanebdavis@gmail.com
|
129
|
+
executables: []
|
130
|
+
extensions: []
|
131
|
+
extra_rdoc_files: []
|
132
|
+
files:
|
133
|
+
- .gitignore
|
134
|
+
- Gemfile
|
135
|
+
- Guardfile
|
136
|
+
- LICENSE.txt
|
137
|
+
- README.md
|
138
|
+
- Rakefile
|
139
|
+
- lib/raw_image.rb
|
140
|
+
- lib/raw_image/color.rb
|
141
|
+
- lib/raw_image/color_formats.rb
|
142
|
+
- lib/raw_image/colors.rb
|
143
|
+
- lib/raw_image/image.rb
|
144
|
+
- lib/raw_image/version.rb
|
145
|
+
- raw_image.gemspec
|
146
|
+
- spec/color_spec.rb
|
147
|
+
- spec/image_spec.rb
|
148
|
+
- spec/spec_helper.rb
|
149
|
+
homepage: https://github.com/shanebdavis/raw_image
|
150
|
+
licenses: []
|
151
|
+
post_install_message:
|
152
|
+
rdoc_options: []
|
153
|
+
require_paths:
|
154
|
+
- lib
|
155
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
156
|
+
none: false
|
157
|
+
requirements:
|
158
|
+
- - ! '>='
|
159
|
+
- !ruby/object:Gem::Version
|
160
|
+
version: '0'
|
161
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
162
|
+
none: false
|
163
|
+
requirements:
|
164
|
+
- - ! '>='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: '0'
|
167
|
+
requirements: []
|
168
|
+
rubyforge_project:
|
169
|
+
rubygems_version: 1.8.24
|
170
|
+
signing_key:
|
171
|
+
specification_version: 3
|
172
|
+
summary: Gem for storing and manipulating raw, uncompressed bitmap images
|
173
|
+
test_files:
|
174
|
+
- spec/color_spec.rb
|
175
|
+
- spec/image_spec.rb
|
176
|
+
- spec/spec_helper.rb
|