summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/im_fileraw.cpp38
-rw-r--r--src/im_format_raw.cpp20
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)