X-Git-Url: http://git.asbjorn.biz/?p=swftools.git;a=blobdiff_plain;f=lib%2Fruby%2Fgfx.c;h=9384d1904be9731026911339652c1fc64a8a62ad;hp=1ba0c1e8046d0f4854d0b4a8904e938850bb1ed0;hb=2ddfa640af28b592ecf4295f0b1b7b43c923f707;hpb=006f7afc9efc533175af7eba679998af948adfa3 diff --git a/lib/ruby/gfx.c b/lib/ruby/gfx.c index 1ba0c1e..9384d19 100644 --- a/lib/ruby/gfx.c +++ b/lib/ruby/gfx.c @@ -63,6 +63,9 @@ static VALUE doc_initialize(VALUE cls, VALUE _filename) const char*filename = StringValuePtr(_filename); doc->fontlist = gfxfontlist_create(); doc->doc = pdfdriver->open(pdfdriver, filename); + if(!doc->doc) { + rb_raise(rb_eIOError, "couldn't open %s", filename); + } return cls; } @@ -220,7 +223,7 @@ static VALUE image_save_jpeg(VALUE cls, VALUE _filename, VALUE quality) Check_Type(_filename, T_STRING); Check_Type(quality, T_FIXNUM); const char*filename = StringValuePtr(_filename); - gfximage_save_jpeg(image->image, FIX2INT(quality), filename); + gfximage_save_jpeg(image->image, filename, FIX2INT(quality)); return cls; } static VALUE image_save_png(VALUE cls, VALUE _filename) @@ -281,6 +284,16 @@ static VALUE glyph_advance(VALUE cls) return rb_float_new(glyph->font->font->glyphs[glyph->nr].advance); } +static VALUE glyph_bbox(VALUE cls) +{ + Get_Glyph(glyph,cls); + gfxbbox_t bbox = gfxline_getbbox(glyph->font->font->glyphs[glyph->nr].line); + return rb_ary_new3(4, rb_float_new(bbox.xmin), + rb_float_new(bbox.ymin), + rb_float_new(bbox.xmax), + rb_float_new(bbox.ymax)); +} + static VALUE glyph_unicode(VALUE cls) { Get_Glyph(glyph,cls); @@ -310,6 +323,18 @@ static VALUE font_allocate(VALUE cls) return v; } +static VALUE font_ascent(VALUE cls) +{ + Get_Font(font,cls); + return rb_float_new(font->font->ascent); +} + +static VALUE font_descent(VALUE cls) +{ + Get_Font(font,cls); + return rb_float_new(font->font->descent); +} + static VALUE font_name(VALUE cls) { Get_Font(font,cls); @@ -322,6 +347,23 @@ static VALUE font_glyphs(VALUE cls) return font->glyph_array; } +static VALUE font_kerning(VALUE cls) +{ + Get_Font(font,cls); + gfxkerning_t*kerning = font->font->kerning; + int kerning_size = font->font->kerning_size; + volatile VALUE a = rb_ary_new2(kerning_size); + int t; + for(t=0;t