00001
00012 #ifdef HAVE_CONFIG_H
00013 #include "config.h"
00014 #endif
00015
00016
00017 #ifdef _MSC_VER
00018 #include "msdevstudio/MSconfig.h"
00019 #endif
00020
00021 #include "MapMatrixProjectorXML.h"
00022
00023 #include "XmlController.h"
00024 #include "XmlDocument.h"
00025 #include "XmlElement.h"
00026
00027 #include "projectors/MapMatrixProjector.h"
00028
00029 using namespace hippodraw;
00030
00031 MapMatrixProjectorXML::MapMatrixProjectorXML ( XmlController * controller )
00032 : BaseXML ( "MapMatrixProjector", controller ),
00033 m_x_bins ( "xbins" ),
00034 m_y_bins ( "ybins" ),
00035 m_x_step ( "xstep" ),
00036 m_y_step ( "ystep" ),
00037 m_x_orig ( "xorig" ),
00038 m_y_orig ( "yorig" )
00039 {
00040 }
00041
00042 XmlElement *
00043 MapMatrixProjectorXML::
00044 createElement ( const MapMatrixProjector & projector )
00045 {
00046 XmlElement * tag = BaseXML::createElement ();
00047
00048 const void * addr = reinterpret_cast < const void * > ( & projector );
00049 int id = m_controller -> getId ( addr );
00050 setId ( *tag, id );
00051
00052 int number = projector.getNumberOfBins ( Axes::X );
00053 tag -> setAttribute ( m_x_bins, number );
00054 number = projector.getNumberOfBins ( Axes::Y );
00055 tag -> setAttribute ( m_y_bins, number );
00056
00057 double step = projector.getBinWidth ( Axes::X );
00058 tag->setAttribute ( m_x_step, step );
00059 step = projector.getBinWidth ( Axes::Y );
00060 tag->setAttribute ( m_y_step, step );
00061
00062 double orig = projector.getOffset ( Axes::X );
00063 tag->setAttribute ( m_x_orig, orig );
00064 orig = projector.getOffset ( Axes::Y );
00065 tag->setAttribute ( m_y_orig, orig );
00066
00067 return tag;
00068 }
00069
00070 void
00071 MapMatrixProjectorXML::
00072 setAttributes ( const XmlElement * element, ProjectorBase * projector )
00073 {
00074 int number = 0;
00075 bool ok = element -> attribute ( m_x_bins, number );
00076 projector -> setNumberOfBins ( Axes::X, number );
00077 ok = element -> attribute ( m_y_bins, number );
00078 projector -> setNumberOfBins ( Axes::Y, number );
00079
00080 double value = 0.;
00081 ok = element -> attribute ( m_x_step, value );
00082 projector -> setBinWidth ( Axes::X, value );
00083 ok = element -> attribute ( m_y_step, value );
00084 projector -> setBinWidth ( Axes::Y, value );
00085
00086 ok = element -> attribute ( m_x_orig, value );
00087 projector -> setOffset ( Axes::X, value );
00088 ok = element -> attribute ( m_y_orig, value );
00089 projector -> setOffset ( Axes::Y, value );
00090 }