diff options
author | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2006-08-03 20:45:57 +0200 |
---|---|---|
committer | Johannes Hofmann <Johannes.Hofmann@gmx.de> | 2006-08-03 20:45:57 +0200 |
commit | 6524c95bb8ea0339908ab9bff03211f8c42e77d9 (patch) | |
tree | 5edf64b415049d9a1f84a4e840adc6110e70c886 /src/OutputImage.cxx | |
parent | 4894107e215fd13e8121bcdc3b610c4db7556689 (diff) |
add TIFFOutputImage
Diffstat (limited to 'src/OutputImage.cxx')
-rw-r--r-- | src/OutputImage.cxx | 179 |
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; +} + |