1 #ifndef __OsirixParser__
2 #define __OsirixParser__
7 #ifdef kernelParserOsirix_BUILD_SHARED
8 #define kernelParserOsirix_EXPORT __declspec( dllexport )
10 #define kernelParserOsirix_EXPORT __declspec( dllimport )
12 #define kernelParserOsirix_CDECL __cdecl
14 #define kernelParserOsirix_EXPORT
15 #define kernelParserOsirix_CDECL
16 #endif // defined(_WIN32)
18 //------------------------------------------------------------------------------------------------------------
20 //------------------------------------------------------------------------------------------------------------
25 #include <xercesc/parsers/XercesDOMParser.hpp>
26 #include <xercesc/dom/DOM.hpp>
27 #include <xercesc/dom/DOMErrorHandler.hpp>
28 #include <xercesc/dom/DOMLocator.hpp>
29 #include <xercesc/sax/HandlerBase.hpp>
30 #include <xercesc/util/XMLString.hpp>
31 #include <xercesc/util/PlatformUtils.hpp>
35 using namespace xercesc;
41 //------------------------------------------------------------------------------------------------------------
42 // Constructors & Destructors
43 //------------------------------------------------------------------------------------------------------------
47 ** Constructor for the parser, with the information of the pixel spacing and image dimensions
49 OsirixParser(std::string xsdfile = "", double* spacing = NULL, int* extent = NULL);
51 ** Desctructor by defect
55 int ParseFile(const char* xmlfile);
58 std::string getErrorLine();
60 std::string getContoursFileName();
66 std::string errorline;
70 const char* OSIRIX_DICT;
71 const char* OSIRIX_KEY;
72 const char* OSIRIX_IMAGES;
73 const char* OSIRIX_ARRAY;
74 const char* OSIRIX_IMAGEINDEX;
75 const char* OSIRIX_INTEGER;
76 const char* OSIRIX_NUMBEROFROIS;
77 const char* OSIRIX_ROIS;
78 const char* OSIRIX_POINT_MM;
79 const char* OSIRIX_POINT_PX;
80 const char* OSIRIX_STRING;
82 const char* CREACONTOUR;
83 const char* CREACONTOUR_VERSION;
84 const char* CREACONTOUR_IMAGEDIMENSIONS;
85 const char* CREACONTOUR_IMAGESPACING;
86 const char* CREACONTOUR_NUMBEROFCONTOURS;
88 const char* CREACONTOUR_INSTANT;
89 const char* CREACONTOUR_TYPEMODEL;
90 const char* CREACONTOUR_NUMBEROFCONTROLPOINTS;
91 const char* CREACONTOUR_TYPEVIEW;
93 const char* CREACONTOUR_NUMBEROFCONTOURSSTATIC;
95 std::string TEMPIMPORTOSIRIXFILE;
100 typedef vector< vector<double> > vectorXYZ;
101 std::map<int, vectorXYZ> contoursmapMM;
102 std::map<int, vectorXYZ> contoursmapPX;
104 void saveCreaContoursFormat();
106 void writeHeader(FILE* pFile);
107 void writeContours(FILE* pFile);
108 void writeContoursStatic(FILE* pFile);
110 void setErrorLine(DOMNodeList* list);
112 void getUserData(DOMElement* element);
114 void getData(DOMNodeList* list, std::vector<std::string>& vect, std::string tagname);
116 DOMNode* getLastNode(DOMNodeList* list);
118 void parseOSIRIX_DICT(DOMNodeList* list);
119 void parseOSIRIX_POINT_MM(DOMNodeList* list);
120 void parseOSIRIX_POINT_PX(DOMNodeList* list);
127 class OsirixParserErrorHandler : public ErrorHandler{
129 //------------------------------------------------------------------------------------------------------------
130 // Constructors & Destructors
131 //------------------------------------------------------------------------------------------------------------
135 ** Default Constructor
137 OsirixParserErrorHandler();
139 ** Desctructor by defect
141 ~OsirixParserErrorHandler();
143 virtual void warning (const SAXParseException &exc);
145 virtual void error (const SAXParseException &exc);
147 virtual void fatalError (const SAXParseException &exc);
149 virtual void resetErrors ();
151 std::string getErrorMsg();
156 std::string errormsg;