summaryrefslogtreecommitdiff
path: root/src/im_format_sgi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/im_format_sgi.cpp')
-rw-r--r--src/im_format_sgi.cpp49
1 files changed, 29 insertions, 20 deletions
diff --git a/src/im_format_sgi.cpp b/src/im_format_sgi.cpp
index 1b0ac0a..08bbf4d 100644
--- a/src/im_format_sgi.cpp
+++ b/src/im_format_sgi.cpp
@@ -2,7 +2,7 @@
* \brief SGI - Silicon Graphics Image File Format
*
* See Copyright Notice in im_lib.h
- * $Id: im_format_sgi.cpp,v 1.1 2008/10/17 06:10:16 scuri Exp $
+ * $Id: im_format_sgi.cpp,v 1.2 2008/12/03 15:45:34 scuri Exp $
*/
#include "im_format.h"
@@ -133,15 +133,31 @@ static const char* iSGICompTable[2] =
"RLE"
};
-class imFormatSGI: public imFormat
+class imFileFormatSGI: public imFileFormatBase
{
imBinFile* handle; /* the binary file handle */
unsigned char comp_type, /* sgi compression information */
bpc; /* bytes per channels */
- unsigned int *starttab, /* compression control buffer */
- *lengthtab; /* compression control buffer */
+ unsigned int *starttab, /* compression control buffer */
+ *lengthtab; /* compression control buffer */
public:
+ imFileFormatSGI(const imFormat* _iformat): imFileFormatBase(_iformat) {}
+ ~imFileFormatSGI() {}
+
+ int Open(const char* file_name);
+ int New(const char* file_name);
+ void Close();
+ void* Handle(int index);
+ int ReadImageInfo(int index);
+ int ReadImageData(void* data);
+ int WriteImageInfo();
+ int WriteImageData(void* data);
+};
+
+class imFormatSGI: public imFormat
+{
+public:
imFormatSGI()
:imFormat("SGI",
"Silicon Graphics Image File Format",
@@ -152,14 +168,7 @@ public:
{}
~imFormatSGI() {}
- int Open(const char* file_name);
- int New(const char* file_name);
- void Close();
- void* Handle(int index);
- int ReadImageInfo(int index);
- int ReadImageData(void* data);
- int WriteImageInfo();
- int WriteImageData(void* data);
+ imFileFormatBase* Create(void) const { return new imFileFormatSGI(this); }
int CanWrite(const char* compression, int color_mode, int data_type) const;
};
@@ -168,7 +177,7 @@ void imFormatRegisterSGI(void)
imFormatRegister(new imFormatSGI());
}
-int imFormatSGI::Open(const char* file_name)
+int imFileFormatSGI::Open(const char* file_name)
{
unsigned short word_value;
@@ -213,7 +222,7 @@ int imFormatSGI::Open(const char* file_name)
return IM_ERR_NONE;
}
-int imFormatSGI::New(const char* file_name)
+int imFileFormatSGI::New(const char* file_name)
{
/* opens the binary file for writing with motorola byte order */
handle = imBinFileNew(file_name);
@@ -230,14 +239,14 @@ int imFormatSGI::New(const char* file_name)
return IM_ERR_NONE;
}
-void imFormatSGI::Close()
+void imFileFormatSGI::Close()
{
if (this->starttab) free(this->starttab);
if (this->lengthtab) free(this->lengthtab);
imBinFileClose(handle);
}
-void* imFormatSGI::Handle(int index)
+void* imFileFormatSGI::Handle(int index)
{
if (index == 0)
return (void*)this->handle;
@@ -245,7 +254,7 @@ void* imFormatSGI::Handle(int index)
return NULL;
}
-int imFormatSGI::ReadImageInfo(int index)
+int imFileFormatSGI::ReadImageInfo(int index)
{
(void)index;
unsigned short word_value, dimension, depth;
@@ -378,7 +387,7 @@ int imFormatSGI::ReadImageInfo(int index)
return IM_ERR_NONE;
}
-int imFormatSGI::WriteImageInfo()
+int imFileFormatSGI::WriteImageInfo()
{
unsigned int dword_value;
unsigned short word_value;
@@ -487,7 +496,7 @@ int imFormatSGI::WriteImageInfo()
return IM_ERR_NONE;
}
-int imFormatSGI::ReadImageData(void* data)
+int imFileFormatSGI::ReadImageData(void* data)
{
int count = imFileLineBufferCount(this);
@@ -533,7 +542,7 @@ int imFormatSGI::ReadImageData(void* data)
return IM_ERR_NONE;
}
-int imFormatSGI::WriteImageData(void* data)
+int imFileFormatSGI::WriteImageData(void* data)
{
int count = imFileLineBufferCount(this);