diff options
Diffstat (limited to 'rotord')
| -rw-r--r-- | rotord/Makefile | 2 | ||||
| -rw-r--r-- | rotord/src/nodes_drawing.h | 15 |
2 files changed, 15 insertions, 2 deletions
diff --git a/rotord/Makefile b/rotord/Makefile index 16380c5..55d2970 100644 --- a/rotord/Makefile +++ b/rotord/Makefile @@ -9,7 +9,7 @@ MY_CFLAGS = -Wswitch -fpermissive -std=c++11 -I /usr/include/librsvg-2.0/librsvg # -I ../ffmpeg # The linker options.libgstaasinklibgstaasink.so -MY_LIBS = -lrsvg-2 -lnoise -lffms2 -ljsoncpp -lcairo -lopencv_core -lopencv_video -lopencv_imgproc -lopencv_highgui -lPocoNet -lPocoXML -lPocoUtil -lPocoFoundation -lvamp-hostsdk -lsndfile -L /usr/local/lib -lswscale -lavcodec -lavformat -lavfilter -lavdevice -lavutil -lstdc++ -lm +MY_LIBS = -lgobject-2.0 -lrsvg-2 -lnoise -lffms2 -ljsoncpp -lcairo -lopencv_core -lopencv_video -lopencv_imgproc -lopencv_highgui -lPocoNet -lPocoXML -lPocoUtil -lPocoFoundation -lvamp-hostsdk -lsndfile -L /usr/local/lib -lswscale -lavcodec -lavformat -lavfilter -lavdevice -lavutil -lstdc++ -lm #-lopencv_highgui #MY_LIBS = -lPocoNet -lPocoXML -lPocoUtil -lPocoFoundation -lvamp-hostsdk -lsndfile -L /usr/local/lib -lswscale -lavcodec -lavformat -lavfilter -lavdevice -lavutil $(shell pkg-config gstreamer-0.10 gstreamer-video-0.10 gstreamer-base-0.10 --libs) # -lgstreamer-0.10 -lgstreamer-video-0.10 -lgstreamer-base-0.10 -lglib-2.0 -lgstapp-0.10 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; }; } |
