oily_png 1.0.1 → 1.0.2

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.
@@ -0,0 +1,8 @@
1
+ rvm:
2
+ - 1.8.6
3
+ - 1.8.7
4
+ - 1.9.1
5
+ - 1.9.2
6
+ - ruby-head
7
+ - ree
8
+ - rbx
data/Rakefile CHANGED
@@ -7,6 +7,7 @@ Rake::ExtensionTask.new('oily_png', gem_management_tasks.gemspec) do |ext|
7
7
  ext.lib_dir = File.join('lib', 'oily_png')
8
8
  end
9
9
 
10
+ Rake::Task['spec'].prerequisites << :compile
10
11
  Rake::Task['spec:basic'].prerequisites << :compile
11
12
  Rake::Task['spec:rcov'].prerequisites << :compile
12
13
  Rake::Task['spec:specdoc'].prerequisites << :compile
@@ -17,5 +17,30 @@ PIXEL oily_png_compose_color(PIXEL fg, PIXEL bg) {
17
17
  }
18
18
 
19
19
  VALUE oily_png_color_compose_quick(VALUE self, VALUE fg_color, VALUE bg_color) {
20
+ UNUSED_PARAMETER(self);
20
21
  return UINT2NUM(oily_png_compose_color(NUM2UINT(fg_color), NUM2UINT(bg_color)));
21
22
  }
23
+
24
+ VALUE oily_png_color_r(VALUE self, VALUE value) {
25
+ UNUSED_PARAMETER(self);
26
+ BYTE red = R_BYTE(NUM2UINT(value));
27
+ return INT2FIX(red);
28
+ }
29
+
30
+ VALUE oily_png_color_g(VALUE self, VALUE value) {
31
+ UNUSED_PARAMETER(self);
32
+ BYTE green = G_BYTE(NUM2UINT(value));
33
+ return INT2FIX(green);
34
+ }
35
+
36
+ VALUE oily_png_color_b(VALUE self, VALUE value) {
37
+ UNUSED_PARAMETER(self);
38
+ BYTE blue = B_BYTE(NUM2UINT(value));
39
+ return INT2FIX(blue);
40
+ }
41
+
42
+ VALUE oily_png_color_a(VALUE self, VALUE value) {
43
+ UNUSED_PARAMETER(self);
44
+ BYTE alpha = A_BYTE(NUM2UINT(value));
45
+ return INT2FIX(alpha);
46
+ }
@@ -19,4 +19,10 @@ VALUE oily_png_color_compose_quick(VALUE self, VALUE fg_color, VALUE bg_color);
19
19
  /* Color composition using alpha transparency. */
20
20
  PIXEL oily_png_compose_color(PIXEL fg, PIXEL bg);
21
21
 
22
+ /* Accessors */
23
+ VALUE oily_png_color_r(VALUE self, VALUE pixel);
24
+ VALUE oily_png_color_g(VALUE self, VALUE pixel);
25
+ VALUE oily_png_color_b(VALUE self, VALUE pixel);
26
+ VALUE oily_png_color_a(VALUE self, VALUE pixel);
27
+
22
28
  #endif
