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 /src | |
parent | 67475cb6aa3af3a0c65351562c22f25814a45fcb (diff) |
# Fixed: RAW format initialization.
Diffstat (limited to 'src')
-rw-r--r-- | src/im_fileraw.cpp | 38 | ||||
-rw-r--r-- | src/im_format_raw.cpp | 20 |
2 files changed, 36 insertions, 22 deletions
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) |