/*****************************************************************************
** FILE IDENTIFICATION
**
-** Name: imagefile.h
+** Name: imagefile.h
** Purpose: imagefile class header
-** Programmer: Kevin Rosenberg
-** Date Started: June 2000
+** Programmer: Kevin Rosenberg
+** Date Started: June 2000
**
** This is part of the CTSim program
-** Copyright (C) 1983-2000 Kevin Rosenberg
-**
-** $Id: imagefile.h,v 1.28 2001/01/02 16:02:12 kevin Exp $
+** Copyright (c) 1983-2009 Kevin Rosenberg
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License (version 2) as
class F32Image : public Array2dFile
{
public:
- F32Image (int nx, int ny, int dataType = Array2dFile::DATA_TYPE_REAL);
+ F32Image (int nx, int ny, int dataType = Array2dFile::DATA_TYPE_REAL);
F32Image (void);
kfloat32** getArray (void)
#endif
+
class ImageFile : public ImageFileBase
{
private:
- static const char* s_aszFormatName[];
- static const char* s_aszFormatTitle[];
- static const int s_iFormatCount;
+ static const char* s_aszExportFormatName[];
+ static const char* s_aszExportFormatTitle[];
+ static const int s_iExportFormatCount;
+ static const char* s_aszImportFormatName[];
+ static const char* s_aszImportFormatTitle[];
+ static const int s_iImportFormatCount;
+
+ static void skipSpacePPM (FILE* fp); // skip space in a ppm file
public:
- static const int FORMAT_INVALID;
- static const int FORMAT_PGM;
- static const int FORMAT_PGMASCII;
+ static const int EXPORT_FORMAT_INVALID;
+ static const int IMPORT_FORMAT_INVALID;
+ static const int EXPORT_FORMAT_TEXT;
+ static const int EXPORT_FORMAT_PGM;
+ static const int EXPORT_FORMAT_PGMASCII;
+ static const int IMPORT_FORMAT_PPM;
#if HAVE_PNG
- static const int FORMAT_PNG;
- static const int FORMAT_PNG16;
+ static const int EXPORT_FORMAT_PNG;
+ static const int EXPORT_FORMAT_PNG16;
+ static const int IMPORT_FORMAT_PNG;
#endif
-
- static const int getFormatCount() {return s_iFormatCount;}
- static const char** getFormatNameArray() {return s_aszFormatName;}
- static const char** getFormatTitleArray() {return s_aszFormatTitle;}
- static int convertFormatNameToID (const char* const formatName);
- static const char* convertFormatIDToName (const int formatID);
- static const char* convertFormatIDToTitle (const int formatID);
+#if HAVE_CTN_DICOM
+ static const int EXPORT_FORMAT_DICOM;
+ static const int IMPORT_FORMAT_DICOM;
+#endif
+ static const int EXPORT_FORMAT_RAW;
+
+ static const int getExportFormatCount() {return s_iExportFormatCount;}
+ static const char** getExportFormatNameArray() {return s_aszExportFormatName;}
+ static const char** getExportFormatTitleArray() {return s_aszExportFormatTitle;}
+ static int convertExportFormatNameToID (const char* const ExportFormatName);
+ static const char* convertExportFormatIDToName (const int ExportFormatID);
+ static const char* convertExportFormatIDToTitle (const int ExportFormatID);
+
+ static const int getImportFormatCount() {return s_iImportFormatCount;}
+ static const char** getImportFormatNameArray() {return s_aszImportFormatName;}
+ static const char** getImportFormatTitleArray() {return s_aszImportFormatTitle;}
+ static int convertImportFormatNameToID (const char* const ImportFormatName);
+ static const char* convertImportFormatIDToName (const int ImportFormatID);
+ static const char* convertImportFormatIDToTitle (const int ImportFormatID);
+
+ static const double s_dRedGrayscaleFactor;
+ static const double s_dGreenGrayscaleFactor;
+ static const double s_dBlueGrayscaleFactor;
ImageFile (int nx, int ny)
: ImageFileBase (nx, ny)
: ImageFileBase ()
{}
+ void getCenterCoordinates (unsigned int& iXCenter, unsigned int& iYCenter);
+
bool convertRealToComplex ();
bool convertComplexToReal ();
#ifdef HAVE_FFTW
bool fft (ImageFile& result) const;
bool ifft (ImageFile& result) const;
+ bool fftRows (ImageFile& result) const;
+ bool ifftRows (ImageFile& result) const;
+ bool fftCols (ImageFile& result) const;
+ bool ifftCols (ImageFile& result) const;
#endif
bool magnitude (ImageFile& result) const;
bool phase (ImageFile& result) const;
-
- int display (void) const;
- int displayScaling (const int scaleFactor, ImageFileValue pmin, ImageFileValue pmax) const;
+ bool real (ImageFile& result) const;
+ bool imaginary (ImageFile& result) const;
bool exportImage (const char* const pszFormat, const char* const pszFilename, int nxcell, int nycell, double densmin, double densmax);
-#if HAVE_PNG
+ bool importImage (const char* const pszFormat, const char* const pszFilename);
+
+#ifdef HAVE_PNG
bool writeImagePNG (const char* const outfile, int bitdepth, int nxcell, int nycell, double densmin, double densmax);
+ bool readImagePNG (const char* const pszFile);
#endif
-#if HAVE_GD
+#ifdef HAVE_GD
bool writeImageGIF (const char* const outfile, int nxcell, int nycell, double densmin, double densmax);
#endif
bool writeImagePGM (const char* const outfile, int nxcell, int nycell, double densmin, double densmax);
bool writeImagePGMASCII (const char* const outfile, int nxcell, int nycell, double densmin, double densmax);
+ bool readImagePPM (const char* const pszFile);
+ bool writeImageRaw(const char* const outfile, int nxcell, int nycell);
+ bool writeImageText (const char* const outfile);
+
+ static double redGrayscaleFactor() {return s_dRedGrayscaleFactor;}
+ static double greenGrayscaleFactor() {return s_dGreenGrayscaleFactor;}
+ static double blueGrayscaleFactor() {return s_dBlueGrayscaleFactor;}
+ static double colorToGrayscale (double r, double g, double b)
+ { return r * s_dRedGrayscaleFactor + g * s_dGreenGrayscaleFactor + b * s_dBlueGrayscaleFactor; }
};