@@ -3,6 +3,11 @@
3
3
  void Init_oily_png() {
4
4
  VALUE OilyPNG = rb_define_module("OilyPNG");
5
5
 
6
+ VALUE OilyPNG_Canvas = rb_define_module_under(OilyPNG, "Resampling");
7
+ rb_define_private_method(OilyPNG_Canvas, "steps_residues", oily_png_canvas_steps_residues, 2);
8
+ rb_define_private_method(OilyPNG_Canvas, "steps", oily_png_canvas_steps, 2);
9
+ rb_define_method(OilyPNG_Canvas, "resample_nearest_neighbor!", oily_png_canvas_resample_nearest_neighbor_bang, 2);
10
+
6
11
  // Setup decoding module
7
12
  VALUE OilyPNG_PNGDecoding = rb_define_module_under(OilyPNG, "PNGDecoding");
8
13
  rb_define_method(OilyPNG_PNGDecoding, "decode_png_image_pass", oily_png_decode_png_image_pass, 6);
@@ -14,6 +19,10 @@ void Init_oily_png() {
14
19
  // Setup Color module
15
20
  VALUE OilyPNG_Color = rb_define_module_under(OilyPNG, "Color");
16
21
  rb_define_method(OilyPNG_Color, "compose_quick", oily_png_color_compose_quick, 2);
22
+ rb_define_method(OilyPNG_Color, "r", oily_png_color_r, 1);
23
+ rb_define_method(OilyPNG_Color, "g", oily_png_color_g, 1);
24
+ rb_define_method(OilyPNG_Color, "b", oily_png_color_b, 1);
25
+ rb_define_method(OilyPNG_Color, "a", oily_png_color_a, 1);
17
26
 
18
27
  // Setup Operations module
19
28
  VALUE OilyPNG_Operations = rb_define_module_under(OilyPNG, "Operations");
@@ -31,6 +31,7 @@ typedef unsigned char BYTE; // Bytes use 8 bits unsigned integers
31
31
  #include "png_encoding.h"
32
32
  #include "color.h"
33
33
  #include "operations.h"
34
+ #include "resampling.h"
34
35
 
35
36
  /*
36
37
  Initialize the extension by creating the OilyPNG modules, and registering
@@ -0,0 +1,151 @@
1
+ #include "oily_png_ext.h"
2
+ #include <math.h>
3
+
4
+ void oily_png_generate_steps_residues(long width, long new_width, long *steps, long *residues) {
5
+ long base_step = width / new_width;
6
+ long err_step = (width % new_width) << 1;
7
+ long denominator = new_width << 1;
8
+
9
+ long index;
10
+ long err;
11
+ /* We require an arithmetic modolus and rounding to the left of zero
12
+ * This is standard Ruby behaviour (I hope!) but differs with how C/Java
13
+ * typically handle integer division and modulo. But since we are workig
14
+ * in mixed numbers, Ruby's convention is especially convienent */
15
+ if (width >= new_width) {
16
+ index = (width - new_width) / denominator;
17
+ err = (width - new_width) % denominator;
18
+ } else {
19
+ index = (width - new_width) / denominator - 1;
20
+ err = denominator - ((new_width - width) % denominator);
21
+ }
22
+
23
+ long i;
24
+ for (i=0; i < new_width; i++){
25
+ if (residues != NULL) {
26
+ steps[i] = index;
27
+ residues[i] = (long) round(255.0 * (float) err / (float) denominator);
28
+ } else {
29
+ /* If residues aren't requested, we round to the nearest pixel */
30
+ if (err < new_width) {
31
+ steps[i] = index;
32
+ } else {
33
+ steps[i] = index + 1;
34
+ }
35
+ }
36
+
37
+ index += base_step;
38
+ err += err_step;
39
+ if (err >= denominator) {
40
+ index += 1;
41
+ err -= denominator;
42
+ }
43
+ }
44
+ }
45
+
46
+ VALUE oily_png_canvas_steps(VALUE self, VALUE v_width, VALUE v_new_width) {
47
+ long width = NUM2LONG(v_width);
48
+ long new_width = NUM2LONG(v_new_width);
49
+
50
+ long *steps = ALLOC_N(long, new_width);
51
+
52
+ VALUE ret = rb_ary_new2(new_width);
53
+
54
+ oily_png_generate_steps_residues(width, new_width, steps, NULL);
55
+
56
+ long i;
57
+ for (i=0; i < new_width; i++) {
58
+ rb_ary_store(ret, i, LONG2FIX(steps[i]));
59
+ }
60
+
61
+ /* This is an unprotected allocation; it will leak on exception.
62
+ * However, rb_ary_store should not generate one as we have
63
+ * pre-allocated the array.
64
+ */
65
+ xfree(steps);
66
+ steps = NULL;
67
+
68
+ return ret;
69
+ }
70
+
71
+
72
+ VALUE oily_png_canvas_steps_residues(VALUE self, VALUE v_width, VALUE v_new_width) {
73
+ long width = NUM2LONG(v_width);
74
+ long new_width = NUM2LONG(v_new_width);
75
+
76
+
77
+ VALUE ret_steps = rb_ary_new2(new_width);
78
+ VALUE ret_residues = rb_ary_new2(new_width);
79
+
80
+
81
+ long *steps = ALLOC_N(long, new_width);
82
+ long *residues = ALLOC_N(long, new_width);
83
+
84
+ oily_png_generate_steps_residues(width, new_width, steps, residues);
85
+
86
+
87
+ long i;
88
+ for (i=0; i < new_width; i++) {
89
+ rb_ary_store(ret_steps, i, LONG2FIX(steps[i]));
90
+ rb_ary_store(ret_residues, i, LONG2FIX(residues[i]));
91
+ }
92
+
93
+ /* This is an unprotected allocation; it will leak on exception.
94
+ * However, rb_ary_store should not generate one as we have
95
+ * pre-allocated the array.
96
+ */
97
+ xfree(steps);
98
+ steps = NULL;
99
+
100
+ xfree(residues);
101
+ residues = NULL;
102
+
103
+
104
+ /* We return multiple values */
105
+ VALUE ret = rb_ary_new2(2);
106
+ rb_ary_store(ret, 0, ret_steps);
107
+ rb_ary_store(ret, 1, ret_residues);
108
+
109
+ return ret;
110
+ }
111
+
112
+ VALUE oily_png_canvas_resample_nearest_neighbor_bang(VALUE self, VALUE v_new_width, VALUE v_new_height) {
113
+ long new_width = NUM2LONG(v_new_width);
114
+ long new_height = NUM2LONG(v_new_height);
115
+
116
+ long self_width = NUM2LONG(rb_funcall(self, rb_intern("width"), 0));
117
+ long self_height = NUM2LONG(rb_funcall(self, rb_intern("height"), 0));
118
+
119
+ VALUE pixels = rb_ary_new2(new_width*new_height);
120
+ VALUE source = rb_iv_get(self, "@pixels");
121
+
122
+ long *steps_x = ALLOC_N(long, new_width);
123
+ long *steps_y = ALLOC_N(long, new_height);
124
+
125
+ oily_png_generate_steps_residues(self_width, new_width, steps_x, NULL);
126
+ oily_png_generate_steps_residues(self_height, new_height, steps_y, NULL);
127
+
128
+ long index = 0;
129
+ long x, y;
130
+ long src_index;
131
+ for (y=0; y < new_height; y++) {
132
+ for (x = 0; x < new_width; x++) {
133
+ src_index = steps_y[y] * self_width + steps_x[x];
134
+ VALUE pixel = rb_ary_entry(source, src_index);
135
+ rb_ary_store(pixels, index, pixel);
136
+ index++;
137
+ }
138
+ }
139
+
140
+ xfree(steps_x);
141
+ steps_x = NULL;
142
+
143
+ xfree(steps_y);
144
+ steps_y = NULL;
145
+
146
+ rb_iv_set(self, "@pixels", pixels);
147
+ rb_iv_set(self, "@width", LONG2NUM(new_width));
148
+ rb_iv_set(self, "@height", LONG2NUM(new_height));
149
+
150
+ return self;
151
+ }
@@ -0,0 +1,23 @@
1
+ #ifndef OILY_PNG_RESAMPLING_H
2
+ #define OILY_PNG_RESAMPLING_H
3
+
4
+ /*
5
+ * Generates the interpolation steps (nearest neighbour) through two values.
6
+ */
7
+ void oily_png_generate_steps_residues(long width, long new_width, long *steps, long *residues);
8
+
9
+ /*
10
+ * Generates the interpolation steps through two values.
11
+ *
12
+ * Returns a Ruby Array
13
+ */
14
+ VALUE oily_png_canvas_steps_residues(VALUE self, VALUE width, VALUE new_width);
15
+ VALUE oily_png_canvas_steps(VALUE self, VALUE width, VALUE new_width);
16
+
17
+
18
+ /*
19
+ * Performs nearest neighbor interpolation on the Canvas
20
+ */
21
+ VALUE oily_png_canvas_resample_nearest_neighbor_bang(VALUE self, VALUE new_width, VALUE new_height);
22
+
23
+ #endif
@@ -2,17 +2,22 @@ require 'chunky_png'
2
2
 
3
3
  module OilyPNG
4
4
 
5
- VERSION = "1.0.1"
5
+ VERSION = "1.0.2"
6
6
 
7
7
  def self.included(base)
8
8
  base::Canvas.send(:extend, OilyPNG::PNGDecoding)
9
9
  base::Canvas.send(:include, OilyPNG::PNGEncoding)
10
10
 
11
+
11
12
  base::Color.send(:include, OilyPNG::Color)
13
+
14
+ base::Color.extend OilyPNG::Color
15
+ base::Canvas.send(:include, OilyPNG::Resampling)
12
16
  end
13
17
  end
14
18
 
15
19
  require 'oily_png/oily_png'
20
+ require 'oily_png/canvas'
16
21
 
17
22
  # Include mixin into ChunkyPNG
18
23
  ChunkyPNG.send(:include, OilyPNG)
@@ -6,9 +6,10 @@ module OilyPNG
6
6
  extend OilyPNG::PNGDecoding
7
7
  include OilyPNG::PNGEncoding
8
8
  include OilyPNG::Operations
9
+ include OilyPNG::Resampling
9
10
  end
10
11
 
11
12
  module Color
12
13
  extend self
13
14
  end
14
- end
15
+ end
@@ -4,8 +4,8 @@ Gem::Specification.new do |s|
4
4
 
5
5
  # Do not change the version and date fields by hand. This will be done
6
6
  # automatically by the gem release script.
7
- s.version = "1.0.1"
8
- s.date = "2011-05-08"
7
+ s.version = "1.0.2"
8
+ s.date = "2011-08-10"
9
9
 
10
10
  s.summary = "Native mixin to speed up ChunkyPNG"
11
11
  s.description = <<-EOT
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
19
19
  s.extensions = ["ext/oily_png/extconf.rb"]
20
20
  s.require_paths = ["lib", "ext"]
21
21
 
22
- s.add_runtime_dependency('chunky_png', '~> 1')
22
+ s.add_runtime_dependency('chunky_png', '~> 1.2.1')
23
23
 
24
24
  s.add_development_dependency('rake')
25
25
  s.add_development_dependency('rake-compiler')
@@ -30,6 +30,6 @@ Gem::Specification.new do |s|
30
30
 
31
31
  # Do not change the files and test_files fields by hand. This will be done
32
32
  # automatically by the gem release script.
33
- s.files = %w(.gitignore .infinity_test Gemfile LICENSE README.rdoc Rakefile ext/oily_png/color.c ext/oily_png/color.h ext/oily_png/extconf.rb ext/oily_png/oily_png_ext.c ext/oily_png/oily_png_ext.h ext/oily_png/operations.c ext/oily_png/operations.h ext/oily_png/png_decoding.c ext/oily_png/png_decoding.h ext/oily_png/png_encoding.c ext/oily_png/png_encoding.h lib/oily_png.rb lib/oily_png/canvas.rb oily_png.gemspec spec/color_spec.rb spec/decoding_spec.rb spec/encoding_spec.rb spec/operations_spec.rb spec/resources/basi0g01.png spec/resources/basi0g02.png spec/resources/basi0g04.png spec/resources/basi0g08.png spec/resources/basi0g16.png spec/resources/basi2c08.png spec/resources/basi2c16.png spec/resources/basi3p01.png spec/resources/basi3p02.png spec/resources/basi3p04.png spec/resources/basi3p08.png spec/resources/basi4a08.png spec/resources/basi4a16.png spec/resources/basi6a08.png spec/resources/basi6a16.png spec/resources/basn0g01.png spec/resources/basn0g02.png spec/resources/basn0g04.png spec/resources/basn0g08.png spec/resources/basn0g16.png spec/resources/basn2c08.png spec/resources/basn2c16.png spec/resources/basn3p01.png spec/resources/basn3p02.png spec/resources/basn3p04.png spec/resources/basn3p08.png spec/resources/basn4a08.png spec/resources/basn4a16.png spec/resources/basn6a08.png spec/resources/basn6a16.png spec/resources/composited.png spec/resources/gray.png spec/resources/interlaced.png spec/resources/nonsquare.png spec/resources/operations.png spec/resources/replaced.png spec/resources/s01i3p01.png spec/resources/s01n3p01.png spec/resources/s02i3p01.png spec/resources/s02n3p01.png spec/resources/s03i3p01.png spec/resources/s03n3p01.png spec/resources/s04i3p01.png spec/resources/s04n3p01.png spec/resources/s05i3p02.png spec/resources/s05n3p02.png spec/resources/s06i3p02.png spec/resources/s06n3p02.png spec/resources/s07i3p02.png spec/resources/s07n3p02.png spec/resources/s08i3p02.png spec/resources/s08n3p02.png spec/resources/s09i3p02.png spec/resources/s09n3p02.png spec/resources/s32i3p04.png spec/resources/s32n3p04.png spec/resources/s33i3p04.png spec/resources/s33n3p04.png spec/resources/s34i3p04.png spec/resources/s34n3p04.png spec/resources/s35i3p04.png spec/resources/s35n3p04.png spec/resources/s36i3p04.png spec/resources/s36n3p04.png spec/resources/s37i3p04.png spec/resources/s37n3p04.png spec/resources/s38i3p04.png spec/resources/s38n3p04.png spec/resources/s39i3p04.png spec/resources/s39n3p04.png spec/resources/s40i3p04.png spec/resources/s40n3p04.png spec/resources/square.png spec/resources/tbbn1g04.png spec/resources/tbbn2c16.png spec/resources/tbbn3p08.png spec/resources/tbgn2c16.png spec/resources/tbgn3p08.png spec/resources/tbrn2c08.png spec/resources/tbwn1g16.png spec/resources/tbwn3p08.png spec/resources/tbyn3p08.png spec/resources/tp0n1g08.png spec/resources/tp0n2c08.png spec/resources/tp0n3p08.png spec/resources/tp1n3p08.png spec/spec_helper.rb tasks/github-gem.rake tasks/testing.rake)
34
- s.test_files = %w(spec/color_spec.rb spec/decoding_spec.rb spec/encoding_spec.rb spec/operations_spec.rb)
33
+ s.files = %w(.gitignore .infinity_test .travis.yml Gemfile LICENSE README.rdoc Rakefile ext/oily_png/color.c ext/oily_png/color.h ext/oily_png/extconf.rb ext/oily_png/oily_png_ext.c ext/oily_png/oily_png_ext.h ext/oily_png/operations.c ext/oily_png/operations.h ext/oily_png/png_decoding.c ext/oily_png/png_decoding.h ext/oily_png/png_encoding.c ext/oily_png/png_encoding.h ext/oily_png/resampling.c ext/oily_png/resampling.h lib/oily_png.rb lib/oily_png/canvas.rb oily_png.gemspec spec/color_spec.rb spec/decoding_spec.rb spec/encoding_spec.rb spec/operations_spec.rb spec/resampling_spec.rb spec/resources/basi0g01.png spec/resources/basi0g02.png spec/resources/basi0g04.png spec/resources/basi0g08.png spec/resources/basi0g16.png spec/resources/basi2c08.png spec/resources/basi2c16.png spec/resources/basi3p01.png spec/resources/basi3p02.png spec/resources/basi3p04.png spec/resources/basi3p08.png spec/resources/basi4a08.png spec/resources/basi4a16.png spec/resources/basi6a08.png spec/resources/basi6a16.png spec/resources/basn0g01.png spec/resources/basn0g02.png spec/resources/basn0g04.png spec/resources/basn0g08.png spec/resources/basn0g16.png spec/resources/basn2c08.png spec/resources/basn2c16.png spec/resources/basn3p01.png spec/resources/basn3p02.png spec/resources/basn3p04.png spec/resources/basn3p08.png spec/resources/basn4a08.png spec/resources/basn4a16.png spec/resources/basn6a08.png spec/resources/basn6a16.png spec/resources/composited.png spec/resources/gray.png spec/resources/interlaced.png spec/resources/nonsquare.png spec/resources/operations.png spec/resources/replaced.png spec/resources/s01i3p01.png spec/resources/s01n3p01.png spec/resources/s02i3p01.png spec/resources/s02n3p01.png spec/resources/s03i3p01.png spec/resources/s03n3p01.png spec/resources/s04i3p01.png spec/resources/s04n3p01.png spec/resources/s05i3p02.png spec/resources/s05n3p02.png spec/resources/s06i3p02.png spec/resources/s06n3p02.png spec/resources/s07i3p02.png spec/resources/s07n3p02.png spec/resources/s08i3p02.png spec/resources/s08n3p02.png spec/resources/s09i3p02.png spec/resources/s09n3p02.png spec/resources/s32i3p04.png spec/resources/s32n3p04.png spec/resources/s33i3p04.png spec/resources/s33n3p04.png spec/resources/s34i3p04.png spec/resources/s34n3p04.png spec/resources/s35i3p04.png spec/resources/s35n3p04.png spec/resources/s36i3p04.png spec/resources/s36n3p04.png spec/resources/s37i3p04.png spec/resources/s37n3p04.png spec/resources/s38i3p04.png spec/resources/s38n3p04.png spec/resources/s39i3p04.png spec/resources/s39n3p04.png spec/resources/s40i3p04.png spec/resources/s40n3p04.png spec/resources/square.png spec/resources/tbbn1g04.png spec/resources/tbbn2c16.png spec/resources/tbbn3p08.png spec/resources/tbgn2c16.png spec/resources/tbgn3p08.png spec/resources/tbrn2c08.png spec/resources/tbwn1g16.png spec/resources/tbwn3p08.png spec/resources/tbyn3p08.png spec/resources/tp0n1g08.png spec/resources/tp0n2c08.png spec/resources/tp0n3p08.png spec/resources/tp1n3p08.png spec/spec_helper.rb tasks/github-gem.rake tasks/testing.rake)
34
+ s.test_files = %w(spec/color_spec.rb spec/decoding_spec.rb spec/encoding_spec.rb spec/operations_spec.rb spec/resampling_spec.rb)
35
35
  end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ describe OilyPNG::Resampling do
4
+
5
+ include OilyPNG::Resampling
6
+
7
+ describe '#steps' do
8
+ it "should generate the steps from 4 to 8 as [0,0,1,1,2,2,3,3]" do
9
+ steps(4,8).should == [0,0,1,1,2,2,3,3]
10
+ end
11
+
12
+ it "should generate the steps the same as ChunkyPNG" do
13
+ image = ChunkyPNG::Image.new(1,1)
14
+ steps(2,8).should == image.send(:steps,2,8)
15
+ steps(2,11).should == image.send(:steps,2,11)
16
+ steps(11,5).should == image.send(:steps,11,5)
17
+ end
18
+ end
19
+
20
+ describe '#resample_nearest_neighbor!' do
21
+ before(:all) { @reference = ChunkyPNG::Canvas.from_file(resource_file('nonsquare.png'))}
22
+
23
+ it "should resample [0,1,2,3] to 4x4 properly" do
24
+ OilyPNG::Canvas.new(2,2,[0,1,2,3]).resample_nearest_neighbor(4,4).should == OilyPNG::Canvas.new(4,4,[0,0,1,1,0,0,1,1,2,2,3,3,2,2,3,3])
25
+ end
26
+
27
+ it "should resample [0,1,2,3] to 99x45 as ChunkyPNG does" do
28
+ ChunkyPNG::Canvas.new(2,2,[0,1,2,3]).resample_nearest_neighbor(99,45).should == OilyPNG::Canvas.new(2,2,[0,1,2,3]).resample_nearest_neighbor(99,45)
29
+ end
30
+
31
+ it "should resample an image to 10x20 as ChunkyPNG does" do
32
+ @reference.resample_nearest_neighbor(10,20).should == OilyPNG::Canvas.from_canvas(@reference).resample_nearest_neighbor(10,20)
33
+ end
34
+
35
+ it "should resample an image to 11x19 as ChunkyPNG does" do
36
+ @reference.resample_nearest_neighbor(11,19).should == OilyPNG::Canvas.from_canvas(@reference).resample_nearest_neighbor(11,19)
37
+ end
38
+ end
39
+ end
@@ -13,8 +13,8 @@ module GithubGem
13
13
 
14
14
  # Detects the main include file of this project using heuristics
15
15
  def self.detect_main_include
16
- if detect_gemspec_file =~ /^(\.*)\.gemspec$/ && File.exist?("lib/#{$1}.rb")
17
- "lib/#{$1}.rb"
16
+ if File.exist?(File.expand_path("../lib/#{File.basename(detect_gemspec_file, '.gemspec').gsub(/-/, '/')}.rb", detect_gemspec_file))
17
+ "lib/#{File.basename(detect_gemspec_file, '.gemspec').gsub(/-/, '/')}.rb"
18
18
  elsif FileList['lib/*.rb'].length == 1
19
19
  FileList['lib/*.rb'].first
20
20
  else
@@ -24,6 +24,8 @@ module GithubGem
24
24
 
25
25
  class RakeTasks
26
26
 
27
+ include Rake::DSL if Rake.const_defined?('DSL')
28
+
27
29
  attr_reader :gemspec, :modified_files
28
30
  attr_accessor :gemspec_file, :task_namespace, :main_include, :root_dir, :spec_pattern, :test_pattern, :remote, :remote_branch, :local_branch
29
31
 
@@ -342,7 +344,7 @@ module GithubGem
342
344
  require 'net/https'
343
345
  require 'uri'
344
346
 
345
- uri = URI.parse('https://github.com/wvanbergen/github-gem/raw/master/tasks/github-gem.rake')
347
+ uri = URI.parse('https://raw.github.com/wvanbergen/github-gem/master/tasks/github-gem.rake')
346
348
  http = Net::HTTP.new(uri.host, uri.port)
347
349
  http.use_ssl = true
348
350
  http.verify_mode = OpenSSL::SSL::VERIFY_NONE
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 1
7
7
  - 0
8
- - 1
9
- version: 1.0.1
8
+ - 2
9
+ version: 1.0.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Willem van Bergen
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2011-05-08 00:00:00 -04:00
17
+ date: 2011-08-10 00:00:00 -04:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -27,7 +27,9 @@ dependencies:
27
27
  - !ruby/object:Gem::Version
28
28
  segments:
29
29
  - 1
30
- version: "1"
30
+ - 2
31
+ - 1
32
+ version: 1.2.1
31
33
  type: :runtime
32
34
  version_requirements: *id001
33
35
  - !ruby/object:Gem::Dependency
@@ -81,6 +83,7 @@ extra_rdoc_files:
81
83
  files:
82
84
  - .gitignore
83
85
  - .infinity_test
86
+ - .travis.yml
84
87
  - Gemfile
85
88
  - LICENSE
86
89
  - README.rdoc
@@ -96,6 +99,8 @@ files:
96
99
  - ext/oily_png/png_decoding.h
97
100
  - ext/oily_png/png_encoding.c
98
101
  - ext/oily_png/png_encoding.h
102
+ - ext/oily_png/resampling.c
103
+ - ext/oily_png/resampling.h
99
104
  - lib/oily_png.rb
100
105
  - lib/oily_png/canvas.rb
101
106
  - oily_png.gemspec
@@ -103,6 +108,7 @@ files:
103
108
  - spec/decoding_spec.rb
104
109
  - spec/encoding_spec.rb
105
110
  - spec/operations_spec.rb
111
+ - spec/resampling_spec.rb
106
112
  - spec/resources/basi0g01.png
107
113
  - spec/resources/basi0g02.png
108
114
  - spec/resources/basi0g04.png
@@ -235,3 +241,4 @@ test_files:
235
241
  - spec/decoding_spec.rb
236
242
  - spec/encoding_spec.rb
237
243
  - spec/operations_spec.rb
244
+ - spec/resampling_spec.rb