From 90b4a5fe21c1f56dcdb035ebf91b8601008da352 Mon Sep 17 00:00:00 2001 From: malaterre Date: Fri, 10 Oct 2003 15:36:24 +0000 Subject: [PATCH] * FIX: PATH to dictionary was wrong (missing /) * ENH: OpenFile, return true if the file looks like an ACR or DICOM file --- src/CMakeLists.txt | 2 +- src/gdcmHeader.cxx | 23 ++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index a2afadc2..2fcf1d4b 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -38,7 +38,7 @@ SET(libgdcm_la_SOURCES SET_SOURCE_FILES_PROPERTIES(${libgdcm_la_SOURCES} PROPERTIES - COMPILE_FLAGS "-D__STDC_LIMIT_MACROS -DPUB_DICT_PATH=\\\"${CMAKE_INSTALL_PREFIX}${GDCM_DATA_DIR}\\\"" + COMPILE_FLAGS "-D__STDC_LIMIT_MACROS -DPUB_DICT_PATH=\\\"${CMAKE_INSTALL_PREFIX}${GDCM_DATA_DIR}\\\"" ) ADD_LIBRARY(gdcm ${libgdcm_la_SOURCES} ) diff --git a/src/gdcmHeader.cxx b/src/gdcmHeader.cxx index 0a222f0f..e12497c9 100644 --- a/src/gdcmHeader.cxx +++ b/src/gdcmHeader.cxx @@ -1,4 +1,4 @@ -// $Header: /cvs/public/gdcm/src/Attic/gdcmHeader.cxx,v 1.97 2003/10/09 14:58:28 malaterre Exp $ +// $Header: /cvs/public/gdcm/src/Attic/gdcmHeader.cxx,v 1.98 2003/10/10 15:36:24 malaterre Exp $ #include "gdcmHeader.h" @@ -44,6 +44,7 @@ gdcmHeader::gdcmHeader(const char *InFilename, bool exception_on_error) { Initialise(); if ( !OpenFile(exception_on_error)) return; + ParseHeader(); LoadElements(); CloseFile(); @@ -72,9 +73,25 @@ gdcmHeader::gdcmHeader(bool exception_on_error) { if(!fp) throw gdcmFileError("gdcmHeader::gdcmHeader(const char *, bool)"); } +// char *testEntete = new char[204]; + guint16 zero; + fread(&zero, (size_t)2, (size_t)1, fp); if ( fp ) - return true; - dbg.Verbose(0, "gdcmHeader::gdcmHeader cannot open file", filename.c_str()); + { + //ACR + if( zero == 0x0008 || zero == 0x0800 ) + return true; + //DICOM + fseek(fp, 126L, SEEK_CUR); + char dicm[4]; + fread(dicm, (size_t)4, (size_t)1, fp); + if( strncmp(dicm, "DICM", 4) == 0 ) + return true; + dbg.Verbose(0, "gdcmHeader::gdcmHeader not DICOM/ACR", filename.c_str()); + } + else + dbg.Verbose(0, "gdcmHeader::gdcmHeader cannot open file", filename.c_str()); + return false; } -- 2.48.1