jpeg 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -1,10 +1,10 @@
1
1
  = jpeg
2
- A libjpeg wrapper for ruby
2
+ A libjpeg wrapper for ruby
3
3
  == Install
4
4
  gem install jpeg
5
5
 
6
6
  or
7
- echo 'gem "jpeg"' > Gemfile
7
+ echo 'gem "jpeg"' >> Gemfile
8
8
  bundle install
9
9
 
10
10
  == Usage
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.0.2
1
+ 0.1.0
data/ext/jpeg_jpeg.c CHANGED
@@ -5,7 +5,6 @@
5
5
  VALUE Jpeg;
6
6
 
7
7
  static VALUE jpeg_jpeg_s_open(int argc, VALUE *argv, VALUE sef);
8
- static VALUE jpeg_jpeg_s_open_buffer(int argc, VALUE *argv, VALUE sef);
9
8
  static VALUE jpeg_jpeg_alloc(VALUE klass);
10
9
  static void jpeg_jpeg_mark(struct jpeg_jpeg *p);
11
10
  static void jpeg_jpeg_free(struct jpeg_jpeg *p);
@@ -17,7 +16,6 @@ void Init_jpeg_jpeg() {
17
16
  Jpeg = rb_define_class("Jpeg", rb_cObject);
18
17
  rb_define_alloc_func(Jpeg, jpeg_jpeg_alloc);
19
18
  rb_define_singleton_method(Jpeg, "open", jpeg_jpeg_s_open, -1);
20
- rb_define_singleton_method(Jpeg, "open_buffer", jpeg_jpeg_s_open_buffer, -1);
21
19
  rb_define_method(Jpeg, "width", jpeg_jpeg_width, 0);
22
20
  rb_define_method(Jpeg, "height", jpeg_jpeg_height, 0);
23
21
  rb_define_method(Jpeg, "size", jpeg_jpeg_size, 0);
@@ -39,11 +37,14 @@ static void jpeg_jpeg_mark(struct jpeg_jpeg *p) {
39
37
  }
40
38
 
41
39
  static void jpeg_jpeg_free(struct jpeg_jpeg *p) {
42
- // if (p->read) {
43
- // jpeg_destroy_compress(p->read);
44
- // free(p->read);
45
- //}
46
- //xfree(p);
40
+ if (p->read) {
41
+ jpeg_destroy_compress(p->read);
42
+ free(p->read);
43
+ }
44
+ if (p->error) {
45
+ free(p->error);
46
+ }
47
+ xfree(p);
47
48
  }
48
49
 
49
50
  static VALUE jpeg_jpeg_s_open(int argc, VALUE *argv, VALUE self) {
@@ -58,7 +59,9 @@ static VALUE jpeg_jpeg_s_open(int argc, VALUE *argv, VALUE self) {
58
59
  jpeg = rb_funcall(Jpeg, rb_intern("new"), 0);
59
60
  Data_Get_Struct(jpeg, struct jpeg_jpeg, p_jpeg);
60
61
 
61
- fp = fopen(RSTRING_PTR(path), "rb");
62
+ if ((fp = fopen(RSTRING_PTR(path), "rb")) == NULL) {
63
+ rb_raise(rb_eRuntimeError, "Open file failed");
64
+ }
62
65
  jpeg_stdio_src(p_jpeg->read, fp);
63
66
  jpeg_read_header(p_jpeg->read, TRUE);
64
67
  jpeg_start_decompress(p_jpeg->read);
@@ -66,30 +69,6 @@ static VALUE jpeg_jpeg_s_open(int argc, VALUE *argv, VALUE self) {
66
69
  return jpeg;
67
70
  }
68
71
 
69
- static VALUE jpeg_jpeg_s_open_buffer(int argc, VALUE *argv, VALUE self) {
70
- VALUE buffer;
71
- VALUE jpeg;
72
- struct jpeg_jpeg *p_jpeg;
73
- void *data = NULL;
74
- int len = 0;
75
- int errorp;
76
- int buffer_is_temporary = 0;
77
-
78
- rb_scan_args(argc, argv, "1", &buffer);
79
-
80
- if (TYPE(buffer) == T_STRING) {
81
- data = RSTRING_PTR(buffer);
82
- len = RSTRING_LEN(buffer);
83
- } else {
84
- rb_raise(rb_eTypeError, "wrong argument type %s (expected String)", rb_class2name(CLASS_OF(buffer)));
85
- }
86
-
87
- jpeg = rb_funcall(Jpeg, rb_intern("new"), 0);
88
- Data_Get_Struct(jpeg, struct jpeg_jpeg, p_jpeg);
89
-
90
- return jpeg;
91
- }
92
-
93
72
  static VALUE jpeg_jpeg_width(VALUE self) {
94
73
  struct jpeg_jpeg *p_jpeg;
95
74
  Data_Get_Struct(self, struct jpeg_jpeg, p_jpeg);
data/jpeg.gemspec ADDED
@@ -0,0 +1,67 @@
1
+ # Generated by jeweler
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
+ # -*- encoding: utf-8 -*-
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = "jpeg"
8
+ s.version = "0.1.0"
9
+
10
+ s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
+ s.authors = ["masarakki"]
12
+ s.date = "2012-03-29"
13
+ s.description = "libjpeg wrapper for ruby"
14
+ s.email = "masaki@hisme.net"
15
+ s.extensions = ["ext/extconf.rb"]
16
+ s.extra_rdoc_files = [
17
+ "LICENSE.txt",
18
+ "README.rdoc"
19
+ ]
20
+ s.files = [
21
+ ".document",
22
+ ".rspec",
23
+ "Gemfile",
24
+ "Gemfile.lock",
25
+ "LICENSE.txt",
26
+ "README.rdoc",
27
+ "Rakefile",
28
+ "VERSION",
29
+ "ext/extconf.rb",
30
+ "ext/jpeg.c",
31
+ "ext/jpeg.h",
32
+ "ext/jpeg_jpeg.c",
33
+ "ext/jpeg_jpeg.h",
34
+ "jpeg.gemspec",
35
+ "lib/jpeg.rb",
36
+ "spec/jpeg_spec.rb",
37
+ "spec/samples/sample.jpg",
38
+ "spec/spec_helper.rb"
39
+ ]
40
+ s.homepage = "http://github.com/masarakki/jpeg"
41
+ s.licenses = ["MIT"]
42
+ s.require_paths = ["lib"]
43
+ s.rubygems_version = "1.8.21"
44
+ s.summary = "libjpeg wrapper for ruby"
45
+
46
+ if s.respond_to? :specification_version then
47
+ s.specification_version = 3
48
+
49
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
50
+ s.add_development_dependency(%q<rspec>, [">= 0"])
51
+ s.add_development_dependency(%q<rdoc>, [">= 0"])
52
+ s.add_development_dependency(%q<bundler>, [">= 0"])
53
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
54
+ else
55
+ s.add_dependency(%q<rspec>, [">= 0"])
56
+ s.add_dependency(%q<rdoc>, [">= 0"])
57
+ s.add_dependency(%q<bundler>, [">= 0"])
58
+ s.add_dependency(%q<jeweler>, [">= 0"])
59
+ end
60
+ else
61
+ s.add_dependency(%q<rspec>, [">= 0"])
62
+ s.add_dependency(%q<rdoc>, [">= 0"])
63
+ s.add_dependency(%q<bundler>, [">= 0"])
64
+ s.add_dependency(%q<jeweler>, [">= 0"])
65
+ end
66
+ end
67
+
data/lib/jpeg.rb ADDED
@@ -0,0 +1,10 @@
1
+ require 'tempfile'
2
+ require 'jpeg.so'
3
+ class Jpeg
4
+ def self.open_buffer(str)
5
+ tmp = Tempfile::new("ruby-jpeg")
6
+ jpeg = Jpeg.open(tmp.path)
7
+ tmp.close
8
+ jpeg
9
+ end
10
+ end
data/spec/jpeg_spec.rb CHANGED
@@ -1,7 +1,36 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
+ def sample_file_path(file)
4
+ File.join(File.dirname(__FILE__), 'samples', file)
5
+ end
6
+
3
7
  describe "Jpeg" do
4
- it "fails" do
5
- fail "hey buddy, you should probably rename this file and start specing for real"
8
+ subject { @jpeg }
9
+ describe :open do
10
+ context "valid jpeg" do
11
+ before { @jpeg = Jpeg.open(sample_file_path("sample.jpg")) }
12
+ its(:size) { should == [112, 112] }
13
+ its(:width) { should == 112 }
14
+ its(:height) { should == 112 }
15
+ end
16
+ context "non-exists file" do
17
+ it {
18
+ lambda {
19
+ Jpeg.open(sample_file_path("nonexists.jpg"))
20
+ }.should raise_error
21
+ }
22
+ end
23
+
24
+ context "not a correct jpeg file" do
25
+ it {
26
+ lambda {
27
+ Jpeg.open(sample_file_path("sample.png"))
28
+ }.should raise_error
29
+ }
30
+ end
31
+ end
32
+ describe :from_string do
33
+ before { @jpeg = Jpeg.open_buffer(File.open(sample_file_path("sample.jpg")).read) }
34
+ its(:size) { should == [112, 112] }
6
35
  end
7
36
  end
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jpeg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-28 00:00:00.000000000 Z
12
+ date: 2012-03-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -97,7 +97,10 @@ files:
97
97
  - ext/jpeg.h
98
98
  - ext/jpeg_jpeg.c
99
99
  - ext/jpeg_jpeg.h
100
+ - jpeg.gemspec
101
+ - lib/jpeg.rb
100
102
  - spec/jpeg_spec.rb
103
+ - spec/samples/sample.jpg
101
104
  - spec/spec_helper.rb
102
105
  homepage: http://github.com/masarakki/jpeg
103
106
  licenses:
@@ -114,7 +117,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
117
  version: '0'
115
118
  segments:
116
119
  - 0
117
- hash: 1223134826035652440
120
+ hash: -2749025185700545883
118
121
  required_rubygems_version: !ruby/object:Gem::Requirement
119
122
  none: false
120
123
  requirements: