From 1aacbf3bb5dee98bc5ab4994e1907a8416811941 Mon Sep 17 00:00:00 2001 From: Comment Date: Wed, 28 Aug 2013 21:51:56 +0100 Subject: preview in XML base64 --- rotord/src/graph.cpp | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) (limited to 'rotord/src/graph.cpp') diff --git a/rotord/src/graph.cpp b/rotord/src/graph.cpp index 9536fdc..03192f3 100644 --- a/rotord/src/graph.cpp +++ b/rotord/src/graph.cpp @@ -33,20 +33,34 @@ bool Graph::signal_render(string &signal_xml,const float framerate) { return false; } */ -bool Graph::preview(xmlIO &XML,string node,int frame,int w,int h){ - // - //bool imencode(const string& ext, InputArray img, vector& buf, const vector& params=vector()) - //if (find_node_id) +bool Graph::preview(xmlIO &XML,string &node,string &_format,int frame,int w,int h){ if (nodes.find(node)!=nodes.end()){ - float t=frame*framerate; + float t=frame/framerate; + XML.addTag("preview"); + XML.addAttribute("preview","frame",ofToString(frame),0); + XML.addAttribute("preview","nodeID",node,0); + XML.pushTag("preview"); if (dynamic_cast(nodes[node])){ Time_spec ts=Time_spec(t,framerate,0.0f); XML.addValue("signal",dynamic_cast(nodes[node])->get_output(ts)); - return true; } if (dynamic_cast(nodes[node])){ - return true; + Frame_spec fs=Frame_spec(t,framerate,0.0f,w,h); + Image *img=dynamic_cast(nodes[node])->get_output(fs); + vector buf; + string format=(_format==""?".png":_format); + if (cv::imencode(format,img->rgb,buf)){ //, const vector& params=vector()) + stringstream output; + Poco::Base64Encoder *enc=new Poco::Base64Encoder(output); + enc->write(buf.data(),buf.size()); + enc->close(); + delete enc; + XML.addValue("image",output.str()); + XML.addAttribute("image","format",format,0); + } } + XML.popTag(); + return true; } return false; } -- cgit v1.2.3