prawn-gmagick 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4e4a067e3eed31e6096f74f84c37b2d3eaa9bcea
4
- data.tar.gz: 96fe840639e07f64a9ef4f2fc85fe71d10ae17bc
3
+ metadata.gz: 36f911e7e87a31e89f93b49211a56ce55024dbd5
4
+ data.tar.gz: 7318c8ebde6566e2b35a3c2936403e5c5efbe7b0
5
5
  SHA512:
6
- metadata.gz: 47411205c6a42176be02029755540c8d81906fe82143b9d554d78e41255a62b63e82ad6fc31e83f64c05e2ee114eea4610d8d8e31779f321bd93a03408dcd397
7
- data.tar.gz: e5b4c20626ac8ed6f7c5c7cad4eee6b91c200ff61f06b6bae3df0859db73c2cc6f6da3a479ce312b2fbe79f0c6d2f3d3a54a4196140ae7675a6b8eadc8a51e4d
6
+ metadata.gz: 6322a6362d3b701aa5f4114da7387761937c0235f8d9764320995a0a7f2700a4e2c07c0699c6fb03c77cb656a368fc610cab92a6f3565f8a71e47ad5c8194910
7
+ data.tar.gz: cc1aababff5a1daf9e6ed50550b9a278d55aecf38c75e7951d9fbc6572beba34e9bc84205642112185bb4518985d9862521bc57690c4bffca01fcaf9a0803051
data/ext/image/image.c CHANGED
@@ -9,10 +9,15 @@ VALUE format(VALUE self, VALUE rb_image_blob)
9
9
  char *image_blob = RSTRING_PTR(rb_image_blob);
10
10
 
11
11
  InitializeMagick(".");
12
+
12
13
  MagickWand *magick_wand = NewMagickWand();
13
14
  MagickReadImageBlob(magick_wand, (const unsigned char *)image_blob, image_blob_length);
15
+
14
16
  format = MagickGetImageFormat(magick_wand);
15
17
 
