Mercurial > hg > orthanc-dicomweb
changeset 404:346efdf7c716
simplifying GenerateTransferSyntaxes
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Mon, 09 Mar 2020 15:40:17 +0100 |
parents | 598e66637b87 |
children | be4ffd525f1d |
files | Plugin/GdcmParsedDicomFile.cpp Plugin/GdcmParsedDicomFile_TransferSyntaxes.impl.h Resources/GenerateTransferSyntaxes.mustache Resources/GenerateTransferSyntaxes.py |
diffstat | 4 files changed, 186 insertions(+), 140 deletions(-) [+] |
line wrap: on
line diff
--- a/Plugin/GdcmParsedDicomFile.cpp Fri Mar 06 18:11:53 2020 +0100 +++ b/Plugin/GdcmParsedDicomFile.cpp Mon Mar 09 15:40:17 2020 +0100 @@ -432,106 +432,7 @@ const std::string base = OrthancPlugins::Configuration::GetBaseUrl(request); return OrthancPlugins::GetWadoUrl(base, GetDataSet()); } +} - // This function is autogenerated by the script - // "Resources/GenerateTransferSyntaxes.py" - gdcm::TransferSyntax GdcmParsedDicomFile::GetGdcmTransferSyntax(Orthanc::DicomTransferSyntax syntax) - { - switch (syntax) - { - case Orthanc::DicomTransferSyntax_LittleEndianImplicit: - return gdcm::TransferSyntax::ImplicitVRLittleEndian; - - case Orthanc::DicomTransferSyntax_LittleEndianExplicit: - return gdcm::TransferSyntax::ExplicitVRLittleEndian; - - case Orthanc::DicomTransferSyntax_JPEGProcess1: - return gdcm::TransferSyntax::JPEGBaselineProcess1; - - case Orthanc::DicomTransferSyntax_JPEGProcess2_4: - return gdcm::TransferSyntax::JPEGExtendedProcess2_4; - - case Orthanc::DicomTransferSyntax_JPEGProcess14: - return gdcm::TransferSyntax::JPEGLosslessProcess14; - - case Orthanc::DicomTransferSyntax_JPEGProcess14SV1: - return gdcm::TransferSyntax::JPEGLosslessProcess14_1; - - case Orthanc::DicomTransferSyntax_JPEGLSLossless: - return gdcm::TransferSyntax::JPEGLSLossless; - - case Orthanc::DicomTransferSyntax_JPEGLSLossy: - return gdcm::TransferSyntax::JPEGLSNearLossless; - - case Orthanc::DicomTransferSyntax_JPEG2000LosslessOnly: - return gdcm::TransferSyntax::JPEG2000Lossless; - - case Orthanc::DicomTransferSyntax_JPEG2000: - return gdcm::TransferSyntax::JPEG2000; - - case Orthanc::DicomTransferSyntax_JPEG2000MulticomponentLosslessOnly: - return gdcm::TransferSyntax::JPEG2000Part2Lossless; - - case Orthanc::DicomTransferSyntax_JPEG2000Multicomponent: - return gdcm::TransferSyntax::JPEG2000Part2; - - case Orthanc::DicomTransferSyntax_RLELossless: - return gdcm::TransferSyntax::RLELossless; - - default: - throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); - } - } - - - // This function is autogenerated by the script - // "Resources/GenerateTransferSyntaxes.py" - Orthanc::DicomTransferSyntax GdcmParsedDicomFile::GetOrthancTransferSyntax(gdcm::TransferSyntax syntax) - { - switch (syntax) - { - case gdcm::TransferSyntax::ImplicitVRLittleEndian: - return Orthanc::DicomTransferSyntax_LittleEndianImplicit; - - case gdcm::TransferSyntax::ExplicitVRLittleEndian: - return Orthanc::DicomTransferSyntax_LittleEndianExplicit; - - case gdcm::TransferSyntax::JPEGBaselineProcess1: - return Orthanc::DicomTransferSyntax_JPEGProcess1; - - case gdcm::TransferSyntax::JPEGExtendedProcess2_4: - return Orthanc::DicomTransferSyntax_JPEGProcess2_4; - - case gdcm::TransferSyntax::JPEGLosslessProcess14: - return Orthanc::DicomTransferSyntax_JPEGProcess14; - - case gdcm::TransferSyntax::JPEGLosslessProcess14_1: - return Orthanc::DicomTransferSyntax_JPEGProcess14SV1; - - case gdcm::TransferSyntax::JPEGLSLossless: - return Orthanc::DicomTransferSyntax_JPEGLSLossless; - - case gdcm::TransferSyntax::JPEGLSNearLossless: - return Orthanc::DicomTransferSyntax_JPEGLSLossy; - - case gdcm::TransferSyntax::JPEG2000Lossless: - return Orthanc::DicomTransferSyntax_JPEG2000LosslessOnly; - - case gdcm::TransferSyntax::JPEG2000: - return Orthanc::DicomTransferSyntax_JPEG2000; - - case gdcm::TransferSyntax::JPEG2000Part2Lossless: - return Orthanc::DicomTransferSyntax_JPEG2000MulticomponentLosslessOnly; - - case gdcm::TransferSyntax::JPEG2000Part2: - return Orthanc::DicomTransferSyntax_JPEG2000Multicomponent; - - case gdcm::TransferSyntax::RLELossless: - return Orthanc::DicomTransferSyntax_RLELossless; - - default: - throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); - } - } -} +#include "./GdcmParsedDicomFile_TransferSyntaxes.impl.h"
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Plugin/GdcmParsedDicomFile_TransferSyntaxes.impl.h Mon Mar 09 15:40:17 2020 +0100 @@ -0,0 +1,121 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * Copyright (C) 2017-2020 Osimis S.A., Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + **/ + +// This file is autogenerated by "../Resources/GenerateTransferSyntaxes.py" + +namespace OrthancPlugins +{ + gdcm::TransferSyntax GdcmParsedDicomFile::GetGdcmTransferSyntax(Orthanc::DicomTransferSyntax syntax) + { + switch (syntax) + { + case Orthanc::DicomTransferSyntax_LittleEndianImplicit: + return gdcm::TransferSyntax::ImplicitVRLittleEndian; + + case Orthanc::DicomTransferSyntax_LittleEndianExplicit: + return gdcm::TransferSyntax::ExplicitVRLittleEndian; + + case Orthanc::DicomTransferSyntax_JPEGProcess1: + return gdcm::TransferSyntax::JPEGBaselineProcess1; + + case Orthanc::DicomTransferSyntax_JPEGProcess2_4: + return gdcm::TransferSyntax::JPEGExtendedProcess2_4; + + case Orthanc::DicomTransferSyntax_JPEGProcess14: + return gdcm::TransferSyntax::JPEGLosslessProcess14; + + case Orthanc::DicomTransferSyntax_JPEGProcess14SV1: + return gdcm::TransferSyntax::JPEGLosslessProcess14_1; + + case Orthanc::DicomTransferSyntax_JPEGLSLossless: + return gdcm::TransferSyntax::JPEGLSLossless; + + case Orthanc::DicomTransferSyntax_JPEGLSLossy: + return gdcm::TransferSyntax::JPEGLSNearLossless; + + case Orthanc::DicomTransferSyntax_JPEG2000LosslessOnly: + return gdcm::TransferSyntax::JPEG2000Lossless; + + case Orthanc::DicomTransferSyntax_JPEG2000: + return gdcm::TransferSyntax::JPEG2000; + + case Orthanc::DicomTransferSyntax_JPEG2000MulticomponentLosslessOnly: + return gdcm::TransferSyntax::JPEG2000Part2Lossless; + + case Orthanc::DicomTransferSyntax_JPEG2000Multicomponent: + return gdcm::TransferSyntax::JPEG2000Part2; + + case Orthanc::DicomTransferSyntax_RLELossless: + return gdcm::TransferSyntax::RLELossless; + + default: + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + } + + + Orthanc::DicomTransferSyntax GdcmParsedDicomFile::GetOrthancTransferSyntax(gdcm::TransferSyntax syntax) + { + switch (syntax) + { + case gdcm::TransferSyntax::ImplicitVRLittleEndian: + return Orthanc::DicomTransferSyntax_LittleEndianImplicit; + + case gdcm::TransferSyntax::ExplicitVRLittleEndian: + return Orthanc::DicomTransferSyntax_LittleEndianExplicit; + + case gdcm::TransferSyntax::JPEGBaselineProcess1: + return Orthanc::DicomTransferSyntax_JPEGProcess1; + + case gdcm::TransferSyntax::JPEGExtendedProcess2_4: + return Orthanc::DicomTransferSyntax_JPEGProcess2_4; + + case gdcm::TransferSyntax::JPEGLosslessProcess14: + return Orthanc::DicomTransferSyntax_JPEGProcess14; + + case gdcm::TransferSyntax::JPEGLosslessProcess14_1: + return Orthanc::DicomTransferSyntax_JPEGProcess14SV1; + + case gdcm::TransferSyntax::JPEGLSLossless: + return Orthanc::DicomTransferSyntax_JPEGLSLossless; + + case gdcm::TransferSyntax::JPEGLSNearLossless: + return Orthanc::DicomTransferSyntax_JPEGLSLossy; + + case gdcm::TransferSyntax::JPEG2000Lossless: + return Orthanc::DicomTransferSyntax_JPEG2000LosslessOnly; + + case gdcm::TransferSyntax::JPEG2000: + return Orthanc::DicomTransferSyntax_JPEG2000; + + case gdcm::TransferSyntax::JPEG2000Part2Lossless: + return Orthanc::DicomTransferSyntax_JPEG2000MulticomponentLosslessOnly; + + case gdcm::TransferSyntax::JPEG2000Part2: + return Orthanc::DicomTransferSyntax_JPEG2000Multicomponent; + + case gdcm::TransferSyntax::RLELossless: + return Orthanc::DicomTransferSyntax_RLELossless; + + default: + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + } +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/GenerateTransferSyntaxes.mustache Mon Mar 09 15:40:17 2020 +0100 @@ -0,0 +1,57 @@ +/** + * Orthanc - A Lightweight, RESTful DICOM Store + * Copyright (C) 2012-2016 Sebastien Jodogne, Medical Physics + * Department, University Hospital of Liege, Belgium + * Copyright (C) 2017-2020 Osimis S.A., Belgium + * + * This program is free software: you can redistribute it and/or + * modify it under the terms of the GNU Affero General Public License + * as published by the Free Software Foundation, either version 3 of + * the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + **/ + +// This file is autogenerated by "../Resources/GenerateTransferSyntaxes.py" + +namespace OrthancPlugins +{ + gdcm::TransferSyntax GdcmParsedDicomFile::GetGdcmTransferSyntax(Orthanc::DicomTransferSyntax syntax) + { + switch (syntax) + { + {{#Syntaxes}} + {{#GDCM}} + case Orthanc::DicomTransferSyntax_{{Value}}: + return {{GDCM}}; + + {{/GDCM}} + {{/Syntaxes}} + default: + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + } + + + Orthanc::DicomTransferSyntax GdcmParsedDicomFile::GetOrthancTransferSyntax(gdcm::TransferSyntax syntax) + { + switch (syntax) + { + {{#Syntaxes}} + {{#GDCM}} + case {{GDCM}}: + return Orthanc::DicomTransferSyntax_{{Value}}; + + {{/GDCM}} + {{/Syntaxes}} + default: + throw Orthanc::OrthancException(Orthanc::ErrorCode_ParameterOutOfRange); + } + } +}
--- a/Resources/GenerateTransferSyntaxes.py Fri Mar 06 18:11:53 2020 +0100 +++ b/Resources/GenerateTransferSyntaxes.py Mon Mar 09 15:40:17 2020 +0100 @@ -33,8 +33,7 @@ import json import os -import re -import sys +import pystache ORTHANC_ROOT = '/home/jodogne/Subversion/orthanc/' BASE = os.path.abspath(os.path.join(os.path.dirname(__file__), '..')) @@ -44,40 +43,8 @@ SYNTAXES = json.loads(f.read()) - -## -## Generate the "GetGdcmTransferSyntax()" function -## - -path = os.path.join(BASE, 'Plugin', 'GdcmParsedDicomFile.cpp') -with open(path, 'r') as f: - a = f.read() - -def Format(x): - return ' case Orthanc::DicomTransferSyntax_%s:\n return %s;' % (x['Value'], x['GDCM']) - -s = '\n\n'.join(map(Format, filter(lambda x: 'GDCM' in x, SYNTAXES))) -a = re.sub('(GetGdcmTransferSyntax\(Orthanc::DicomTransferSyntax.*?\)\s*{\s*switch \([^)]*?\)\s*{)[^}]*?(\s*default:)', - r'\1\n%s\2' % s, a, re.DOTALL) - -with open(path, 'w') as f: - f.write(a) - - -## -## Generate the "GetOrthancTransferSyntax()" function -## - -path = os.path.join(BASE, 'Plugin', 'GdcmParsedDicomFile.cpp') -with open(path, 'r') as f: - a = f.read() - -def Format(x): - return ' case %s:\n return Orthanc::DicomTransferSyntax_%s;' % (x['GDCM'], x['Value']) - -s = '\n\n'.join(map(Format, filter(lambda x: 'GDCM' in x, SYNTAXES))) -a = re.sub('(GetOrthancTransferSyntax\(gdcm::TransferSyntax.*?\)\s*{\s*switch \([^)]*?\)\s*{)[^}]*?(\s*default:)', - r'\1\n%s\2' % s, a, re.DOTALL) - -with open(path, 'w') as f: - f.write(a) +with open(os.path.join(BASE, 'Plugin', 'GdcmParsedDicomFile_TransferSyntaxes.impl.h'), 'w') as b: + with open(os.path.join(BASE, 'Resources', 'GenerateTransferSyntaxes.mustache'), 'r') as a: + b.write(pystache.render(a.read(), { + 'Syntaxes' : SYNTAXES + }))