include/raytracermodule.h
branchpyrit
changeset 96 9eb71e76c7fd
child 97 2a853d284a6a
--- /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 <Python.h>
+#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<PyObject*> *children;
+} RaytracerObject;
+
+#endif