Skip to content
Commits on Source (5)
......@@ -31,7 +31,7 @@ matrix:
- compiler: gcc
os: linux
# No docbook-xsl-ns
addons: {apt: {packages: [default-jdk, mono-devel, swig, libcharls-dev, libvtk5-dev, libexpat-dev, libz-dev, uuid-dev, python-all-dev, libpoppler-dev, xsltproc, docbook-xsl, dcmtk]}}
addons: {apt: {packages: [default-jdk, mono-devel, swig, libcharls-dev, libvtk5-dev, libexpat-dev, libz-dev, uuid-dev, python-all-dev, libpoppler-private-dev, xsltproc, docbook-xsl, dcmtk]}}
env:
- CFLAGS="-Wall -Wextra -m64"
- CXXFLAGS="-Wall -Wextra -m64"
......
......@@ -723,6 +723,8 @@ int main(int argc, char *argv[])
}
gdcm::FileMetaInformation::SetSourceApplicationEntityTitle( "gdcmanon" );
if( !dumb_mode )
{
gdcm::Global& g = gdcm::Global::GetInstance();
if( !resourcespath )
{
......@@ -750,6 +752,7 @@ int main(int argc, char *argv[])
return 1;
}
const gdcm::Defs &defs = g.GetDefs(); (void)defs;
}
if( !rootuid )
{
// only read the env var if no explicit cmd line option
......
......@@ -139,8 +139,8 @@ static void printbinary(std::istream &is, PDFElement const & pdfel )
std::cout << " " << bufferref << " ";
uint32_t type = pdfel.gettype();
uint32_t numels = pdfel.getnumelems();
uint32_t dummy = pdfel.getdummy();
assert( dummy == 0 ); (void)dummy;
//uint32_t dummy = pdfel.getdummy();
//assert( dummy == 0 ); (void)dummy;
uint32_t offset = pdfel.getoffset();
uint32_t pos = (uint32_t)(offset + is.tellg() - 4);
printvalue(is, type, numels, pos);
......
......@@ -70,14 +70,6 @@
#include <getopt.h>
#include <string.h>
#ifndef GDCM_HAVE_ATOLL
#ifdef _MSC_VER
#define atoll _atoi64
#else
#define atoll atol
#endif
#endif
static unsigned int readsize(const char *str, unsigned int * size)
{
int n = sscanf( str, "%i,%i,%i", size, size+1, size+2);
......@@ -596,7 +588,7 @@ int main (int argc, char *argv[])
{
assert( strcmp(s, "offset") == 0 );
poffset = 1;
start_pos = (size_t)atoll(optarg);
start_pos = (size_t)std::atoll(optarg);
}
else if( option_index == 17 ) /* template */
{
......
......@@ -36,9 +36,10 @@ if(NOT CMAKE_CSharp_COMPILER)
set(CMAKE_CSharp_COMPILER_LIST ${CMAKE_CSharp_COMPILER_INIT})
else()
# Known compilers:
# mcs/gmcs/smcs # mono
# mcs/gmcs/smcs/dmcs # mono
# see: https://www.mono-project.com/docs/about-mono/languages/csharp/
# csc: DotNet
set(CMAKE_CSharp_COMPILER_LIST csc mcs gmcs smcs)
set(CMAKE_CSharp_COMPILER_LIST csc mcs gmcs smcs dmcs)
endif()
# Find the compiler.
......
......@@ -6,7 +6,7 @@
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
#
find_path(CHARLS_INCLUDE_DIR CharLS/interface.h
find_path(CHARLS_INCLUDE_DIR CharLS/charls.h
/usr/local/include
/usr/include
)
......
......@@ -26,9 +26,10 @@ set(MONO_FOUND FALSE)
# TODO: what are 'cscc' and 'ilrun' ?
find_program(MONO_EXECUTABLE mono)
find_program(MCS_EXECUTABLE mcs) # 1.0
find_program(MCS_EXECUTABLE mcs) # 1.0 (mono >= 2.11 => target all version)
find_program(GMCS_EXECUTABLE mono-csc gmcs) # 2.0
find_program(SMCS_EXECUTABLE smcs) # Moonlight
find_program(SMCS_EXECUTABLE smcs) # 3.0
find_program(DMCS_EXECUTABLE dmcs) # 4.0
# mono-gac: /usr/bin/gacutil
find_program(GACUTIL_EXECUTABLE gacutil) # gacutil - Global Assembly Cache management utility.
# mono-1.0-devel: /usr/bin/ilasm
......@@ -46,6 +47,8 @@ elseif(MONO_EXECUTABLE AND GMCS_EXECUTABLE)
set(MONO_FOUND TRUE)
elseif(MONO_EXECUTABLE AND SMCS_EXECUTABLE)
set(MONO_FOUND TRUE)
elseif(MONO_EXECUTABLE AND DMCS_EXECUTABLE)
set(MONO_FOUND TRUE)
endif()
if(NOT MONO_FOUND)
......
......@@ -29,14 +29,26 @@ if(WIN32)
else()
include(${MONO_USE_FILE})
set(CMAKE_CSHARP1_COMPILER ${MCS_EXECUTABLE})
if(GMCS_EXECUTABLE)
set(CMAKE_CSHARP2_COMPILER ${GMCS_EXECUTABLE})
elseif(MCS_EXECUTABLE)
set(CMAKE_CSHARP2_COMPILER ${MCS_EXECUTABLE})
endif()
if(SMCS_EXECUTABLE)
set(CMAKE_CSHARP3_COMPILER ${SMCS_EXECUTABLE})
set(CMAKE_CSHARP4_COMPILER ${SMCS_EXECUTABLE})
elseif(MCS_EXECUTABLE)
set(CMAKE_CSHARP3_COMPILER ${MCS_EXECUTABLE})
endif()
if(DMCS_EXECUTABLE)
set(CMAKE_CSHARP4_COMPILER ${DMCS_EXECUTABLE})
elseif(MCS_EXECUTABLE)
set(CMAKE_CSHARP4_COMPILER ${MCS_EXECUTABLE})
endif()
set(CMAKE_CSHARP_INTERPRETER ${MONO_EXECUTABLE})
endif()
set(DESIRED_CSHARP_COMPILER_VERSION 2 CACHE STRING "Pick a version for C# compiler to use: 1, 2, 3 or 4")
set(DESIRED_CSHARP_COMPILER_VERSION 4 CACHE STRING "Pick a version for C# compiler to use: 1, 2, 3 or 4")
mark_as_advanced(DESIRED_CSHARP_COMPILER_VERSION)
# default to v1:
......
......@@ -49,7 +49,7 @@ macro(ADD_JAVA_TEST TESTNAME FILENAME)
set(classpath)
if(theclasspath)
set(classpath "${theclasspath}${JavaProp_PATH_SEPARATOR}.")
set(classpath "${theclasspath}${_sep}.")
else()
set(classpath ".")
endif()
......@@ -76,6 +76,7 @@ macro(ADD_JAVA_TEST TESTNAME FILENAME)
message(\"ld_library_path: ${ld_library_path}\")
message(\"loc: ${loc}\")
message(\"loc2: ${loc2}\")
message(\"JavaProp_PATH_SEPARATOR: ${JavaProp_PATH_SEPARATOR}\")
message(\"classpath: ${classpath}\")
message(\"java runtime: ${Java_JAVA_EXECUTABLE}\")
#message( \"wo_semicolumn: ${wo_semicolumn}\" )
......@@ -99,14 +100,3 @@ macro(ADD_JAVA_TEST TESTNAME FILENAME)
)
add_test(NAME ${TESTNAME} COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/${TESTNAME}.cmake)
endmacro()
# Byte compile recursively a directory (DIRNAME)
#macro(ADD_PYTHON_COMPILEALL_TEST DIRNAME)
# # First get the path:
# get_filename_component(temp_path "${PYTHON_LIBRARIES}" PATH)
# # Find the python script:
# get_filename_component(PYTHON_COMPILE_ALL_PY "${temp_path}/../compileall.py" ABSOLUTE)
# # add test, use DIRNAME to create uniq name for the test:
# add_test(COMPILE_ALL-${DIRNAME} ${PYTHON_EXECUTABLE} "${PYTHON_COMPILE_ALL_PY}" -q ${DIRNAME})
#endmacro()
#
......@@ -72,7 +72,7 @@ macro(ADD_PYTHON_TEST TESTNAME FILENAME)
message(\"loc is: \${loc}\")
message(\"wo is: \${wo_semicolumn}\")
execute_process(
COMMAND ${PYTHON_EXECUTABLE} -v ${loc} ${wo_semicolumn}
COMMAND ${PYTHON_EXECUTABLE} ${loc} ${wo_semicolumn}
RESULT_VARIABLE import2_res
OUTPUT_VARIABLE import2_output
ERROR_VARIABLE import2_output
......
......@@ -17,7 +17,7 @@ endif()
#----------------------------------------------------------------------------
project(GDCM
VERSION 3.0.0
VERSION 3.0.1
LANGUAGES CXX C
)
## NOTE: the "DESCRIPTION" feature of project() was introduced in cmake 3.10.0
......@@ -57,9 +57,6 @@ set(GDCM_LIBRARY_PROPERTIES ${GDCM_LIBRARY_PROPERTIES}
VERSION "${GDCM_VERSION}"
SOVERSION "${GDCM_API_VERSION}"
)
#set(GDCM_EXECUTABLE_PROPERTIES ${GDCM_EXECUTABLE_PROPERTIES}
# VERSION "${GDCM_VERSION_MAJOR}.${GDCM_VERSION_MINOR}"
#)
set(GDCM_EXECUTABLE_PROPERTIES)
if(GDCM_NO_EXECUTABLE_PROPERTIES)
set(GDCM_EXECUTABLE_PROPERTIES)
......@@ -126,7 +123,6 @@ if(BUILD_SHARED_LIBS)
set(NAMELINK_SKIP NAMELINK_SKIP)
endif()
#-----------------------------------------------------------------------------
if(NOT EXECUTABLE_OUTPUT_PATH)
set(EXECUTABLE_OUTPUT_PATH ${GDCM_BINARY_DIR}/bin CACHE PATH "Single output directory for building all executables.")
......@@ -198,13 +194,7 @@ endif()
#-----------------------------------------------------------------------------
# Build the main lib...
if(NOT GDCM_HAVE_STDINT_H)
if( MSVC OR "x${CMAKE_CXX_COMPILER_ID}x" MATCHES "Intel" )
include_directories(
"${GDCM_SOURCE_DIR}/Utilities/C99"
)
# Process the install rules from C99
add_subdirectory(Utilities/C99)
endif()
message(FATAL_ERROR "You system does not have stdint.h")
endif()
# --------------------------------------------------------------------------
......@@ -795,6 +785,19 @@ if(GDCM_STANDALONE) # disabled for ITK distribution of gdcm
endif()
if(GDCM_WRAP_CSHARP)
list(APPEND components CSharpModule)
# https://cmake.org/cmake/help/latest/cpack_gen/nuget.html#cpack_gen:CPack%20NuGet%20Generator
if (${CMAKE_VERSION} VERSION_GREATER "3.12.0")
set(CPACK_BINARY_NUGET "ON")
# ${CMAKE_CURRENT_BINARY_DIR}/Copyright.txt is too long (>4000 characters)
set(CPACK_NUGET_PACKAGE_DESCRIPTION "Grassroots DiCoM is a C++ library for DICOM medical files. It is accessible from Python, C#, Java and PHP. It supports RAW, JPEG, JPEG 2000, JPEG-LS, RLE and deflated transfer syntax.
It comes with a super fast scanner implementation to quickly scan hundreds of DICOM files.
It supports SCU network operations (C-ECHO, C-FIND, C-STORE, C-MOVE). PS 3.3 & 3.6 are distributed as XML files.
It also provides PS 3.15 certificates and password based mecanism to anonymize and de-identify DICOM datasets.")
set(CPACK_NUGET_PACKAGE_LICENSEURL "http://gdcm.sourceforge.net/Copyright.html")
set(CPACK_NUGET_PACKAGE_HOMEPAGE_URL "http://gdcm.sourceforge.net")
set(CPACK_NUGET_PACKAGE_TAGS "dicom" "medical")
set(CPACK_NUGET_PACKAGE_ICONURL "http://gdcm.sourceforge.net/images/logo_gdcm64x64.png")
endif()
endif()
if(GDCM_WRAP_JAVA)
list(APPEND components JavaModule)
......@@ -1016,14 +1019,6 @@ set(GDCM_INCLUDE_PATH
"${GDCM_SOURCE_DIR}/Source/DataDictionary"
"${GDCM_SOURCE_DIR}/Source/InformationObjectDefinition"
)
if(NOT GDCM_HAVE_STDINT_H)
if(MSVC)
set(GDCM_INCLUDE_PATH
${GDCM_INCLUDE_PATH}
"${GDCM_SOURCE_DIR}/Utilities/C99"
)
endif()
endif()
if(GDCM_USE_VTK)
set(GDCM_INCLUDE_PATH
${GDCM_INCLUDE_PATH}
......
......@@ -251,7 +251,7 @@ struct param
assert( gettypenamefromtype( type ) );
is.read( (char*)&dim, sizeof( dim ) ); // number of elements
is.read( (char*)&v4.val, sizeof( v4.val ) );
assert( v4.val == 0 ); // always 0 ? sometimes not...
//assert( v4.val == 0 ); // always 0 ? sometimes not...
const uint32_t cur = (uint32_t)is.tellg();
is.read( (char*)&offset, sizeof( offset ) );
assert( offset != 0 );
......
############################################################################
#
# Program: GDCM (Grassroots DICOM). A DICOM library
#
# Copyright (c) 2006-2011 Mathieu Malaterre
# All rights reserved.
# See Copyright.txt or http://gdcm.sourceforge.net/Copyright.html for details.
#
# This software is distributed WITHOUT ANY WARRANTY; without even
# the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
# PURPOSE. See the above copyright notice for more information.
#
############################################################################
"""
Usage:
python AddPrivateAttribute.py input.dcm output.dcm
"""
import sys
import gdcm
if __name__ == "__main__":
file1 = sys.argv[1]
file2 = sys.argv[2]
r = gdcm.Reader()
r.SetFileName( file1 )
if not r.Read():
sys.exit(1)
f = r.GetFile()
ds = f.GetDataSet()
# Create a dataelement
de = gdcm.DataElement(gdcm.Tag(0x0051, 0x1011))
de.SetByteStringValue("p2")
de.SetVR(gdcm.VR(gdcm.VR.SH))
ds.Insert(de)
w = gdcm.Writer()
w.SetFile( f )
w.SetFileName( file2 )
if not w.Write():
sys.exit(1)
......@@ -47,12 +47,6 @@ CHECK_FUNCTION_EXISTS(strptime GDCM_HAVE_STRPTIME)
CHECK_FUNCTION_EXISTS(_stricmp GDCM_HAVE__STRICMP)
CHECK_FUNCTION_EXISTS(_strnicmp GDCM_HAVE__STRNICMP)
CHECK_FUNCTION_EXISTS(_snprintf GDCM_HAVE__SNPRINTF)
# This is C99
set(CMAKE_REQUIRED_INCLUDES math.h)
set(CMAKE_REQUIRED_LIBRARIES m)
check_function_exists(lround GDCM_HAVE_LROUND)
set(CMAKE_REQUIRED_INCLUDES stdlib.h)
check_function_exists(atoll GDCM_HAVE_ATOLL)
unset(CMAKE_REQUIRED_INCLUDES)
unset(CMAKE_REQUIRED_LIBRARIES)
......
......@@ -204,7 +204,7 @@ private:
* An easy solution to pass also a message is to do:
* gdcmAssertMacro( "my message" && 2 < 3 )
*/
#if defined(NDEBUG) && !defined(GDCM_ALWAYS_TRACE_MACRO)
#if defined(NDEBUG)
// User asked for release compilation, but still need to report
// if grave issue.
#define gdcmAssertAlwaysMacro(arg) \
......
......@@ -20,7 +20,7 @@ bool Unpacker12Bits::Unpack(char *out, const char *in, size_t n)
{
if( n % 3 ) return false; // 3bytes are actually 2 words
// http://groups.google.com/group/comp.lang.c/msg/572bc9b085c717f3
short *q = (short*)out;
short *q = (short*)(void*)out;
const unsigned char *p = (const unsigned char*)in;
const unsigned char *end = p+n;
unsigned char b0,b1,b2;
......@@ -40,8 +40,8 @@ bool Unpacker12Bits::Pack(char *out, const char *in, size_t n)
{
if( n % 4 ) return false; // we need an even number of 'words' so that 2 words are split in 3 bytes
unsigned char *q = (unsigned char*)out;
const unsigned short *p = (const unsigned short*)in;
const unsigned short *end = (const unsigned short*)(in+n);
const unsigned short *p = (const unsigned short*)(void*)in;
const unsigned short *end = (const unsigned short*)(void*)(in+n);
unsigned short b0,b1;
while(p!=end)
......
......@@ -115,6 +115,9 @@ namespace gdcm
{"1.2.840.10008.5.1.4.1.1.2.2", "Legacy Converted Enhanced CT Image IOD Modules"},
{"1.2.840.10008.5.1.4.1.1.4.4", "Legacy Converted Enhanced MR Image IOD Modules"},
{"1.2.840.10008.5.1.4.1.1.128.1", "Legacy Converted Enhanced PET Image IOD Modules"},
{"1.2.840.10008.5.1.4.1.1.13.1.4" , "Breast Projection X-Ray Image - For Presentation Image IOD Modules"},
{"1.2.840.10008.5.1.4.1.1.13.1.5" , "Breast Projection X-Ray Image - For Processing Image IOD Modules"},
// Deprecated:
{"1.2.840.10008.3.1.2.3.3" , "Modality Performed Procedure Step IOD Modules" },
{"1.2.840.10008.5.1.4.1.1.5" , "NM Image IOD Modules"},
......
......@@ -290,30 +290,162 @@ namespace gdcm
{"1.2.840.10008.15.0.4.6","dicomNetworkConnection"},
{"1.2.840.10008.15.0.4.7","dicomUniqueAETitle"},
{"1.2.840.10008.15.0.4.8","dicomTransferCapability"},
//
{"1.2.840.10008.5.1.4.1.1.77.1.6","VL Whole Slide Microscopy Image Storage"},
{"1.2.840.10008.5.1.4.1.1.6.2", "Enhanced US Volume Storage" },
{"1.2.840.10008.5.1.4.1.1.66.5","Surface Segmentation Storage"}, // Sup 132
{"1.2.840.10008.5.1.4.1.1.66.5", "Surface Segmentation Storage"},
{"1.2.840.10008.5.1.4.1.1.13.1.3","Breast Tomosynthesis Image Storage"},
//{"1.2.840.10008.1.4.1.1","Talairach Brain Atlas Frame of Reference"},
//{"1.2.840.10008.1.4.1.2","SPM2 T1 Frame of Reference"},
//{"1.2.840.10008.1.4.1.3","SPM2 T2 Frame of Reference"},
//{"1.2.840.10008.1.4.1.4","SPM2 PD Frame of Reference"},
//{"1.2.840.10008.1.4.1.5","SPM2 EPI Frame of Reference"},
//{"1.2.840.10008.1.4.1.6","SPM2 FIL T1 Frame of Reference"},
//{"1.2.840.10008.1.4.1.7","SPM2 PET Frame of Reference"},
//{"1.2.840.10008.1.4.1.8","SPM2 TRANSM Frame of Reference"},
//{"1.2.840.10008.1.4.1.9","SPM2 SPECT Frame of Reference"},
//{"1.2.840.10008.1.4.1.10","SPM2 GRAY Frame of Reference"},
//{"1.2.840.10008.1.4.1.11","SPM2 WHITE Frame of Reference"},
//{"1.2.840.10008.1.4.1.12","SPM2 CSF Frame of Reference"},
//{"1.2.840.10008.1.4.1.13","SPM2 BRAINMASK Frame of Reference"},
//{"1.2.840.10008.1.4.1.14","SPM2 AVG305T1 Frame of Reference"},
//{"1.2.840.10008.1.4.1.15","SPM2 AVG152T1 Frame of Reference"},
//{"1.2.840.10008.1.4.1.16","SPM2 AVG152T2 Frame of Reference"},
//{"1.2.840.10008.1.4.1.17","SPM2 AVG152PD Frame of Reference"},
//{"1.2.840.10008.1.4.1.18","SPM2 SINGLESUBJT1 Frame of Reference"},
//{"1.2.840.10008.1.4.2.1","ICBM 452 T1 Frame of Reference"},
//{"1.2.840.10008.1.4.2.2","ICBM Single Subject MRI Frame of Reference"},
{"1.2.840.10008.5.1.4.1.1.2.2", "Legacy Converted Enhanced CT Image Storage"},
{"1.2.840.10008.5.1.4.1.1.4.4", "Legacy Converted Enhanced MR Image Storage"},
{"1.2.840.10008.5.1.4.1.1.128.1", "Legacy Converted Enhanced PET Image Storage"},
{"1.2.840.10008.1.2.4.101", "MPEG2 Main Profile @ High Level"},
{"1.2.840.10008.1.2.4.102", "MPEG-4 AVC/H.264 High Profile / Level 4.1"},
{"1.2.840.10008.1.2.4.103", "MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1"},
//////////////////////////////////////////////
//
// 2019b
//
{"1.2.840.10008.1.5.2","PET Color Palette SOP Instance"},
{"1.2.840.10008.1.5.3","Hot Metal Blue Color Palette SOP Instance"},
{"1.2.840.10008.1.5.4","PET 20 Step Color Palette SOP Instance"},
{"1.2.840.10008.1.5.5","Spring Color Palette SOP Instance"},
{"1.2.840.10008.1.5.6","Summer Color Palette SOP Instance"},
{"1.2.840.10008.1.5.7","Fall Color Palette SOP Instance"},
{"1.2.840.10008.1.5.8","Winter Color Palette SOP Instance"},
{"1.2.840.10008.1.20","Papyrus 3 Implicit VR Little Endian"},
{"1.2.840.10008.2.16.5","Adult Mouse Anatomy Ontology"},
{"1.2.840.10008.2.16.6","Uberon Ontology"},
{"1.2.840.10008.2.16.7","Integrated Taxonomic Information System (ITIS) Taxonomic Serial Number (TSN)"},
{"1.2.840.10008.2.16.8","Mouse Genome Initiative (MGI)"},
{"1.2.840.10008.2.16.9","PubChem Compound CID"},
{"1.2.840.10008.2.16.10","ICD-11"},
{"1.2.840.10008.2.16.11","New York University Melanoma Clinical Cooperative Group"},
{"1.2.840.10008.2.16.12","Mayo Clinic Non-radiological Images Specific Body Structure Anatomical Surface Region Guide"},
{"1.2.840.10008.2.16.13","Image Biomarker Standardisation Initiative"},
{"1.2.840.10008.2.16.14","Radiomics Ontology"},
{"1.2.840.10008.5.1.1.40","Display System SOP Class"},
{"1.2.840.10008.5.1.1.40.1","Display System SOP Instance"},
{"1.2.840.10008.5.1.4.1.1.9.4.2","General Audio Waveform Storage"},
{"1.2.840.10008.5.1.4.1.1.9.5.1","Arterial Pulse Waveform Storage"},
{"1.2.840.10008.5.1.4.1.1.9.6.1","Respiratory Waveform Storage"},
{"1.2.840.10008.5.1.4.1.1.11.5","XA/XRF Grayscale Softcopy Presentation State Storage"},
{"1.2.840.10008.5.1.4.1.1.11.6","Grayscale Planar MPR Volumetric Presentation State Storage"},
{"1.2.840.10008.1.2.4.104","MPEG-4 AVC/H.264 High Profile / Level 4.2 For 2D Video"},
{"1.2.840.10008.1.2.4.105","MPEG-4 AVC/H.264 High Profile / Level 4.2 For 3D Video"},
{"1.2.840.10008.1.2.4.106","MPEG-4 AVC/H.264 Stereo High Profile / Level 4.2"},
{"1.2.840.10008.1.2.4.107","HEVC/H.265 Main Profile / Level 5.1"},
{"1.2.840.10008.1.2.4.108","HEVC/H.265 Main 10 Profile / Level 5.1"},
{"1.2.840.10008.1.5.1","Hot Iron Color Palette SOP Instance"},
{"1.2.840.10008.5.1.4.1.1.11.7","Compositing Planar MPR Volumetric Presentation State Storage"},
{"1.2.840.10008.5.1.4.1.1.11.8","Advanced Blending Presentation State Storage"},
{"1.2.840.10008.5.1.4.1.1.11.9","Volume Rendering Volumetric Presentation State Storage"},
{"1.2.840.10008.5.1.4.1.1.11.10","Segmented Volume Rendering Volumetric Presentation State Storage"},
{"1.2.840.10008.5.1.4.1.1.11.11","Multiple Volume Rendering Volumetric Presentation State Storage"},
{"1.2.840.10008.5.1.4.1.1.12.77","NULL"},
{"1.2.840.10008.5.1.4.1.1.13.1.4","Breast Projection X-Ray Image Storage - For Presentation"},
{"1.2.840.10008.5.1.4.1.1.13.1.5","Breast Projection X-Ray Image Storage - For Processing"},
{"1.2.840.10008.5.1.4.1.1.14.1","Intravascular Optical Coherence Tomography Image Storage - For Presentation"},
{"1.2.840.10008.5.1.4.1.1.14.2","Intravascular Optical Coherence Tomography Image Storage - For Processing"},
{"1.2.840.10008.5.1.4.1.1.30","Parametric Map Storage"},
{"1.2.840.10008.5.1.4.1.1.40","NULL"},
{"1.2.840.10008.5.1.4.1.1.66.6","Tractography Results Storage"},
{"1.2.840.10008.5.1.4.1.1.68.1","Surface Scan Mesh Storage"},
{"1.2.840.10008.5.1.4.1.1.68.2","Surface Scan Point Cloud Storage"},
{"1.2.840.10008.5.1.4.1.1.77.1.5.5","Wide Field Ophthalmic Photography Stereographic Projection Image Storage"},
{"1.2.840.10008.5.1.4.1.1.77.1.5.6","Wide Field Ophthalmic Photography 3D Coordinates Image Storage"},
{"1.2.840.10008.5.1.4.1.1.77.1.5.7","Ophthalmic Optical Coherence Tomography En Face Image Storage"},
{"1.2.840.10008.5.1.4.1.1.77.1.5.8","Ophthalmic Optical Coherence Tomography B-scan Volume Analysis Storage"},
{"1.2.840.10008.5.1.4.1.1.78.1","Lensometry Measurements Storage"},
{"1.2.840.10008.5.1.4.1.1.78.2","Autorefraction Measurements Storage"},
{"1.2.840.10008.5.1.4.1.1.78.3","Keratometry Measurements Storage"},
{"1.2.840.10008.5.1.4.1.1.78.4","Subjective Refraction Measurements Storage"},
{"1.2.840.10008.5.1.4.1.1.78.5","Visual Acuity Measurements Storage"},
{"1.2.840.10008.5.1.4.1.1.78.6","Spectacle Prescription Report Storage"},
{"1.2.840.10008.5.1.4.1.1.78.7","Ophthalmic Axial Measurements Storage"},
{"1.2.840.10008.5.1.4.1.1.78.8","Intraocular Lens Calculations Storage"},
{"1.2.840.10008.5.1.4.1.1.79.1","Macular Grid Thickness and Volume Report Storage"},
{"1.2.840.10008.5.1.4.1.1.80.1","Ophthalmic Visual Field Static Perimetry Measurements Storage"},
{"1.2.840.10008.5.1.4.1.1.81.1","Ophthalmic Thickness Map Storage"},
{"1.2.840.10008.5.1.4.1.1.82.1","Corneal Topography Map Storage"},
{"1.2.840.10008.5.1.4.1.1.88.34","Comprehensive 3D SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.35","Extensible SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.68","Radiopharmaceutical Radiation Dose SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.69","Colon CAD SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.70","Implantation Plan SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.71","Acquisition Context SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.72","Simplified Adult Echo SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.73","Patient Radiation Dose SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.74","Planned Imaging Agent Administration SR Storage"},
{"1.2.840.10008.5.1.4.1.1.88.75","Performed Imaging Agent Administration SR Storage"},
{"1.2.840.10008.5.1.4.1.1.90.1","Content Assessment Results Storage"},
{"1.2.840.10008.5.1.4.1.1.104.3","Encapsulated STL Storage"},
{"1.2.840.10008.5.1.4.1.1.130","Enhanced PET Image Storage"},
{"1.2.840.10008.5.1.4.1.1.131","Basic Structured Display Storage"},
{"1.2.840.10008.5.1.4.1.1.200.1","CT Defined Procedure Protocol Storage"},
{"1.2.840.10008.5.1.4.1.1.200.2","CT Performed Procedure Protocol Storage"},
{"1.2.840.10008.5.1.4.1.1.200.3","Protocol Approval Storage"},
{"1.2.840.10008.5.1.4.1.1.200.4","Protocol Approval Information Model - FIND"},
{"1.2.840.10008.5.1.4.1.1.200.5","Protocol Approval Information Model - MOVE"},
{"1.2.840.10008.5.1.4.1.1.200.6","Protocol Approval Information Model - GET"},
{"1.2.840.10008.5.1.4.1.1.481.10","RT Physician Intent Storage"},
{"1.2.840.10008.5.1.4.1.1.481.11","RT Segment Annotation Storage"},
{"1.2.840.10008.5.1.4.1.1.501.1","DICOS CT Image Storage"},
{"1.2.840.10008.5.1.4.1.1.501.2.1","DICOS Digital X-Ray Image Storage - For Presentation"},
{"1.2.840.10008.5.1.4.1.1.501.2.2","DICOS Digital X-Ray Image Storage - For Processing"},
{"1.2.840.10008.5.1.4.1.1.501.3","DICOS Threat Detection Report Storage"},
{"1.2.840.10008.5.1.4.1.1.501.4","DICOS 2D AIT Storage"},
{"1.2.840.10008.5.1.4.1.1.501.5","DICOS 3D AIT Storage"},
{"1.2.840.10008.5.1.4.1.1.501.6","DICOS Quadrupole Resonance (QR) Storage"},
{"1.2.840.10008.5.1.4.1.1.601.1","Eddy Current Image Storage"},
{"1.2.840.10008.5.1.4.1.1.601.2","Eddy Current Multi-frame Image Storage"},
{"1.2.840.10008.5.1.4.1.2.4.2","Composite Instance Root Retrieve - MOVE"},
{"1.2.840.10008.5.1.4.1.2.4.3","Composite Instance Root Retrieve - GET"},
{"1.2.840.10008.5.1.4.1.2.5.3","Composite Instance Retrieve Without Bulk Data - GET"},
{"1.2.840.10008.5.1.4.20.1","Defined Procedure Protocol Information Model - FIND"},
{"1.2.840.10008.5.1.4.20.2","Defined Procedure Protocol Information Model - MOVE"},
{"1.2.840.10008.5.1.4.20.3","Defined Procedure Protocol Information Model - GET"},
{"1.2.840.10008.5.1.4.34.5.1","UPS Filtered Global Subscription SOP Instance"},
{"1.2.840.10008.5.1.4.34.6","Unified Worklist and Procedure Step Service Class (1)"},
{"1.2.840.10008.5.1.4.34.6.1","Unified Procedure Step - Push SOP Class (1)"},
{"1.2.840.10008.5.1.4.34.6.2","Unified Procedure Step - Watch SOP Class (1)"},
{"1.2.840.10008.5.1.4.34.6.3","Unified Procedure Step - Pull SOP Class (1)"},
{"1.2.840.10008.5.1.4.34.6.4","Unified Procedure Step - Event SOP Class (1)"},
{"1.2.840.10008.5.1.4.34.7","RT Beams Delivery Instruction Storage"},
{"1.2.840.10008.5.1.4.34.8","RT Conventional Machine Verification"},
{"1.2.840.10008.5.1.4.34.9","RT Ion Machine Verification"},
{"1.2.840.10008.5.1.4.34.10","RT Brachy Application Setup Delivery Instruction Storage"},
{"1.2.840.10008.5.1.4.38.4","Hanging Protocol Information Model - GET"},
{"1.2.840.10008.5.1.4.39.1","Color Palette Storage"},
{"1.2.840.10008.5.1.4.39.2","Color Palette Query/Retrieve Information Model - FIND"},
{"1.2.840.10008.5.1.4.39.3","Color Palette Query/Retrieve Information Model - MOVE"},
{"1.2.840.10008.5.1.4.39.4","Color Palette Query/Retrieve Information Model - GET"},
{"1.2.840.10008.5.1.4.43.1","Generic Implant Template Storage"},
{"1.2.840.10008.5.1.4.43.2","Generic Implant Template Information Model - FIND"},
{"1.2.840.10008.5.1.4.43.3","Generic Implant Template Information Model - MOVE"},
{"1.2.840.10008.5.1.4.43.4","Generic Implant Template Information Model - GET"},
{"1.2.840.10008.5.1.4.44.1","Implant Assembly Template Storage"},
{"1.2.840.10008.5.1.4.44.2","Implant Assembly Template Information Model - FIND"},
{"1.2.840.10008.5.1.4.44.3","Implant Assembly Template Information Model - MOVE"},
{"1.2.840.10008.5.1.4.44.4","Implant Assembly Template Information Model - GET"},
{"1.2.840.10008.5.1.4.45.1","Implant Template Group Storage"},
{"1.2.840.10008.5.1.4.45.2","Implant Template Group Information Model - FIND"},
{"1.2.840.10008.5.1.4.45.3","Implant Template Group Information Model - MOVE"},
{"1.2.840.10008.5.1.4.45.4","Implant Template Group Information Model - GET"},
{"1.2.840.10008.7.1.1","Native DICOM Model"},
{"1.2.840.10008.7.1.2","Abstract Multi-Dimensional Image Model"},
{"1.2.840.10008.8.1.1","DICOM Content Mapping Resource"},
{"1.2.840.10008.5.1.4.1.1.4.3","Enhanced MR Color Image Storage"},
{"1.2.840.10008.15.1.1","Universal Coordinated Time"},
//
//
//
//////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////
//
// Private UIDs
//
{"1.2.840.113619.4.2","General Electric Magnetic Resonance Image Storage"},
{"1.2.840.113619.4.3","General Electric Computed Tomography Image Storage"},
{"1.3.12.2.1107.5.9.1","CSA Non-Image Storage"},
......@@ -326,10 +458,9 @@ namespace gdcm
{"1.2.392.200036.9116.7.8.1.1.1","Toshiba Private Data Storage" },
// business.fujifilm.co.uk/medical/downloads/DICOM_xg1.pdf
{"1.2.392.200036.9125.1.1.2","Fuji Private CR Image Storage"},
/* CREF4.09-80_iSite4.1DICOMConformance.pdf
Correction: 1.2.840113619.4.27 -> 1.2.840.113619.4.27 ... sigh
DICOM_Conformance_Statement_MR_R2.6.pdf
*/
// CREF4.09-80_iSite4.1DICOMConformance.pdf
// Correction: 1.2.840113619.4.27 -> 1.2.840.113619.4.27 ... sigh
// DICOM_Conformance_Statement_MR_R2.6.pdf
{"1.2.840.113619.4.27","GE Nuclear Medicine private SOP Class"},
{"1.3.46.670589.11.0.0.12.1","Philips Private MR Spectrum Storage"},
{"1.3.46.670589.11.0.0.12.2","Philips Private MR Series Data Storage"},
......@@ -353,21 +484,16 @@ DICOM_Conformance_Statement_MR_R2.6.pdf
{"1.3.46.670589.5.0.7" ,"Philips Private MR Cardio Profile"},
{"1.3.46.670589.5.0.8" ,"Philips Private MR Cardio"},
{"1.3.46.670589.5.0.9" ,"Philips Private CT Synthetic Image Storage"},
/* PACS_conformance_statement_10.2P2.pdf */
// PACS_conformance_statement_10.2P2.pdf
{"1.2.752.24.3.7.6","Sectra Compression (Private Syntax)"},
{"1.2.752.24.3.7.7","Sectra Compression LS (Private Syntax)"},
{"1.2.840.113619.5.2","Implicit VR Big Endian DLX (G.E Private)"},
/*DICOM_Conformance_Statement_GEMINI_R3.5_R3.6.pdf */
// DICOM_Conformance_Statement_GEMINI_R3.5_R3.6.pdf
{"1.3.46.670589.33.1.4.1","CT-private-ELE"},
{"1.2.840.10008.1.2.4.101","MPEG2 Main Profile @ High Level"},
{"1.2.840.10008.1.2.4.102","MPEG-4 AVC/H.264 High Profile / Level 4.1"},
{"1.2.840.10008.1.2.4.103","MPEG-4 AVC/H.264 BD-compatible High Profile / Level 4.1"},
{"1.2.840.10008.5.1.4.1.1.130", "Enhanced PET Image Storage" },
{"1.2.840.10008.5.1.4.1.1.14.1","Intravascular Optical Coherence Tomography Image Storage - For Presentation"},
{"1.2.840.10008.5.1.4.1.1.14.2","Intravascular Optical Coherence Tomography Image Storage - For Processing"},
{"1.2.840.10008.5.1.4.1.1.2.2", "Legacy Converted Enhanced CT Image Storage" },
{"1.2.840.10008.5.1.4.1.1.4.4", "Legacy Converted Enhanced MR Image Storage" },
{"1.2.840.10008.5.1.4.1.1.128.1", "Legacy Converted Enhanced PET Image Storage" },
//
//
//
/////////////////////////////////////////////////////////////////////////
{ nullptr, nullptr }
};
......
This diff is collapsed.
......@@ -59,7 +59,7 @@ bool ByteSwapFilter::ByteSwap()
case VR::FL:
// FIXME: Technically FL should not be byte-swapped...
//std::cerr << "ByteSwap FL:" << de.GetTag() << std::endl;
SwapperDoOp::SwapArray((uint32_t*)bv->GetPointer(), bv->GetLength() / sizeof(uint32_t) );
SwapperDoOp::SwapArray((uint32_t*)bv->GetVoidPointer(), bv->GetLength() / sizeof(uint32_t) );
break;
case VR::FD:
assert( 0 && "Should not happen" );
......@@ -74,22 +74,22 @@ bool ByteSwapFilter::ByteSwap()
assert( 0 && "Should not happen" );
break;
case VR::SL:
SwapperDoOp::SwapArray((uint32_t*)bv->GetPointer(), bv->GetLength() / sizeof(uint32_t) );
SwapperDoOp::SwapArray((uint32_t*)bv->GetVoidPointer(), bv->GetLength() / sizeof(uint32_t) );
break;
case VR::SQ:
assert( 0 && "Should not happen" );
break;
case VR::SS:
SwapperDoOp::SwapArray((uint16_t*)bv->GetPointer(), bv->GetLength() / sizeof(uint16_t) );
SwapperDoOp::SwapArray((uint16_t*)bv->GetVoidPointer(), bv->GetLength() / sizeof(uint16_t) );
break;
case VR::UL:
SwapperDoOp::SwapArray((uint32_t*)bv->GetPointer(), bv->GetLength() / sizeof(uint32_t) );
SwapperDoOp::SwapArray((uint32_t*)bv->GetVoidPointer(), bv->GetLength() / sizeof(uint32_t) );
break;
case VR::UN:
assert( 0 && "Should not happen" );
break;
case VR::US:
SwapperDoOp::SwapArray((uint16_t*)bv->GetPointer(), bv->GetLength() / sizeof(uint16_t) );
SwapperDoOp::SwapArray((uint16_t*)bv->GetVoidPointer(), bv->GetLength() / sizeof(uint16_t) );
break;
case VR::UT:
assert( 0 && "Should not happen" );
......