2016-06-27 2 views
0

Existe-t-il un moyen de charger un fichier SVG à partir d'un fichier, puis de le restituer sur un canevas Cairo? Idéalement quelque chose comme:Rendu de SVG à partir du fichier au canevas du Caire dans Julia

image = read_from_svg("my.svg") 
set_source_surface(cr, image, 0, 0) 
paint(cr) 
+2

double possible de [la charge svg avec le Caire] (http://stackoverflow.com/questions/21152068/load-svg-with-cairo) – oldtechaa

+0

Voir aussi https: // stackoverflow. com/questions/13709243/create-cairo-path-from-svg-file? rq = 1 – oldtechaa

+0

Merci pour les commentaires. On dirait qu'il n'y a pas de façon intégrée de le faire dans Julia atm. Il peut être possible d'appeler librsvg via une liaison C++. La chose CairoSVG ne semble pas me donner un objet interne que je peux appeler set_source_surface(), et je ne veux pas convertir en PNG en externe, puis charger cela. – Mageek

Répondre

1

Il y a le paquet Rsvg.jl qui enveloppe la bibliothèque rsvg. Le paquet peut être installé avec Pkg.add("Rsvg"). Vous devrez peut-être dépanner l'installation des bibliothèques Cairo et Rsvg natives - le paquet essayera de le faire automatiquement, mais c'est un problème difficile basé sur la multitude de configurations différentes. En utilisant ce paquet, il semble être possible de faire ce que vous voulez. De l'README package:

using Rsvg 
using Cairo 

filename_in = "a4.svg" 

r = Rsvg.handle_new_from_file(filename_in); 
d = Rsvg.handle_get_dimensions(r); 
cs = Cairo.CairoImageSurface(d.width,d.height,Cairo.FORMAT_ARGB32); 
c = Cairo.CairoContext(cs); 
Rsvg.handle_render_cairo(c,r);