40 #include "SVGItem.rcd" 41 #include "cairo_base.h" 43 #include <librsvg-2.0/librsvg/rsvg.h> 48 #include <librsvg-2.0/librsvg/rsvg-cairo.h> 57 void SVGRenderer::setResource(
const std::string& resource)
59 if (svg) g_object_unref(svg);
61 svg=rsvg_handle_new_from_file(resource.c_str(),&err);
64 std::string msg=
"SVGRenderer failed to initialise: ";
67 throw runtime_error(msg);
69 #ifdef MXE // MXE doesn't currently have a Rust compiler, so librsvg can be no later than 2.40.21 70 RsvgDimensionData dims;
71 rsvg_handle_get_dimensions(svg, &dims);
78 SVGRenderer::~SVGRenderer()
84 void SVGRenderer::render(cairo_t* cairo,
double width,
double height)
const 87 #ifdef MXE // MXE doesn't currently have a Rust compiler, so librsvg can be no later than 2.40.21 88 cairo_scale(cairo,width/m_width, height/m_height);
89 rsvg_handle_render_cairo(svg,cairo);
93 const RsvgRectangle rect{0,0,width,height};
94 rsvg_handle_render_document(svg,cairo,&rect,&err);
CLASSDESC_ACCESS_EXPLICIT_INSTANTIATION(minsky::SVGRenderer)