added vectors_to_glyphs filter
[swftools.git] / lib / ruby / gfx.c
index 5ea59cd..3227449 100644 (file)
@@ -234,7 +234,7 @@ static VALUE image_has_alpha(VALUE cls)
     gfxcolor_t*data = image->image->data;
     int t;
     for(t=0;t<size;t++) {
-       if(data->a!=255) 
+       if(data[t].a!=255) 
            return Qtrue;
     }
     return Qfalse;
@@ -437,6 +437,7 @@ static ID id_radial = 0;
 static ID id_linear = 0;
 static ID id_remove_font_transforms = 0;
 static ID id_maketransparent = 0;
+static ID id_vectors_to_glyphs = 0;
 
 static VALUE noop(int argc, VALUE *argv, VALUE obj) {return obj;}
 
@@ -625,7 +626,8 @@ void rb_drawlink(gfxdevice_t*dev, gfxline_t*line, const char*action)
     HEAD
     volatile VALUE v_line = convert_line(line);
     volatile VALUE v_action = rb_tainted_str_new2(action);
-    forward(v, id_drawlink, v_line, v_action);
+
+    forward(v, id_drawlink, 2, v_line, v_action);
 }
 void rb_endpage(gfxdevice_t*dev)
 {
@@ -706,6 +708,8 @@ static VALUE doc_render(VALUE cls, VALUE device, VALUE _range, VALUE filters)
                            else x = RARRAY(filters)->ptr[t++];
            if(id == id_remove_font_transforms) {
                wrap_filter2(dev, remove_font_transforms);
+           } else if(id == id_vectors_to_glyphs) {
+               wrap_filter2(dev, vectors_to_glyphs);
            } else if(id == id_maketransparent) {
                PARAM(alpha);
                wrap_filter(dev, maketransparent, FIX2INT(alpha));
@@ -766,6 +770,7 @@ void Init_gfx()
     imagedriver = gfxsource_image_create();
 
     GFX = rb_define_module("GFX");
+    rb_define_const(GFX, "VERSION", INT2FIX(20100309));
     
     rb_define_module_function(GFX, "setparameter", gfx_setparameter, 2);
     
@@ -854,5 +859,6 @@ void Init_gfx()
     id_linear = rb_intern("linear");
     id_remove_font_transforms = rb_intern("remove_font_transforms");
     id_maketransparent = rb_intern("maketransparent");
+    id_vectors_to_glyphs = rb_intern("vectors_to_glyphs");
 }