diff -r ca7d4c665531 -r 9eb71e76c7fd include/raytracermodule.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/raytracermodule.h Thu May 15 00:07:25 2008 +0200 @@ -0,0 +1,230 @@ +/* + * raytracermodule.h: raytracer module for Python + * + * This file is part of Pyrit Ray Tracer. + * + * Copyright 2006, 2007, 2008 Radek Brich + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef RAYTRACERMODULE_H +#define RAYTRACERMODULE_H + +#include +#include "raytracer.h" +#include "octree.h" +#include "kdtree.h" + + +#define TYPE_OBJECT(name, basicsize, dealloc, flags, doc, methods, members, base, init) \ +{ \ + PyObject_HEAD_INIT(NULL) \ + 0, /* ob_size */ \ + (name), /* tp_name */ \ + (basicsize), /* tp_basicsize*/ \ + 0, /* tp_itemsize*/ \ + (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*/\ + PyObject_GenericGetAttr, /* tp_getattro*/\ + 0, /* tp_setattro*/\ + 0, /* tp_as_buffer*/\ + (flags), /* tp_flags*/\ + (doc), /* tp_doc */\ + 0, /* tp_traverse */\ + 0, /* tp_clear */\ + 0, /* tp_richcompare */\ + 0, /* tp_weaklistoffset */\ + 0, /* tp_iter */\ + 0, /* tp_iternext */\ + (methods), /* tp_methods */\ + (members), /* tp_members */\ + 0, /* tp_getset */\ + (base), /* tp_base */\ + 0, /* tp_dict */ \ + 0, /* tp_descr_get */ \ + 0, /* tp_descr_set */ \ + 0, /* tp_dictoffset */ \ + (init), /* tp_init */ \ + 0, /* tp_alloc */ \ + 0, /* tp_new */ \ + 0, /* tp_free */ \ +} + +/** Light object */ +typedef struct { + PyObject_HEAD + Light *light; +} LightObject; + +/** Camera object */ +typedef struct { + PyObject_HEAD + Camera *camera; +} CameraObject; + +/** Pixmap object */ +typedef struct { + PyObject_HEAD + const Pixmap *pixmap; +} PixmapObject; + +/** abstract TextureMap object */ +typedef struct { + PyObject_HEAD + TextureMap *texturemap; +} TextureMapObject; + +/** PlanarMap object - inherits TextureMap */ +typedef struct { + TextureMapObject texturemap; +} PlanarMapObject; + +/** CubicMap object - inherits TextureMap */ +typedef struct { + TextureMapObject texturemap; +} CubicMapObject; + +/** CylinderMap object - inherits TextureMap */ +typedef struct { + TextureMapObject texturemap; +} CylinderMapObject; + +/** SphereMap object - inherits TextureMap */ +typedef struct { + TextureMapObject texturemap; +} SphereMapObject; + +/** abstract ColourMap object */ +typedef struct { + PyObject_HEAD + ColourMap *colourmap; +} ColourMapObject; + +/** LinearColourMap object - inherits ColourMap */ +typedef struct { + ColourMapObject colourmap; +} LinearColourMapObject; + +/** BoundColourMap object - inherits ColourMap */ +typedef struct { + ColourMapObject colourmap; + Float *bounds; + Colour *colours; +} BoundColourMapObject; + +/** abstract Texture object */ +typedef struct { + PyObject_HEAD + Texture *texture; +} TextureObject; + +/** ImageTexture object - inherits Texture */ +typedef struct { + TextureObject texture; +} ImageTextureObject; + +/** CheckersTexture object - inherits Texture */ +typedef struct { + TextureObject texture; +} CheckersTextureObject; + +/** CloudTexture object - inherits Texture */ +typedef struct { + TextureObject texture; +} CloudTextureObject; + +/** Material object */ +typedef struct { + PyObject_HEAD + Material *material; +} MaterialObject; + +/** NormalVertex object */ +typedef struct { + PyObject_HEAD + NormalVertex *nvertex; +} NormalVertexObject; + +/** abstract Shape object */ +typedef struct { + PyObject_HEAD + Shape *shape; +} ShapeObject; + +/** Triangle object - inherits Shape */ +typedef struct { + ShapeObject shape; +} TriangleObject; + +/** Sphere object - inherits Shape */ +typedef struct { + ShapeObject shape; +} SphereObject; + +/** Box object - inherits Shape */ +typedef struct { + ShapeObject shape; +} BoxObject; + +/** abstract Sampler object */ +typedef struct { + PyObject_HEAD + Sampler *sampler; +} SamplerObject; + +/** DefaultSampler object - inherits Sampler */ +typedef struct { + SamplerObject sampler; +} DefaultSamplerObject; + +/** Container object */ +typedef struct { + PyObject_HEAD + Container *container; +} ContainerObject; + +/** Octree object - inherits Container */ +typedef struct { + ContainerObject container; +} OctreeObject; + +/** KdTree object - inherits Container */ +typedef struct { + ContainerObject container; +} KdTreeObject; + +/** main Raytracer object */ +typedef struct { + PyObject_HEAD + Raytracer *raytracer; + vector *children; +} RaytracerObject; + +#endif