diff options
| author | scuri <scuri> | 2009-09-10 17:33:34 +0000 | 
|---|---|---|
| committer | scuri <scuri> | 2009-09-10 17:33:34 +0000 | 
| commit | 5335c91f4a10081ef8b04a6d47403c0efc064647 (patch) | |
| tree | 742e83f8cfbf52e0d82c1e07f733ca4a5212b535 | |
| parent | 67475cb6aa3af3a0c65351562c22f25814a45fcb (diff) | |
# Fixed: RAW format initialization.
| -rw-r--r-- | html/en/rep_guide.html | 4 | ||||
| -rw-r--r-- | include/im_format_all.h | 2 | ||||
| -rw-r--r-- | include/im_format_raw.h | 8 | ||||
| -rw-r--r-- | src/im_fileraw.cpp | 38 | ||||
| -rw-r--r-- | src/im_format_raw.cpp | 20 | 
5 files changed, 44 insertions, 28 deletions
| diff --git a/html/en/rep_guide.html b/html/en/rep_guide.html index 144c11f..5c70790 100644 --- a/html/en/rep_guide.html +++ b/html/en/rep_guide.html @@ -35,9 +35,9 @@ void* buffer = malloc(size);</pre>        <pre>float value;  if (is_packed)  -value = idata[y*width*depth + x*depth + d] +  value = idata[y*width*depth + x*depth + d]  else -value = idata[d*width*height + y*width + x]</pre> +  value = idata[d*width*height + y*width + x]</pre>    </div>    <div align="left"> diff --git a/include/im_format_all.h b/include/im_format_all.h index 3a7cbb6..bb43816 100644 --- a/include/im_format_all.h +++ b/include/im_format_all.h @@ -477,7 +477,7 @@ void imFormatRegisterTGA(void);        Description (string)      Comments: -      In fact ASCII is an expansion... +      In fact ASCII is an expansion, not a compression, because the file will be larger than binary data.  \endverbatim   * \ingroup format */  void imFormatRegisterPNM(void); diff --git a/include/im_format_raw.h b/include/im_format_raw.h index fdb07f8..80a8203 100644 --- a/include/im_format_raw.h +++ b/include/im_format_raw.h @@ -22,8 +22,9 @@ extern "C" {   * \par   * Internal Implementation.   * \par - * Supports RAW binary images. You must know image parameters a priori. \n - * You must set the IM_INT attributes "Width", "Height", "ColorMode", "DataType" before the imFileReadImageInfo/imFileWriteImageInfo functions. + * Supports RAW binary images. This is a unstructured and uncompressed binary data.  + * It is NOT a Camera RAW file generated in many professional digital cameras. \n + * You must know image parameters a priori and must set the IM_INT attributes "Width", "Height", "ColorMode", "DataType" before the imFileReadImageInfo/imFileWriteImageInfo functions.   * \par   * The data must be in binary form, but can start in an arbitrary offset from the begining of the file, use attribute "StartOffset".   * The default is at 0 offset.  @@ -54,8 +55,9 @@ extern "C" {        ImageCount[1], StartOffset[0], SwitchType[FALSE], ByteOrder[IM_LITTLEENDIAN], Padding[0]  IM_INT (1)  \endverbatim   * \ingroup format */ -imFileFormatBase* imFormatInitRAW(void); +imFormat* imFormatInitRAW(void); +void imFormatFinishRAW(void);  #if defined(__cplusplus)  } diff --git a/src/im_fileraw.cpp b/src/im_fileraw.cpp index 530b6c9..91be826 100644 --- a/src/im_fileraw.cpp +++ b/src/im_fileraw.cpp @@ -2,7 +2,7 @@   * \brief RAW File Format Open/New Functions   *   * See Copyright Notice in im_lib.h - * $Id: im_fileraw.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $ + * $Id: im_fileraw.cpp,v 1.3 2009/09/10 17:33:35 scuri Exp $   */  #include "im.h" @@ -21,44 +21,46 @@ imFile* imFileOpenRaw(const char* file_name, int *error)  {    assert(file_name); -  imFileFormatBase* iformat = imFormatInitRAW(); -  *error = iformat->Open(file_name); +  imFormat* iformat = imFormatInitRAW(); +  imFileFormatBase* ifileformat = iformat->Create(); +  *error = ifileformat->Open(file_name);    if (*error)    { -    delete iformat; +    delete ifileformat;      return NULL;    } -  imFileClear(iformat); +  imFileClear(ifileformat); -  iformat->attrib_table = new imAttribTable(599); +  ifileformat->attrib_table = new imAttribTable(599); -  iformat->counter = imCounterBegin(file_name); +  ifileformat->counter = imCounterBegin(file_name); -  return iformat; +  return ifileformat;  }  imFile* imFileNewRaw(const char* file_name, int *error)  {    assert(file_name); -  imFileFormatBase* iformat = imFormatInitRAW(); -  *error = iformat->New(file_name); +  imFormat* iformat = imFormatInitRAW(); +  imFileFormatBase* ifileformat = iformat->Create(); +  *error = ifileformat->New(file_name);    if (*error)     { -    delete iformat; +    delete ifileformat;      return NULL;    } -  imFileClear(iformat); +  imFileClear(ifileformat); -  iformat->is_new = 1; -  iformat->image_count = 0; -  iformat->compression[0] = 0; +  ifileformat->is_new = 1; +  ifileformat->image_count = 0; +  ifileformat->compression[0] = 0; -  iformat->attrib_table = new imAttribTable(101); +  ifileformat->attrib_table = new imAttribTable(101); -  iformat->counter = imCounterBegin(file_name); +  ifileformat->counter = imCounterBegin(file_name); -  return iformat; +  return ifileformat;  } diff --git a/src/im_format_raw.cpp b/src/im_format_raw.cpp index 5f8d2e5..6a6a7fd 100644 --- a/src/im_format_raw.cpp +++ b/src/im_format_raw.cpp @@ -2,7 +2,7 @@   * \brief RAW File Format   *   * See Copyright Notice in im_lib.h - * $Id: im_format_raw.cpp,v 1.3 2009/07/10 18:39:37 scuri Exp $ + * $Id: im_format_raw.cpp,v 1.4 2009/09/10 17:33:35 scuri Exp $   */  #include "im_format.h" @@ -58,11 +58,23 @@ public:    int CanWrite(const char* compression, int color_mode, int data_type) const;  }; +static imFormat* raw_format = NULL; -imFileFormatBase* imFormatInitRAW(void) +void imFormatFinishRAW(void)  { -  imFormatRAW iformat; -  return iformat.Create(); +  if (raw_format) +  { +    delete raw_format; +    raw_format = NULL; +  } +} + +imFormat* imFormatInitRAW(void) +{ +  if (!raw_format) +    raw_format = new imFormatRAW(); + +  return raw_format;  }  int imFileFormatRAW::Open(const char* file_name) | 
