summaryrefslogtreecommitdiff
path: root/rotord/src/nodes_drawing.h
diff options
context:
space:
mode:
authorTim Redfern <tim@eclectronics.org>2013-10-23 13:50:05 +0100
committerTim Redfern <tim@eclectronics.org>2013-10-23 13:50:05 +0100
commit28e63edca5b51486394add0fcae7c8868b034f94 (patch)
treeebddadc0f8aa83cb2223bd476ffc73d620a9296d /rotord/src/nodes_drawing.h
parentfd20eb3cf43383b2d2d831915e12804b1a278b18 (diff)
svg loader resolution independent
Diffstat (limited to 'rotord/src/nodes_drawing.h')
-rw-r--r--rotord/src/nodes_drawing.h15
1 files changed, 14 insertions, 1 deletions
diff --git a/rotord/src/nodes_drawing.h b/rotord/src/nodes_drawing.h
index 79082cc..b26841e 100644
--- a/rotord/src/nodes_drawing.h
+++ b/rotord/src/nodes_drawing.h
@@ -232,16 +232,28 @@ namespace Rotor {
Svg(map<string,string> &settings):Svg() {
base_settings(settings);
rsvg=rsvg_handle_new_from_file((settings["media_path"]+attributes["filename"]->value).c_str(),nullptr);
+ if (rsvg) {
+ rsvg_handle_get_dimensions(rsvg,&dims);
+ cerr<<"Rotor: SVG loaded "<<attributes["filename"]->value<<" , "<<dims.width<<"x"<<dims.height<<endl;
+ }
+ else cerr<<"Rotor: SVG failed to load "<<attributes["filename"]->value<<endl;
};
~Svg(){};
Svg* clone(map<string,string> &_settings) { return new Svg(_settings);};
void vector_output(cairo_t * cr,const Frame_spec &frame){
+ //to make it resolution independent
+ //translate the difference between screen and drawing
+
if (rsvg){
+ float scale=frame.w/dims.width;
+
cairo_save(cr); //not really even necessary?
cairo_translate(cr, frame.w/2, frame.h/2);
cairo_translate(cr, parameters["x"]->value * frame.w, parameters["y"]->value * frame.h);
- cairo_scale(cr, parameters["scale"]->value , parameters["scale"]->value );
+ cairo_scale(cr, parameters["scale"]->value*scale, parameters["scale"]->value*scale);
cairo_rotate(cr,(parameters["rotation"]->value/180.0f)*M_PI);
+ cairo_translate(cr, -frame.w/2, -frame.h/2);
+ cairo_translate(cr, frame.w/2-(dims.width/2), frame.h/2-(dims.height/2));
rsvg_handle_render_cairo(rsvg,cr);
@@ -251,6 +263,7 @@ namespace Rotor {
}
private:
RsvgHandle * rsvg;
+ RsvgDimensionData dims;
};
}