void gfxdevice_record_init(gfxdevice_t*dev, char use_tempfile) { internal_t*i = (internal_t*)rfx_calloc(sizeof(internal_t)); memset(dev, 0, sizeof(gfxdevice_t)); dev->name = "record"; dev->internal = i; i->use_tempfile = use_tempfile; if(!use_tempfile) { writer_init_growingmemwriter(&i->w, 1048576); } else { char buffer[128]; i->filename = strdup(mktempname(buffer, "gfx")); writer_init_filewriter2(&i->w, i->filename); } i->fontlist = gfxfontlist_create(); i->cliplevel = 0; dev->setparameter = record_setparameter; dev->startpage = record_startpage; dev->startclip = record_startclip; dev->endclip = record_endclip; dev->stroke = record_stroke; dev->fill = record_fill; dev->fillbitmap = record_fillbitmap; dev->fillgradient = record_fillgradient; dev->addfont = record_addfont; dev->drawchar = record_drawchar; dev->drawlink = record_drawlink; dev->endpage = record_endpage; dev->finish = record_finish; }
static VALUE doc_initialize(VALUE cls, VALUE _filename) { Check_Type(_filename, T_STRING); Get_Doc(doc,cls); 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; }