+++ /dev/null
-#include <creaImageIORFImageReader.h>
-#include <creaVtk.h>
-#include <creaImageIOSystem.h>
-#include "boost/filesystem/path.hpp"
-
-namespace creaImageIO
-{
-#define HEADER_SIZE 19
-
-
- //=====================================================================
- RFImageReader::RFImageReader()
- {
- SetName("rf");
- }
- //=====================================================================
-
- //=====================================================================
- RFImageReader::~RFImageReader()
- {
- }
- //=====================================================================
-
- //=====================================================================
- struct rf_header
- {
- // frames, width, height
- int frame,width,height;
- };
- //=====================================================================
-
-
- //=====================================================================
- bool ReadHeader( FILE *rf_file, rf_header& h )
- {
- int *header=(int*)malloc(sizeof(int)*HEADER_SIZE);
- fread(header,sizeof(int),HEADER_SIZE,rf_file);
- h.frame = header[1];
- h.height = header[2];
- h.width = header[3];
- free(header);
- return true;
- }
- //=====================================================================
-
- //=====================================================================
- bool RFImageReader::CanRead(const std::string& filename)
- {
- bool ok = false;
- FILE *rf_file=fopen(filename.c_str(),"rb");
- if (rf_file)
- {
- rf_header h;
- ok = ReadHeader(rf_file,h);
- fclose(rf_file);
- }
- return ok;
- }
- //=====================================================================
-
- //=====================================================================
- vtkImageData* RFImageReader::ReadImage(const std::string& filename)
- {
-
- std::cout<<"RFImageReader reading "<<std::endl;
-
- FILE *rf_file=fopen(filename.c_str(),"rb");
- if (!rf_file) return false;
- rf_header h;
- if (!ReadHeader(rf_file,h))
- {
- fclose(rf_file);
- return 0;
- }
-
- long im_size = h.height * h.width * h.frame;
- short* data = (short*)malloc(sizeof(short)*im_size);
-
- long frame_size = h.height * h.width;
- short* ptr = data;
- for (int k=0; k<h.frame; k++) {
- int frame_number;
- fread(&frame_number,sizeof(int),1,rf_file);
- fread(ptr,sizeof(short),frame_size,rf_file);
- ptr += frame_size;
- }
- fclose(rf_file);
-
- // std::cout << "NewVtkImageDataFromRaw" << std::endl;
- vtkImageData* im = crea::NewVtkImageDataFromRaw( data,
- h.width,
- h.height,
- h.frame);
- return im;
-
- // std::cout << "OK" << std::endl;
-
- }
- //=====================================================================
-
-
- //=====================================================================
- void RFImageReader::PushBackExtensions(std::vector<std::string>& v)
- {
- v.push_back("rf");
- }
- //=====================================================================
-
-
-
- //=====================================================================
- void RFImageReader::ReadAttributes(const std::string& filename,
- std::map<std::string,std::string>& attr)
- {
- // std::cout << "RFImageReader::ReadDicomInfo '"<<filename<<"'"<<std::endl;
- GimmickMessage(2,"Reading attributes from '"<<filename<<std::endl);
-
-
- FILE *rf_file=fopen(filename.c_str(),"rb");
- if (!rf_file) return;
- rf_header h;
- if (!ReadHeader(rf_file,h))
- {
- fclose(rf_file);
- return;
- }
- fclose(rf_file);
-
- // Columns
- char cols[128];
- sprintf(cols,"%i",h.width);
- // Rows
- char rows[128];
- sprintf(rows,"%i",h.height);
- // Planes
- char planes[128];
- sprintf(planes,"%i",h.frame);
-
-
- //
- std::map<std::string,std::string>::iterator i;
- if ( (i = attr.find("FullFileName")) != attr.end())
- {
- // boost::filesystem::path full_path(filename);
- // std::string f = full_path.leaf();
- i->second = filename;
- }
- if ( (i = attr.find("D0004_1500")) != attr.end())
- {
- boost::filesystem::path full_path(filename);
- std::string f = full_path.leaf();
- i->second = f;
- }
- if ( (i = attr.find("D0028_0010")) != attr.end())
- {
- i->second = rows;
- }
- if ( (i = attr.find("D0028_0011")) != attr.end())
- {
- i->second = cols;
- }
-
- if ( (i = attr.find("D0028_0012")) != attr.end())
- {
- i->second = planes;
- }
-
- GimmickMessage(2,"Attributes map:"<<std::endl<<attr<<std::endl);
- }
- //=====================================================================
-
-} // namespace creaImageIO
+++ /dev/null
-#ifndef __creaImageIORFImageReader_h_INCLUDED__
-#define __creaImageIORFImageReader_h_INCLUDED__
-
-
-#include <creaImageIOAbstractImageReader.h>
-#include <creaImageIOSystem.h>
-
-namespace creaImageIO
-{
-
-
- /**
- * \ingroup IO
- */
-
- //=====================================================================
- /// Concrete image reader for ultrasonix 'rf' files
- class CREAIMAGEIO_EXPORT RFImageReader : virtual public AbstractImageReader
- {
- public:
- RFImageReader();
-
- virtual ~RFImageReader();
-
- virtual void PushBackExtensions(std::vector<std::string>&);
- virtual bool CanRead(const std::string& filename);
- virtual vtkImageData* ReadImage(const std::string& filename);
- virtual void ReadAttributes(const std::string& filename,
- tree::AttributeMapType& attr);
-
- };
- //=====================================================================
-
-
-
-} // namespace creaImageIO
-
-
-
-#endif // #ifndef __creaImageIORFImageReader_h_INCLUDED__