diff options
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) |