Index: src/materials/A.pxi =================================================================== --- src/materials/A.pxi (revision 0) +++ src/materials/A.pxi (revision 765) @@ -0,0 +1,29 @@ +# PySoy materials.A* classes +# +# Copyright (C) 2006,2007,2008 PySoy Group +# +# 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 3 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, see http://www.gnu.org/licenses +# +# $Id$ + +cdef class Aventurine (Material) : + '''PySoy material.Aventurine + + This default material is intended to look like green aventurine + ''' + def __init__(self) : + self.ambient = soy.colors.Aventurine() + self.diffuse = soy.colors.Aventurine() + self.specular = soy.colors.Teal() + self.shininess = 10 Property changes on: src/materials/A.pxi ___________________________________________________________________ Name: svn:keywords + Id Index: src/materials/B.pxi =================================================================== --- src/materials/B.pxi (revision 0) +++ src/materials/B.pxi (revision 765) @@ -0,0 +1,29 @@ +# PySoy materials.B* classes +# +# Copyright (C) 2006,2007,2008 PySoy Group +# +# 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 3 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, see http://www.gnu.org/licenses +# +# $Id$ + +cdef class Basalt (Material) : + '''Pysoy materials.Basalt + + This default material is intended to look like the igneous rock - basalt + ''' + def __init__(self) : + self.ambient = soy.colors.Basalt() + self.diffuse = soy.colors.Basalt() + self.specular = soy.colors.Basalt() + self.shininess = 4 Property changes on: src/materials/B.pxi ___________________________________________________________________ Name: svn:keywords + Id Index: src/materials/R.pxi =================================================================== --- src/materials/R.pxi (revision 0) +++ src/materials/R.pxi (revision 765) @@ -0,0 +1,29 @@ +# PySoy materials.R* classes +# +# Copyright (C) 2006,2007,2008 PySoy Group +# +# 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 3 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, see http://www.gnu.org/licenses +# +# $Id$ + +cdef class Rhodonite (Material) : + '''PySoy materials.Rhodonite + + This default material is intended to look like rhodonite, a pink gem. + ''' + def __init__(self): + self.ambient = soy.colors.DeepPink() + self.diffuse = soy.colors.Pink() + self.specular = soy.colors.LightPink() + self.shininess = 8 Property changes on: src/materials/R.pxi ___________________________________________________________________ Name: svn:keywords + Id Index: src/materials/C.pxi =================================================================== --- src/materials/C.pxi (revision 0) +++ src/materials/C.pxi (revision 765) @@ -0,0 +1,41 @@ +# PySoy materials.C* classes +# +# Copyright (C) 2006,2007,2008 PySoy Group +# +# 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 3 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, see http://www.gnu.org/licenses +# +# $Id$ + +cdef class Copper (Material) : + '''Pysoy materials.Copper + + This default material is intended to look like copper + ''' + def __init__(self) : + self.ambient = soy.colors.Copper() + self.diffuse = soy.colors.Copper() + self.specular = soy.colors.Yellow() + self.shininess = 5 + + +cdef class CopperSulfate (Material) : + '''Pysoy materials.CopperSulfate + + This default material is intended to look like the crystal of Copper(II) Sulfate + ''' + def __init__(self) : + self.ambient = soy.colors.CopperSulfate() + self.diffuse = soy.colors.CopperSulfate() + self.specular = soy.colors.VeryLightBlueGreen() + self.shininess = 10 Property changes on: src/materials/C.pxi ___________________________________________________________________ Name: svn:keywords + Id Index: src/materials/S.pxi =================================================================== --- src/materials/S.pxi (revision 763) +++ src/materials/S.pxi (revision 765) @@ -17,12 +17,13 @@ # # $Id$ -cdef class Steel (Material) : +cdef class StainlessSteel (Material) : '''PySoy materials.Steel - This default material is intended to look like hard steel. + This default material is intended to look like stainless steel. ''' def __init__(self) : - self.ambient = soy.colors.Silver() - self.diffuse = soy.colors.Silver() - self.specular = soy.colors.Purple() + self.ambient = soy.colors.StainlessSteel() + self.diffuse = soy.colors.StainlessSteel() + self.specular = soy.colors.White() + self.shininess = 9 Index: src/materials/D.pxi =================================================================== --- src/materials/D.pxi (revision 0) +++ src/materials/D.pxi (revision 765) @@ -0,0 +1,29 @@ +# PySoy materials.D* classes +# +# Copyright (C) 2006,2007,2008 PySoy Group +# +# 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 3 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, see http://www.gnu.org/licenses +# +# $Id$ + +cdef class DarkWood (Material) : + '''Pysoy materials.DarkWood + + This default material is intended to look like dark wood + ''' + def __init__(self) : + self.ambient = soy.colors.DarkWood() + self.diffuse = soy.colors.DarkWood() + self.specular = soy.colors.DarkWood() + self.shininess = 0 Property changes on: src/materials/D.pxi ___________________________________________________________________ Name: svn:keywords + Id Index: src/materials/V.pxi =================================================================== --- src/materials/V.pxi (revision 0) +++ src/materials/V.pxi (revision 765) @@ -0,0 +1,30 @@ +# PySoy materials.V* classes +# +# Copyright (C) 2006,2007,2008 PySoy Group +# +# 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 3 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, see http://www.gnu.org/licenses +# +# $Id$ + +cdef class VelvetyRed (Material) : + '''Pysoy materials.VelvetyRed + + This class is intended to look like Red Velvet + ''' + def __init__(self) : + self.ambient = soy.colors.Red() + self.diffuse = soy.colors.Red() + self.specular = soy.colors.Red() + self.shininess = 0 + Property changes on: src/materials/V.pxi ___________________________________________________________________ Name: svn:keywords + Id Index: src/materials/soy.materials.pyx =================================================================== --- src/materials/soy.materials.pyx (revision 763) +++ src/materials/soy.materials.pyx (revision 765) @@ -26,4 +26,11 @@ import soy.colors include "Material.pxi" +include "A.pxi" +include "B.pxi" +include "C.pxi" +include "D.pxi" +include "P.pxi" +include "R.pxi" include "S.pxi" +include "V.pxi" Index: src/materials/soy.materials.c =================================================================== --- src/materials/soy.materials.c (revision 0) +++ src/materials/soy.materials.c (revision 765) @@ -0,0 +1,3711 @@ +/* Generated by Pyrex 0.9.6.4 on Sat Jan 12 00:53:10 2008 */ + +#define PY_SSIZE_T_CLEAN +#include "Python.h" +#include "structmember.h" +#ifndef PY_LONG_LONG + #define PY_LONG_LONG LONG_LONG +#endif +#if PY_VERSION_HEX < 0x02050000 + typedef int Py_ssize_t; + #define PY_SSIZE_T_MAX INT_MAX + #define PY_SSIZE_T_MIN INT_MIN + #define PyInt_FromSsize_t(z) PyInt_FromLong(z) + #define PyInt_AsSsize_t(o) PyInt_AsLong(o) +#endif +#ifndef WIN32 + #ifndef __stdcall + #define __stdcall + #endif + #ifndef __cdecl + #define __cdecl + #endif +#endif +#ifdef __cplusplus +#define __PYX_EXTERN_C extern "C" +#else +#define __PYX_EXTERN_C extern +#endif +#include +#include "GL/glew.h" +#include "stdio.h" +#include "signal.h" +#include "pythread.h" +#include "pystate.h" +#include "ceval.h" +#include "ogg/ogg.h" +#include "vorbis/codec.h" +#include "theora/theora.h" +#include "cairo/cairo.h" +#include "cairo/cairo-svg.h" + + +typedef struct {PyObject **p; char *s;} __Pyx_InternTabEntry; /*proto*/ +typedef struct {PyObject **p; char *s; long n;} __Pyx_StringTabEntry; /*proto*/ + +static PyObject *__pyx_m; +static PyObject *__pyx_b; +static int __pyx_lineno; +static char *__pyx_filename; +static char **__pyx_f; + +static char __pyx_mdoc[] = "PySoy materials\n\nThis module contains the base Material class and several predefines.\n"; + +static int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, char *name); /*proto*/ + +static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list); /*proto*/ + +static int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type); /*proto*/ + +static PyObject *__Pyx_GetName(PyObject *dict, PyObject *name); /*proto*/ + +static void __Pyx_WriteUnraisable(char *name); /*proto*/ + +static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb); /*proto*/ + +static int __Pyx_InternStrings(__Pyx_InternTabEntry *t); /*proto*/ + +static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/ + +static int __Pyx_SetVtable(PyObject *dict, void *vtable); /*proto*/ + +static PyTypeObject *__Pyx_ImportType(char *module_name, char *class_name, long size); /*proto*/ + +static PyObject *__Pyx_ImportModule(char *name); /*proto*/ + +static int __Pyx_GetVtable(PyObject *dict, void *vtabptr); /*proto*/ + +static void __Pyx_AddTraceback(char *funcname); /*proto*/ + +/* Declarations from gl */ + + +/* Declarations from stdio */ + + +/* Declarations from soy.colors */ + +struct __pyx_obj_3soy_6colors_Color { + PyObject_HEAD + struct __pyx_vtabstruct_3soy_6colors_Color *__pyx_vtab; + GLfloat _r; + GLfloat _g; + GLfloat _b; + GLfloat _a; +}; + + +struct __pyx_vtabstruct_3soy_6colors_Color { + void (*_getRGBA)(struct __pyx_obj_3soy_6colors_Color *,GLfloat *); +}; +static struct __pyx_vtabstruct_3soy_6colors_Color *__pyx_vtabptr_3soy_6colors_Color; + +static PyTypeObject *__pyx_ptype_3soy_6colors_Color = 0; + +/* Declarations from soy._internals */ + +struct __pyx_obj_3soy_10_internals_Children { + PyObject_HEAD + struct __pyx_vtabstruct_3soy_10_internals_Children *__pyx_vtab; + int size; + int current; + void **list; + void *mutex; +}; + +struct __pyx_obj_3soy_10_internals_Loadable { + PyObject_HEAD + struct __pyx_vtabstruct_3soy_10_internals_Loadable *__pyx_vtab; + PyObject *_source; + int _state; +}; + + +struct __pyx_vtabstruct_3soy_10_internals_Children { + void (*lock)(struct __pyx_obj_3soy_10_internals_Children *); + int (*trylock)(struct __pyx_obj_3soy_10_internals_Children *); + void (*unlock)(struct __pyx_obj_3soy_10_internals_Children *); + void (*append)(struct __pyx_obj_3soy_10_internals_Children *,void *); + int (*index)(struct __pyx_obj_3soy_10_internals_Children *,void *); + void (*swap)(struct __pyx_obj_3soy_10_internals_Children *,int,int); + void (*up)(struct __pyx_obj_3soy_10_internals_Children *,void *); + void (*down)(struct __pyx_obj_3soy_10_internals_Children *,void *); + void (*top)(struct __pyx_obj_3soy_10_internals_Children *,void *); + void (*bottom)(struct __pyx_obj_3soy_10_internals_Children *,void *); + void (*remove)(struct __pyx_obj_3soy_10_internals_Children *,void *); + void (*empty)(struct __pyx_obj_3soy_10_internals_Children *); +}; +static struct __pyx_vtabstruct_3soy_10_internals_Children *__pyx_vtabptr_3soy_10_internals_Children; + + +struct __pyx_vtabstruct_3soy_10_internals_Loadable { + int (*_load)(struct __pyx_obj_3soy_10_internals_Loadable *,void *,int); + int (*_save)(struct __pyx_obj_3soy_10_internals_Loadable *,void *,int); + int (*_ready)(struct __pyx_obj_3soy_10_internals_Loadable *); +}; +static struct __pyx_vtabstruct_3soy_10_internals_Loadable *__pyx_vtabptr_3soy_10_internals_Loadable; + +static PyTypeObject *__pyx_ptype_3soy_10_internals_Children = 0; +static PyTypeObject *__pyx_ptype_3soy_10_internals_Loadable = 0; + +/* Declarations from py */ + + +/* Declarations from ogg */ + + +/* Declarations from cairo */ + + +/* Declarations from soy.textures */ + +struct __pyx_obj_3soy_8textures_Texture { + struct __pyx_obj_3soy_10_internals_Loadable __pyx_base; + GLuint _textureID; + GLenum _textureTarget; + int _chans; + GLsizei _width; + GLsizei _height; + GLsizei _depth; + GLfloat _scaleX; + GLfloat _scaleY; + GLfloat _scaleZ; + float _aspect; + int _update; + GLubyte *_texels; + int _iFormats[5]; + int _oFormats[5]; +}; + +struct __pyx_obj_3soy_8textures_Print { + struct __pyx_obj_3soy_8textures_Texture __pyx_base; + cairo_surface_t *_surface; + cairo_t *_context; + struct __pyx_obj_3soy_6colors_Color *_background; + struct __pyx_obj_3soy_6colors_Color *_foreground; + PyObject *_text; + PyObject *_font; +}; + +struct __pyx_obj_3soy_8textures_Video { + struct __pyx_obj_3soy_8textures_Texture __pyx_base; + int _stage; + ogg_stream_state _stream; + theora_info _info; + struct theora_comment _comment; + theora_state _decode; + double _startTime; + double _frameTime; +}; + + +struct __pyx_vtabstruct_3soy_8textures_Texture { + struct __pyx_vtabstruct_3soy_10_internals_Loadable __pyx_base; + int (*_loadPacket0)(struct __pyx_obj_3soy_8textures_Texture *,unsigned char *,int); + int (*_loadPacket1)(struct __pyx_obj_3soy_8textures_Texture *,unsigned char *,int); + void (*_bind)(struct __pyx_obj_3soy_8textures_Texture *); + void (*_unbind)(struct __pyx_obj_3soy_8textures_Texture *); + void (*_resize)(struct __pyx_obj_3soy_8textures_Texture *,int,int,int,int); + int (*_squareup)(struct __pyx_obj_3soy_8textures_Texture *,int); +}; +static struct __pyx_vtabstruct_3soy_8textures_Texture *__pyx_vtabptr_3soy_8textures_Texture; + + +struct __pyx_vtabstruct_3soy_8textures_Print { + struct __pyx_vtabstruct_3soy_8textures_Texture __pyx_base; + void (*_clear)(struct __pyx_obj_3soy_8textures_Print *); + void (*_draw)(struct __pyx_obj_3soy_8textures_Print *); +}; +static struct __pyx_vtabstruct_3soy_8textures_Print *__pyx_vtabptr_3soy_8textures_Print; + + +struct __pyx_vtabstruct_3soy_8textures_Video { + struct __pyx_vtabstruct_3soy_8textures_Texture __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_8textures_Video *__pyx_vtabptr_3soy_8textures_Video; + +static PyTypeObject *__pyx_ptype_3soy_8textures_Texture = 0; +static PyTypeObject *__pyx_ptype_3soy_8textures_Print = 0; +static PyTypeObject *__pyx_ptype_3soy_8textures_Video = 0; + +/* Declarations from soy */ + + +/* Declarations from soy.materials */ + +struct __pyx_obj_3soy_9materials_Material { + PyObject_HEAD + struct __pyx_vtabstruct_3soy_9materials_Material *__pyx_vtab; + PyObject *_color; + struct __pyx_obj_3soy_6colors_Color *_ambient; + struct __pyx_obj_3soy_6colors_Color *_diffuse; + int _shades; + float _shininess; + struct __pyx_obj_3soy_6colors_Color *_specular; +}; + +struct __pyx_obj_3soy_9materials_StainlessSteel { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + +struct __pyx_obj_3soy_9materials_Pearl { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + +struct __pyx_obj_3soy_9materials_Basalt { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + +struct __pyx_obj_3soy_9materials_VelvetyRed { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + +struct __pyx_obj_3soy_9materials_Copper { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + +struct __pyx_obj_3soy_9materials_CopperSulfate { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + +struct __pyx_obj_3soy_9materials_DarkWood { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + +struct __pyx_obj_3soy_9materials_Rhodonite { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + +struct __pyx_obj_3soy_9materials_Aventurine { + struct __pyx_obj_3soy_9materials_Material __pyx_base; +}; + + +struct __pyx_vtabstruct_3soy_9materials_Material { + void (*_bind)(struct __pyx_obj_3soy_9materials_Material *); + void (*_unbind)(struct __pyx_obj_3soy_9materials_Material *); +}; +static struct __pyx_vtabstruct_3soy_9materials_Material *__pyx_vtabptr_3soy_9materials_Material; + + +struct __pyx_vtabstruct_3soy_9materials_StainlessSteel { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_StainlessSteel *__pyx_vtabptr_3soy_9materials_StainlessSteel; + + +struct __pyx_vtabstruct_3soy_9materials_Pearl { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_Pearl *__pyx_vtabptr_3soy_9materials_Pearl; + + +struct __pyx_vtabstruct_3soy_9materials_Basalt { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_Basalt *__pyx_vtabptr_3soy_9materials_Basalt; + + +struct __pyx_vtabstruct_3soy_9materials_VelvetyRed { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_VelvetyRed *__pyx_vtabptr_3soy_9materials_VelvetyRed; + + +struct __pyx_vtabstruct_3soy_9materials_Copper { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_Copper *__pyx_vtabptr_3soy_9materials_Copper; + + +struct __pyx_vtabstruct_3soy_9materials_CopperSulfate { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_CopperSulfate *__pyx_vtabptr_3soy_9materials_CopperSulfate; + + +struct __pyx_vtabstruct_3soy_9materials_DarkWood { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_DarkWood *__pyx_vtabptr_3soy_9materials_DarkWood; + + +struct __pyx_vtabstruct_3soy_9materials_Rhodonite { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_Rhodonite *__pyx_vtabptr_3soy_9materials_Rhodonite; + + +struct __pyx_vtabstruct_3soy_9materials_Aventurine { + struct __pyx_vtabstruct_3soy_9materials_Material __pyx_base; +}; +static struct __pyx_vtabstruct_3soy_9materials_Aventurine *__pyx_vtabptr_3soy_9materials_Aventurine; + +static PyTypeObject *__pyx_ptype_3soy_9materials_Material = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_StainlessSteel = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_Pearl = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_Basalt = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_VelvetyRed = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_Copper = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_CopperSulfate = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_DarkWood = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_Rhodonite = 0; +static PyTypeObject *__pyx_ptype_3soy_9materials_Aventurine = 0; +static PyObject *__pyx_k13; +static PyObject *__pyx_k14; +static PyObject *__pyx_k15; +static PyObject *__pyx_k16; + + +/* Implementation of soy.materials */ + +static char __pyx_k1[] = "Number of Shades\n\n This property detirmines how many \"shades\" a face may have:\n 0 == \"smooth\"\n 1 == \"flat\"\n\n In the future 2+ will may be permitted for cartoon shading effects.\n "; +static char __pyx_k2[] = "Shininess\n\n This property is how large the specular \"dot\" is between 0.0 and 1.0\n "; +static char __pyx_k3[] = "Copyright (C) 2006,2007,2008 PySoy Group\n\n This program is free software; you can redistribute it and/or modify\n it under the terms of the GNU General Public License as published by\n the Free Software Foundation; either version 3 of the License, or\n (at your option) any later version.\n\n This program is distributed in the hope that it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n GNU General Public License for more details.\n\n You should have received a copy of the GNU General Public License\n along with this program; if not, see http://www.gnu.org/licenses\n"; +static char __pyx_k4[] = "Maintained by ArcRiley"; +static char __pyx_k5[] = "Last change on "; +static char __pyx_k6[] = "$Date: 2008-01-02 04:07:47 +0530 (Wed, 02 Jan 2008) $"; +static char __pyx_k7[] = "by "; +static char __pyx_k8[] = "$Author: ArcRiley $"; +static char __pyx_k9[] = "Trunk (r"; +static char __pyx_k10[] = "$Rev: 703 $"; +static char __pyx_k11[] = ")"; +static char __pyx_k12[] = "soy.colors"; + +static PyObject *__pyx_n___credits__; +static PyObject *__pyx_n___author__; +static PyObject *__pyx_n___date__; +static PyObject *__pyx_n___version__; +static PyObject *__pyx_n_soy; + +static PyObject *__pyx_k3p; +static PyObject *__pyx_k4p; +static PyObject *__pyx_k6p; +static PyObject *__pyx_k5p; +static PyObject *__pyx_k7p; +static PyObject *__pyx_k8p; +static PyObject *__pyx_k10p; +static PyObject *__pyx_k9p; +static PyObject *__pyx_k11p; +static PyObject *__pyx_k12p; + +static PyObject *__pyx_n_color; +static PyObject *__pyx_n_colors; +static PyObject *__pyx_n_Gray; +static PyObject *__pyx_n_White; + +static int __pyx_f_3soy_9materials_8Material___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_8Material___cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_color = 0; + PyObject *__pyx_v_ambient = 0; + PyObject *__pyx_v_diffuse = 0; + PyObject *__pyx_v_specular = 0; + int __pyx_r; + int __pyx_1; + PyObject *__pyx_2 = 0; + PyObject *__pyx_3 = 0; + static char *__pyx_argnames[] = {"color","ambient","diffuse","specular",0}; + __pyx_v_color = __pyx_k13; + __pyx_v_ambient = __pyx_k14; + __pyx_v_diffuse = __pyx_k15; + __pyx_v_specular = __pyx_k16; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "|OOOO", __pyx_argnames, &__pyx_v_color, &__pyx_v_ambient, &__pyx_v_diffuse, &__pyx_v_specular)) return -1; + Py_INCREF(__pyx_v_self); + Py_INCREF(__pyx_v_color); + Py_INCREF(__pyx_v_ambient); + Py_INCREF(__pyx_v_diffuse); + Py_INCREF(__pyx_v_specular); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":26 */ + __pyx_1 = PyObject_IsTrue(__pyx_v_color); if (__pyx_1 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 26; goto __pyx_L1;} + if (__pyx_1) { + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_color, __pyx_v_color) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 27; goto __pyx_L1;} + goto __pyx_L2; + } + /*else*/ { + Py_INCREF(Py_None); + Py_DECREF(((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_color); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_color = Py_None; + } + __pyx_L2:; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":30 */ + __pyx_1 = PyObject_IsTrue(__pyx_v_ambient); if (__pyx_1 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 30; goto __pyx_L1;} + if (__pyx_1) { + if (!__Pyx_TypeTest(__pyx_v_ambient, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 31; goto __pyx_L1;} + Py_INCREF(__pyx_v_ambient); + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_ambient); + goto __pyx_L3; + } + /*else*/ { + __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} + __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_colors); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_GetAttr(__pyx_3, __pyx_n_Gray); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} + Py_DECREF(__pyx_3); __pyx_3 = 0; + __pyx_3 = PyObject_CallObject(__pyx_2, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; goto __pyx_L1;} + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_3); + __pyx_3 = 0; + } + __pyx_L3:; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":34 */ + __pyx_1 = PyObject_IsTrue(__pyx_v_diffuse); if (__pyx_1 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; goto __pyx_L1;} + if (__pyx_1) { + if (!__Pyx_TypeTest(__pyx_v_diffuse, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; goto __pyx_L1;} + Py_INCREF(__pyx_v_diffuse); + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_diffuse); + goto __pyx_L4; + } + /*else*/ { + __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} + __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_colors); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_GetAttr(__pyx_3, __pyx_n_White); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} + Py_DECREF(__pyx_3); __pyx_3 = 0; + __pyx_3 = PyObject_CallObject(__pyx_2, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 37; goto __pyx_L1;} + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_3); + __pyx_3 = 0; + } + __pyx_L4:; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":38 */ + __pyx_1 = PyObject_IsTrue(__pyx_v_specular); if (__pyx_1 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; goto __pyx_L1;} + if (__pyx_1) { + if (!__Pyx_TypeTest(__pyx_v_specular, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 39; goto __pyx_L1;} + Py_INCREF(__pyx_v_specular); + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_specular); + goto __pyx_L5; + } + /*else*/ { + __pyx_2 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;} + __pyx_3 = PyObject_GetAttr(__pyx_2, __pyx_n_colors); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_GetAttr(__pyx_3, __pyx_n_White); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;} + Py_DECREF(__pyx_3); __pyx_3 = 0; + __pyx_3 = PyObject_CallObject(__pyx_2, 0); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + if (!__Pyx_TypeTest(__pyx_3, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 41; goto __pyx_L1;} + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_3); + __pyx_3 = 0; + } + __pyx_L5:; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":42 */ + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_shininess = .5; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_2); + Py_XDECREF(__pyx_3); + __Pyx_AddTraceback("soy.materials.Material.__cinit__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + Py_DECREF(__pyx_v_color); + Py_DECREF(__pyx_v_ambient); + Py_DECREF(__pyx_v_diffuse); + Py_DECREF(__pyx_v_specular); + return __pyx_r; +} + +static PyObject *__pyx_k17p; + +static char __pyx_k17[] = ""; + +static PyObject *__pyx_f_3soy_9materials_8Material___repr__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_f_3soy_9materials_8Material___repr__(PyObject *__pyx_v_self) { + PyObject *__pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF(__pyx_k17p); + __pyx_r = __pyx_k17p; + goto __pyx_L0; + + __pyx_r = Py_None; Py_INCREF(Py_None); + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static void __pyx_f_3soy_9materials_8Material__bind(struct __pyx_obj_3soy_9materials_Material *__pyx_v_self) { + GLfloat __pyx_v__white[4]; + GLfloat __pyx_v__ambient[4]; + GLfloat __pyx_v__diffuse[4]; + GLfloat __pyx_v__specular[4]; + int __pyx_1; + Py_INCREF(__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":54 */ + (__pyx_v__white[0]) = 1.0; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":55 */ + (__pyx_v__white[1]) = 1.0; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":56 */ + (__pyx_v__white[2]) = 1.0; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":57 */ + (__pyx_v__white[3]) = 1.0; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":58 */ + __pyx_1 = (__pyx_v_self->_shades == 0); + if (__pyx_1) { + glShadeModel(GL_SMOOTH); + goto __pyx_L2; + } + /*else*/ { + glShadeModel(GL_FLAT); + } + __pyx_L2:; + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":62 */ + ((struct __pyx_vtabstruct_3soy_6colors_Color *)((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_self->_ambient)->__pyx_vtab)->_getRGBA(((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_self->_ambient),__pyx_v__ambient); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":63 */ + ((struct __pyx_vtabstruct_3soy_6colors_Color *)((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_self->_diffuse)->__pyx_vtab)->_getRGBA(((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_self->_diffuse),__pyx_v__diffuse); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":64 */ + ((struct __pyx_vtabstruct_3soy_6colors_Color *)((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_self->_specular)->__pyx_vtab)->_getRGBA(((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_self->_specular),__pyx_v__specular); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":65 */ + glMaterialfv(GL_FRONT,GL_AMBIENT,__pyx_v__ambient); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":66 */ + glMaterialfv(GL_FRONT,GL_DIFFUSE,__pyx_v__diffuse); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":67 */ + glMaterialf(GL_FRONT,GL_SHININESS,__pyx_v_self->_shininess); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":68 */ + glMaterialfv(GL_FRONT,GL_SPECULAR,__pyx_v__specular); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":69 */ + __pyx_1 = PyObject_IsTrue(__pyx_v_self->_color); if (__pyx_1 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; goto __pyx_L1;} + if (__pyx_1) { + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":72 */ + glMaterialfv(GL_FRONT,GL_AMBIENT_AND_DIFFUSE,__pyx_v__white); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":73 */ + ((struct __pyx_vtabstruct_3soy_8textures_Texture *)((struct __pyx_obj_3soy_8textures_Texture *)__pyx_v_self->_color)->__pyx_base.__pyx_vtab)->_bind(((struct __pyx_obj_3soy_8textures_Texture *)__pyx_v_self->_color)); + goto __pyx_L3; + } + /*else*/ { + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":75 */ + glDisable(GL_TEXTURE_1D); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":76 */ + glDisable(GL_TEXTURE_2D); + + /* "/home/shriphani/pysoy/src/materials/Material.pxi":77 */ + glDisable(GL_TEXTURE_3D); + } + __pyx_L3:; + + goto __pyx_L0; + __pyx_L1:; + __Pyx_WriteUnraisable("soy.materials.Material._bind"); + __pyx_L0:; + Py_DECREF(__pyx_v_self); +} + +static void __pyx_f_3soy_9materials_8Material__unbind(struct __pyx_obj_3soy_9materials_Material *__pyx_v_self) { + int __pyx_1; + Py_INCREF(__pyx_v_self); + __pyx_1 = PyObject_IsTrue(__pyx_v_self->_color); if (__pyx_1 < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 80; goto __pyx_L1;} + if (__pyx_1) { + ((struct __pyx_vtabstruct_3soy_8textures_Texture *)((struct __pyx_obj_3soy_8textures_Texture *)__pyx_v_self->_color)->__pyx_base.__pyx_vtab)->_unbind(((struct __pyx_obj_3soy_8textures_Texture *)__pyx_v_self->_color)); + goto __pyx_L2; + } + __pyx_L2:; + + goto __pyx_L0; + __pyx_L1:; + __Pyx_WriteUnraisable("soy.materials.Material._unbind"); + __pyx_L0:; + Py_DECREF(__pyx_v_self); +} + +static PyObject *__pyx_f_3soy_9materials_8Material_5color___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_f_3soy_9materials_8Material_5color___get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF(((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_color); + __pyx_r = ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_color; + goto __pyx_L0; + + __pyx_r = Py_None; Py_INCREF(Py_None); + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_5color___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_5color___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF((PyObject *)__pyx_v_value); + if (!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_ptype_3soy_8textures_Texture, 1, "value")) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; goto __pyx_L1;} + Py_INCREF(__pyx_v_value); + Py_DECREF(((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_color); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_color = __pyx_v_value; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + __Pyx_AddTraceback("soy.materials.Material.color.__set__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + Py_DECREF((PyObject *)__pyx_v_value); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_5color___del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_5color___del__(PyObject *__pyx_v_self) { + int __pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF(Py_None); + Py_DECREF(((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_color); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_color = Py_None; + + __pyx_r = 0; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_f_3soy_9materials_8Material_7ambient___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_f_3soy_9materials_8Material_7ambient___get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient)); + __pyx_r = ((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient); + goto __pyx_L0; + + __pyx_r = Py_None; Py_INCREF(Py_None); + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_7ambient___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_7ambient___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF(__pyx_v_value); + if (!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_ptype_3soy_6colors_Color, 1, "value")) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; goto __pyx_L1;} + Py_INCREF(__pyx_v_value); + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_value); + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + __Pyx_AddTraceback("soy.materials.Material.ambient.__set__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + Py_DECREF(__pyx_v_value); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_7ambient___del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_7ambient___del__(PyObject *__pyx_v_self) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + Py_INCREF(__pyx_v_self); + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Gray); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (!__Pyx_TypeTest(__pyx_2, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; goto __pyx_L1;} + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_ambient = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_2); + __pyx_2 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.Material.ambient.__del__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_f_3soy_9materials_8Material_7diffuse___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_f_3soy_9materials_8Material_7diffuse___get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse)); + __pyx_r = ((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse); + goto __pyx_L0; + + __pyx_r = Py_None; Py_INCREF(Py_None); + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_7diffuse___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_7diffuse___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) { + int __pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF(__pyx_v_value); + if (!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_value), __pyx_ptype_3soy_6colors_Color, 1, "value")) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 105; goto __pyx_L1;} + Py_INCREF(__pyx_v_value); + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_value); + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + __Pyx_AddTraceback("soy.materials.Material.diffuse.__set__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + Py_DECREF(__pyx_v_value); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_7diffuse___del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_7diffuse___del__(PyObject *__pyx_v_self) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + Py_INCREF(__pyx_v_self); + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_White); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (!__Pyx_TypeTest(__pyx_2, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; goto __pyx_L1;} + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_diffuse = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_2); + __pyx_2 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.Material.diffuse.__del__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_f_3soy_9materials_8Material_6shades___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_f_3soy_9materials_8Material_6shades___get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r; + PyObject *__pyx_1 = 0; + Py_INCREF(__pyx_v_self); + __pyx_1 = PyInt_FromLong(((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_shades); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 121; goto __pyx_L1;} + __pyx_r = __pyx_1; + __pyx_1 = 0; + goto __pyx_L0; + + __pyx_r = Py_None; Py_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + __Pyx_AddTraceback("soy.materials.Material.shades.__get__"); + __pyx_r = 0; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_6shades___set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_value); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_6shades___set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_value) { + int __pyx_v_value; + int __pyx_r; + int __pyx_1; + Py_INCREF(__pyx_v_self); + __pyx_v_value = PyInt_AsLong(__pyx_arg_value); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 122; goto __pyx_L1;} + __pyx_1 = (__pyx_v_value < 1); + if (!__pyx_1) { + __pyx_1 = (__pyx_v_value > 1); + } + if (__pyx_1) { + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_shades = 0; + goto __pyx_L2; + } + /*else*/ { + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_shades = __pyx_v_value; + } + __pyx_L2:; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + __Pyx_AddTraceback("soy.materials.Material.shades.__set__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_6shades___del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_6shades___del__(PyObject *__pyx_v_self) { + int __pyx_r; + Py_INCREF(__pyx_v_self); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_shades = 0; + + __pyx_r = 0; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_f_3soy_9materials_8Material_9shininess___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_f_3soy_9materials_8Material_9shininess___get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r; + PyObject *__pyx_1 = 0; + Py_INCREF(__pyx_v_self); + __pyx_1 = PyFloat_FromDouble(((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_shininess); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; goto __pyx_L1;} + __pyx_r = __pyx_1; + __pyx_1 = 0; + goto __pyx_L0; + + __pyx_r = Py_None; Py_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + __Pyx_AddTraceback("soy.materials.Material.shininess.__get__"); + __pyx_r = 0; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_9shininess___set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_value); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_9shininess___set__(PyObject *__pyx_v_self, PyObject *__pyx_arg_value) { + float __pyx_v_value; + int __pyx_r; + Py_INCREF(__pyx_v_self); + __pyx_v_value = PyFloat_AsDouble(__pyx_arg_value); if (PyErr_Occurred()) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 138; goto __pyx_L1;} + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_shininess = __pyx_v_value; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + __Pyx_AddTraceback("soy.materials.Material.shininess.__set__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_9shininess___del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_9shininess___del__(PyObject *__pyx_v_self) { + int __pyx_r; + Py_INCREF(__pyx_v_self); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_shininess = 0.0; + + __pyx_r = 0; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_f_3soy_9materials_8Material_8specular___get__(PyObject *__pyx_v_self); /*proto*/ +static PyObject *__pyx_f_3soy_9materials_8Material_8specular___get__(PyObject *__pyx_v_self) { + PyObject *__pyx_r; + Py_INCREF(__pyx_v_self); + Py_INCREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular)); + __pyx_r = ((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular); + goto __pyx_L0; + + __pyx_r = Py_None; Py_INCREF(Py_None); + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_TypeError; + +static PyObject *__pyx_k18p; + +static char __pyx_k18[] = "must be a soy.color"; + +static int __pyx_f_3soy_9materials_8Material_8specular___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_8specular___set__(PyObject *__pyx_v_self, PyObject *__pyx_v_val) { + int __pyx_r; + int __pyx_1; + PyObject *__pyx_2 = 0; + PyObject *__pyx_3 = 0; + PyObject *__pyx_4 = 0; + Py_INCREF(__pyx_v_self); + Py_INCREF(__pyx_v_val); + __pyx_1 = PyObject_IsInstance(__pyx_v_val,((PyObject*)__pyx_ptype_3soy_6colors_Color)); if (__pyx_1 == -1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 148; goto __pyx_L1;} + if (__pyx_1) { + if (!__Pyx_TypeTest(__pyx_v_val, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 149; goto __pyx_L1;} + Py_INCREF(__pyx_v_val); + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_v_val); + goto __pyx_L2; + } + /*else*/ { + __pyx_2 = __Pyx_GetName(__pyx_b, __pyx_n_TypeError); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; goto __pyx_L1;} + __pyx_3 = PyTuple_New(1); if (!__pyx_3) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; goto __pyx_L1;} + Py_INCREF(__pyx_k18p); + PyTuple_SET_ITEM(__pyx_3, 0, __pyx_k18p); + __pyx_4 = PyObject_CallObject(__pyx_2, __pyx_3); if (!__pyx_4) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + Py_DECREF(__pyx_3); __pyx_3 = 0; + __Pyx_Raise(__pyx_4, 0, 0); + Py_DECREF(__pyx_4); __pyx_4 = 0; + {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; goto __pyx_L1;} + } + __pyx_L2:; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_2); + Py_XDECREF(__pyx_3); + Py_XDECREF(__pyx_4); + __Pyx_AddTraceback("soy.materials.Material.specular.__set__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + Py_DECREF(__pyx_v_val); + return __pyx_r; +} + +static int __pyx_f_3soy_9materials_8Material_8specular___del__(PyObject *__pyx_v_self); /*proto*/ +static int __pyx_f_3soy_9materials_8Material_8specular___del__(PyObject *__pyx_v_self) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + Py_INCREF(__pyx_v_self); + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_White); if (!__pyx_1) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (!__Pyx_TypeTest(__pyx_2, __pyx_ptype_3soy_6colors_Color)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; goto __pyx_L1;} + Py_DECREF(((PyObject *)((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular)); + ((struct __pyx_obj_3soy_9materials_Material *)__pyx_v_self)->_specular = ((struct __pyx_obj_3soy_6colors_Color *)__pyx_2); + __pyx_2 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.Material.specular.__del__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF(__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_StainlessSteel; +static PyObject *__pyx_n_ambient; +static PyObject *__pyx_n_diffuse; +static PyObject *__pyx_n_specular; +static PyObject *__pyx_n_shininess; + +static int __pyx_f_3soy_9materials_14StainlessSteel___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_14StainlessSteel___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/S.pxi":26 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_StainlessSteel); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/S.pxi":27 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_StainlessSteel); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/S.pxi":28 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_White); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/S.pxi":29 */ + __pyx_1 = PyInt_FromLong(9); if (!__pyx_1) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.StainlessSteel.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_LightPink; + +static int __pyx_f_3soy_9materials_5Pearl___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_5Pearl___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/P.pxi":24 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_White); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/P.pxi":25 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_White); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/P.pxi":26 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_LightPink); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/P.pxi":27 */ + __pyx_1 = PyInt_FromLong(10); if (!__pyx_1) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.Pearl.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_Basalt; + +static int __pyx_f_3soy_9materials_6Basalt___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_6Basalt___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/B.pxi":24 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 24; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Basalt); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/B.pxi":25 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Basalt); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/B.pxi":26 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Basalt); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/B.pxi":27 */ + __pyx_1 = PyInt_FromLong(4); if (!__pyx_1) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 27; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.Basalt.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_Red; + +static int __pyx_f_3soy_9materials_10VelvetyRed___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_10VelvetyRed___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/V.pxi":24 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Red); if (!__pyx_1) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/V.pxi":25 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Red); if (!__pyx_1) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/V.pxi":26 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Red); if (!__pyx_1) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/V.pxi":27 */ + __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 27; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.VelvetyRed.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_Copper; +static PyObject *__pyx_n_Yellow; + +static int __pyx_f_3soy_9materials_6Copper___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_6Copper___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/C.pxi":25 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Copper); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/C.pxi":26 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Copper); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/C.pxi":27 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 27; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Yellow); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/C.pxi":28 */ + __pyx_1 = PyInt_FromLong(5); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.Copper.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_CopperSulfate; +static PyObject *__pyx_n_VeryLightBlueGreen; + +static int __pyx_f_3soy_9materials_13CopperSulfate___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_13CopperSulfate___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/C.pxi":37 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 37; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 37; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_CopperSulfate); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 37; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 37; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 37; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/C.pxi":38 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 38; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 38; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_CopperSulfate); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 38; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 38; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 38; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/C.pxi":39 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 39; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 39; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_VeryLightBlueGreen); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 39; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 39; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 39; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/C.pxi":40 */ + __pyx_1 = PyInt_FromLong(10); if (!__pyx_1) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 40; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.CopperSulfate.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_DarkWood; + +static int __pyx_f_3soy_9materials_8DarkWood___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_8DarkWood___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/D.pxi":24 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 24; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_DarkWood); if (!__pyx_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/D.pxi":25 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_DarkWood); if (!__pyx_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/D.pxi":26 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_DarkWood); if (!__pyx_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/D.pxi":27 */ + __pyx_1 = PyInt_FromLong(0); if (!__pyx_1) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 27; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.DarkWood.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_DeepPink; +static PyObject *__pyx_n_Pink; + +static int __pyx_f_3soy_9materials_9Rhodonite___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_9Rhodonite___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/R.pxi":24 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 24; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_DeepPink); if (!__pyx_1) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/R.pxi":25 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Pink); if (!__pyx_1) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/R.pxi":26 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_LightPink); if (!__pyx_1) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/R.pxi":27 */ + __pyx_1 = PyInt_FromLong(8); if (!__pyx_1) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 27; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.Rhodonite.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static PyObject *__pyx_n_Aventurine; +static PyObject *__pyx_n_Teal; + +static int __pyx_f_3soy_9materials_10Aventurine___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static int __pyx_f_3soy_9materials_10Aventurine___init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + int __pyx_r; + PyObject *__pyx_1 = 0; + PyObject *__pyx_2 = 0; + static char *__pyx_argnames[] = {0}; + if (!PyArg_ParseTupleAndKeywords(__pyx_args, __pyx_kwds, "", __pyx_argnames)) return -1; + Py_INCREF((PyObject *)__pyx_v_self); + + /* "/home/shriphani/pysoy/src/materials/A.pxi":24 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 24; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Aventurine); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_ambient, __pyx_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 24; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/A.pxi":25 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 25; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Aventurine); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_diffuse, __pyx_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 25; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/A.pxi":26 */ + __pyx_1 = __Pyx_GetName(__pyx_m, __pyx_n_soy); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 26; goto __pyx_L1;} + __pyx_2 = PyObject_GetAttr(__pyx_1, __pyx_n_colors); if (!__pyx_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + __pyx_1 = PyObject_GetAttr(__pyx_2, __pyx_n_Teal); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + __pyx_2 = PyObject_CallObject(__pyx_1, 0); if (!__pyx_2) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_specular, __pyx_2) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 26; goto __pyx_L1;} + Py_DECREF(__pyx_2); __pyx_2 = 0; + + /* "/home/shriphani/pysoy/src/materials/A.pxi":27 */ + __pyx_1 = PyInt_FromLong(10); if (!__pyx_1) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 27; goto __pyx_L1;} + if (PyObject_SetAttr(__pyx_v_self, __pyx_n_shininess, __pyx_1) < 0) {__pyx_filename = __pyx_f[8]; __pyx_lineno = 27; goto __pyx_L1;} + Py_DECREF(__pyx_1); __pyx_1 = 0; + + __pyx_r = 0; + goto __pyx_L0; + __pyx_L1:; + Py_XDECREF(__pyx_1); + Py_XDECREF(__pyx_2); + __Pyx_AddTraceback("soy.materials.Aventurine.__init__"); + __pyx_r = -1; + __pyx_L0:; + Py_DECREF((PyObject *)__pyx_v_self); + return __pyx_r; +} + +static __Pyx_InternTabEntry __pyx_intern_tab[] = { + {&__pyx_n_Aventurine, "Aventurine"}, + {&__pyx_n_Basalt, "Basalt"}, + {&__pyx_n_Copper, "Copper"}, + {&__pyx_n_CopperSulfate, "CopperSulfate"}, + {&__pyx_n_DarkWood, "DarkWood"}, + {&__pyx_n_DeepPink, "DeepPink"}, + {&__pyx_n_Gray, "Gray"}, + {&__pyx_n_LightPink, "LightPink"}, + {&__pyx_n_Pink, "Pink"}, + {&__pyx_n_Red, "Red"}, + {&__pyx_n_StainlessSteel, "StainlessSteel"}, + {&__pyx_n_Teal, "Teal"}, + {&__pyx_n_TypeError, "TypeError"}, + {&__pyx_n_VeryLightBlueGreen, "VeryLightBlueGreen"}, + {&__pyx_n_White, "White"}, + {&__pyx_n_Yellow, "Yellow"}, + {&__pyx_n___author__, "__author__"}, + {&__pyx_n___credits__, "__credits__"}, + {&__pyx_n___date__, "__date__"}, + {&__pyx_n___version__, "__version__"}, + {&__pyx_n_ambient, "ambient"}, + {&__pyx_n_color, "color"}, + {&__pyx_n_colors, "colors"}, + {&__pyx_n_diffuse, "diffuse"}, + {&__pyx_n_shininess, "shininess"}, + {&__pyx_n_soy, "soy"}, + {&__pyx_n_specular, "specular"}, + {0, 0} +}; + +static __Pyx_StringTabEntry __pyx_string_tab[] = { + {&__pyx_k3p, __pyx_k3, sizeof(__pyx_k3)}, + {&__pyx_k4p, __pyx_k4, sizeof(__pyx_k4)}, + {&__pyx_k6p, __pyx_k6, sizeof(__pyx_k6)}, + {&__pyx_k5p, __pyx_k5, sizeof(__pyx_k5)}, + {&__pyx_k7p, __pyx_k7, sizeof(__pyx_k7)}, + {&__pyx_k8p, __pyx_k8, sizeof(__pyx_k8)}, + {&__pyx_k10p, __pyx_k10, sizeof(__pyx_k10)}, + {&__pyx_k9p, __pyx_k9, sizeof(__pyx_k9)}, + {&__pyx_k11p, __pyx_k11, sizeof(__pyx_k11)}, + {&__pyx_k12p, __pyx_k12, sizeof(__pyx_k12)}, + {&__pyx_k17p, __pyx_k17, sizeof(__pyx_k17)}, + {&__pyx_k18p, __pyx_k18, sizeof(__pyx_k18)}, + {0, 0, 0} +}; +static struct __pyx_vtabstruct_3soy_9materials_Material __pyx_vtable_3soy_9materials_Material; + +static PyObject *__pyx_tp_new_3soy_9materials_Material(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_Material *p; + PyObject *o = (*t->tp_alloc)(t, 0); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_Material *)o); + *(struct __pyx_vtabstruct_3soy_9materials_Material **)&p->__pyx_vtab = __pyx_vtabptr_3soy_9materials_Material; + p->_color = Py_None; Py_INCREF(Py_None); + p->_ambient = ((struct __pyx_obj_3soy_6colors_Color *)Py_None); Py_INCREF(Py_None); + p->_diffuse = ((struct __pyx_obj_3soy_6colors_Color *)Py_None); Py_INCREF(Py_None); + p->_specular = ((struct __pyx_obj_3soy_6colors_Color *)Py_None); Py_INCREF(Py_None); + if (__pyx_f_3soy_9materials_8Material___cinit__(o, a, k) < 0) { + Py_DECREF(o); o = 0; + } + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_Material(PyObject *o) { + struct __pyx_obj_3soy_9materials_Material *p = (struct __pyx_obj_3soy_9materials_Material *)o; + Py_XDECREF(p->_color); + Py_XDECREF(((PyObject *)p->_ambient)); + Py_XDECREF(((PyObject *)p->_diffuse)); + Py_XDECREF(((PyObject *)p->_specular)); + (*o->ob_type->tp_free)(o); +} + +static int __pyx_tp_traverse_3soy_9materials_Material(PyObject *o, visitproc v, void *a) { + int e; + struct __pyx_obj_3soy_9materials_Material *p = (struct __pyx_obj_3soy_9materials_Material *)o; + if (p->_color) { + e = (*v)(p->_color, a); if (e) return e; + } + if (p->_ambient) { + e = (*v)(((PyObject*)p->_ambient), a); if (e) return e; + } + if (p->_diffuse) { + e = (*v)(((PyObject*)p->_diffuse), a); if (e) return e; + } + if (p->_specular) { + e = (*v)(((PyObject*)p->_specular), a); if (e) return e; + } + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_Material(PyObject *o) { + struct __pyx_obj_3soy_9materials_Material *p = (struct __pyx_obj_3soy_9materials_Material *)o; + Py_XDECREF(p->_color); + p->_color = Py_None; Py_INCREF(Py_None); + Py_XDECREF(((PyObject *)p->_ambient)); + p->_ambient = ((struct __pyx_obj_3soy_6colors_Color *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(((PyObject *)p->_diffuse)); + p->_diffuse = ((struct __pyx_obj_3soy_6colors_Color *)Py_None); Py_INCREF(Py_None); + Py_XDECREF(((PyObject *)p->_specular)); + p->_specular = ((struct __pyx_obj_3soy_6colors_Color *)Py_None); Py_INCREF(Py_None); + return 0; +} + +static PyObject *__pyx_getprop_3soy_9materials_8Material_color(PyObject *o, void *x) { + return __pyx_f_3soy_9materials_8Material_5color___get__(o); +} + +static int __pyx_setprop_3soy_9materials_8Material_color(PyObject *o, PyObject *v, void *x) { + if (v) { + return __pyx_f_3soy_9materials_8Material_5color___set__(o, v); + } + else { + return __pyx_f_3soy_9materials_8Material_5color___del__(o); + } +} + +static PyObject *__pyx_getprop_3soy_9materials_8Material_ambient(PyObject *o, void *x) { + return __pyx_f_3soy_9materials_8Material_7ambient___get__(o); +} + +static int __pyx_setprop_3soy_9materials_8Material_ambient(PyObject *o, PyObject *v, void *x) { + if (v) { + return __pyx_f_3soy_9materials_8Material_7ambient___set__(o, v); + } + else { + return __pyx_f_3soy_9materials_8Material_7ambient___del__(o); + } +} + +static PyObject *__pyx_getprop_3soy_9materials_8Material_diffuse(PyObject *o, void *x) { + return __pyx_f_3soy_9materials_8Material_7diffuse___get__(o); +} + +static int __pyx_setprop_3soy_9materials_8Material_diffuse(PyObject *o, PyObject *v, void *x) { + if (v) { + return __pyx_f_3soy_9materials_8Material_7diffuse___set__(o, v); + } + else { + return __pyx_f_3soy_9materials_8Material_7diffuse___del__(o); + } +} + +static PyObject *__pyx_getprop_3soy_9materials_8Material_shades(PyObject *o, void *x) { + return __pyx_f_3soy_9materials_8Material_6shades___get__(o); +} + +static int __pyx_setprop_3soy_9materials_8Material_shades(PyObject *o, PyObject *v, void *x) { + if (v) { + return __pyx_f_3soy_9materials_8Material_6shades___set__(o, v); + } + else { + return __pyx_f_3soy_9materials_8Material_6shades___del__(o); + } +} + +static PyObject *__pyx_getprop_3soy_9materials_8Material_shininess(PyObject *o, void *x) { + return __pyx_f_3soy_9materials_8Material_9shininess___get__(o); +} + +static int __pyx_setprop_3soy_9materials_8Material_shininess(PyObject *o, PyObject *v, void *x) { + if (v) { + return __pyx_f_3soy_9materials_8Material_9shininess___set__(o, v); + } + else { + return __pyx_f_3soy_9materials_8Material_9shininess___del__(o); + } +} + +static PyObject *__pyx_getprop_3soy_9materials_8Material_specular(PyObject *o, void *x) { + return __pyx_f_3soy_9materials_8Material_8specular___get__(o); +} + +static int __pyx_setprop_3soy_9materials_8Material_specular(PyObject *o, PyObject *v, void *x) { + if (v) { + return __pyx_f_3soy_9materials_8Material_8specular___set__(o, v); + } + else { + return __pyx_f_3soy_9materials_8Material_8specular___del__(o); + } +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_Material[] = { + {0, 0, 0, 0} +}; + +static struct PyGetSetDef __pyx_getsets_3soy_9materials_Material[] = { + {"color", __pyx_getprop_3soy_9materials_8Material_color, __pyx_setprop_3soy_9materials_8Material_color, 0, 0}, + {"ambient", __pyx_getprop_3soy_9materials_8Material_ambient, __pyx_setprop_3soy_9materials_8Material_ambient, 0, 0}, + {"diffuse", __pyx_getprop_3soy_9materials_8Material_diffuse, __pyx_setprop_3soy_9materials_8Material_diffuse, 0, 0}, + {"shades", __pyx_getprop_3soy_9materials_8Material_shades, __pyx_setprop_3soy_9materials_8Material_shades, __pyx_k1, 0}, + {"shininess", __pyx_getprop_3soy_9materials_8Material_shininess, __pyx_setprop_3soy_9materials_8Material_shininess, __pyx_k2, 0}, + {"specular", __pyx_getprop_3soy_9materials_8Material_specular, __pyx_setprop_3soy_9materials_8Material_specular, 0, 0}, + {0, 0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_Material = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_Material = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_Material = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_Material = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_Material = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.Material", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_Material), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_Material, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + __pyx_f_3soy_9materials_8Material___repr__, /*tp_repr*/ + &__pyx_tp_as_number_Material, /*tp_as_number*/ + &__pyx_tp_as_sequence_Material, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_Material, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_Material, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "PySoy Material\n\n shared material for many visible objects\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_Material, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_Material, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_3soy_9materials_Material, /*tp_methods*/ + 0, /*tp_members*/ + __pyx_getsets_3soy_9materials_Material, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + 0, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_3soy_9materials_Material, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ +}; +static struct __pyx_vtabstruct_3soy_9materials_StainlessSteel __pyx_vtable_3soy_9materials_StainlessSteel; + +static PyObject *__pyx_tp_new_3soy_9materials_StainlessSteel(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_StainlessSteel *p; + PyObject *o = __pyx_ptype_3soy_9materials_Material->tp_new(t, a, k); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_StainlessSteel *)o); + *(struct __pyx_vtabstruct_3soy_9materials_StainlessSteel **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_3soy_9materials_StainlessSteel; + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_StainlessSteel(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_dealloc(o); +} + +static int __pyx_tp_traverse_3soy_9materials_StainlessSteel(PyObject *o, visitproc v, void *a) { + int e; + e = __pyx_ptype_3soy_9materials_Material->tp_traverse(o, v, a); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_StainlessSteel(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_clear(o); + return 0; +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_StainlessSteel[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_StainlessSteel = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_StainlessSteel = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_StainlessSteel = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_StainlessSteel = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_StainlessSteel = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.StainlessSteel", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_StainlessSteel), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_StainlessSteel, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_StainlessSteel, /*tp_as_number*/ + &__pyx_tp_as_sequence_StainlessSteel, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_StainlessSteel, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_StainlessSteel, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "PySoy materials.Steel\n\n This default material is intended to look like stainless steel.\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_StainlessSteel, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_StainlessSteel, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_3soy_9materials_StainlessSteel, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_f_3soy_9materials_14StainlessSteel___init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_3soy_9materials_StainlessSteel, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ +}; +static struct __pyx_vtabstruct_3soy_9materials_Pearl __pyx_vtable_3soy_9materials_Pearl; + +static PyObject *__pyx_tp_new_3soy_9materials_Pearl(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_Pearl *p; + PyObject *o = __pyx_ptype_3soy_9materials_Material->tp_new(t, a, k); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_Pearl *)o); + *(struct __pyx_vtabstruct_3soy_9materials_Pearl **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_3soy_9materials_Pearl; + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_Pearl(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_dealloc(o); +} + +static int __pyx_tp_traverse_3soy_9materials_Pearl(PyObject *o, visitproc v, void *a) { + int e; + e = __pyx_ptype_3soy_9materials_Material->tp_traverse(o, v, a); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_Pearl(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_clear(o); + return 0; +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_Pearl[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_Pearl = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_Pearl = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_Pearl = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_Pearl = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_Pearl = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.Pearl", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_Pearl), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_Pearl, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_Pearl, /*tp_as_number*/ + &__pyx_tp_as_sequence_Pearl, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_Pearl, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_Pearl, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "Pysoy materials.Pearl\n \n This material is intended to look like Yule Marble\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_Pearl, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_Pearl, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_3soy_9materials_Pearl, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_f_3soy_9materials_5Pearl___init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_3soy_9materials_Pearl, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ +}; +static struct __pyx_vtabstruct_3soy_9materials_Basalt __pyx_vtable_3soy_9materials_Basalt; + +static PyObject *__pyx_tp_new_3soy_9materials_Basalt(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_Basalt *p; + PyObject *o = __pyx_ptype_3soy_9materials_Material->tp_new(t, a, k); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_Basalt *)o); + *(struct __pyx_vtabstruct_3soy_9materials_Basalt **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_3soy_9materials_Basalt; + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_Basalt(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_dealloc(o); +} + +static int __pyx_tp_traverse_3soy_9materials_Basalt(PyObject *o, visitproc v, void *a) { + int e; + e = __pyx_ptype_3soy_9materials_Material->tp_traverse(o, v, a); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_Basalt(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_clear(o); + return 0; +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_Basalt[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_Basalt = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_Basalt = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_Basalt = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_Basalt = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_Basalt = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.Basalt", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_Basalt), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_Basalt, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_Basalt, /*tp_as_number*/ + &__pyx_tp_as_sequence_Basalt, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_Basalt, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_Basalt, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "Pysoy materials.Basalt\n \n This default material is intended to look like the igneous rock - basalt\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_Basalt, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_Basalt, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_3soy_9materials_Basalt, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_f_3soy_9materials_6Basalt___init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_3soy_9materials_Basalt, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ +}; +static struct __pyx_vtabstruct_3soy_9materials_VelvetyRed __pyx_vtable_3soy_9materials_VelvetyRed; + +static PyObject *__pyx_tp_new_3soy_9materials_VelvetyRed(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_VelvetyRed *p; + PyObject *o = __pyx_ptype_3soy_9materials_Material->tp_new(t, a, k); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_VelvetyRed *)o); + *(struct __pyx_vtabstruct_3soy_9materials_VelvetyRed **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_3soy_9materials_VelvetyRed; + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_VelvetyRed(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_dealloc(o); +} + +static int __pyx_tp_traverse_3soy_9materials_VelvetyRed(PyObject *o, visitproc v, void *a) { + int e; + e = __pyx_ptype_3soy_9materials_Material->tp_traverse(o, v, a); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_VelvetyRed(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_clear(o); + return 0; +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_VelvetyRed[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_VelvetyRed = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_VelvetyRed = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_VelvetyRed = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_VelvetyRed = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_VelvetyRed = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.VelvetyRed", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_VelvetyRed), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_VelvetyRed, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_VelvetyRed, /*tp_as_number*/ + &__pyx_tp_as_sequence_VelvetyRed, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_VelvetyRed, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_VelvetyRed, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "Pysoy materials.VelvetyRed\n \n This class is intended to look like Red Velvet\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_VelvetyRed, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_VelvetyRed, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_3soy_9materials_VelvetyRed, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_f_3soy_9materials_10VelvetyRed___init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_3soy_9materials_VelvetyRed, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ +}; +static struct __pyx_vtabstruct_3soy_9materials_Copper __pyx_vtable_3soy_9materials_Copper; + +static PyObject *__pyx_tp_new_3soy_9materials_Copper(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_Copper *p; + PyObject *o = __pyx_ptype_3soy_9materials_Material->tp_new(t, a, k); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_Copper *)o); + *(struct __pyx_vtabstruct_3soy_9materials_Copper **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_3soy_9materials_Copper; + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_Copper(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_dealloc(o); +} + +static int __pyx_tp_traverse_3soy_9materials_Copper(PyObject *o, visitproc v, void *a) { + int e; + e = __pyx_ptype_3soy_9materials_Material->tp_traverse(o, v, a); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_Copper(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_clear(o); + return 0; +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_Copper[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_Copper = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_Copper = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_Copper = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_Copper = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_Copper = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.Copper", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_Copper), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_Copper, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_Copper, /*tp_as_number*/ + &__pyx_tp_as_sequence_Copper, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_Copper, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_Copper, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "Pysoy materials.Copper\n \n This default material is intended to look like copper\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_Copper, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_Copper, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_3soy_9materials_Copper, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_f_3soy_9materials_6Copper___init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_3soy_9materials_Copper, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ +}; +static struct __pyx_vtabstruct_3soy_9materials_CopperSulfate __pyx_vtable_3soy_9materials_CopperSulfate; + +static PyObject *__pyx_tp_new_3soy_9materials_CopperSulfate(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_CopperSulfate *p; + PyObject *o = __pyx_ptype_3soy_9materials_Material->tp_new(t, a, k); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_CopperSulfate *)o); + *(struct __pyx_vtabstruct_3soy_9materials_CopperSulfate **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_3soy_9materials_CopperSulfate; + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_CopperSulfate(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_dealloc(o); +} + +static int __pyx_tp_traverse_3soy_9materials_CopperSulfate(PyObject *o, visitproc v, void *a) { + int e; + e = __pyx_ptype_3soy_9materials_Material->tp_traverse(o, v, a); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_CopperSulfate(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_clear(o); + return 0; +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_CopperSulfate[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_CopperSulfate = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_CopperSulfate = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_CopperSulfate = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_CopperSulfate = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_CopperSulfate = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.CopperSulfate", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_CopperSulfate), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_CopperSulfate, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_CopperSulfate, /*tp_as_number*/ + &__pyx_tp_as_sequence_CopperSulfate, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_CopperSulfate, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_CopperSulfate, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "Pysoy materials.CopperSulfate\n \n This default material is intended to look like the crystal of Copper(II) Sulfate\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_CopperSulfate, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_CopperSulfate, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_3soy_9materials_CopperSulfate, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_f_3soy_9materials_13CopperSulfate___init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_3soy_9materials_CopperSulfate, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ +}; +static struct __pyx_vtabstruct_3soy_9materials_DarkWood __pyx_vtable_3soy_9materials_DarkWood; + +static PyObject *__pyx_tp_new_3soy_9materials_DarkWood(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_DarkWood *p; + PyObject *o = __pyx_ptype_3soy_9materials_Material->tp_new(t, a, k); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_DarkWood *)o); + *(struct __pyx_vtabstruct_3soy_9materials_DarkWood **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_3soy_9materials_DarkWood; + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_DarkWood(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_dealloc(o); +} + +static int __pyx_tp_traverse_3soy_9materials_DarkWood(PyObject *o, visitproc v, void *a) { + int e; + e = __pyx_ptype_3soy_9materials_Material->tp_traverse(o, v, a); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_DarkWood(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_clear(o); + return 0; +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_DarkWood[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_DarkWood = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_DarkWood = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_DarkWood = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_DarkWood = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_DarkWood = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.DarkWood", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_DarkWood), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_DarkWood, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_DarkWood, /*tp_as_number*/ + &__pyx_tp_as_sequence_DarkWood, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_DarkWood, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_DarkWood, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "Pysoy materials.DarkWood\n \n This default material is intended to look like dark wood\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_DarkWood, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_DarkWood, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ + 0, /*tp_iternext*/ + __pyx_methods_3soy_9materials_DarkWood, /*tp_methods*/ + 0, /*tp_members*/ + 0, /*tp_getset*/ + 0, /*tp_base*/ + 0, /*tp_dict*/ + 0, /*tp_descr_get*/ + 0, /*tp_descr_set*/ + 0, /*tp_dictoffset*/ + __pyx_f_3soy_9materials_8DarkWood___init__, /*tp_init*/ + 0, /*tp_alloc*/ + __pyx_tp_new_3soy_9materials_DarkWood, /*tp_new*/ + 0, /*tp_free*/ + 0, /*tp_is_gc*/ + 0, /*tp_bases*/ + 0, /*tp_mro*/ + 0, /*tp_cache*/ + 0, /*tp_subclasses*/ + 0, /*tp_weaklist*/ +}; +static struct __pyx_vtabstruct_3soy_9materials_Rhodonite __pyx_vtable_3soy_9materials_Rhodonite; + +static PyObject *__pyx_tp_new_3soy_9materials_Rhodonite(PyTypeObject *t, PyObject *a, PyObject *k) { + struct __pyx_obj_3soy_9materials_Rhodonite *p; + PyObject *o = __pyx_ptype_3soy_9materials_Material->tp_new(t, a, k); + if (!o) return 0; + p = ((struct __pyx_obj_3soy_9materials_Rhodonite *)o); + *(struct __pyx_vtabstruct_3soy_9materials_Rhodonite **)&p->__pyx_base.__pyx_vtab = __pyx_vtabptr_3soy_9materials_Rhodonite; + return o; +} + +static void __pyx_tp_dealloc_3soy_9materials_Rhodonite(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_dealloc(o); +} + +static int __pyx_tp_traverse_3soy_9materials_Rhodonite(PyObject *o, visitproc v, void *a) { + int e; + e = __pyx_ptype_3soy_9materials_Material->tp_traverse(o, v, a); if (e) return e; + return 0; +} + +static int __pyx_tp_clear_3soy_9materials_Rhodonite(PyObject *o) { + __pyx_ptype_3soy_9materials_Material->tp_clear(o); + return 0; +} + +static struct PyMethodDef __pyx_methods_3soy_9materials_Rhodonite[] = { + {0, 0, 0, 0} +}; + +static PyNumberMethods __pyx_tp_as_number_Rhodonite = { + 0, /*nb_add*/ + 0, /*nb_subtract*/ + 0, /*nb_multiply*/ + 0, /*nb_divide*/ + 0, /*nb_remainder*/ + 0, /*nb_divmod*/ + 0, /*nb_power*/ + 0, /*nb_negative*/ + 0, /*nb_positive*/ + 0, /*nb_absolute*/ + 0, /*nb_nonzero*/ + 0, /*nb_invert*/ + 0, /*nb_lshift*/ + 0, /*nb_rshift*/ + 0, /*nb_and*/ + 0, /*nb_xor*/ + 0, /*nb_or*/ + 0, /*nb_coerce*/ + 0, /*nb_int*/ + 0, /*nb_long*/ + 0, /*nb_float*/ + 0, /*nb_oct*/ + 0, /*nb_hex*/ + 0, /*nb_inplace_add*/ + 0, /*nb_inplace_subtract*/ + 0, /*nb_inplace_multiply*/ + 0, /*nb_inplace_divide*/ + 0, /*nb_inplace_remainder*/ + 0, /*nb_inplace_power*/ + 0, /*nb_inplace_lshift*/ + 0, /*nb_inplace_rshift*/ + 0, /*nb_inplace_and*/ + 0, /*nb_inplace_xor*/ + 0, /*nb_inplace_or*/ + 0, /*nb_floor_divide*/ + 0, /*nb_true_divide*/ + 0, /*nb_inplace_floor_divide*/ + 0, /*nb_inplace_true_divide*/ + #if Py_TPFLAGS_DEFAULT & Py_TPFLAGS_HAVE_INDEX + 0, /*nb_index*/ + #endif +}; + +static PySequenceMethods __pyx_tp_as_sequence_Rhodonite = { + 0, /*sq_length*/ + 0, /*sq_concat*/ + 0, /*sq_repeat*/ + 0, /*sq_item*/ + 0, /*sq_slice*/ + 0, /*sq_ass_item*/ + 0, /*sq_ass_slice*/ + 0, /*sq_contains*/ + 0, /*sq_inplace_concat*/ + 0, /*sq_inplace_repeat*/ +}; + +static PyMappingMethods __pyx_tp_as_mapping_Rhodonite = { + 0, /*mp_length*/ + 0, /*mp_subscript*/ + 0, /*mp_ass_subscript*/ +}; + +static PyBufferProcs __pyx_tp_as_buffer_Rhodonite = { + 0, /*bf_getreadbuffer*/ + 0, /*bf_getwritebuffer*/ + 0, /*bf_getsegcount*/ + 0, /*bf_getcharbuffer*/ +}; + +PyTypeObject __pyx_type_3soy_9materials_Rhodonite = { + PyObject_HEAD_INIT(0) + 0, /*ob_size*/ + "soy.materials.Rhodonite", /*tp_name*/ + sizeof(struct __pyx_obj_3soy_9materials_Rhodonite), /*tp_basicsize*/ + 0, /*tp_itemsize*/ + __pyx_tp_dealloc_3soy_9materials_Rhodonite, /*tp_dealloc*/ + 0, /*tp_print*/ + 0, /*tp_getattr*/ + 0, /*tp_setattr*/ + 0, /*tp_compare*/ + 0, /*tp_repr*/ + &__pyx_tp_as_number_Rhodonite, /*tp_as_number*/ + &__pyx_tp_as_sequence_Rhodonite, /*tp_as_sequence*/ + &__pyx_tp_as_mapping_Rhodonite, /*tp_as_mapping*/ + 0, /*tp_hash*/ + 0, /*tp_call*/ + 0, /*tp_str*/ + 0, /*tp_getattro*/ + 0, /*tp_setattro*/ + &__pyx_tp_as_buffer_Rhodonite, /*tp_as_buffer*/ + Py_TPFLAGS_DEFAULT|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/ + "PySoy materials.Rhodonite\n \n This default material is intended to look like rhodonite, a pink gem.\n ", /*tp_doc*/ + __pyx_tp_traverse_3soy_9materials_Rhodonite, /*tp_traverse*/ + __pyx_tp_clear_3soy_9materials_Rhodonite, /*tp_clear*/ + 0, /*tp_richcompare*/ + 0, /*tp_weaklistoffset*/ + 0, /*tp_iter*/ +