/* * InstantPlotNode.cc * * Created on: Dec 6, 2013 * Author: amdadev */ #include "InstantPlotNode.hh" #include "PlotLogger.hh" #include "PanelPlotNodeRegistry.hh" #include "InstantPlot.hh" #include "AxesNode.hh" #include "PlotLegendNode.hh" #include "FillsNode.hh" // DD_Client_r_lib module includes #include "TimeUtil.hh" namespace plot { const std::string InstantPlotNode::NODENAME = INSTANTPLOT_NODENAME; std::string InstantPlotNode::_key = PanelPlotNodeRegistry::getInstance().addElement( NODENAME, boost::shared_ptr(new InstantPlotNode())); InstantPlotNode::InstantPlotNode() : AbstractPanelPlotNode() { getChildList()["legends"] = AMDA::XMLConfigurator::NodeCfgSPtr( new PlotLegendNode()); getChildList()["params"] = AMDA::XMLConfigurator::NodeCfgSPtr( new InstantPlotParamsNode()); getChildList()["axes"] = AMDA::XMLConfigurator::NodeCfgSPtr(new AxesNode()); getChildList()["fills"] = AMDA::XMLConfigurator::NodeCfgSPtr(new FillsNode()); } InstantPlotNode::~InstantPlotNode() { } boost::shared_ptr InstantPlotNode::proceed(xmlNodePtr pNode_, PlotOutput* plotManager_, Panel* panel_) { LOG4CXX_DEBUG(gLogger, "InstantPlotNode::proceed"); boost::shared_ptr plot( new InstantPlot(plotManager_->getParameterManager(), boost::shared_ptr(panel_))); // Copy default pages values for the panel if not already specified if (panel_->_leftMargin == -1) panel_->_leftMargin = panel_->_page->_defaultXYPlotLeftMargin; if (panel_->_rightMargin == -1) panel_->_rightMargin = panel_->_page->_defaultXYPlotRightMargin; if (panel_->_topMargin == -1) panel_->_topMargin = panel_->_page->_defaultXYPlotTopMargin; if (panel_->_bottomMargin == -1) panel_->_bottomMargin = panel_->_page->_defaultXYPlotBottomMargin; if (panel_->_preferedWidth == -1) panel_->_preferedWidth = panel_->_page->_defaultXYPlotWidth; if (panel_->_preferedHeight == -1) panel_->_preferedHeight = panel_->_page->_defaultXYPlotHeight; // -- read time attribute xmlChar* value; value = xmlGetProp(pNode_, (const xmlChar *) "time"); if (value) { plot->setTime(DD_Time2Double((const char*)value)); xmlFree(value); } AMDA::Parameters::CfgContext context; context.push(plot.get()); context.push(plot.get()); context.push(panel_); AMDA::XMLConfigurator::NodeGrpCfg::proceed(pNode_, context); return plot; } } /* namespace plot */