X-Git-Url: https://git.creatis.insa-lyon.fr/pubgit/?a=blobdiff_plain;f=lib%2Fkernel_ManagerContour_NDimensions%2FParserOsirix%2FOsirixParser.cxx;h=a503b4e1cb2c9bf085228d76a16b4ff97fbbe84e;hb=refs%2Fheads%2Fvtk9itk4wx3-macos;hp=030590434a895fa0a970f9d6df2c041731881bb5;hpb=b0a60f90532e0fef49b89328910f3b7114796498;p=creaContours.git diff --git a/lib/kernel_ManagerContour_NDimensions/ParserOsirix/OsirixParser.cxx b/lib/kernel_ManagerContour_NDimensions/ParserOsirix/OsirixParser.cxx index 0305904..a503b4e 100644 --- a/lib/kernel_ManagerContour_NDimensions/ParserOsirix/OsirixParser.cxx +++ b/lib/kernel_ManagerContour_NDimensions/ParserOsirix/OsirixParser.cxx @@ -1,9 +1,33 @@ +/*# --------------------------------------------------------------------- +# +# Copyright (c) CREATIS (Centre de Recherche en Acquisition et Traitement de l'Image +# pour la Sant�) +# Authors : Eduardo Davila, Frederic Cervenansky, Claire Mouton +# Previous Authors : Laurent Guigues, Jean-Pierre Roux +# CreaTools website : www.creatis.insa-lyon.fr/site/fr/creatools_accueil +# +# This software is governed by the CeCILL-B license under French law and +# abiding by the rules of distribution of free software. You can use, +# modify and/ or redistribute the software under the terms of the CeCILL-B +# license as circulated by CEA, CNRS and INRIA at the following URL +# http://www.cecill.info/licences/Licence_CeCILL-B_V1-en.html +# or in the file LICENSE.txt. +# +# As a counterpart to the access to the source code and rights to copy, +# modify and redistribute granted by the license, users are provided only +# with a limited warranty and the software's author, the holder of the +# economic rights, and the successive licensors have only limited +# liability. +# +# The fact that you are presently reading this means that you have had +# knowledge of the CeCILL-B license and that you accept its terms. +# ------------------------------------------------------------------------ */ + //---------------------------------------------------------------------------------------------------------------- // Class definition include //---------------------------------------------------------------------------------------------------------------- #include "OsirixParser.h" - #include @@ -22,6 +46,7 @@ OsirixParser::OsirixParser(std::string xsdfile, double* spacing, int* extent) OSIRIX_POINT_MM = "Point_mm"; OSIRIX_POINT_PX = "Point_px"; OSIRIX_STRING = "string"; + OSIRIX_NAME = "Name"; if(spacing != NULL){ _spacing[0] = spacing[0]; @@ -70,7 +95,12 @@ OsirixParser::OsirixParser(std::string xsdfile, double* spacing, int* extent) #ifdef WIN32 char currentPath[_MAX_PATH]; - GetModuleFileName(NULL, currentPath, _MAX_PATH); + + wchar_t currentPath2[512]; + long result = GetModuleFileName(NULL, currentPath2, _MAX_PATH); +// GetModuleFileName(NULL, currentPath, _MAX_PATH); + int ret = wcstombs ( currentPath, currentPath2, sizeof(pname) ); + TEMPIMPORTOSIRIXFILE = currentPath; TEMPIMPORTOSIRIXFILE = TEMPIMPORTOSIRIXFILE.substr(0,TEMPIMPORTOSIRIXFILE.find_last_of("\\")); @@ -232,6 +262,8 @@ void OsirixParser::parseOSIRIX_DICT(DOMNodeList* list){ imageindex = OSIRIX_IMAGEINDEX; osirixinteger = OSIRIX_INTEGER; + std::string osirixstring = OSIRIX_STRING; + std::string osirixname = OSIRIX_NAME; for(i = 0; i < (int)(list->getLength()); i++){ @@ -259,6 +291,13 @@ void OsirixParser::parseOSIRIX_DICT(DOMNodeList* list){ if(childnode1 != NULL && osirixinteger.compare(XMLString::transcode(childnode1->getNodeName())) == 0){ _imageindex = atoi(XMLString::transcode(childnode1->getTextContent())); } + } else if(osirixname.compare(temp) == 0) { + // keep information about the name of the ROI + childnode1 = childlist->item(j+2); + if(childnode1 != NULL && osirixstring.compare(XMLString::transcode(childnode1->getNodeName())) == 0){ + char* roiname = XMLString::transcode(childnode1->getTextContent()); + _roiname = string(roiname); + } } } } @@ -308,6 +347,7 @@ void OsirixParser::parseOSIRIX_POINT_MM(DOMNodeList* list){ vectorxyz.push_back(*vectory); vectorxyz.push_back(*vectorz); contoursmapMM.insert(pair(contoursmapMM.size(), vectorxyz)); + contoursnameMM.insert(pair(contoursnameMM.size(), _roiname)); } } @@ -351,6 +391,7 @@ void OsirixParser::parseOSIRIX_POINT_PX(DOMNodeList* list){ vectorxyz.push_back(*vectory); vectorxyz.push_back(*vectorz); contoursmapPX.insert(pair(contoursmapPX.size(), vectorxyz)); + contoursnamePX.insert(pair(contoursnamePX.size(), _roiname)); } } @@ -420,7 +461,8 @@ void OsirixParser::writeContours(FILE* pFile){ fprintf(pFile, CREACONTOUR_NUMBEROFCONTROLPOINTS); fprintf(pFile, " %d\n", vectz.size()); for(i = 0; i < vectx.size(); i++){ - fprintf(pFile, "%f %f 900.00\n", vectx[i]/ _spacing[0],dimy - vecty[i]/ _spacing[1]); + fprintf(pFile, "%f %f 900.00\n", vectx[i]/ _spacing[0], dimy - vecty[i]/ _spacing[1]); + // fprintf(pFile, "%f %f %f\n", vectx[i] , vecty[i], vectz[i]); } fprintf(pFile, CREACONTOUR_TYPEVIEW); fprintf(pFile, " 1\n");