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