/** * LineNode.hh * * Created on: Dec 2, 2013 * Author: amdadev */ #ifndef LINENODE_HH_ #define LINENODE_HH_ #include #include #include "NodeCfg.hh" #include "PlotLogger.hh" #include "SeriesProperties.hh" #include "CommonNode.hh" namespace plot { /** * Read a 'line' tag from xml request and populate related plot::SerieProperties * object (which is object holding drawing properties for that parameter's serie). * structure of xml node to read is defined in the plot.xsd schemas. */ template class LineNode: public AMDA::XMLConfigurator::NodeCfg { public: LineNode() : AMDA::XMLConfigurator::NodeCfg(){}; virtual ~LineNode(){}; void proceed(xmlNodePtr pNode_,const AMDA::Parameters::CfgContext& pContext_){ LOG4CXX_DEBUG(gLogger, "LineNode::proceed"); LineType* props = pContext_.get(); // read attributes : xmlChar* value = NULL; // TODO see if we have some default config values to retrieve... // overwrites default values if any... // type value = xmlGetProp(pNode_, (const xmlChar *)"type"); if( value ){ try{ props->getLineProperties().setType( stoLineType.at(std::string((const char*)value)) ); } catch( std::out_of_range& err ){ std::ostringstream msg {}; msg << "LineNode::proceed invalid LineType value:" << value <<". Using default value."; LOG4CXX_DEBUG(gLogger, msg.str()); } xmlFree(value); } // style value = xmlGetProp(pNode_, (const xmlChar *)"style"); if( value ){ try{ props->getLineProperties().setStyle( stoLineStyle.at(std::string((const char*)value)) ); } catch( std::out_of_range& err ){ std::ostringstream msg {}; msg << "LineNode::proceed invalid LineStyle value:" << value <<". Using default value."; LOG4CXX_DEBUG(gLogger, msg.str()); } xmlFree(value); } // width value = xmlGetProp(pNode_, (const xmlChar *)"width"); if( value ){ props->getLineProperties().setWidth( atoi((const char*)value) ); xmlFree(value); } // color attributes : updateColor(props->getLineProperties().getColor(), pNode_, (const xmlChar *)"color", (const xmlChar *)"colorMapIndex"); } }; } /* namespace plot */ #endif /* LINENODE_HH_ */