From 9d6886730c5c1a6b7b99ee6c84396271228d2715 Mon Sep 17 00:00:00 2001 From: srit Date: Fri, 19 Feb 2010 12:10:13 +0000 Subject: [PATCH] *** empty log message *** --- common/clitkHisImageIO.cxx | 2 + common/clitkXdrImageIOReader.cxx | 57 +------- common/clitkXdrImageIOWriter.cxx | 244 +------------------------------ 3 files changed, 4 insertions(+), 299 deletions(-) diff --git a/common/clitkHisImageIO.cxx b/common/clitkHisImageIO.cxx index 1ee1995..7d1ab14 100755 --- a/common/clitkHisImageIO.cxx +++ b/common/clitkHisImageIO.cxx @@ -31,6 +31,8 @@ * -------------------------------------------------*/ +// Based on a true story by the Nederlands Kanker Instituut (AVS_HEIMANN.CPP from the 20090608) + // std include #include diff --git a/common/clitkXdrImageIOReader.cxx b/common/clitkXdrImageIOReader.cxx index 1b47fea..2c81a95 100644 --- a/common/clitkXdrImageIOReader.cxx +++ b/common/clitkXdrImageIOReader.cxx @@ -26,63 +26,8 @@ #define memicmp strncasecmp #endif -/************************************************************************/ -/* */ -/* file : AVS_RXDR.CPP */ -/* */ -/* purpose : AVS module for reading XDRs */ -/* */ -/* authors : Lambert Zijp (Conquest) */ -/* Based on a true story by Marcel van Herk */ -/* */ -/* date : 19980528 */ -/* */ -/* portability: AVS requires sizeof(void *)==sizeof(int) */ -/* This module assumes sizeof(int)>=4 */ -/* */ -/* notes : */ -/* */ -/* */ -/************************************************************************/ -/* Updates: -When Who What -19980528 ljz Copied from mbfield1 -19981209 mvh Taken into action by removing _; added READ_XDR_HEADER -19981210 mvh+lsp Now proper freeing of buff in case of error -19990130 mvh Added ENUM_XDR_HEADER -19990206 mvh Added READ_XDR_PREVIEW -19990208 mvh Fixed this, the while(1) fgets loop is rquired to skip long headers -19990406 ljz Removed sizelimit of dimensions -19991003 mvh Loosened sizelimit for veclen to 1000 -19991005 mvh Remove spaces from AVS own header lines (ndim etc) in scan_header -20000808 lsp No longer mix file streams and handles -20000821 ljz Reader can now handle NkiCompression -20000822 lsp+nd Initialize data and datasize for dots, added "const" to avoid - writing into a literal string -20000823 mvh Optimized nki_private_decompression mode 2 (from 6.4 to 4.9 s) - reading mode 1: compression makes read faster - reading mode 2: read compressed at same speed as uncompressed -20000824 mvh Speed up mode 2 to 4.2 s: only check compressedCRC if other failed - Added some safeties to avoid mode 1 or 2 crash for corrupted data -20000825 mvh Pass buffer size to nki_private_decompress as extra safety - Fix mode 1, added full safety against input buffer overflow - Added some comments and notes -20010507 mvh Support larger headers when coordinate information has been written -20010726 mvh Fix for decompression when information is offset in file -20011207 ljz Removed check on veclen>1000 -20020124 mvh Added test for fields by kg: non-portable types as "integer" then not swapped -20020903 ljz Made scan_header much faster -20030122 mvh Fix read of coords in compression mode 2 -20030430 mvh Fix of read coords in compression mode 2 when offset is 0 -20030717 ljz Added support for NkiCompressionModes 3 and 4 -20040426 mvh ELEKTA NKI-XVI0.1 RELEASE -20050302 mvh Estimate size of compressed data to accelerate speed of reading embedded fields -20050308 ljz+mvh ELEKTA NKI-XVI0.1j RELEASE -20071024 mvh Adapted for 64 bits -20080110 mvh ELEKTA NKI-XVI3.09 RELEASE -20080414 lsp+mgw __sun__ doesn't know -*/ +// Based on a true story by the Nederlands Kanker Instituut (AVS_RXDR.CPP from the 20080414) #include #include #include diff --git a/common/clitkXdrImageIOWriter.cxx b/common/clitkXdrImageIOWriter.cxx index 70ef6aa..46c8c37 100755 --- a/common/clitkXdrImageIOWriter.cxx +++ b/common/clitkXdrImageIOWriter.cxx @@ -66,250 +66,8 @@ void clitk::XdrImageIO::Write(const void* buffer) WriteImage( m_FileName.c_str(), s, s, 0, -1, 0, 2, 0, 0, 0, 0, buffer); } -/************************************************************************/ -/* */ -/* file : AVS_WXDR.C */ -/* */ -/* purpose : AVS module for writing XDR and RAW files */ -/* */ -/* author : Lambert Zijp (based on a true story by */ -/* Marcel van Herk) */ -/* */ -/* date : 19970716 */ -/* */ -/* portability: AVS requires sizeof(void *)==sizeof(int) */ -/* This module assumes sizeof(int)>=4 */ -/* */ -/* notes : This module has been integrated in QUIRT */ -/* */ -/************************************************************************/ -/* Updates: -When Who What -19980212 ljz Creation (i.e. Removed from 'mbfield4.c') -19980304 ljz Added QUIRT_NEXT_PARAMETER_FILE -19980310 ljz Fix: XDRs were written in text-mode when - quirt_init() is not called -19980319 ljz Undone last change: _fmode is set in DllEntryPoint -19980408 tp Moved M$-specific includes; - removed AVS portability anyway -19980611 mvh Added offset to write_raw (write into file) -20000214 lsp Check file handle returned by open before use -20000313 nd Two AVSerror messages added. -20000322 lsp Matched compute func declaration with desc func -20000630 ljz Added WRITE_RAW_LE, to write little-endian pixel-data -20000806 lsp Compute func now 'int', conformal to ANSI C++ -20000821 ljz Added NkiCompression parameter to WRITE_XDR. If used, - mode 2 is recommended. -20000504 mvh Added write coordinates in header option to WRITE_XDR -20010720 mvh Added option to write to stdout: pass "" as filename -20010723 mvh Made it working by redefining write; setmode does not work -20010725 bb Changed include order of windows.h and mbavs2q.h - for MS6 compiler. -20020124 mvh+kg The datatype in the header is now e.g. "xdr_integer" - The datatypes as "integer" were intended as having native - byte order, while we wrote bigendian (high byte first). Our - older files read therefore OK on HP and SUN but not on linux. -20020124 mvh+kg On AVS5 xdr_byte is illegal. Replace only that one by 'byte' -20030311 bb Added check on write errors. Disc full errors during a - write have nasty side-effects for other programs' open files. - Added check on file handle to prevent closing of stdout. -20030430 mvh Added append mode for WRITE_XDR -20030717 ljz Added support for NkiCompressionModes 3 and 4 (4 is recommended) -20040426 mvh ELEKTA NKI-XVI0.1 RELEASE -20040910 mvh Write uncompressed and warn if the compress malloc fails, layout -20040920 mvh Fixed the above option (failed in append mode) -20040924 mvh Fixed warn in option -20041117 mvh ELEKTA NKI-XVI0.1g RELEASE -20050302 ljz Merant tracker ID #1867: Check on bad compression-ratio causing - access violation. -20050308 ljz+mvh ELEKTA NKI-XVI0.1j RELEASE -20050411 mvh Fails on I178_s1_4H.3d mode 1: compression fails and written file corrupted -20060903 mvh Added WRITE_MEM_XDR and QUERY_MEM_XDR -20070330 mvh WRITE_XDR failed on G:\20605104_hypo lung\20605104_incl corr+doseab3.PACK -20071015 mvh ELEKTA NKI-XVI3.08 RELEASE -20080411 lsp+mw NULL->0 in WriteImage() ; __sun__ doesn't know -20080825 mgw Corrected slash in sys/stat.h include -20081031 lsp+mvh ELEKTA NKI-XVI4.15 RELEASE -20081119 lsp+sr Removed tell(f) call for Linux -20081203 lsp __sun__ -> unix -20090114 mvh ELEKTA NKI-XVI4.22 RELEASE -20090529 lsp+sr Work around the 64 MB limitation of write() in Windows -20090802 mvh ELEKTA NKI-XVI4.29 RELEASE -20091209 lsp Added WRITE_MEM_RAW -20091214 lsp 64 bits adaptations: pass high address of buffer as well, - replaced int by AVSINT when requested, process buffer in chunks - to be able to interpret return value of write() (signed int) correctly, - replaced out-of-range constants 0xc0 and 0x80 by their signed equivalents -20091216 lsp+ljz Prepared compression for more than 4294967295 (UINT_MAX) shorts - by using bigger NKI_MODE2_64BITS struct (backwards compatible) -20091216 lsp Disabled #define write for clarity: checked_write() is used throughout - Use more space for pCompressed to be able to call WRITE_XDR with compression - on small fields (<10 pixels for mode 2 or 4, <2 pixels for mode 1 and 3) -*/ - -/************************************************************************/ -/* MODULE DOCUMENTATION */ -/************************************************************************/ -/* -AVS Modules Lambert Zijp XDR writer & RAW writer - -NAME - XDR writer - Module for writing XDR and RAW files - -SUMMARY - Name XDR writer - - Availability : specify in which module libraries +// Based on a true story by the Nederlands Kanker Instituut (AVS_WXDR.CPP from the 20091216) - Source AVS_WXDR (C++ interface) - - Type Render / Output - - QUIRT name WRITE_XDR & WRITE_RAW - - Inputs Input field = field - - Outputs none - - Parameters Name Type Default Min Max - File name string - Header info string (WRITE_XDR only!) - Header file string (WRITE_XDR only!) - File Offset integer (WRITE_RAW only!) - NKI compression integer (WRITE_XDR only!) - Coords in header boolean (WRITE_XDR only!) - Append boolean (WRITE_XDR only!) - -DESCRIPTION - WRITE_RAW: No header, no coordinates. - Data only are written (high byte first); optionally into an - existing file (if you specify an offset) - - WRITE_RAW_LE: No header, no coordinates. - Data only are written (low byte first); - optionally into an existing file (if you specify an offset) - - WRITE_XDR: Successively is written to file: - - The string '#AVS wants ...'. - - The optional Header info - - The contents of the optional Header file - - An ascii description of the Input field - - Optionally the coordinates (coord%axis%[%pixel%]=%coord%) - (%axis% is 1 based, %pixel% 0 based, %coord% is float) - - Two bytes containing ascii character 0x0c - - The Data in binary (high byte first). - Or, if NKI_Compression is greater than zero, compressed data. - - The Coordinates in binary IEEE float (high byte first) - -INPUTS - Input field (Required; field) - Describe input here.... - -PARAMETERS - File name - A string described here.... - - Header info - A string described here.... - - Header file - A string described here.... - - File offset - An integer (default -1). If set, WRITE_RAW writes the data - into an existing file. - - NKI compression - An integer described here.... - - Write coordinates in header - A boolean described here.... - - Append to file - A boolean described here.... - -OUTPUTS - none - -PORTABILITY - QUIRT, C++ - -LIBRARIES - (optional): in which AVS libraries available - -TYPE - Render / Output - (optional): further specify type of Render / Output module - -FILE FORMATS - (optional): which type of files are read|written - -EXAMPLE - The following network shows how ..... - - READ IMA - | - | - XDR WRITER - | | - | | - -LIMITATIONS - (optional): describe limitations here - -RELATED MODULES - Modules that can provide input: - ..... - Modules that could be used in place of XDR writer: - ..... - Modules that can take output: - ..... - -RELATED FILES - (optional): The following files - {are needed for|are output from|give examples of|further document} - XDR writer: - ..... - - -QUIRT MANUAL - WRITE_XDR AVS module XDR writer - numerical_expression Input field = field - string_expression name of xdr file to create - string_expression extra header info (default "") - string_expression text file with more header info (default none) - numerical_expression NKI compression (default 0) - numerical_expression Coordinates in header (boolean, default 0) - numerical_expression Append to file (boolean, default 0) - - WRITE_RAW AVS module Raw writer - numerical_expression Input field = field - string_expression name of file to write - numerical_expression Offset; if not -1 (default) writes into file at offset - - WRITE_RAW_LE AVS module Raw writer little endian - numerical_expression Input field = field - string_expression name of file to write - numerical_expression Offset; if not -1 (default) writes into file at offset - - WRITE_MEM_XDR - numerical_expression Input field = field - numerical_expression point to buffer to write xdr data into (use QUERY_MEM_XDR to find length) - string_expression extra header info (default "") - string_expression text file with more header info (default none) - numerical_expression NKI compression (default 0) - numerical_expression Coordinates in header (boolean, default 0) - - QUERY_MEM_XDR - numerical_expression Input field = field - name recieves required length for data - string_expression extra header info (default "") - string_expression text file with more header info (default none) - numerical_expression NKI compression (default 0) - numerical_expression Coordinates in header (boolean, default 0) - -Release 1.0 19980212 Lambert Zijp XDR writer & RAW writer -*/ /************************************************************************/ /* INCLUDE FILES */ /************************************************************************/ -- 2.47.1