lilimg 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/ext/lilimg/lilimg.c +49 -38
  3. data/lilimg.gemspec +1 -1
  4. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e83dd2093f90c03ce964311c52f00b0da89958b7d44e01c50957c9659a36080a
4
- data.tar.gz: 8738853fefaa819657f92429aa2e5beaf6c7b58105fd4a3b053cb4970d8500c0
3
+ metadata.gz: bdc6fc2f84a1003b4cd672530e0b9c0aefb50c8970c09bb0c0779f6d0a095a07
4
+ data.tar.gz: 630a7f496e536c17bcd1de5165e9d3981ac8a00e41e9491116399ef5fd530c7d
5
5
  SHA512:
6
- metadata.gz: ca3125f68b87fb3e53db6a292bb4ae83c7af3940b2c97ea4852dc05beb17e4d864ee5f8cad6fb547e8d30df21aed0cfb498ce9361c34a9f142745d01169448a0
7
- data.tar.gz: fc7cf2c00db10b1b98e74595b11d252642593f6736ae40f5f82c804d33dff3e3e40cdaf7a22a906dc216708f5de8f47390b81f8d318139f20e96ae78ce1ae8e0
6
+ metadata.gz: b7211d65cf200f9754e24b7f08b7e187041c4f0256dc5cff50935add105cb8d619ddbea292a4b7c9f73c516c997f1943018ecad8de770fcfd3bf17ac2acac70a
7
+ data.tar.gz: 7b9cec47e6e248bda6617eff400da2b7e43ef5c912d6faa33fbb78750b24a6910fbe9a80ae1062e3ce76ef02c168e91c85627d2ae3bc4d86dc573321c603cb0f
data/ext/lilimg/lilimg.c CHANGED
@@ -7,60 +7,71 @@
7
7
  #include "jo_gif.h"
8
8
 
9
9
  unsigned char * rgb_to_rgba(unsigned char * buf, int w, int h) {
10
- int newsize = 4 * w * h;
11
- unsigned char * dest;
12
- dest = malloc(newsize);
13
- int s = 0, d = 0;
14
- while (d < newsize) {
15
- dest[d++] = buf[s++];
16
- dest[d++] = buf[s++];
17
- dest[d++] = buf[s++];
18
- dest[d++] = 255; // fully opaque
19
- }
20
-
21
- return dest;
10
+ int newsize = 4 * w * h;
11
+ unsigned char * dest;
12
+ dest = malloc(newsize);
13
+ int s = 0, d = 0;
14
+ while (d < newsize) {
15
+ dest[d++] = buf[s++];
16
+ dest[d++] = buf[s++];
17
+ dest[d++] = buf[s++];
18
+ dest[d++] = 255; // fully opaque
19
+ }
20
+
21
+ return dest;
22
22
  }
23
23
 
24
24
  static VALUE jpeg_to_gif(VALUE self, VALUE buf) {
25
- rb_check_type(buf, T_STRING);
26
- int size = RSTRING_LEN(buf);
27
- char * jpeg = StringValuePtr(buf);
25
+ rb_check_type(buf, T_STRING);
26
+
27
+ if (buf[0] != 0xFF || buf[1] != 0xD8) {
28
+ rb_raise(rb_eRuntimeError, "Not a JPEG image!");
29
+ return Qnil;
30
+ }
28
31
 
29
- njInit();
30
- if (njDecode(jpeg, size)) {
31
- free((void*)jpeg);
32
- rb_raise(rb_eRuntimeError, "Error decoding input file (size %d)", size);
33
- return Qnil;
34
- }
32
+ int size = RSTRING_LEN(buf);
33
+ char * jpeg = StringValuePtr(buf);
34
+ njInit();
35
35
 
36
+ if (njDecode(jpeg, size)) {
36
37
  free((void*)jpeg);
38
+ rb_raise(rb_eRuntimeError, "Error decoding input file (size %d)", size);
39
+ return Qnil;
40
+ }
41
+
42
+ free((void*)jpeg);
43
+
44
+ unsigned char * pixels = njGetImage();
45
+ if (!pixels) {
46
+ rb_raise(rb_eRuntimeError, "Couldn't decode image.");
47
+ return Qnil;
48
+ }
37
49
 
38
- char * out;
50
+ char * out;
39
51
  size_t bufsize;
40
52
  FILE * fp = open_memstream(&out, &bufsize);
41
53
  // FILE * fp = fopen("output.gif", "wb");
42
54
 
43
- if (!fp) {
44
- rb_raise(rb_eRuntimeError, "Cannot initialize memstream");
45
- return Qnil;
46
- }
55
+ if (!fp) {
56
+ rb_raise(rb_eRuntimeError, "Cannot initialize memstream");
57
+ return Qnil;
58
+ }
47
59
 
48
- unsigned char * pixels = njGetImage();
49
- unsigned char * rgba = rgb_to_rgba(pixels, njGetWidth(), njGetHeight());
50
- int maxColors = 8;
60
+ unsigned char * rgba = rgb_to_rgba(pixels, njGetWidth(), njGetHeight());
61
+ int maxColors = 8;
51
62
 
52
- jo_gif_t gif = jo_gif_start(fp, njGetWidth(), njGetHeight(), 0, maxColors);
53
- jo_gif_frame(&gif, rgba, 0, 0);
54
- jo_gif_end(&gif);
63
+ jo_gif_t gif = jo_gif_start(fp, njGetWidth(), njGetHeight(), 0, maxColors);
64
+ jo_gif_frame(&gif, rgba, 0, 0);
65
+ jo_gif_end(&gif);
55
66
 
56
- VALUE rstr;
57
- rstr = rb_str_new(out, bufsize);
67
+ VALUE rstr;
68
+ rstr = rb_str_new(out, bufsize);
58
69
 
59
- free(rgba);
60
- free(out);
61
- njDone();
70
+ free(rgba);
71
+ free(out);
72
+ njDone();
62
73
 
63
- return rstr;
74
+ return rstr;
64
75
  }
65
76
 
66
77
  VALUE Lilimg = Qnil;
data/lilimg.gemspec CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'lilimg'
5
- s.version = '0.0.2'
5
+ s.version = '0.0.3'
6
6
  s.platform = Gem::Platform::RUBY
7
7
  s.authors = ['Tomas Pollak']
8
8
  s.email = ['tomas@forkhq.com']
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lilimg
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tomas Pollak