summaryrefslogtreecommitdiff
path: root/src/OutputImage.cxx
diff options
context:
space:
mode:
authorJohannes Hofmann <Johannes.Hofmann@gmx.de>2006-08-03 20:45:57 +0200
committerJohannes Hofmann <Johannes.Hofmann@gmx.de>2006-08-03 20:45:57 +0200
commit6524c95bb8ea0339908ab9bff03211f8c42e77d9 (patch)
tree5edf64b415049d9a1f84a4e840adc6110e70c886 /src/OutputImage.cxx
parent4894107e215fd13e8121bcdc3b610c4db7556689 (diff)
add TIFFOutputImage
Diffstat (limited to 'src/OutputImage.cxx')
-rw-r--r--src/OutputImage.cxx179
1 files changed, 179 insertions, 0 deletions
diff --git a/src/OutputImage.cxx b/src/OutputImage.cxx
new file mode 100644
index 0000000..52af058
--- /dev/null
+++ b/src/OutputImage.cxx
@@ -0,0 +1,179 @@
+//
+// Copyright 2006 by Johannes Hofmann
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Library General Public
+// License as published by the Free Software Foundation; either
+// version 2 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Library General Public License for more details.
+//
+// You should have received a copy of the GNU Library General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+// USA.
+//
+
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "OutputImage.H"
+
+OutputImage::OutputImage() {
+ W = 0;
+ H = 0;
+ initialized = 0;
+}
+
+OutputImage::~OutputImage() {
+}
+
+int
+OutputImage::init(int w1, int h1) {
+ W = w1;
+ H = h1;
+ line = 0;
+ initialized = 1;
+
+ return init_internal(w1, h1);
+}
+
+
+int
+OutputImage::init_internal(int w1, int h1) {
+ return 0;
+}
+
+int
+OutputImage::set_pixel(int x, char r, char g, char b) {
+ if (!initialized || x < 0 || x >= W) {
+ return 1;
+ } else {
+ return set_pixel_internal(x, r, g, b);
+ }
+}
+
+int
+OutputImage::set_pixel_internal(int x, char r, char g, char b) {
+ return 0;
+}
+
+int
+OutputImage::next_line() {
+ if (!initialized || line++ >= H) {
+ return 1;
+ } else {
+ return next_line_internal();
+ }
+}
+
+int
+OutputImage::next_line_internal() {
+ return 0;
+}
+
+int
+OutputImage::done() {
+ if (!initialized) {
+ return 1;
+ } else {
+ next_line();
+ return done_internal();
+ }
+}
+
+int
+OutputImage::done_internal() {
+ return 0;
+}
+
+#define MAX_OUTPUT_IMAGES 16
+OutputImages::OutputImages() {
+ imgs = (OutputImage **) calloc(MAX_OUTPUT_IMAGES, sizeof(OutputImage *));
+ max_imgs = MAX_OUTPUT_IMAGES;
+}
+
+OutputImages::~OutputImages() {
+ free(imgs);
+}
+
+int
+OutputImages::add(OutputImage *img) {
+ for (int i=0; i<max_imgs;i++) {
+ if (imgs[i] == NULL) {
+ imgs[i] = img;
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+
+int
+OutputImages::remove(OutputImage *img) {
+ for (int i=0; i<max_imgs;i++) {
+ if (imgs[i] == img) {
+ imgs[i] = NULL;
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+int
+OutputImages::init(int w, int h) {
+ int ret = 0;
+
+ for (int i=0; i<max_imgs;i++) {
+ if (imgs[i]) {
+ ret += imgs[i]->init(w, h);
+ }
+ }
+
+ return ret;
+}
+
+int
+OutputImages::set_pixel(int x, char r, char g, char b) {
+ int ret = 0;
+
+ for (int i=0; i<max_imgs;i++) {
+ if (imgs[i]) {
+ ret += imgs[i]->set_pixel(x, r, g, b);
+ }
+ }
+
+ return ret;
+}
+
+int
+OutputImages::next_line() {
+ int ret = 0;
+
+ for (int i=0; i<max_imgs;i++) {
+ if (imgs[i]) {
+ ret += imgs[i]->next_line();
+ }
+ }
+
+ return ret;
+}
+
+int
+OutputImages::done() {
+ int ret = 0;
+
+ for (int i=0; i<max_imgs;i++) {
+ if (imgs[i]) {
+ ret += imgs[i]->done();
+ }
+ }
+
+ return ret;
+}
+