Class: GD::Gif
- Inherits:
-
Object
- Object
- GD::Gif
- Defined in:
- ext/gd/gif.c
Instance Method Summary collapse
-
#add_frame(*args) ⇒ Object
gif.add_frame(img, delay: 50).
-
#close ⇒ Object
gif.close.
-
#initialize(*args) ⇒ Object
constructor
GD::Gif.new(“file.gif”, loop: true).
Constructor Details
#initialize(*args) ⇒ Object
GD::Gif.new(“file.gif”, loop: true)
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
# File 'ext/gd/gif.c', line 54 static VALUE gd_gif_initialize(int argc, VALUE *argv, VALUE self) { VALUE path, opts; rb_scan_args(argc, argv, "11", &path, &opts); gd_gif_wrapper *gif; TypedData_Get_Struct(self, gd_gif_wrapper, &gd_gif_type, gif); const char *filename = StringValueCStr(path); gif->out = fopen(filename, "wb"); if (!gif->out) rb_sys_fail(filename); gif->started = 0; gif->prev = NULL; gif->prev_rb = Qnil; gif->loop = 0; if (opts != Qnil) { VALUE loopv = rb_hash_aref(opts, ID2SYM(rb_intern("loop"))); if (loopv == Qfalse) { gif->loop = -1; } } return self; } |
Instance Method Details
#add_frame(*args) ⇒ Object
gif.add_frame(img, delay: 50)
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 |
# File 'ext/gd/gif.c', line 83 static VALUE gd_gif_add_frame(int argc, VALUE *argv, VALUE self) { VALUE rb_img, opts; rb_scan_args(argc, argv, "11", &rb_img, &opts); gd_image_wrapper *wrap; TypedData_Get_Struct(rb_img, gd_image_wrapper, &gd_image_type, wrap); gd_gif_wrapper *gif; TypedData_Get_Struct(self, gd_gif_wrapper, &gd_gif_type, gif); int delay = 50; if (opts != Qnil) { VALUE d = rb_hash_aref(opts, ID2SYM(rb_intern("delay"))); if (!NIL_P(d)) delay = NUM2INT(d); } if (!gif->started) { gdImageGifAnimBegin(wrap->img, gif->out, 1, gif->loop); gif->started = 1; } gdImageGifAnimAdd( wrap->img, gif->out, 1, 0, 0, delay, 1, gif->prev ); gif->prev = wrap->img; gif->prev_rb = rb_img; /* prevent GC */ return Qtrue; } |
#close ⇒ Object
gif.close
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
# File 'ext/gd/gif.c', line 123 static VALUE gd_gif_close(VALUE self) { gd_gif_wrapper *gif; TypedData_Get_Struct(self, gd_gif_wrapper, &gd_gif_type, gif); if (gif->out) { if (gif->started) { gdImageGifAnimEnd(gif->out); } fclose(gif->out); gif->out = NULL; } gif->prev = NULL; gif->prev_rb = Qnil; return Qtrue; } |