void ImageWidget::SaveSvg(const std::string &filename) { unsigned width = get_width(), height = get_height(); Cairo::RefPtr<Cairo::SvgSurface> surface = Cairo::SvgSurface::create(filename, width, height); Cairo::RefPtr<Cairo::Context> cairo = Cairo::Context::create(surface); if(HasImage()) { AOLogger::Debug << "Saving SVG of " << get_width() << " x " << get_height() << "\n"; update(cairo, width, height); } cairo->show_page(); surface->finish(); }
void ImageWidget::SavePdf(const std::string &filename) { unsigned width = get_width(), height = get_height(); Cairo::RefPtr<Cairo::PdfSurface> surface = Cairo::PdfSurface::create(filename, width, height); Cairo::RefPtr<Cairo::Context> cairo = Cairo::Context::create(surface); if(HasImage()) { AOLogger::Debug << "Saving PDF of " <<get_width() << " x " << get_height() << "\n"; update(cairo, width, height); } cairo->show_page(); // We finish the surface. This might be required, because some of the subclasses store the cairo context. In that // case, it won't be written. surface->finish(); }