18
+ DestroyMagickWand(magick_wand);
19
+ DestroyMagick();
20
+
16
21
  if (format) {
17
22
  return rb_str_new2(format);
18
23
  } else {
@@ -22,58 +27,84 @@ VALUE format(VALUE self, VALUE rb_image_blob)
22
27
 
23
28
  VALUE image_initialize(VALUE self, VALUE rb_image_blob)
24
29
  {
25
- MagickWand *magick_wand;
26
-
27
- InitializeMagick(".");
28
-
29
- magick_wand = NewMagickWand();
30
-
31
- long double image_blob_length = RSTRING_LEN(rb_image_blob);
32
- char *image_blob = RSTRING_PTR(rb_image_blob);
33
- MagickReadImageBlob(magick_wand, (const unsigned char *)image_blob, image_blob_length);
34
-
35
- VALUE rb_wand = Data_Wrap_Struct(rb_cObject, NULL, NULL, magick_wand);
36
-
37
- rb_funcall(self, rb_intern("wand="), 1, rb_wand);
38
30
  rb_funcall(self, rb_intern("blob="), 1, rb_image_blob);
39
-
40
31
  return Qtrue;
41
32
  }
42
33
 
43
34
  VALUE image_depth(VALUE self)
44
35
  {
45
- VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
46
- MagickWand *magick_wand;
47
- Data_Get_Struct(rb_wand, MagickWand, magick_wand);
36
+ InitializeMagick(".");
37
+ MagickWand *magick_wand = NewMagickWand();
38
+
39
+ VALUE rb_blob = rb_funcall(self, rb_intern("blob"), 0);
40
+ long double image_blob_length = RSTRING_LEN(rb_blob);
41
+ char *image_blob = RSTRING_PTR(rb_blob);
42
+
43
+ MagickReadImageBlob(magick_wand, image_blob, image_blob_length);
44
+
45
+ unsigned long depth = MagickGetImageDepth(magick_wand);
46
+
47
+ DestroyMagickWand(magick_wand);
48
+ DestroyMagick();
48
49
 
49
- unsigned long depth = MagickGetImageChannelDepth(magick_wand, RedChannel);
50
50
  return INT2NUM(depth);
51
51
  }
52
52
 
53
53
  VALUE image_width(VALUE self)
54
54
  {
55
- VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
56
- MagickWand *magick_wand;
57
- Data_Get_Struct(rb_wand, MagickWand, magick_wand);
55
+ InitializeMagick(".");
56
+ MagickWand *magick_wand = NewMagickWand();
57
+
58
+ VALUE rb_blob = rb_funcall(self, rb_intern("blob"), 0);
59
+ long double image_blob_length = RSTRING_LEN(rb_blob);
60
+ char *image_blob = RSTRING_PTR(rb_blob);
61
+
62
+ MagickReadImageBlob(magick_wand, image_blob, image_blob_length);
63
+
58
64
  unsigned long width = MagickGetImageWidth(magick_wand);
65
+
66
+ DestroyMagickWand(magick_wand);
67
+ DestroyMagick();
68
+
69
+
59
70
  return INT2NUM(width);
60
71
  }
61
72
 
62
73
  VALUE image_height(VALUE self)
63
74
  {
64
- VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
65
- MagickWand *magick_wand;
66
- Data_Get_Struct(rb_wand, MagickWand, magick_wand);
75
+ InitializeMagick(".");
76
+ MagickWand *magick_wand = NewMagickWand();
77
+
78
+ VALUE rb_blob = rb_funcall(self, rb_intern("blob"), 0);
79
+ long double image_blob_length = RSTRING_LEN(rb_blob);
80
+ char *image_blob = RSTRING_PTR(rb_blob);
81
+
82
+ MagickReadImageBlob(magick_wand, image_blob, image_blob_length);
83
+
67
84
  unsigned long height = MagickGetImageHeight(magick_wand);
85
+
86
+ DestroyMagickWand(magick_wand);
87
+ DestroyMagick();
88
+
68
89
  return INT2NUM(height);
69
90
  }
70
91
 
71
92
  VALUE image_colorspace(VALUE self)
72
93
  {
73
- VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
74
- MagickWand *magick_wand;
75
- Data_Get_Struct(rb_wand, MagickWand, magick_wand);
94
+ InitializeMagick(".");
95
+ MagickWand *magick_wand = NewMagickWand();
96
+
97
+ VALUE rb_blob = rb_funcall(self, rb_intern("blob"), 0);
98
+ long double image_blob_length = RSTRING_LEN(rb_blob);
99
+ char *image_blob = RSTRING_PTR(rb_blob);
100
+
101
+ MagickReadImageBlob(magick_wand, image_blob, image_blob_length);
102
+
76
103
  ColorspaceType color_space = MagickGetImageColorspace(magick_wand);
104
+
105
+ DestroyMagickWand(magick_wand);
106
+ DestroyMagick();
107
+
77
108
  if (color_space == RGBColorspace) {
78
109
  return ID2SYM(rb_intern("DeviceRGB"));
79
110
  } else if (color_space == CMYKColorspace) {
@@ -85,13 +116,18 @@ VALUE image_colorspace(VALUE self)
85
116
 
86
117
  VALUE image_unpack(VALUE self)
87
118
  {
88
- VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
89
- MagickWand *magick_wand;
90
- Data_Get_Struct(rb_wand, MagickWand, magick_wand);
91
- ColorspaceType color_space = MagickGetImageColorspace(magick_wand);
119
+ InitializeMagick(".");
120
+ MagickWand *magick_wand = NewMagickWand();
121
+
122
+ VALUE rb_blob = rb_funcall(self, rb_intern("blob"), 0);
123
+ long double image_blob_length = RSTRING_LEN(rb_blob);
124
+ char *image_blob = RSTRING_PTR(rb_blob);
92
125
 
93
- int height = NUM2INT( rb_funcall(self, rb_intern("height"), 0) );
94
- int width = NUM2INT( rb_funcall(self, rb_intern("width"), 0) );
126
+ MagickReadImageBlob(magick_wand, image_blob, image_blob_length);
127
+
128
+ ColorspaceType color_space = MagickGetImageColorspace(magick_wand);
129
+ unsigned long height = MagickGetImageHeight(magick_wand);
130
+ unsigned long width = MagickGetImageWidth(magick_wand);
95
131
  int pixel_count = height * width;
96
132
  int buffer_size;
97
133
  char color_format[8];
@@ -108,38 +144,60 @@ VALUE image_unpack(VALUE self)
108
144
  }
109
145
 
110
146
  pixels = (unsigned char *)malloc(buffer_size * sizeof(char));
147
+
148
+
111
149
  MagickGetImagePixels(magick_wand, 0, 0, width, height, color_format, CharPixel, pixels);
112
150
 
113
- return rb_str_new((const char *)pixels, buffer_size);
151
+ VALUE rb_pixels = rb_str_new((const char *)pixels, buffer_size);
152
+
153
+ free(pixels);
154
+ DestroyMagickWand(magick_wand);
155
+ DestroyMagick();
156
+
157
+ return rb_pixels;
114
158
  }
115
159
 
116
160
  VALUE image_alpha_unpack(VALUE self)
117
161
  {
118
- VALUE rb_wand = rb_funcall(self, rb_intern("wand"), 0);
119
- MagickWand *magick_wand;
120
- Data_Get_Struct(rb_wand, MagickWand, magick_wand);
121
- int height = NUM2INT( rb_funcall(self, rb_intern("height"), 0) );
122
- int width = NUM2INT( rb_funcall(self, rb_intern("width"), 0) );
162
+ InitializeMagick(".");
163
+ MagickWand *magick_wand = NewMagickWand();
164
+
165
+ VALUE rb_blob = rb_funcall(self, rb_intern("blob"), 0);
166
+ long double image_blob_length = RSTRING_LEN(rb_blob);
167
+ char *image_blob = RSTRING_PTR(rb_blob);
168
+
169
+ MagickReadImageBlob(magick_wand, image_blob, image_blob_length);
170
+
171
+ unsigned long height = MagickGetImageHeight(magick_wand);
172
+ unsigned long width = MagickGetImageWidth(magick_wand);
123
173
  int pixel_count = height * width;
124
174
  unsigned char *pixels;
125
175
 
126
176
  pixels = (unsigned char *)malloc(pixel_count * sizeof(char));
177
+
127
178
  MagickGetImagePixels(magick_wand, 0, 0, width, height, "A", CharPixel, pixels);
128
- return rb_str_new((const char *)pixels, pixel_count);
179
+
180
+ VALUE rb_pixels = rb_str_new((const char *)pixels, pixel_count);
181
+
182
+ free(pixels);
183
+ DestroyMagickWand(magick_wand);
184
+ DestroyMagick();
185
+
186
+ return rb_pixels;
129
187
  }
130
188
 
131
189
  void Init_image(void)
132
190
  {
133
- // Deine our name spaces and classes
191
+ // Define our name spaces and classes
134
192
  VALUE m_gmagick = rb_define_module("GMagick");
135
- VALUE c_image = rb_define_class_under(m_gmagick, "Image", rb_cObject);
193
+ VALUE c_image = rb_define_class_under(m_gmagick, "Image", rb_cObject);
136
194
 
137
195
  // Define our class methods
138
196
  rb_define_singleton_method(c_image, "format", format, 1);
139
197
 
140
198
  // Define our instance methods
141
199
  rb_define_attr(c_image, "blob", 1, 1);
142
- rb_define_attr(c_image, "wand", 1, 1);
200
+
143
201
  rb_define_method(c_image, "initialize", image_initialize, 1);
144
202
  rb_define_method(c_image, "depth", image_depth, 0);
145
203
  rb_define_method(c_image, "width", image_width, 0);
data/lib/image.so ADDED
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prawn-gmagick
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Sharp
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-05-07 00:00:00.000000000 Z
11
+ date: 2015-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: prawn
@@ -68,11 +68,9 @@ files:
68
68
  - README.markdown
69
69
  - Rakefile
70
70
  - ext/image/extconf.rb
71
- - ext/image/image.bundle
72
71
  - ext/image/image.c
73
- - lib/image.bundle
72
+ - lib/image.so
74
73
  - lib/prawn/gmagick.rb
75
- - lib/prawn/gmagick/image.bundle
76
74
  - test/fixtures/ascii.txt
77
75
  - test/fixtures/cmyk.jpg
78
76
  - test/fixtures/random.bin
@@ -112,3 +110,4 @@ signing_key:
112
110
  specification_version: 4
113
111
  summary: Use GraphicsMagick to load images in a Prawn docuemnt
114
112
  test_files: []
113
+ has_rdoc:
Binary file
data/lib/image.bundle DELETED
Binary file
Binary file