diff options
Diffstat (limited to 'source/gameengine/VideoTexture/ImageMix.cpp')
-rw-r--r-- | source/gameengine/VideoTexture/ImageMix.cpp | 216 |
1 files changed, 0 insertions, 216 deletions
diff --git a/source/gameengine/VideoTexture/ImageMix.cpp b/source/gameengine/VideoTexture/ImageMix.cpp deleted file mode 100644 index 95b881f9c2e..00000000000 --- a/source/gameengine/VideoTexture/ImageMix.cpp +++ /dev/null @@ -1,216 +0,0 @@ -/* - * ***** BEGIN GPL LICENSE BLOCK ***** - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - * - * This program 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 General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software Foundation, - * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * Copyright (c) 2007 The Zdeno Ash Miklas - * - * This source file is part of VideoTexture library - * - * Contributor(s): - * - * ***** END GPL LICENSE BLOCK ***** - */ - -/** \file gameengine/VideoTexture/ImageMix.cpp - * \ingroup bgevideotex - */ - - -// implementation - -#include "EXP_PyObjectPlus.h" -#include <structmember.h> - -#include "ImageMix.h" - -#include "ImageBase.h" - -#include "Exception.h" - - -// cast ImageSource pointer to ImageSourceMix -inline ImageSourceMix *getImageSourceMix(ImageSource *src) -{ return static_cast<ImageSourceMix*>(src); } - - -// get weight -short ImageMix::getWeight(const char *id) -{ - // find source - ImageSourceList::iterator src = findSource(id); - // if found, return its weight - return src != m_sources.end() ? getImageSourceMix(*src)->getWeight() : 0; -} - -// set weight -bool ImageMix::setWeight(const char *id, short weight) -{ - // find source - ImageSourceList::iterator src = findSource(id); - // if source isn't found, report it - if (src == m_sources.end()) return false; - // set its weight - getImageSourceMix(*src)->setWeight(weight); - return true; -} - -ExceptionID ImageSizesNotMatch; - -ExpDesc ImageSizesNotMatchDesc(ImageSizesNotMatch, "Image sizes of sources are different"); - -// calculate image from sources and set its availability -void ImageMix::calcImage(unsigned int texId, double ts) -{ - // check source sizes - if (!checkSourceSizes()) THRWEXCP(ImageSizesNotMatch, S_OK); - // set offsets to image buffers - for (ImageSourceList::iterator it = m_sources.begin(); it != m_sources.end(); ++it) - // if image buffer is available - if ((*it)->getImageBuf() != NULL) - // set its offset - getImageSourceMix(*it)->setOffset(m_sources[0]->getImageBuf()); - // otherwise don't calculate image - else - return; - // if there is only single source - if (m_sources.size() == 1) - { - // use single filter - FilterBase mixFilt; - // fiter and convert image - filterImage(mixFilt, m_sources[0]->getImageBuf(), m_sources[0]->getSize()); - } - // otherwise use mix filter to merge source images - else - { - FilterImageMix mixFilt (m_sources); - // fiter and convert image - filterImage(mixFilt, m_sources[0]->getImageBuf(), m_sources[0]->getSize()); - } -} - - - -// cast Image pointer to ImageMix -inline ImageMix * getImageMix(PyImage *self) -{ return static_cast<ImageMix*>(self->m_image); } - - -// python methods - -// get source weight -static PyObject *getWeight(PyImage *self, PyObject *args) -{ - // weight - short weight = 0; - // get arguments - char *id; - if (!PyArg_ParseTuple(args, "s:getWeight", &id)) - return NULL; - if (self->m_image != NULL) - // get weight - weight = getImageMix(self)->getWeight(id); - // return weight - return Py_BuildValue("h", weight); -} - - -// set source weight -static PyObject *setWeight(PyImage *self, PyObject *args) -{ - // get arguments - char *id; - short weight = 0; - if (!PyArg_ParseTuple(args, "sh:setWeight", &id, &weight)) - return NULL; - if (self->m_image != NULL) - // set weight - if (!getImageMix(self)->setWeight(id, weight)) - { - // if not set, report error - PyErr_SetString(PyExc_RuntimeError, "Invalid id of source"); - return NULL; - } - // return none - Py_RETURN_NONE; -} - - -// methods structure -static PyMethodDef imageMixMethods[] = { - {"getSource", (PyCFunction)Image_getSource, METH_VARARGS, "get image source"}, - {"setSource", (PyCFunction)Image_setSource, METH_VARARGS, "set image source"}, - {"getWeight", (PyCFunction)getWeight, METH_VARARGS, "get image source weight"}, - {"setWeight", (PyCFunction)setWeight, METH_VARARGS, "set image source weight"}, - // methods from ImageBase class - {"refresh", (PyCFunction)Image_refresh, METH_VARARGS, "Refresh image - invalidate its current content"}, - {NULL} -}; -// attributes structure -static PyGetSetDef imageMixGetSets[] = { - // attributes from ImageBase class - {(char*)"valid", (getter)Image_valid, NULL, (char*)"bool to tell if an image is available", NULL}, - {(char*)"image", (getter)Image_getImage, NULL, (char*)"image data", NULL}, - {(char*)"size", (getter)Image_getSize, NULL, (char*)"image size", NULL}, - {(char*)"scale", (getter)Image_getScale, (setter)Image_setScale, (char*)"fast scale of image (near neighbor)", NULL}, - {(char*)"flip", (getter)Image_getFlip, (setter)Image_setFlip, (char*)"flip image vertically", NULL}, - {(char*)"filter", (getter)Image_getFilter, (setter)Image_setFilter, (char*)"pixel filter", NULL}, - {NULL} -}; - - -// define python type -PyTypeObject ImageMixType = { - PyVarObject_HEAD_INIT(NULL, 0) - "VideoTexture.ImageMix", /*tp_name*/ - sizeof(PyImage), /*tp_basicsize*/ - 0, /*tp_itemsize*/ - (destructor)Image_dealloc, /*tp_dealloc*/ - 0, /*tp_print*/ - 0, /*tp_getattr*/ - 0, /*tp_setattr*/ - 0, /*tp_compare*/ - 0, /*tp_repr*/ - 0, /*tp_as_number*/ - 0, /*tp_as_sequence*/ - 0, /*tp_as_mapping*/ - 0, /*tp_hash */ - 0, /*tp_call*/ - 0, /*tp_str*/ - 0, /*tp_getattro*/ - 0, /*tp_setattro*/ - &imageBufferProcs, /*tp_as_buffer*/ - Py_TPFLAGS_DEFAULT, /*tp_flags*/ - "Image mixer", /* tp_doc */ - 0, /* tp_traverse */ - 0, /* tp_clear */ - 0, /* tp_richcompare */ - 0, /* tp_weaklistoffset */ - 0, /* tp_iter */ - 0, /* tp_iternext */ - imageMixMethods, /* tp_methods */ - 0, /* tp_members */ - imageMixGetSets, /* tp_getset */ - 0, /* tp_base */ - 0, /* tp_dict */ - 0, /* tp_descr_get */ - 0, /* tp_descr_set */ - 0, /* tp_dictoffset */ - (initproc)Image_init<ImageMix>, /* tp_init */ - 0, /* tp_alloc */ - Image_allocNew, /* tp_new */ -}; - |