aboutsummaryrefslogtreecommitdiff
path: root/tool_src/QvLib/QvSFImage.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tool_src/QvLib/QvSFImage.cpp')
-rw-r--r--tool_src/QvLib/QvSFImage.cpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/tool_src/QvLib/QvSFImage.cpp b/tool_src/QvLib/QvSFImage.cpp
new file mode 100644
index 0000000..d733bf2
--- /dev/null
+++ b/tool_src/QvLib/QvSFImage.cpp
@@ -0,0 +1,39 @@
+#include <QvSFImage.h>
+
+// Can't use macro, since we define a constructor.
+
+QvSFImage::QvSFImage()
+{
+ size[0] = size[1] = 0;
+ numComponents = 0;
+ bytes = NULL;
+}
+
+QvSFImage::~QvSFImage()
+{
+ if (bytes != NULL)
+ delete [] bytes;
+}
+QvBool
+QvSFImage::readValue(QvInput *in)
+{
+ if (! in->read(size[0]) ||
+ ! in->read(size[1]) ||
+ ! in->read(numComponents))
+ return FALSE;
+
+ if (bytes != NULL)
+ delete [] bytes;
+ bytes = new unsigned char[size[0] * size[1] * numComponents];
+
+ int byte = 0;
+ for (int i = 0; i < size[0] * size[1]; i++) {
+ unsigned long l;
+ if (! in->read(l))
+ return FALSE;
+ for (int j = 0; j < numComponents; j++)
+ bytes[byte++] =
+ (unsigned char) ((l >> (8*(numComponents-j-1))) & 0xFF);
+ }
+ return TRUE;
+}