From 0eb8c377d6b8f4521d72c22e65602a2691122490 Mon Sep 17 00:00:00 2001 From: Hyungman Park Date: Fri, 22 Sep 2017 15:52:46 -0500 Subject: [PATCH 1/5] wrote model readers in python to pass geometry into gvt - used vtk readers - supported formats: obj, ply, and vtp - color not supported wrote scripts to test the readers added wavelet.vtp to test vtp reader --- data/wavelet.vtp | Bin 0 -> 268817 bytes pygvt/README.md | 5 ++ pygvt/example_reader.py | 77 +++++++++++++++++++++++++++ pygvt/reader.py | 98 +++++++++++++++++++++++++++++++++++ pygvt/test_example_reader.sh | 11 ++++ 5 files changed, 191 insertions(+) create mode 100644 data/wavelet.vtp create mode 100644 pygvt/example_reader.py create mode 100644 pygvt/reader.py create mode 100644 pygvt/test_example_reader.sh diff --git a/data/wavelet.vtp b/data/wavelet.vtp new file mode 100644 index 0000000000000000000000000000000000000000..90d0dd44dd233f9602bf4c656fb4971ecfc99e0c GIT binary patch literal 268817 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 literal 0 HcmV?d00001 diff --git a/pygvt/README.md b/pygvt/README.md index 18699eb1..34f1bf2e 100644 --- a/pygvt/README.md +++ b/pygvt/README.md @@ -35,3 +35,8 @@ python setup.py install python test.py display simple.ppm ``` +### Test example scripts + +``` +source test_examle_reader.sh +``` diff --git a/pygvt/example_reader.py b/pygvt/example_reader.py new file mode 100644 index 00000000..f008497d --- /dev/null +++ b/pygvt/example_reader.py @@ -0,0 +1,77 @@ +import gvt +import reader as rd +import sys +import numpy as np +import argparse + +# parse command line +parser = argparse.ArgumentParser(description='A PYGVT example to render a model in obj/ply/vtp format.') +parser.add_argument('filename', help='file name') +parser.add_argument('--image-size', nargs=2, default=[512, 512], help='image width and height') +parser.add_argument('--light-color', nargs=3, default=[100.0, 100.0, 100.0], help='light color') +parser.add_argument('--diffuse-color', nargs=3, default=[1.0, 1.0, 1.0], help='diffuse color for surfaces') +parser.add_argument('--camera-distance', nargs=1, default=1.0, help='camera distance factor (the larger the farther)') +args = parser.parse_args() + +# set filename +filename = args.filename + +# read file +r = rd.Reader() +r.read(filename) +r.print_stats() + +# initialize gvt +gvt.gvtInit() + +# diffuse color +kd = np.array(args.diffuse_color, dtype=np.float32); + +# create a mesh +mesh_name = r.mesh_name +gvt.createMesh(mesh_name) + +# add vertices and triangles +gvt.addMeshVertices(mesh_name, len(r.vertices) / 3, r.vertices) +gvt.addMeshTriangles(mesh_name, len(r.triangles) / 3, r.triangles) + +# set material +gvt.addMeshMaterialLambert(mesh_name, 0, kd, 1.0) +gvt.finishMesh(mesh_name) + +# transformation matrix +gvt.addInstance(mesh_name, np.array([1.0, 0, 0, 0, 0, 1.0, 0, 0, 0, 0, 1.0, 0, 0, 0, 0, 1.0], dtype=np.float32)) + +# camera +camera_pos = (r.center + (np.array([0.0, 0.0, 1.0], dtype=np.float32) * (args.camera_distance * r.diagonal))).astype(np.float32) +camera_focus = r.center.astype(np.float32) + +gvt.addCamera("Camera", camera_pos, camera_focus, + # up + np.array([0.0, 1.0, 0.0], dtype=np.float32), + # fov, depth, samples, jitter + 0.785398, 1, 1, 0.5) + +# light source +# TODO: make this configurable +# locate a point light at the camera position +# light_pos = (r.center + (np.array([0.0, 1.0, 0.0], dtype=np.float32) * r.diagonal)).astype(np.float32) +light_pos = camera_pos +# TODO: make this configurable +light_color = np.array(args.light_color, dtype=np.float32) + +gvt.addPointLight("PointLight", light_pos, light_color) + +# set image size +gvt.addFilm("film", args.image_size[0], args.image_size[1], mesh_name) + +# add renderer +gvt.addRenderer("render", 4, 0) # name, adapter, schedule; +gvt.render("render"); + +# dump the image to a ppm file +gvt.writeimage("render", mesh_name); + +print("created " + mesh_name + ".ppm") + + diff --git a/pygvt/reader.py b/pygvt/reader.py new file mode 100644 index 00000000..9363c46a --- /dev/null +++ b/pygvt/reader.py @@ -0,0 +1,98 @@ +import numpy as np +import sys +import os +import vtk +from vtk import * + +# load mesh +# filename = sys.argv[1] + +class Reader: + def __init__(self): + self.polydata = None + self.reader = None + self.vertices = None + self.triangles = None + self.bounds = None + self.bounds_min = None + self.bounds_max = None + self.center = None + self.diagonal = None + self.mesh_name = None + + def print_stats(self): + print('mesh name:' + self.mesh_name) + print('bounds: min(' + str(self.bounds_min) + ') max(' + str(self.bounds_max) + ')') + print('center: ' + str(self.center)) + print('number of vertices: ' + str(len(self.vertices) / 3)) + print('number of triangles: ' + str(len(self.triangles) / 3)) + + def read(self, filename): + if os.path.isfile(filename) == False: + print(filename + ' is not a file.') + raise ValueError('not a file.') + + self.mesh_name = os.path.basename(filename).split('.')[0] + mesh_type = os.path.basename(filename).split('.')[1] + + if mesh_type in ['ply']: + self.reader = vtk.vtkPLYReader() + + elif mesh_type in ['obj']: + self.reader = vtk.vtkOBJReader() + + elif mesh_type in ['vtp']: + self.reader = vtk.vtkXMLPolyDataReader() + + else: + print(mesh_type + 'is unsupported.') + raise ValueError('unsupported file extension.') + + self.reader.SetFileName(filename) + self.reader.Update() + + # print('filename', filename) + + self.polydata = self.reader.GetOutput() + + num_points = self.polydata.GetNumberOfPoints() + # print('num_points', num_points) + + # TODO: enable color + # point_data = self.polydata.GetPointData() + # rgb = point_data.GetArray('RGB') + # rgb.GetTuple(0) + + bounds = self.polydata.GetBounds() + self.bounds = bounds + self.bounds_min = np.array([bounds[0], bounds[2], bounds[4]]) + self.bounds_max = np.array([bounds[1], bounds[3], bounds[5]]) + + self.center = np.array(self.polydata.GetCenter()) + self.diagonal = self.polydata.GetLength() + + points = self.polydata.GetPoints() + + # vertices + self.vertices = np.zeros(self.polydata.GetNumberOfPoints() * 3 , dtype = np.float32) + + for i in range(self.polydata.GetNumberOfPoints()): + pos = points.GetPoint(i) + for j in range(len(pos)): + self.vertices[i * 3 + j] = pos[j] + + # triangles + self.triangles = np.zeros(self.polydata.GetNumberOfCells() * 3 , dtype = np.uint32) + + for i in range(self.polydata.GetNumberOfCells()): + c = self.polydata.GetCell(i) + if (c.GetNumberOfPoints() != 3): + print("Number of vertices per cell: ", c.GetNumberOfPoints()) + raise ValueError('The number of vertices is not 3.') + for j in range(c.GetNumberOfPoints()): + self.triangles[i * 3 + j] = c.GetPointId(j) + + # gvt indices starting from 1 + for x in np.nditer(self.triangles, op_flags=['readwrite']): + x[...] = x + 1 + diff --git a/pygvt/test_example_reader.sh b/pygvt/test_example_reader.sh new file mode 100644 index 00000000..8d30afb7 --- /dev/null +++ b/pygvt/test_example_reader.sh @@ -0,0 +1,11 @@ +#!/bin/bash -x + +if [ -z $GVT_DATA ] +then + GVT_DATA=$PWD/../data +fi + +python example_reader.py --light-color 1 1 1 $GVT_DATA/geom/bunny.obj +python example_reader.py --light-color 30 30 30 $GVT_DATA/wavelet.vtp +python example_reader.py --light-color 500 500 500 $GVT_DATA/EnzoPlyData/block0.ply + From 72b39018f96348cae3e0ba542b26d64cef325560 Mon Sep 17 00:00:00 2001 From: Hyungman Park Date: Fri, 22 Sep 2017 16:04:24 -0500 Subject: [PATCH 2/5] minor typo --- pygvt/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pygvt/README.md b/pygvt/README.md index 34f1bf2e..916f3dd9 100644 --- a/pygvt/README.md +++ b/pygvt/README.md @@ -38,5 +38,5 @@ display simple.ppm ### Test example scripts ``` -source test_examle_reader.sh +source test_example_reader.sh ``` From f00bf7ee142063a0570bae2206de76117e84edb6 Mon Sep 17 00:00:00 2001 From: Hyungman Park Date: Fri, 22 Sep 2017 17:23:39 -0500 Subject: [PATCH 3/5] updated readme --- pygvt/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pygvt/README.md b/pygvt/README.md index 916f3dd9..78d14f3d 100644 --- a/pygvt/README.md +++ b/pygvt/README.md @@ -35,8 +35,9 @@ python setup.py install python test.py display simple.ppm ``` -### Test example scripts - ``` source test_example_reader.sh +display bunny.ppm +display wavelet.ppm +display block0.ppm ``` From 8b082335c2b69c9f41b9981d59e13ac790a1ba66 Mon Sep 17 00:00:00 2001 From: Hyungman Date: Sun, 8 Oct 2017 22:33:48 -0500 Subject: [PATCH 4/5] enabled color in pygvt (ply models only) added pygvt API (readPly) added test scripts for render wavelet.ply and enzo_ply_temp.ply with color values updated CMakeLists to make a shared library for ply.h/.c --- CMakeLists.txt | 5 +- data/wavelet_color/wavelet.ply | Bin 0 -> 114155 bytes pygvt/README.md | 10 + pygvt/example_plyapp.py | 71 + pygvt/example_reader.py | 7 +- pygvt/setup.py | 8 +- pygvt/src/gvt/gvt.cpp | 2819 ++++++++++++++++++-------------- pygvt/src/gvt/gvt.pyx | 4 + pygvt/test_example_plyapp.sh | 15 + src/gvt/render/api/api.cpp | 61 + src/gvt/render/api/api.h | 8 + third-party/ply.h | 169 -- 12 files changed, 1802 insertions(+), 1375 deletions(-) create mode 100644 data/wavelet_color/wavelet.ply create mode 100644 pygvt/example_plyapp.py create mode 100644 pygvt/test_example_plyapp.sh delete mode 100644 third-party/ply.h diff --git a/CMakeLists.txt b/CMakeLists.txt index 3bdb706d..058a04a5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -124,6 +124,9 @@ if (${PLYPATH} MATCHES "PLYPATH-NOTFOUND") MESSAGE(SEND ERRORS "ply reader header not found") endif (${PLYPATH} MATCHES "PLYPATH-NOTFOUND") +add_library(plyloader ${PLYPATH}/ply.c) +# install(FILES ${PLYPATH}/ply.h DESTINATION include/) + #TODO best way to just include embre folder ? set(GVT_THIRDPARTY_EMBREESHADERS "${CMAKE_SOURCE_DIR}/third-party/embree-shaders") @@ -429,7 +432,7 @@ endif(GVT_CORE) if (GVT_RENDER) set(GVT_RENDER_LIBS ${GVT_RENDER_LIBS}) - set(GVT_RENDER_LIBS ${GVT_RENDER_LIBS} tinyobjloader ${ICET_CORE_LIBS} ${ICET_MPI_LIBS}) + set(GVT_RENDER_LIBS ${GVT_RENDER_LIBS} tinyobjloader plyloader ${ICET_CORE_LIBS} ${ICET_MPI_LIBS}) include_directories(${TINYOBJPATH} ${PLYPATH}) # find_package(Boost REQUIRED COMPONENTS system) diff --git a/data/wavelet_color/wavelet.ply b/data/wavelet_color/wavelet.ply new file mode 100644 index 0000000000000000000000000000000000000000..0317ab761cf5b6e6261f93a8541cd7a7baeda2fd GIT binary patch literal 114155 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%0AC6) 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 literal 0 HcmV?d00001 diff --git a/pygvt/README.md b/pygvt/README.md index 78d14f3d..5c4a5677 100644 --- a/pygvt/README.md +++ b/pygvt/README.md @@ -41,3 +41,13 @@ display bunny.ppm display wavelet.ppm display block0.ppm ``` +``` +Set GVT model directory. This is optional. +export GVT_MODELS=/work/03378/hpark/maverick/gvtmodels + +source test_example_plyapp.sh +display wavelet_color.ppm + +If GVT_MODELS is set, open enzocolor.ppm. +display enzocolor.ppm +``` diff --git a/pygvt/example_plyapp.py b/pygvt/example_plyapp.py new file mode 100644 index 00000000..b24c1a5b --- /dev/null +++ b/pygvt/example_plyapp.py @@ -0,0 +1,71 @@ +import gvt +import reader as rd +import sys +import os +import numpy as np +import argparse + +# parse command line +parser = argparse.ArgumentParser(description='A PYGVT example to render a model in obj/ply/vtp format.') +parser.add_argument('dirname', help='directory name') +parser.add_argument('--image-size', nargs=2, default=[512, 512], help='image width and height') +parser.add_argument('--light-color', nargs=3, default=[100.0, 100.0, 100.0], help='light color') +parser.add_argument('--diffuse-color', nargs=3, default=[1.0, 1.0, 1.0], help='diffuse color for surfaces') +parser.add_argument('--camera-distance', nargs=1, type=float, default=[1.0], help='camera distance factor (the larger the farther)') +args = parser.parse_args() + +# set filename +# filename = args.filename +dirname = args.dirname + +# initialize gvt +gvt.gvtInit() + +# create a mesh +model_name = os.path.basename(dirname).split(".")[0] + +bounds = np.zeros((6,), dtype=np.float32) +gvt.readPly(dirname, False, bounds) + +bounds = np.reshape(bounds, (2,3)) +diagonal = np.linalg.norm(bounds[1] - bounds[0]) +center = (bounds[0] + bounds[1]) * 0.5 + +print("bounds_min: ", bounds[0]) +print("bounds_max: ", bounds[1]) +print("diagonal: ", diagonal) +print("center: ", center) + +# camera +camera_pos = (center + (np.array([0.0, 0.0, 1.0], dtype=np.float32) * (args.camera_distance[0] * diagonal))).astype(np.float32) +camera_focus = center.astype(np.float32) + +gvt.addCamera("Camera", camera_pos, camera_focus, + # up + np.array([0.0, 1.0, 0.0], dtype=np.float32), + # fov, depth, samples, jitter + 0.785398, 1, 1, 0.5) + +# light source +# TODO: make this configurable +# locate a point light at the camera position +# light_pos = (r.center + (np.array([0.0, 1.0, 0.0], dtype=np.float32) * r.diagonal)).astype(np.float32) +light_pos = camera_pos +# TODO: make this configurable +light_color = np.array(args.light_color, dtype=np.float32) + +gvt.addPointLight("PointLight", light_pos, light_color) + +# set image size +gvt.addFilm("film", args.image_size[0], args.image_size[1], model_name) + +# add renderer +gvt.addRenderer("render", 4, 0) # name, adapter, schedule; +gvt.render("render"); + +# dump the image to a ppm file +gvt.writeimage("render", model_name); + +print("created " + model_name + ".ppm") + + diff --git a/pygvt/example_reader.py b/pygvt/example_reader.py index f008497d..3aba1683 100644 --- a/pygvt/example_reader.py +++ b/pygvt/example_reader.py @@ -10,7 +10,7 @@ parser.add_argument('--image-size', nargs=2, default=[512, 512], help='image width and height') parser.add_argument('--light-color', nargs=3, default=[100.0, 100.0, 100.0], help='light color') parser.add_argument('--diffuse-color', nargs=3, default=[1.0, 1.0, 1.0], help='diffuse color for surfaces') -parser.add_argument('--camera-distance', nargs=1, default=1.0, help='camera distance factor (the larger the farther)') +parser.add_argument('--camera-distance', nargs=1, type=float, default=[1.0], help='camera distance factor (the larger the farther)') args = parser.parse_args() # set filename @@ -43,8 +43,11 @@ gvt.addInstance(mesh_name, np.array([1.0, 0, 0, 0, 0, 1.0, 0, 0, 0, 0, 1.0, 0, 0, 0, 0, 1.0], dtype=np.float32)) # camera -camera_pos = (r.center + (np.array([0.0, 0.0, 1.0], dtype=np.float32) * (args.camera_distance * r.diagonal))).astype(np.float32) +camera_pos = (r.center + (np.array([0.0, 0.0, 1.0], dtype=np.float32) * (args.camera_distance[0] * r.diagonal))).astype(np.float32) camera_focus = r.center.astype(np.float32) +# print("diagonal:", r.diagonal) +print("camera pos:", camera_pos) +print("camera focus: ", camera_focus) gvt.addCamera("Camera", camera_pos, camera_focus, # up diff --git a/pygvt/setup.py b/pygvt/setup.py index 03a428bf..55e71149 100644 --- a/pygvt/setup.py +++ b/pygvt/setup.py @@ -57,7 +57,6 @@ compile_args.append('-stdlib=libc++') mpi_mac="-mt" - extensions = [ Extension("gvt",["src/gvt/gvt.pyx"], include_dirs = [ @@ -72,15 +71,14 @@ numpy.get_include()], libraries = [ "gvtRender","gvtCore", + "plyloader", "IceTGL","IceTMPI","IceTCore", "embree", "boost_system"+mpi_mac, "mpi", "mpicxx", "irc", - "imf", - - + "imf" ], library_dirs = [ embree_lib, @@ -99,5 +97,5 @@ cmdclass = {"build_ext": build_ext}, version="1.0.0", ext_modules = extensions - #ext_modules = cythonize(extensions) + # ext_modules = cythonize(extensions) ) diff --git a/pygvt/src/gvt/gvt.cpp b/pygvt/src/gvt/gvt.cpp index c5d9cd9a..3968e74a 100644 --- a/pygvt/src/gvt/gvt.cpp +++ b/pygvt/src/gvt/gvt.cpp @@ -1,4 +1,4 @@ -/* Generated by Cython 0.25.2 */ +/* Generated by Cython 0.26 */ #define PY_SSIZE_T_CLEAN #include "Python.h" @@ -7,7 +7,7 @@ #elif PY_VERSION_HEX < 0x02060000 || (0x03000000 <= PY_VERSION_HEX && PY_VERSION_HEX < 0x03020000) #error Cython requires Python 2.6+ or Python 3.2+. #else -#define CYTHON_ABI "0_25_2" +#define CYTHON_ABI "0_26" #include #ifndef offsetof #define offsetof(type, member) ( (size_t) & ((type*)0) -> member ) @@ -29,6 +29,7 @@ #ifndef DL_EXPORT #define DL_EXPORT(t) t #endif +#define __PYX_COMMA , #ifndef HAVE_LONG_LONG #if PY_VERSION_HEX >= 0x03030000 || (PY_MAJOR_VERSION == 2 && PY_VERSION_HEX >= 0x02070000) #define HAVE_LONG_LONG @@ -181,16 +182,20 @@ #ifndef Py_TPFLAGS_HAVE_FINALIZE #define Py_TPFLAGS_HAVE_FINALIZE 0 #endif -#ifndef METH_FASTCALL - #define METH_FASTCALL 0x80 - typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, - Py_ssize_t nargs, PyObject *kwnames); +#if PY_VERSION_HEX < 0x030700A0 || !defined(METH_FASTCALL) + #ifndef METH_FASTCALL + #define METH_FASTCALL 0x80 + #endif + typedef PyObject *(*__Pyx_PyCFunctionFast) (PyObject *self, PyObject **args, Py_ssize_t nargs); + typedef PyObject *(*__Pyx_PyCFunctionFastWithKeywords) (PyObject *self, PyObject **args, + Py_ssize_t nargs, PyObject *kwnames); #else #define __Pyx_PyCFunctionFast _PyCFunctionFast + #define __Pyx_PyCFunctionFastWithKeywords _PyCFunctionFastWithKeywords #endif #if CYTHON_FAST_PYCCALL #define __Pyx_PyFastCFunction_Check(func)\ - ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))))) + ((PyCFunction_Check(func) && (METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))))) #else #define __Pyx_PyFastCFunction_Check(func) 0 #endif @@ -317,6 +322,12 @@ #else #define __Pyx_PyMethod_New(func, self, klass) PyMethod_New(func, self, klass) #endif +#ifndef __has_attribute + #define __has_attribute(x) 0 +#endif +#ifndef __has_cpp_attribute + #define __has_cpp_attribute(x) 0 +#endif #if CYTHON_USE_ASYNC_SLOTS #if PY_VERSION_HEX >= 0x030500B1 #define __Pyx_PyAsyncMethodsStruct PyAsyncMethods @@ -371,6 +382,35 @@ # endif #endif #define __Pyx_void_to_None(void_result) ((void)(void_result), Py_INCREF(Py_None), Py_None) +#ifdef _MSC_VER + #ifndef _MSC_STDINT_H_ + #if _MSC_VER < 1300 + typedef unsigned char uint8_t; + typedef unsigned int uint32_t; + #else + typedef unsigned __int8 uint8_t; + typedef unsigned __int32 uint32_t; + #endif + #endif +#else + #include +#endif +#ifndef CYTHON_FALLTHROUGH + #ifdef __cplusplus + #if __has_cpp_attribute(fallthrough) + #define CYTHON_FALLTHROUGH [[fallthrough]] + #elif __has_cpp_attribute(clang::fallthrough) + #define CYTHON_FALLTHROUGH [[clang::fallthrough]] + #endif + #endif + #ifndef CYTHON_FALLTHROUGH + #if __has_attribute(fallthrough) || (defined(__GNUC__) && defined(__attribute__)) + #define CYTHON_FALLTHROUGH __attribute__((fallthrough)) + #else + #define CYTHON_FALLTHROUGH + #endif + #endif +#endif #ifndef __cplusplus #error "Cython files generated with the C++ option must be compiled with a C++ compiler." @@ -498,8 +538,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc #else #define __Pyx_sst_abs(value) ((value<0) ? -value : value) #endif -static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*); -static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject*); +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length); #define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s)) #define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l) #define __Pyx_PyBytes_FromString PyBytes_FromString @@ -512,8 +552,11 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*); #define __Pyx_PyStr_FromString __Pyx_PyUnicode_FromString #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize #endif -#define __Pyx_PyObject_AsSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) -#define __Pyx_PyObject_AsUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableString(s) ((char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableSString(s) ((signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsWritableUString(s) ((unsigned char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsSString(s) ((const signed char*) __Pyx_PyObject_AsString(s)) +#define __Pyx_PyObject_AsUString(s) ((const unsigned char*) __Pyx_PyObject_AsString(s)) #define __Pyx_PyObject_FromCString(s) __Pyx_PyObject_FromString((const char*)s) #define __Pyx_PyBytes_FromCString(s) __Pyx_PyBytes_FromString((const char*)s) #define __Pyx_PyByteArray_FromCString(s) __Pyx_PyByteArray_FromString((const char*)s) @@ -635,10 +678,12 @@ static int __Pyx_init_sys_getdefaultencoding_params(void) { #define likely(x) (x) #define unlikely(x) (x) #endif /* __GNUC__ */ +static CYTHON_INLINE void __Pyx_pretend_to_initialize(void* ptr) { (void)ptr; } static PyObject *__pyx_m; static PyObject *__pyx_d; static PyObject *__pyx_b; +static PyObject *__pyx_cython_runtime; static PyObject *__pyx_empty_tuple; static PyObject *__pyx_empty_bytes; static PyObject *__pyx_empty_unicode; @@ -672,9 +717,9 @@ static const char *__pyx_filename; static const char *__pyx_f[] = { "src/gvt/gvt.pyx", - "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd", + "__init__.pxd", "stringsource", - "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/cpython/type.pxd", + "type.pxd", }; /* BufferFormatStructs.proto */ #define IS_UNSIGNED(type) (((type) -1) > 0) @@ -713,7 +758,7 @@ typedef struct { } __Pyx_BufFmt_Context; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":725 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":725 * # in Cython to enable them only on the right systems. * * ctypedef npy_int8 int8_t # <<<<<<<<<<<<<< @@ -722,7 +767,7 @@ typedef struct { */ typedef npy_int8 __pyx_t_5numpy_int8_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":726 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":726 * * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t # <<<<<<<<<<<<<< @@ -731,7 +776,7 @@ typedef npy_int8 __pyx_t_5numpy_int8_t; */ typedef npy_int16 __pyx_t_5numpy_int16_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":727 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":727 * ctypedef npy_int8 int8_t * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t # <<<<<<<<<<<<<< @@ -740,7 +785,7 @@ typedef npy_int16 __pyx_t_5numpy_int16_t; */ typedef npy_int32 __pyx_t_5numpy_int32_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":728 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":728 * ctypedef npy_int16 int16_t * ctypedef npy_int32 int32_t * ctypedef npy_int64 int64_t # <<<<<<<<<<<<<< @@ -749,7 +794,7 @@ typedef npy_int32 __pyx_t_5numpy_int32_t; */ typedef npy_int64 __pyx_t_5numpy_int64_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":732 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":732 * #ctypedef npy_int128 int128_t * * ctypedef npy_uint8 uint8_t # <<<<<<<<<<<<<< @@ -758,7 +803,7 @@ typedef npy_int64 __pyx_t_5numpy_int64_t; */ typedef npy_uint8 __pyx_t_5numpy_uint8_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":733 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":733 * * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t # <<<<<<<<<<<<<< @@ -767,7 +812,7 @@ typedef npy_uint8 __pyx_t_5numpy_uint8_t; */ typedef npy_uint16 __pyx_t_5numpy_uint16_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":734 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":734 * ctypedef npy_uint8 uint8_t * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t # <<<<<<<<<<<<<< @@ -776,7 +821,7 @@ typedef npy_uint16 __pyx_t_5numpy_uint16_t; */ typedef npy_uint32 __pyx_t_5numpy_uint32_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":735 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":735 * ctypedef npy_uint16 uint16_t * ctypedef npy_uint32 uint32_t * ctypedef npy_uint64 uint64_t # <<<<<<<<<<<<<< @@ -785,7 +830,7 @@ typedef npy_uint32 __pyx_t_5numpy_uint32_t; */ typedef npy_uint64 __pyx_t_5numpy_uint64_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":739 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":739 * #ctypedef npy_uint128 uint128_t * * ctypedef npy_float32 float32_t # <<<<<<<<<<<<<< @@ -794,7 +839,7 @@ typedef npy_uint64 __pyx_t_5numpy_uint64_t; */ typedef npy_float32 __pyx_t_5numpy_float32_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":740 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":740 * * ctypedef npy_float32 float32_t * ctypedef npy_float64 float64_t # <<<<<<<<<<<<<< @@ -803,7 +848,7 @@ typedef npy_float32 __pyx_t_5numpy_float32_t; */ typedef npy_float64 __pyx_t_5numpy_float64_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":749 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":749 * # The int types are mapped a bit surprising -- * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t # <<<<<<<<<<<<<< @@ -812,7 +857,7 @@ typedef npy_float64 __pyx_t_5numpy_float64_t; */ typedef npy_long __pyx_t_5numpy_int_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":750 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":750 * # numpy.int corresponds to 'l' and numpy.long to 'q' * ctypedef npy_long int_t * ctypedef npy_longlong long_t # <<<<<<<<<<<<<< @@ -821,7 +866,7 @@ typedef npy_long __pyx_t_5numpy_int_t; */ typedef npy_longlong __pyx_t_5numpy_long_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":751 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":751 * ctypedef npy_long int_t * ctypedef npy_longlong long_t * ctypedef npy_longlong longlong_t # <<<<<<<<<<<<<< @@ -830,7 +875,7 @@ typedef npy_longlong __pyx_t_5numpy_long_t; */ typedef npy_longlong __pyx_t_5numpy_longlong_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":753 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":753 * ctypedef npy_longlong longlong_t * * ctypedef npy_ulong uint_t # <<<<<<<<<<<<<< @@ -839,7 +884,7 @@ typedef npy_longlong __pyx_t_5numpy_longlong_t; */ typedef npy_ulong __pyx_t_5numpy_uint_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":754 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":754 * * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t # <<<<<<<<<<<<<< @@ -848,7 +893,7 @@ typedef npy_ulong __pyx_t_5numpy_uint_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":755 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":755 * ctypedef npy_ulong uint_t * ctypedef npy_ulonglong ulong_t * ctypedef npy_ulonglong ulonglong_t # <<<<<<<<<<<<<< @@ -857,7 +902,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulong_t; */ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":757 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":757 * ctypedef npy_ulonglong ulonglong_t * * ctypedef npy_intp intp_t # <<<<<<<<<<<<<< @@ -866,7 +911,7 @@ typedef npy_ulonglong __pyx_t_5numpy_ulonglong_t; */ typedef npy_intp __pyx_t_5numpy_intp_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":758 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":758 * * ctypedef npy_intp intp_t * ctypedef npy_uintp uintp_t # <<<<<<<<<<<<<< @@ -875,7 +920,7 @@ typedef npy_intp __pyx_t_5numpy_intp_t; */ typedef npy_uintp __pyx_t_5numpy_uintp_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":760 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":760 * ctypedef npy_uintp uintp_t * * ctypedef npy_double float_t # <<<<<<<<<<<<<< @@ -884,7 +929,7 @@ typedef npy_uintp __pyx_t_5numpy_uintp_t; */ typedef npy_double __pyx_t_5numpy_float_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":761 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":761 * * ctypedef npy_double float_t * ctypedef npy_double double_t # <<<<<<<<<<<<<< @@ -893,7 +938,7 @@ typedef npy_double __pyx_t_5numpy_float_t; */ typedef npy_double __pyx_t_5numpy_double_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":762 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":762 * ctypedef npy_double float_t * ctypedef npy_double double_t * ctypedef npy_longdouble longdouble_t # <<<<<<<<<<<<<< @@ -928,7 +973,7 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do /*--- Type declarations ---*/ -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":764 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":764 * ctypedef npy_longdouble longdouble_t * * ctypedef npy_cfloat cfloat_t # <<<<<<<<<<<<<< @@ -937,7 +982,7 @@ static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(do */ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":765 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":765 * * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t # <<<<<<<<<<<<<< @@ -946,7 +991,7 @@ typedef npy_cfloat __pyx_t_5numpy_cfloat_t; */ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":766 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":766 * ctypedef npy_cfloat cfloat_t * ctypedef npy_cdouble cdouble_t * ctypedef npy_clongdouble clongdouble_t # <<<<<<<<<<<<<< @@ -955,7 +1000,7 @@ typedef npy_cdouble __pyx_t_5numpy_cdouble_t; */ typedef npy_clongdouble __pyx_t_5numpy_clongdouble_t; -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":768 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":768 * ctypedef npy_clongdouble clongdouble_t * * ctypedef npy_cdouble complex_t # <<<<<<<<<<<<<< @@ -1028,10 +1073,31 @@ typedef npy_cdouble __pyx_t_5numpy_complex_t; #define __Pyx_CLEAR(r) do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0) #define __Pyx_XCLEAR(r) do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0) +/* RaiseArgTupleInvalid.proto */ +static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, + Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); + +/* RaiseDoubleKeywords.proto */ +static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); + +/* ParseKeywords.proto */ +static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ + PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ + const char* function_name); + /* ArgTypeTest.proto */ static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, const char *name, int exact); +/* BufferFormatCheck.proto */ +static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, + __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); +static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); +static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); +static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, + __Pyx_BufFmt_StackElem* stack, + __Pyx_TypeInfo* type); + /* PyObjectGetAttrStr.proto */ #if CYTHON_USE_TYPE_SLOTS static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) { @@ -1088,27 +1154,6 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func); #define __Pyx_PyObject_CallNoArg(func) __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL) #endif -/* RaiseArgTupleInvalid.proto */ -static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact, - Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); - -/* RaiseDoubleKeywords.proto */ -static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); - -/* ParseKeywords.proto */ -static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\ - PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args,\ - const char* function_name); - -/* BufferFormatCheck.proto */ -static CYTHON_INLINE int __Pyx_GetBufferAndValidate(Py_buffer* buf, PyObject* obj, - __Pyx_TypeInfo* dtype, int flags, int nd, int cast, __Pyx_BufFmt_StackElem* stack); -static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info); -static const char* __Pyx_BufFmt_CheckString(__Pyx_BufFmt_Context* ctx, const char* ts); -static void __Pyx_BufFmt_Init(__Pyx_BufFmt_Context* ctx, - __Pyx_BufFmt_StackElem* stack, - __Pyx_TypeInfo* type); // PROTO - /* PyThreadStateGet.proto */ #if CYTHON_FAST_THREAD_STATE #define __Pyx_PyThreadState_declare PyThreadState *__pyx_tstate; @@ -1202,6 +1247,9 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /* Import.proto */ static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); +/* CLineInTraceback.proto */ +static int __Pyx_CLineForTraceback(int c_line); + /* CodeObjectCache.proto */ typedef struct { PyCodeObject* code_object; @@ -1445,6 +1493,7 @@ static const char __pyx_k_fov[] = "fov"; static const char __pyx_k_gvt[] = "gvt"; static const char __pyx_k_pos[] = "pos"; static const char __pyx_k_sys[] = "sys"; +static const char __pyx_k_dist[] = "dist"; static const char __pyx_k_main[] = "__main__"; static const char __pyx_k_name[] = "name"; static const char __pyx_k_path[] = "path"; @@ -1464,9 +1513,11 @@ static const char __pyx_k_output[] = "output"; static const char __pyx_k_render[] = "render"; static const char __pyx_k_adapter[] = "adapter"; static const char __pyx_k_addFilm[] = "addFilm"; +static const char __pyx_k_dirname[] = "dirname"; static const char __pyx_k_gvtInit[] = "gvtInit"; static const char __pyx_k_mattype[] = "mattype"; static const char __pyx_k_normals[] = "normals"; +static const char __pyx_k_readPly[] = "readPly"; static const char __pyx_k_samples[] = "samples"; static const char __pyx_k_schedule[] = "schedule"; static const char __pyx_k_vertices[] = "vertices"; @@ -1484,16 +1535,18 @@ static const char __pyx_k_modifyLight[] = "modifyLight"; static const char __pyx_k_RuntimeError[] = "RuntimeError"; static const char __pyx_k_addAreaLight[] = "addAreaLight"; static const char __pyx_k_modifyCamera[] = "modifyCamera"; +static const char __pyx_k_world_bounds[] = "world_bounds"; static const char __pyx_k_addPointLight[] = "addPointLight"; static const char __pyx_k_compute_normal[] = "compute_normal"; static const char __pyx_k_addMeshVertices[] = "addMeshVertices"; +static const char __pyx_k_src_gvt_gvt_pyx[] = "src/gvt/gvt.pyx"; static const char __pyx_k_addMeshTriangles[] = "addMeshTriangles"; static const char __pyx_k_addMeshFaceNormals[] = "addMeshFaceNormals"; +static const char __pyx_k_cline_in_traceback[] = "cline_in_traceback"; static const char __pyx_k_addMeshVertexNormals[] = "addMeshVertexNormals"; static const char __pyx_k_addMeshMaterialLambert[] = "addMeshMaterialLambert"; static const char __pyx_k_addMeshMaterialSpecular[] = "addMeshMaterialSpecular"; static const char __pyx_k_ndarray_is_not_C_contiguous[] = "ndarray is not C contiguous"; -static const char __pyx_k_home_jbarbosa_r_pygvt_src_gvt_g[] = "/home/jbarbosa/r/pygvt/src/gvt/gvt.pyx"; static const char __pyx_k_numpy_core_multiarray_failed_to[] = "numpy.core.multiarray failed to import"; static const char __pyx_k_unknown_dtype_code_in_numpy_pxd[] = "unknown dtype code in numpy.pxd (%d)"; static const char __pyx_k_Format_string_allocated_too_shor[] = "Format string allocated too short, see comment in numpy.pxd"; @@ -1521,11 +1574,14 @@ static PyObject *__pyx_n_s_addMeshVertices; static PyObject *__pyx_n_s_addPointLight; static PyObject *__pyx_n_s_addRenderer; static PyObject *__pyx_n_s_alpha; +static PyObject *__pyx_n_s_cline_in_traceback; static PyObject *__pyx_n_s_color; static PyObject *__pyx_n_s_compute_normal; static PyObject *__pyx_n_s_createMesh; static PyObject *__pyx_n_s_ctypes; static PyObject *__pyx_n_s_depth; +static PyObject *__pyx_n_s_dirname; +static PyObject *__pyx_n_s_dist; static PyObject *__pyx_n_s_encode; static PyObject *__pyx_n_s_finishMesh; static PyObject *__pyx_n_s_focus; @@ -1533,7 +1589,6 @@ static PyObject *__pyx_n_s_fov; static PyObject *__pyx_n_s_gvt; static PyObject *__pyx_n_s_gvtInit; static PyObject *__pyx_n_s_h; -static PyObject *__pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g; static PyObject *__pyx_n_s_import; static PyObject *__pyx_n_s_jitter; static PyObject *__pyx_n_s_kd; @@ -1557,10 +1612,12 @@ static PyObject *__pyx_n_s_output; static PyObject *__pyx_n_s_path; static PyObject *__pyx_n_s_pos; static PyObject *__pyx_n_s_range; +static PyObject *__pyx_n_s_readPly; static PyObject *__pyx_n_s_render; static PyObject *__pyx_n_s_samples; static PyObject *__pyx_n_s_schedule; static PyObject *__pyx_n_s_size; +static PyObject *__pyx_kp_s_src_gvt_gvt_pyx; static PyObject *__pyx_n_s_sys; static PyObject *__pyx_n_s_test; static PyObject *__pyx_n_s_triangles; @@ -1568,28 +1625,30 @@ static PyObject *__pyx_kp_u_unknown_dtype_code_in_numpy_pxd; static PyObject *__pyx_n_s_up; static PyObject *__pyx_n_s_vertices; static PyObject *__pyx_n_s_w; +static PyObject *__pyx_n_s_world_bounds; static PyObject *__pyx_n_s_writeimage; static PyObject *__pyx_pf_3gvt_gvtInit(CYTHON_UNUSED PyObject *__pyx_self); /* proto */ -static PyObject *__pyx_pf_3gvt_2createMesh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name); /* proto */ -static PyObject *__pyx_pf_3gvt_4addMeshVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_size, PyArrayObject *__pyx_v_vertices); /* proto */ -static PyObject *__pyx_pf_3gvt_6addMeshTriangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_triangles); /* proto */ -static PyObject *__pyx_pf_3gvt_8addMeshFaceNormals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_normals); /* proto */ -static PyObject *__pyx_pf_3gvt_10addMeshVertexNormals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_normals); /* proto */ -static PyObject *__pyx_pf_3gvt_12finishMesh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, bool __pyx_v_compute_normal); /* proto */ -static PyObject *__pyx_pf_3gvt_14addMeshMaterialLambert(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_mattype, PyArrayObject *__pyx_v_kd, float __pyx_v_alpha); /* proto */ -static PyObject *__pyx_pf_3gvt_16addMeshMaterialSpecular(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_mattype, PyArrayObject *__pyx_v_kd, PyArrayObject *__pyx_v_ks, float __pyx_v_alpha); /* proto */ -static PyObject *__pyx_pf_3gvt_18addInstance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_m); /* proto */ -static PyObject *__pyx_pf_3gvt_20addPointLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color); /* proto */ -static PyObject *__pyx_pf_3gvt_22addAreaLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color, PyArrayObject *__pyx_v_n, float __pyx_v_w, float __pyx_v_h); /* proto */ -static PyObject *__pyx_pf_3gvt_24modifyLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color); /* proto */ -static PyObject *__pyx_pf_3gvt_26modifyLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color, PyArrayObject *__pyx_v_n, float __pyx_v_w, float __pyx_v_h); /* proto */ -static PyObject *__pyx_pf_3gvt_28addCamera(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_focus, PyArrayObject *__pyx_v_up, float __pyx_v_fov, int __pyx_v_depth, int __pyx_v_samples, float __pyx_v_jitter); /* proto */ -static PyObject *__pyx_pf_3gvt_30modifyCamera(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_focus, PyArrayObject *__pyx_v_up, float __pyx_v_fov); /* proto */ -static PyObject *__pyx_pf_3gvt_32addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_w, int __pyx_v_h, PyObject *__pyx_v_path); /* proto */ -static PyObject *__pyx_pf_3gvt_34modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_w, int __pyx_v_h, PyObject *__pyx_v_path); /* proto */ -static PyObject *__pyx_pf_3gvt_36addRenderer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_adapter, int __pyx_v_schedule); /* proto */ -static PyObject *__pyx_pf_3gvt_38render(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name); /* proto */ -static PyObject *__pyx_pf_3gvt_40writeimage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyObject *__pyx_v_output); /* proto */ +static PyObject *__pyx_pf_3gvt_2readPly(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dirname, bool __pyx_v_dist, PyArrayObject *__pyx_v_world_bounds); /* proto */ +static PyObject *__pyx_pf_3gvt_4createMesh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name); /* proto */ +static PyObject *__pyx_pf_3gvt_6addMeshVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_size, PyArrayObject *__pyx_v_vertices); /* proto */ +static PyObject *__pyx_pf_3gvt_8addMeshTriangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_triangles); /* proto */ +static PyObject *__pyx_pf_3gvt_10addMeshFaceNormals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_normals); /* proto */ +static PyObject *__pyx_pf_3gvt_12addMeshVertexNormals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_normals); /* proto */ +static PyObject *__pyx_pf_3gvt_14finishMesh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, bool __pyx_v_compute_normal); /* proto */ +static PyObject *__pyx_pf_3gvt_16addMeshMaterialLambert(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_mattype, PyArrayObject *__pyx_v_kd, float __pyx_v_alpha); /* proto */ +static PyObject *__pyx_pf_3gvt_18addMeshMaterialSpecular(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_mattype, PyArrayObject *__pyx_v_kd, PyArrayObject *__pyx_v_ks, float __pyx_v_alpha); /* proto */ +static PyObject *__pyx_pf_3gvt_20addInstance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_m); /* proto */ +static PyObject *__pyx_pf_3gvt_22addPointLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color); /* proto */ +static PyObject *__pyx_pf_3gvt_24addAreaLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color, PyArrayObject *__pyx_v_n, float __pyx_v_w, float __pyx_v_h); /* proto */ +static PyObject *__pyx_pf_3gvt_26modifyLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color); /* proto */ +static PyObject *__pyx_pf_3gvt_28modifyLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color, PyArrayObject *__pyx_v_n, float __pyx_v_w, float __pyx_v_h); /* proto */ +static PyObject *__pyx_pf_3gvt_30addCamera(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_focus, PyArrayObject *__pyx_v_up, float __pyx_v_fov, int __pyx_v_depth, int __pyx_v_samples, float __pyx_v_jitter); /* proto */ +static PyObject *__pyx_pf_3gvt_32modifyCamera(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_focus, PyArrayObject *__pyx_v_up, float __pyx_v_fov); /* proto */ +static PyObject *__pyx_pf_3gvt_34addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_w, int __pyx_v_h, PyObject *__pyx_v_path); /* proto */ +static PyObject *__pyx_pf_3gvt_36modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_w, int __pyx_v_h, PyObject *__pyx_v_path); /* proto */ +static PyObject *__pyx_pf_3gvt_38addRenderer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_adapter, int __pyx_v_schedule); /* proto */ +static PyObject *__pyx_pf_3gvt_40render(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name); /* proto */ +static PyObject *__pyx_pf_3gvt_42writeimage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyObject *__pyx_v_output); /* proto */ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info, int __pyx_v_flags); /* proto */ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_self, Py_buffer *__pyx_v_info); /* proto */ static PyObject *__pyx_tuple_; @@ -1621,6 +1680,7 @@ static PyObject *__pyx_tuple__43; static PyObject *__pyx_tuple__45; static PyObject *__pyx_tuple__47; static PyObject *__pyx_tuple__49; +static PyObject *__pyx_tuple__51; static PyObject *__pyx_codeobj__10; static PyObject *__pyx_codeobj__12; static PyObject *__pyx_codeobj__14; @@ -1642,8 +1702,9 @@ static PyObject *__pyx_codeobj__44; static PyObject *__pyx_codeobj__46; static PyObject *__pyx_codeobj__48; static PyObject *__pyx_codeobj__50; +static PyObject *__pyx_codeobj__52; -/* "gvt.pyx":44 +/* "gvt.pyx":45 * #void gvtInit(int &argc, char **&argv) * * def gvtInit(): # <<<<<<<<<<<<<< @@ -1670,7 +1731,7 @@ static PyObject *__pyx_pf_3gvt_gvtInit(CYTHON_UNUSED PyObject *__pyx_self) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("gvtInit", 0); - /* "gvt.pyx":51 + /* "gvt.pyx":52 * # free(c_argv) * * _gvtInit(0,NULL); # <<<<<<<<<<<<<< @@ -1679,7 +1740,7 @@ static PyObject *__pyx_pf_3gvt_gvtInit(CYTHON_UNUSED PyObject *__pyx_self) { */ gvtInit(0, NULL); - /* "gvt.pyx":44 + /* "gvt.pyx":45 * #void gvtInit(int &argc, char **&argv) * * def gvtInit(): # <<<<<<<<<<<<<< @@ -1694,23 +1755,193 @@ static PyObject *__pyx_pf_3gvt_gvtInit(CYTHON_UNUSED PyObject *__pyx_self) { return __pyx_r; } -/* "gvt.pyx":66 +/* "gvt.pyx":67 + * # _gvtInit(argc,argv) + * + * def readPly(str dirname, bool dist, np.ndarray[float, ndim=1, mode="c"] world_bounds): # <<<<<<<<<<<<<< + * _readPly(dirname.encode(), dist, world_bounds.data) + * + */ + +/* Python wrapper */ +static PyObject *__pyx_pw_3gvt_3readPly(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_3readPly = {"readPly", (PyCFunction)__pyx_pw_3gvt_3readPly, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_3readPly(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { + PyObject *__pyx_v_dirname = 0; + bool __pyx_v_dist; + PyArrayObject *__pyx_v_world_bounds = 0; + PyObject *__pyx_r = 0; + __Pyx_RefNannyDeclarations + __Pyx_RefNannySetupContext("readPly (wrapper)", 0); + { + static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_dirname,&__pyx_n_s_dist,&__pyx_n_s_world_bounds,0}; + PyObject* values[3] = {0,0,0}; + if (unlikely(__pyx_kwds)) { + Py_ssize_t kw_args; + const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); + switch (pos_args) { + case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; + case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; + case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; + case 0: break; + default: goto __pyx_L5_argtuple_error; + } + kw_args = PyDict_Size(__pyx_kwds); + switch (pos_args) { + case 0: + if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dirname)) != 0)) kw_args--; + else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; + case 1: + if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dist)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("readPly", 1, 3, 3, 1); __PYX_ERR(0, 67, __pyx_L3_error) + } + CYTHON_FALLTHROUGH; + case 2: + if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_world_bounds)) != 0)) kw_args--; + else { + __Pyx_RaiseArgtupleInvalid("readPly", 1, 3, 3, 2); __PYX_ERR(0, 67, __pyx_L3_error) + } + } + if (unlikely(kw_args > 0)) { + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "readPly") < 0)) __PYX_ERR(0, 67, __pyx_L3_error) + } + } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { + goto __pyx_L5_argtuple_error; + } else { + values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + } + __pyx_v_dirname = ((PyObject*)values[0]); + __pyx_v_dist = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_dist == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 67, __pyx_L3_error) + __pyx_v_world_bounds = ((PyArrayObject *)values[2]); + } + goto __pyx_L4_argument_unpacking_done; + __pyx_L5_argtuple_error:; + __Pyx_RaiseArgtupleInvalid("readPly", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 67, __pyx_L3_error) + __pyx_L3_error:; + __Pyx_AddTraceback("gvt.readPly", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_RefNannyFinishContext(); + return NULL; + __pyx_L4_argument_unpacking_done:; + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_dirname), (&PyString_Type), 1, "dirname", 1))) __PYX_ERR(0, 67, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_world_bounds), __pyx_ptype_5numpy_ndarray, 1, "world_bounds", 0))) __PYX_ERR(0, 67, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_2readPly(__pyx_self, __pyx_v_dirname, __pyx_v_dist, __pyx_v_world_bounds); + + /* function exit code */ + goto __pyx_L0; + __pyx_L1_error:; + __pyx_r = NULL; + __pyx_L0:; + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +static PyObject *__pyx_pf_3gvt_2readPly(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_dirname, bool __pyx_v_dist, PyArrayObject *__pyx_v_world_bounds) { + __Pyx_LocalBuf_ND __pyx_pybuffernd_world_bounds; + __Pyx_Buffer __pyx_pybuffer_world_bounds; + PyObject *__pyx_r = NULL; + __Pyx_RefNannyDeclarations + PyObject *__pyx_t_1 = NULL; + PyObject *__pyx_t_2 = NULL; + PyObject *__pyx_t_3 = NULL; + std::string __pyx_t_4; + __Pyx_RefNannySetupContext("readPly", 0); + __pyx_pybuffer_world_bounds.pybuffer.buf = NULL; + __pyx_pybuffer_world_bounds.refcount = 0; + __pyx_pybuffernd_world_bounds.data = NULL; + __pyx_pybuffernd_world_bounds.rcbuffer = &__pyx_pybuffer_world_bounds; + { + __Pyx_BufFmt_StackElem __pyx_stack[1]; + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_world_bounds.rcbuffer->pybuffer, (PyObject*)__pyx_v_world_bounds, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 67, __pyx_L1_error) + } + __pyx_pybuffernd_world_bounds.diminfo[0].strides = __pyx_pybuffernd_world_bounds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_world_bounds.diminfo[0].shape = __pyx_pybuffernd_world_bounds.rcbuffer->pybuffer.shape[0]; + + /* "gvt.pyx":68 + * + * def readPly(str dirname, bool dist, np.ndarray[float, ndim=1, mode="c"] world_bounds): + * _readPly(dirname.encode(), dist, world_bounds.data) # <<<<<<<<<<<<<< + * + * def createMesh(str name): + */ + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_dirname, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_2); + __pyx_t_3 = NULL; + if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { + __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2); + if (likely(__pyx_t_3)) { + PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2); + __Pyx_INCREF(__pyx_t_3); + __Pyx_INCREF(function); + __Pyx_DECREF_SET(__pyx_t_2, function); + } + } + if (__pyx_t_3) { + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; + } else { + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error) + } + __Pyx_GOTREF(__pyx_t_1); + __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 68, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + readPly(__pyx_t_4, __pyx_v_dist, ((float *)__pyx_v_world_bounds->data)); + + /* "gvt.pyx":67 * # _gvtInit(argc,argv) * + * def readPly(str dirname, bool dist, np.ndarray[float, ndim=1, mode="c"] world_bounds): # <<<<<<<<<<<<<< + * _readPly(dirname.encode(), dist, world_bounds.data) + * + */ + + /* function exit code */ + __pyx_r = Py_None; __Pyx_INCREF(Py_None); + goto __pyx_L0; + __pyx_L1_error:; + __Pyx_XDECREF(__pyx_t_1); + __Pyx_XDECREF(__pyx_t_2); + __Pyx_XDECREF(__pyx_t_3); + { PyObject *__pyx_type, *__pyx_value, *__pyx_tb; + __Pyx_PyThreadState_declare + __Pyx_PyThreadState_assign + __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb); + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_world_bounds.rcbuffer->pybuffer); + __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);} + __Pyx_AddTraceback("gvt.readPly", __pyx_clineno, __pyx_lineno, __pyx_filename); + __pyx_r = NULL; + goto __pyx_L2; + __pyx_L0:; + __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_world_bounds.rcbuffer->pybuffer); + __pyx_L2:; + __Pyx_XGIVEREF(__pyx_r); + __Pyx_RefNannyFinishContext(); + return __pyx_r; +} + +/* "gvt.pyx":70 + * _readPly(dirname.encode(), dist, world_bounds.data) + * * def createMesh(str name): # <<<<<<<<<<<<<< * _createMesh(name.encode()) * */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_3createMesh(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_3createMesh = {"createMesh", (PyCFunction)__pyx_pw_3gvt_3createMesh, METH_O, 0}; -static PyObject *__pyx_pw_3gvt_3createMesh(PyObject *__pyx_self, PyObject *__pyx_v_name) { +static PyObject *__pyx_pw_3gvt_5createMesh(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_5createMesh = {"createMesh", (PyCFunction)__pyx_pw_3gvt_5createMesh, METH_O, 0}; +static PyObject *__pyx_pw_3gvt_5createMesh(PyObject *__pyx_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("createMesh (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 66, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_2createMesh(__pyx_self, ((PyObject*)__pyx_v_name)); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 70, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_4createMesh(__pyx_self, ((PyObject*)__pyx_v_name)); /* function exit code */ goto __pyx_L0; @@ -1721,7 +1952,7 @@ static PyObject *__pyx_pw_3gvt_3createMesh(PyObject *__pyx_self, PyObject *__pyx return __pyx_r; } -static PyObject *__pyx_pf_3gvt_2createMesh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name) { +static PyObject *__pyx_pf_3gvt_4createMesh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -1730,14 +1961,14 @@ static PyObject *__pyx_pf_3gvt_2createMesh(CYTHON_UNUSED PyObject *__pyx_self, P std::string __pyx_t_4; __Pyx_RefNannySetupContext("createMesh", 0); - /* "gvt.pyx":67 + /* "gvt.pyx":71 * * def createMesh(str name): * _createMesh(name.encode()) # <<<<<<<<<<<<<< * * def addMeshVertices(str name, int size, np.ndarray[float, ndim=1, mode="c"] vertices not None): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 67, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -1750,19 +1981,19 @@ static PyObject *__pyx_pf_3gvt_2createMesh(CYTHON_UNUSED PyObject *__pyx_self, P } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 71, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 67, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 71, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; createMesh(__pyx_t_4); - /* "gvt.pyx":66 - * # _gvtInit(argc,argv) + /* "gvt.pyx":70 + * _readPly(dirname.encode(), dist, world_bounds.data) * * def createMesh(str name): # <<<<<<<<<<<<<< * _createMesh(name.encode()) @@ -1784,7 +2015,7 @@ static PyObject *__pyx_pf_3gvt_2createMesh(CYTHON_UNUSED PyObject *__pyx_self, P return __pyx_r; } -/* "gvt.pyx":69 +/* "gvt.pyx":73 * _createMesh(name.encode()) * * def addMeshVertices(str name, int size, np.ndarray[float, ndim=1, mode="c"] vertices not None): # <<<<<<<<<<<<<< @@ -1793,9 +2024,9 @@ static PyObject *__pyx_pf_3gvt_2createMesh(CYTHON_UNUSED PyObject *__pyx_self, P */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_5addMeshVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_5addMeshVertices = {"addMeshVertices", (PyCFunction)__pyx_pw_3gvt_5addMeshVertices, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_5addMeshVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_7addMeshVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_7addMeshVertices = {"addMeshVertices", (PyCFunction)__pyx_pw_3gvt_7addMeshVertices, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_7addMeshVertices(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; int __pyx_v_size; PyArrayObject *__pyx_v_vertices = 0; @@ -1810,8 +2041,11 @@ static PyObject *__pyx_pw_3gvt_5addMeshVertices(PyObject *__pyx_self, PyObject * const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -1820,19 +2054,21 @@ static PyObject *__pyx_pw_3gvt_5addMeshVertices(PyObject *__pyx_self, PyObject * case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_size)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshVertices", 1, 3, 3, 1); __PYX_ERR(0, 69, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshVertices", 1, 3, 3, 1); __PYX_ERR(0, 73, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertices)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshVertices", 1, 3, 3, 2); __PYX_ERR(0, 69, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshVertices", 1, 3, 3, 2); __PYX_ERR(0, 73, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshVertices") < 0)) __PYX_ERR(0, 69, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshVertices") < 0)) __PYX_ERR(0, 73, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -1842,20 +2078,20 @@ static PyObject *__pyx_pw_3gvt_5addMeshVertices(PyObject *__pyx_self, PyObject * values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 69, __pyx_L3_error) + __pyx_v_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_size == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 73, __pyx_L3_error) __pyx_v_vertices = ((PyArrayObject *)values[2]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addMeshVertices", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 69, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshVertices", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 73, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addMeshVertices", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 69, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vertices), __pyx_ptype_5numpy_ndarray, 0, "vertices", 0))) __PYX_ERR(0, 69, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_4addMeshVertices(__pyx_self, __pyx_v_name, __pyx_v_size, __pyx_v_vertices); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 73, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vertices), __pyx_ptype_5numpy_ndarray, 0, "vertices", 0))) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_6addMeshVertices(__pyx_self, __pyx_v_name, __pyx_v_size, __pyx_v_vertices); /* function exit code */ goto __pyx_L0; @@ -1866,7 +2102,7 @@ static PyObject *__pyx_pw_3gvt_5addMeshVertices(PyObject *__pyx_self, PyObject * return __pyx_r; } -static PyObject *__pyx_pf_3gvt_4addMeshVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_size, PyArrayObject *__pyx_v_vertices) { +static PyObject *__pyx_pf_3gvt_6addMeshVertices(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_size, PyArrayObject *__pyx_v_vertices) { __Pyx_LocalBuf_ND __pyx_pybuffernd_vertices; __Pyx_Buffer __pyx_pybuffer_vertices; PyObject *__pyx_r = NULL; @@ -1882,18 +2118,18 @@ static PyObject *__pyx_pf_3gvt_4addMeshVertices(CYTHON_UNUSED PyObject *__pyx_se __pyx_pybuffernd_vertices.rcbuffer = &__pyx_pybuffer_vertices; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vertices.rcbuffer->pybuffer, (PyObject*)__pyx_v_vertices, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 69, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_vertices.rcbuffer->pybuffer, (PyObject*)__pyx_v_vertices, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 73, __pyx_L1_error) } __pyx_pybuffernd_vertices.diminfo[0].strides = __pyx_pybuffernd_vertices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_vertices.diminfo[0].shape = __pyx_pybuffernd_vertices.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":70 + /* "gvt.pyx":74 * * def addMeshVertices(str name, int size, np.ndarray[float, ndim=1, mode="c"] vertices not None): * _addMeshVertices(name.encode(),size, vertices.data) # <<<<<<<<<<<<<< * * def addMeshTriangles(str name, unsigned n, np.ndarray[unsigned, ndim=1, mode="c"] triangles): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 70, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -1906,18 +2142,18 @@ static PyObject *__pyx_pf_3gvt_4addMeshVertices(CYTHON_UNUSED PyObject *__pyx_se } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 74, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 70, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 74, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addMeshVertices(__pyx_t_4, __pyx_v_size, ((float *)__pyx_v_vertices->data)); - /* "gvt.pyx":69 + /* "gvt.pyx":73 * _createMesh(name.encode()) * * def addMeshVertices(str name, int size, np.ndarray[float, ndim=1, mode="c"] vertices not None): # <<<<<<<<<<<<<< @@ -1949,7 +2185,7 @@ static PyObject *__pyx_pf_3gvt_4addMeshVertices(CYTHON_UNUSED PyObject *__pyx_se return __pyx_r; } -/* "gvt.pyx":72 +/* "gvt.pyx":76 * _addMeshVertices(name.encode(),size, vertices.data) * * def addMeshTriangles(str name, unsigned n, np.ndarray[unsigned, ndim=1, mode="c"] triangles): # <<<<<<<<<<<<<< @@ -1958,9 +2194,9 @@ static PyObject *__pyx_pf_3gvt_4addMeshVertices(CYTHON_UNUSED PyObject *__pyx_se */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_7addMeshTriangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_7addMeshTriangles = {"addMeshTriangles", (PyCFunction)__pyx_pw_3gvt_7addMeshTriangles, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_7addMeshTriangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_9addMeshTriangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_9addMeshTriangles = {"addMeshTriangles", (PyCFunction)__pyx_pw_3gvt_9addMeshTriangles, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_9addMeshTriangles(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; unsigned int __pyx_v_n; PyArrayObject *__pyx_v_triangles = 0; @@ -1975,8 +2211,11 @@ static PyObject *__pyx_pw_3gvt_7addMeshTriangles(PyObject *__pyx_self, PyObject const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -1985,19 +2224,21 @@ static PyObject *__pyx_pw_3gvt_7addMeshTriangles(PyObject *__pyx_self, PyObject case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshTriangles", 1, 3, 3, 1); __PYX_ERR(0, 72, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshTriangles", 1, 3, 3, 1); __PYX_ERR(0, 76, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_triangles)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshTriangles", 1, 3, 3, 2); __PYX_ERR(0, 72, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshTriangles", 1, 3, 3, 2); __PYX_ERR(0, 76, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshTriangles") < 0)) __PYX_ERR(0, 72, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshTriangles") < 0)) __PYX_ERR(0, 76, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2007,20 +2248,20 @@ static PyObject *__pyx_pw_3gvt_7addMeshTriangles(PyObject *__pyx_self, PyObject values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_n = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_n == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 72, __pyx_L3_error) + __pyx_v_n = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_n == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 76, __pyx_L3_error) __pyx_v_triangles = ((PyArrayObject *)values[2]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addMeshTriangles", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 72, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshTriangles", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 76, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addMeshTriangles", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 72, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_triangles), __pyx_ptype_5numpy_ndarray, 1, "triangles", 0))) __PYX_ERR(0, 72, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_6addMeshTriangles(__pyx_self, __pyx_v_name, __pyx_v_n, __pyx_v_triangles); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 76, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_triangles), __pyx_ptype_5numpy_ndarray, 1, "triangles", 0))) __PYX_ERR(0, 76, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_8addMeshTriangles(__pyx_self, __pyx_v_name, __pyx_v_n, __pyx_v_triangles); /* function exit code */ goto __pyx_L0; @@ -2031,7 +2272,7 @@ static PyObject *__pyx_pw_3gvt_7addMeshTriangles(PyObject *__pyx_self, PyObject return __pyx_r; } -static PyObject *__pyx_pf_3gvt_6addMeshTriangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_triangles) { +static PyObject *__pyx_pf_3gvt_8addMeshTriangles(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_triangles) { __Pyx_LocalBuf_ND __pyx_pybuffernd_triangles; __Pyx_Buffer __pyx_pybuffer_triangles; PyObject *__pyx_r = NULL; @@ -2047,18 +2288,18 @@ static PyObject *__pyx_pf_3gvt_6addMeshTriangles(CYTHON_UNUSED PyObject *__pyx_s __pyx_pybuffernd_triangles.rcbuffer = &__pyx_pybuffer_triangles; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_triangles.rcbuffer->pybuffer, (PyObject*)__pyx_v_triangles, &__Pyx_TypeInfo_unsigned_int, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 72, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_triangles.rcbuffer->pybuffer, (PyObject*)__pyx_v_triangles, &__Pyx_TypeInfo_unsigned_int, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 76, __pyx_L1_error) } __pyx_pybuffernd_triangles.diminfo[0].strides = __pyx_pybuffernd_triangles.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_triangles.diminfo[0].shape = __pyx_pybuffernd_triangles.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":73 + /* "gvt.pyx":77 * * def addMeshTriangles(str name, unsigned n, np.ndarray[unsigned, ndim=1, mode="c"] triangles): * _addMeshTriangles(name.encode(), n, triangles.data) # <<<<<<<<<<<<<< * * def addMeshFaceNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -2071,18 +2312,18 @@ static PyObject *__pyx_pf_3gvt_6addMeshTriangles(CYTHON_UNUSED PyObject *__pyx_s } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 77, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 73, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 77, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addMeshTriangles(__pyx_t_4, __pyx_v_n, ((unsigned int *)__pyx_v_triangles->data)); - /* "gvt.pyx":72 + /* "gvt.pyx":76 * _addMeshVertices(name.encode(),size, vertices.data) * * def addMeshTriangles(str name, unsigned n, np.ndarray[unsigned, ndim=1, mode="c"] triangles): # <<<<<<<<<<<<<< @@ -2114,7 +2355,7 @@ static PyObject *__pyx_pf_3gvt_6addMeshTriangles(CYTHON_UNUSED PyObject *__pyx_s return __pyx_r; } -/* "gvt.pyx":75 +/* "gvt.pyx":79 * _addMeshTriangles(name.encode(), n, triangles.data) * * def addMeshFaceNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): # <<<<<<<<<<<<<< @@ -2123,9 +2364,9 @@ static PyObject *__pyx_pf_3gvt_6addMeshTriangles(CYTHON_UNUSED PyObject *__pyx_s */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_9addMeshFaceNormals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_9addMeshFaceNormals = {"addMeshFaceNormals", (PyCFunction)__pyx_pw_3gvt_9addMeshFaceNormals, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_9addMeshFaceNormals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_11addMeshFaceNormals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_11addMeshFaceNormals = {"addMeshFaceNormals", (PyCFunction)__pyx_pw_3gvt_11addMeshFaceNormals, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_11addMeshFaceNormals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; unsigned int __pyx_v_n; PyArrayObject *__pyx_v_normals = 0; @@ -2140,8 +2381,11 @@ static PyObject *__pyx_pw_3gvt_9addMeshFaceNormals(PyObject *__pyx_self, PyObjec const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -2150,19 +2394,21 @@ static PyObject *__pyx_pw_3gvt_9addMeshFaceNormals(PyObject *__pyx_self, PyObjec case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshFaceNormals", 1, 3, 3, 1); __PYX_ERR(0, 75, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshFaceNormals", 1, 3, 3, 1); __PYX_ERR(0, 79, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_normals)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshFaceNormals", 1, 3, 3, 2); __PYX_ERR(0, 75, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshFaceNormals", 1, 3, 3, 2); __PYX_ERR(0, 79, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshFaceNormals") < 0)) __PYX_ERR(0, 75, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshFaceNormals") < 0)) __PYX_ERR(0, 79, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2172,20 +2418,20 @@ static PyObject *__pyx_pw_3gvt_9addMeshFaceNormals(PyObject *__pyx_self, PyObjec values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_n = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_n == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 75, __pyx_L3_error) + __pyx_v_n = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_n == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 79, __pyx_L3_error) __pyx_v_normals = ((PyArrayObject *)values[2]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addMeshFaceNormals", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 75, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshFaceNormals", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 79, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addMeshFaceNormals", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 75, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_normals), __pyx_ptype_5numpy_ndarray, 1, "normals", 0))) __PYX_ERR(0, 75, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_8addMeshFaceNormals(__pyx_self, __pyx_v_name, __pyx_v_n, __pyx_v_normals); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 79, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_normals), __pyx_ptype_5numpy_ndarray, 1, "normals", 0))) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_10addMeshFaceNormals(__pyx_self, __pyx_v_name, __pyx_v_n, __pyx_v_normals); /* function exit code */ goto __pyx_L0; @@ -2196,7 +2442,7 @@ static PyObject *__pyx_pw_3gvt_9addMeshFaceNormals(PyObject *__pyx_self, PyObjec return __pyx_r; } -static PyObject *__pyx_pf_3gvt_8addMeshFaceNormals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_normals) { +static PyObject *__pyx_pf_3gvt_10addMeshFaceNormals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_normals) { __Pyx_LocalBuf_ND __pyx_pybuffernd_normals; __Pyx_Buffer __pyx_pybuffer_normals; PyObject *__pyx_r = NULL; @@ -2212,18 +2458,18 @@ static PyObject *__pyx_pf_3gvt_8addMeshFaceNormals(CYTHON_UNUSED PyObject *__pyx __pyx_pybuffernd_normals.rcbuffer = &__pyx_pybuffer_normals; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_normals.rcbuffer->pybuffer, (PyObject*)__pyx_v_normals, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 75, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_normals.rcbuffer->pybuffer, (PyObject*)__pyx_v_normals, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 79, __pyx_L1_error) } __pyx_pybuffernd_normals.diminfo[0].strides = __pyx_pybuffernd_normals.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_normals.diminfo[0].shape = __pyx_pybuffernd_normals.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":76 + /* "gvt.pyx":80 * * def addMeshFaceNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): * _addMeshFaceNormals(name.encode(), n, normals.data) # <<<<<<<<<<<<<< * * def addMeshVertexNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 76, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -2236,18 +2482,18 @@ static PyObject *__pyx_pf_3gvt_8addMeshFaceNormals(CYTHON_UNUSED PyObject *__pyx } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 80, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 76, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 80, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addMeshFaceNormals(__pyx_t_4, __pyx_v_n, ((float *)__pyx_v_normals->data)); - /* "gvt.pyx":75 + /* "gvt.pyx":79 * _addMeshTriangles(name.encode(), n, triangles.data) * * def addMeshFaceNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): # <<<<<<<<<<<<<< @@ -2279,7 +2525,7 @@ static PyObject *__pyx_pf_3gvt_8addMeshFaceNormals(CYTHON_UNUSED PyObject *__pyx return __pyx_r; } -/* "gvt.pyx":78 +/* "gvt.pyx":82 * _addMeshFaceNormals(name.encode(), n, normals.data) * * def addMeshVertexNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): # <<<<<<<<<<<<<< @@ -2288,9 +2534,9 @@ static PyObject *__pyx_pf_3gvt_8addMeshFaceNormals(CYTHON_UNUSED PyObject *__pyx */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_11addMeshVertexNormals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_11addMeshVertexNormals = {"addMeshVertexNormals", (PyCFunction)__pyx_pw_3gvt_11addMeshVertexNormals, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_11addMeshVertexNormals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_13addMeshVertexNormals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_13addMeshVertexNormals = {"addMeshVertexNormals", (PyCFunction)__pyx_pw_3gvt_13addMeshVertexNormals, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_13addMeshVertexNormals(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; unsigned int __pyx_v_n; PyArrayObject *__pyx_v_normals = 0; @@ -2305,8 +2551,11 @@ static PyObject *__pyx_pw_3gvt_11addMeshVertexNormals(PyObject *__pyx_self, PyOb const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -2315,19 +2564,21 @@ static PyObject *__pyx_pw_3gvt_11addMeshVertexNormals(PyObject *__pyx_self, PyOb case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshVertexNormals", 1, 3, 3, 1); __PYX_ERR(0, 78, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshVertexNormals", 1, 3, 3, 1); __PYX_ERR(0, 82, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_normals)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshVertexNormals", 1, 3, 3, 2); __PYX_ERR(0, 78, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshVertexNormals", 1, 3, 3, 2); __PYX_ERR(0, 82, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshVertexNormals") < 0)) __PYX_ERR(0, 78, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshVertexNormals") < 0)) __PYX_ERR(0, 82, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -2337,20 +2588,20 @@ static PyObject *__pyx_pw_3gvt_11addMeshVertexNormals(PyObject *__pyx_self, PyOb values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_n = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_n == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 78, __pyx_L3_error) + __pyx_v_n = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_n == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L3_error) __pyx_v_normals = ((PyArrayObject *)values[2]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addMeshVertexNormals", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 78, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshVertexNormals", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 82, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addMeshVertexNormals", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 78, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_normals), __pyx_ptype_5numpy_ndarray, 1, "normals", 0))) __PYX_ERR(0, 78, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_10addMeshVertexNormals(__pyx_self, __pyx_v_name, __pyx_v_n, __pyx_v_normals); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 82, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_normals), __pyx_ptype_5numpy_ndarray, 1, "normals", 0))) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_12addMeshVertexNormals(__pyx_self, __pyx_v_name, __pyx_v_n, __pyx_v_normals); /* function exit code */ goto __pyx_L0; @@ -2361,7 +2612,7 @@ static PyObject *__pyx_pw_3gvt_11addMeshVertexNormals(PyObject *__pyx_self, PyOb return __pyx_r; } -static PyObject *__pyx_pf_3gvt_10addMeshVertexNormals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_normals) { +static PyObject *__pyx_pf_3gvt_12addMeshVertexNormals(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_n, PyArrayObject *__pyx_v_normals) { __Pyx_LocalBuf_ND __pyx_pybuffernd_normals; __Pyx_Buffer __pyx_pybuffer_normals; PyObject *__pyx_r = NULL; @@ -2377,18 +2628,18 @@ static PyObject *__pyx_pf_3gvt_10addMeshVertexNormals(CYTHON_UNUSED PyObject *__ __pyx_pybuffernd_normals.rcbuffer = &__pyx_pybuffer_normals; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_normals.rcbuffer->pybuffer, (PyObject*)__pyx_v_normals, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 78, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_normals.rcbuffer->pybuffer, (PyObject*)__pyx_v_normals, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 82, __pyx_L1_error) } __pyx_pybuffernd_normals.diminfo[0].strides = __pyx_pybuffernd_normals.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_normals.diminfo[0].shape = __pyx_pybuffernd_normals.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":79 + /* "gvt.pyx":83 * * def addMeshVertexNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): * _addMeshVertexNormals(name.encode(),n, normals.data) # <<<<<<<<<<<<<< * * def finishMesh( str name, bool compute_normal = True): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 83, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -2401,18 +2652,18 @@ static PyObject *__pyx_pf_3gvt_10addMeshVertexNormals(CYTHON_UNUSED PyObject *__ } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 83, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 79, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 83, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addMeshVertexNormals(__pyx_t_4, __pyx_v_n, ((float *)__pyx_v_normals->data)); - /* "gvt.pyx":78 + /* "gvt.pyx":82 * _addMeshFaceNormals(name.encode(), n, normals.data) * * def addMeshVertexNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): # <<<<<<<<<<<<<< @@ -2444,7 +2695,7 @@ static PyObject *__pyx_pf_3gvt_10addMeshVertexNormals(CYTHON_UNUSED PyObject *__ return __pyx_r; } -/* "gvt.pyx":81 +/* "gvt.pyx":85 * _addMeshVertexNormals(name.encode(),n, normals.data) * * def finishMesh( str name, bool compute_normal = True): # <<<<<<<<<<<<<< @@ -2453,9 +2704,9 @@ static PyObject *__pyx_pf_3gvt_10addMeshVertexNormals(CYTHON_UNUSED PyObject *__ */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_13finishMesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_13finishMesh = {"finishMesh", (PyCFunction)__pyx_pw_3gvt_13finishMesh, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_13finishMesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_15finishMesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_15finishMesh = {"finishMesh", (PyCFunction)__pyx_pw_3gvt_15finishMesh, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_15finishMesh(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; bool __pyx_v_compute_normal; PyObject *__pyx_r = 0; @@ -2469,7 +2720,9 @@ static PyObject *__pyx_pw_3gvt_13finishMesh(PyObject *__pyx_self, PyObject *__py const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -2478,6 +2731,7 @@ static PyObject *__pyx_pw_3gvt_13finishMesh(PyObject *__pyx_self, PyObject *__py case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (kw_args > 0) { PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_compute_normal); @@ -2485,11 +2739,12 @@ static PyObject *__pyx_pw_3gvt_13finishMesh(PyObject *__pyx_self, PyObject *__py } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finishMesh") < 0)) __PYX_ERR(0, 81, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "finishMesh") < 0)) __PYX_ERR(0, 85, __pyx_L3_error) } } else { switch (PyTuple_GET_SIZE(__pyx_args)) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); break; default: goto __pyx_L5_argtuple_error; @@ -2497,21 +2752,21 @@ static PyObject *__pyx_pw_3gvt_13finishMesh(PyObject *__pyx_self, PyObject *__py } __pyx_v_name = ((PyObject*)values[0]); if (values[1]) { - __pyx_v_compute_normal = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_compute_normal == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 81, __pyx_L3_error) + __pyx_v_compute_normal = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_compute_normal == ((bool)-1)) && PyErr_Occurred())) __PYX_ERR(0, 85, __pyx_L3_error) } else { __pyx_v_compute_normal = ((bool)1); } } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("finishMesh", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 81, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("finishMesh", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 85, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.finishMesh", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 81, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_12finishMesh(__pyx_self, __pyx_v_name, __pyx_v_compute_normal); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_14finishMesh(__pyx_self, __pyx_v_name, __pyx_v_compute_normal); /* function exit code */ goto __pyx_L0; @@ -2522,7 +2777,7 @@ static PyObject *__pyx_pw_3gvt_13finishMesh(PyObject *__pyx_self, PyObject *__py return __pyx_r; } -static PyObject *__pyx_pf_3gvt_12finishMesh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, bool __pyx_v_compute_normal) { +static PyObject *__pyx_pf_3gvt_14finishMesh(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, bool __pyx_v_compute_normal) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -2531,14 +2786,14 @@ static PyObject *__pyx_pf_3gvt_12finishMesh(CYTHON_UNUSED PyObject *__pyx_self, std::string __pyx_t_4; __Pyx_RefNannySetupContext("finishMesh", 0); - /* "gvt.pyx":82 + /* "gvt.pyx":86 * * def finishMesh( str name, bool compute_normal = True): * _finishMesh(name.encode(),compute_normal) # <<<<<<<<<<<<<< * * def addMeshMaterialLambert( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, float alpha): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -2551,18 +2806,18 @@ static PyObject *__pyx_pf_3gvt_12finishMesh(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 86, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 82, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 86, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; finishMesh(__pyx_t_4, __pyx_v_compute_normal); - /* "gvt.pyx":81 + /* "gvt.pyx":85 * _addMeshVertexNormals(name.encode(),n, normals.data) * * def finishMesh( str name, bool compute_normal = True): # <<<<<<<<<<<<<< @@ -2585,7 +2840,7 @@ static PyObject *__pyx_pf_3gvt_12finishMesh(CYTHON_UNUSED PyObject *__pyx_self, return __pyx_r; } -/* "gvt.pyx":84 +/* "gvt.pyx":88 * _finishMesh(name.encode(),compute_normal) * * def addMeshMaterialLambert( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, float alpha): # <<<<<<<<<<<<<< @@ -2594,9 +2849,9 @@ static PyObject *__pyx_pf_3gvt_12finishMesh(CYTHON_UNUSED PyObject *__pyx_self, */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_15addMeshMaterialLambert(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_15addMeshMaterialLambert = {"addMeshMaterialLambert", (PyCFunction)__pyx_pw_3gvt_15addMeshMaterialLambert, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_15addMeshMaterialLambert(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_17addMeshMaterialLambert(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_17addMeshMaterialLambert = {"addMeshMaterialLambert", (PyCFunction)__pyx_pw_3gvt_17addMeshMaterialLambert, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_17addMeshMaterialLambert(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; unsigned int __pyx_v_mattype; PyArrayObject *__pyx_v_kd = 0; @@ -2612,9 +2867,13 @@ static PyObject *__pyx_pw_3gvt_15addMeshMaterialLambert(PyObject *__pyx_self, Py const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -2623,24 +2882,27 @@ static PyObject *__pyx_pw_3gvt_15addMeshMaterialLambert(PyObject *__pyx_self, Py case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mattype)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshMaterialLambert", 1, 4, 4, 1); __PYX_ERR(0, 84, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialLambert", 1, 4, 4, 1); __PYX_ERR(0, 88, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kd)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshMaterialLambert", 1, 4, 4, 2); __PYX_ERR(0, 84, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialLambert", 1, 4, 4, 2); __PYX_ERR(0, 88, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_alpha)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshMaterialLambert", 1, 4, 4, 3); __PYX_ERR(0, 84, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialLambert", 1, 4, 4, 3); __PYX_ERR(0, 88, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshMaterialLambert") < 0)) __PYX_ERR(0, 84, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshMaterialLambert") < 0)) __PYX_ERR(0, 88, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -2651,21 +2913,21 @@ static PyObject *__pyx_pw_3gvt_15addMeshMaterialLambert(PyObject *__pyx_self, Py values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_mattype = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_mattype == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 84, __pyx_L3_error) + __pyx_v_mattype = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_mattype == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 88, __pyx_L3_error) __pyx_v_kd = ((PyArrayObject *)values[2]); - __pyx_v_alpha = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_alpha == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 84, __pyx_L3_error) + __pyx_v_alpha = __pyx_PyFloat_AsFloat(values[3]); if (unlikely((__pyx_v_alpha == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 88, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addMeshMaterialLambert", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 84, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialLambert", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 88, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addMeshMaterialLambert", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 84, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_kd), __pyx_ptype_5numpy_ndarray, 1, "kd", 0))) __PYX_ERR(0, 84, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_14addMeshMaterialLambert(__pyx_self, __pyx_v_name, __pyx_v_mattype, __pyx_v_kd, __pyx_v_alpha); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 88, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_kd), __pyx_ptype_5numpy_ndarray, 1, "kd", 0))) __PYX_ERR(0, 88, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_16addMeshMaterialLambert(__pyx_self, __pyx_v_name, __pyx_v_mattype, __pyx_v_kd, __pyx_v_alpha); /* function exit code */ goto __pyx_L0; @@ -2676,7 +2938,7 @@ static PyObject *__pyx_pw_3gvt_15addMeshMaterialLambert(PyObject *__pyx_self, Py return __pyx_r; } -static PyObject *__pyx_pf_3gvt_14addMeshMaterialLambert(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_mattype, PyArrayObject *__pyx_v_kd, float __pyx_v_alpha) { +static PyObject *__pyx_pf_3gvt_16addMeshMaterialLambert(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_mattype, PyArrayObject *__pyx_v_kd, float __pyx_v_alpha) { __Pyx_LocalBuf_ND __pyx_pybuffernd_kd; __Pyx_Buffer __pyx_pybuffer_kd; PyObject *__pyx_r = NULL; @@ -2692,18 +2954,18 @@ static PyObject *__pyx_pf_3gvt_14addMeshMaterialLambert(CYTHON_UNUSED PyObject * __pyx_pybuffernd_kd.rcbuffer = &__pyx_pybuffer_kd; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_kd.rcbuffer->pybuffer, (PyObject*)__pyx_v_kd, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 84, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_kd.rcbuffer->pybuffer, (PyObject*)__pyx_v_kd, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 88, __pyx_L1_error) } __pyx_pybuffernd_kd.diminfo[0].strides = __pyx_pybuffernd_kd.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_kd.diminfo[0].shape = __pyx_pybuffernd_kd.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":85 + /* "gvt.pyx":89 * * def addMeshMaterialLambert( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, float alpha): * _addMeshMaterial(name.encode() ,mattype, kd.data, alpha) # <<<<<<<<<<<<<< * * def addMeshMaterialSpecular( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, np.ndarray[float, ndim=1, mode="c"] ks, float alpha ): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -2716,18 +2978,18 @@ static PyObject *__pyx_pf_3gvt_14addMeshMaterialLambert(CYTHON_UNUSED PyObject * } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 89, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 85, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 89, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addMeshMaterial(__pyx_t_4, __pyx_v_mattype, ((float *)__pyx_v_kd->data), __pyx_v_alpha); - /* "gvt.pyx":84 + /* "gvt.pyx":88 * _finishMesh(name.encode(),compute_normal) * * def addMeshMaterialLambert( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, float alpha): # <<<<<<<<<<<<<< @@ -2759,7 +3021,7 @@ static PyObject *__pyx_pf_3gvt_14addMeshMaterialLambert(CYTHON_UNUSED PyObject * return __pyx_r; } -/* "gvt.pyx":87 +/* "gvt.pyx":91 * _addMeshMaterial(name.encode() ,mattype, kd.data, alpha) * * def addMeshMaterialSpecular( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, np.ndarray[float, ndim=1, mode="c"] ks, float alpha ): # <<<<<<<<<<<<<< @@ -2768,9 +3030,9 @@ static PyObject *__pyx_pf_3gvt_14addMeshMaterialLambert(CYTHON_UNUSED PyObject * */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_17addMeshMaterialSpecular(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_17addMeshMaterialSpecular = {"addMeshMaterialSpecular", (PyCFunction)__pyx_pw_3gvt_17addMeshMaterialSpecular, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_17addMeshMaterialSpecular(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_19addMeshMaterialSpecular(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_19addMeshMaterialSpecular = {"addMeshMaterialSpecular", (PyCFunction)__pyx_pw_3gvt_19addMeshMaterialSpecular, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_19addMeshMaterialSpecular(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; unsigned int __pyx_v_mattype; PyArrayObject *__pyx_v_kd = 0; @@ -2787,10 +3049,15 @@ static PyObject *__pyx_pw_3gvt_17addMeshMaterialSpecular(PyObject *__pyx_self, P const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -2799,29 +3066,33 @@ static PyObject *__pyx_pw_3gvt_17addMeshMaterialSpecular(PyObject *__pyx_self, P case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_mattype)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, 1); __PYX_ERR(0, 87, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, 1); __PYX_ERR(0, 91, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kd)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, 2); __PYX_ERR(0, 87, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, 2); __PYX_ERR(0, 91, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ks)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, 3); __PYX_ERR(0, 87, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, 3); __PYX_ERR(0, 91, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_alpha)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, 4); __PYX_ERR(0, 87, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, 4); __PYX_ERR(0, 91, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshMaterialSpecular") < 0)) __PYX_ERR(0, 87, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addMeshMaterialSpecular") < 0)) __PYX_ERR(0, 91, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; @@ -2833,23 +3104,23 @@ static PyObject *__pyx_pw_3gvt_17addMeshMaterialSpecular(PyObject *__pyx_self, P values[4] = PyTuple_GET_ITEM(__pyx_args, 4); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_mattype = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_mattype == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L3_error) + __pyx_v_mattype = __Pyx_PyInt_As_unsigned_int(values[1]); if (unlikely((__pyx_v_mattype == (unsigned int)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L3_error) __pyx_v_kd = ((PyArrayObject *)values[2]); __pyx_v_ks = ((PyArrayObject *)values[3]); - __pyx_v_alpha = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_alpha == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 87, __pyx_L3_error) + __pyx_v_alpha = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_alpha == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 91, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 87, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addMeshMaterialSpecular", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 91, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addMeshMaterialSpecular", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 87, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_kd), __pyx_ptype_5numpy_ndarray, 1, "kd", 0))) __PYX_ERR(0, 87, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ks), __pyx_ptype_5numpy_ndarray, 1, "ks", 0))) __PYX_ERR(0, 87, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_16addMeshMaterialSpecular(__pyx_self, __pyx_v_name, __pyx_v_mattype, __pyx_v_kd, __pyx_v_ks, __pyx_v_alpha); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 91, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_kd), __pyx_ptype_5numpy_ndarray, 1, "kd", 0))) __PYX_ERR(0, 91, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_ks), __pyx_ptype_5numpy_ndarray, 1, "ks", 0))) __PYX_ERR(0, 91, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_18addMeshMaterialSpecular(__pyx_self, __pyx_v_name, __pyx_v_mattype, __pyx_v_kd, __pyx_v_ks, __pyx_v_alpha); /* function exit code */ goto __pyx_L0; @@ -2860,7 +3131,7 @@ static PyObject *__pyx_pw_3gvt_17addMeshMaterialSpecular(PyObject *__pyx_self, P return __pyx_r; } -static PyObject *__pyx_pf_3gvt_16addMeshMaterialSpecular(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_mattype, PyArrayObject *__pyx_v_kd, PyArrayObject *__pyx_v_ks, float __pyx_v_alpha) { +static PyObject *__pyx_pf_3gvt_18addMeshMaterialSpecular(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, unsigned int __pyx_v_mattype, PyArrayObject *__pyx_v_kd, PyArrayObject *__pyx_v_ks, float __pyx_v_alpha) { __Pyx_LocalBuf_ND __pyx_pybuffernd_kd; __Pyx_Buffer __pyx_pybuffer_kd; __Pyx_LocalBuf_ND __pyx_pybuffernd_ks; @@ -2882,23 +3153,23 @@ static PyObject *__pyx_pf_3gvt_16addMeshMaterialSpecular(CYTHON_UNUSED PyObject __pyx_pybuffernd_ks.rcbuffer = &__pyx_pybuffer_ks; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_kd.rcbuffer->pybuffer, (PyObject*)__pyx_v_kd, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 87, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_kd.rcbuffer->pybuffer, (PyObject*)__pyx_v_kd, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 91, __pyx_L1_error) } __pyx_pybuffernd_kd.diminfo[0].strides = __pyx_pybuffernd_kd.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_kd.diminfo[0].shape = __pyx_pybuffernd_kd.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ks.rcbuffer->pybuffer, (PyObject*)__pyx_v_ks, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 87, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ks.rcbuffer->pybuffer, (PyObject*)__pyx_v_ks, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 91, __pyx_L1_error) } __pyx_pybuffernd_ks.diminfo[0].strides = __pyx_pybuffernd_ks.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ks.diminfo[0].shape = __pyx_pybuffernd_ks.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":88 + /* "gvt.pyx":92 * * def addMeshMaterialSpecular( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, np.ndarray[float, ndim=1, mode="c"] ks, float alpha ): * _addMeshMaterial2(name.encode(), mattype, kd.data, ks.data, alpha) # <<<<<<<<<<<<<< * * # def addMeshMaterials( str name, unsigned n, np.ndarray[uint32, ndim=1, mode="c"] mattype, np.ndarray[float, ndim=1, mode="c"] kd, np.ndarray[float, ndim=1, mode="c"] ks, np.ndarray[float, ndim=1, mode="c"] alpha): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -2911,18 +3182,18 @@ static PyObject *__pyx_pf_3gvt_16addMeshMaterialSpecular(CYTHON_UNUSED PyObject } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 92, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 88, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 92, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addMeshMaterial(__pyx_t_4, __pyx_v_mattype, ((float *)__pyx_v_kd->data), ((float *)__pyx_v_ks->data), __pyx_v_alpha); - /* "gvt.pyx":87 + /* "gvt.pyx":91 * _addMeshMaterial(name.encode() ,mattype, kd.data, alpha) * * def addMeshMaterialSpecular( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, np.ndarray[float, ndim=1, mode="c"] ks, float alpha ): # <<<<<<<<<<<<<< @@ -2956,7 +3227,7 @@ static PyObject *__pyx_pf_3gvt_16addMeshMaterialSpecular(CYTHON_UNUSED PyObject return __pyx_r; } -/* "gvt.pyx":93 +/* "gvt.pyx":97 * # _addMeshMaterials(name.encode(),n, mattype.data, kd.data, ks.float, alpha.data) * * def addInstance(str name, np.ndarray[float, ndim=1, mode="c"] m): # <<<<<<<<<<<<<< @@ -2965,9 +3236,9 @@ static PyObject *__pyx_pf_3gvt_16addMeshMaterialSpecular(CYTHON_UNUSED PyObject */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_19addInstance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_19addInstance = {"addInstance", (PyCFunction)__pyx_pw_3gvt_19addInstance, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_19addInstance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_21addInstance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_21addInstance = {"addInstance", (PyCFunction)__pyx_pw_3gvt_21addInstance, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_21addInstance(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyArrayObject *__pyx_v_m = 0; PyObject *__pyx_r = 0; @@ -2981,7 +3252,9 @@ static PyObject *__pyx_pw_3gvt_19addInstance(PyObject *__pyx_self, PyObject *__p const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -2990,14 +3263,15 @@ static PyObject *__pyx_pw_3gvt_19addInstance(PyObject *__pyx_self, PyObject *__p case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_m)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addInstance", 1, 2, 2, 1); __PYX_ERR(0, 93, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addInstance", 1, 2, 2, 1); __PYX_ERR(0, 97, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addInstance") < 0)) __PYX_ERR(0, 93, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addInstance") < 0)) __PYX_ERR(0, 97, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -3010,15 +3284,15 @@ static PyObject *__pyx_pw_3gvt_19addInstance(PyObject *__pyx_self, PyObject *__p } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addInstance", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 93, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addInstance", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 97, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addInstance", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 93, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_5numpy_ndarray, 1, "m", 0))) __PYX_ERR(0, 93, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_18addInstance(__pyx_self, __pyx_v_name, __pyx_v_m); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 97, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_m), __pyx_ptype_5numpy_ndarray, 1, "m", 0))) __PYX_ERR(0, 97, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_20addInstance(__pyx_self, __pyx_v_name, __pyx_v_m); /* function exit code */ goto __pyx_L0; @@ -3029,7 +3303,7 @@ static PyObject *__pyx_pw_3gvt_19addInstance(PyObject *__pyx_self, PyObject *__p return __pyx_r; } -static PyObject *__pyx_pf_3gvt_18addInstance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_m) { +static PyObject *__pyx_pf_3gvt_20addInstance(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_m) { __Pyx_LocalBuf_ND __pyx_pybuffernd_m; __Pyx_Buffer __pyx_pybuffer_m; PyObject *__pyx_r = NULL; @@ -3045,18 +3319,18 @@ static PyObject *__pyx_pf_3gvt_18addInstance(CYTHON_UNUSED PyObject *__pyx_self, __pyx_pybuffernd_m.rcbuffer = &__pyx_pybuffer_m; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_m.rcbuffer->pybuffer, (PyObject*)__pyx_v_m, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 93, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_m.rcbuffer->pybuffer, (PyObject*)__pyx_v_m, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 97, __pyx_L1_error) } __pyx_pybuffernd_m.diminfo[0].strides = __pyx_pybuffernd_m.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_m.diminfo[0].shape = __pyx_pybuffernd_m.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":94 + /* "gvt.pyx":98 * * def addInstance(str name, np.ndarray[float, ndim=1, mode="c"] m): * _addInstance(name.encode(), m.data) # <<<<<<<<<<<<<< * * def addPointLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 94, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3069,18 +3343,18 @@ static PyObject *__pyx_pf_3gvt_18addInstance(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 94, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 98, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 94, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 98, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addInstance(__pyx_t_4, ((float *)__pyx_v_m->data)); - /* "gvt.pyx":93 + /* "gvt.pyx":97 * # _addMeshMaterials(name.encode(),n, mattype.data, kd.data, ks.float, alpha.data) * * def addInstance(str name, np.ndarray[float, ndim=1, mode="c"] m): # <<<<<<<<<<<<<< @@ -3112,7 +3386,7 @@ static PyObject *__pyx_pf_3gvt_18addInstance(CYTHON_UNUSED PyObject *__pyx_self, return __pyx_r; } -/* "gvt.pyx":96 +/* "gvt.pyx":100 * _addInstance(name.encode(), m.data) * * def addPointLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): # <<<<<<<<<<<<<< @@ -3121,9 +3395,9 @@ static PyObject *__pyx_pf_3gvt_18addInstance(CYTHON_UNUSED PyObject *__pyx_self, */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_21addPointLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_21addPointLight = {"addPointLight", (PyCFunction)__pyx_pw_3gvt_21addPointLight, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_21addPointLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_23addPointLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_23addPointLight = {"addPointLight", (PyCFunction)__pyx_pw_3gvt_23addPointLight, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_23addPointLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyArrayObject *__pyx_v_pos = 0; PyArrayObject *__pyx_v_color = 0; @@ -3138,8 +3412,11 @@ static PyObject *__pyx_pw_3gvt_21addPointLight(PyObject *__pyx_self, PyObject *_ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -3148,19 +3425,21 @@ static PyObject *__pyx_pw_3gvt_21addPointLight(PyObject *__pyx_self, PyObject *_ case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addPointLight", 1, 3, 3, 1); __PYX_ERR(0, 96, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addPointLight", 1, 3, 3, 1); __PYX_ERR(0, 100, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addPointLight", 1, 3, 3, 2); __PYX_ERR(0, 96, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addPointLight", 1, 3, 3, 2); __PYX_ERR(0, 100, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addPointLight") < 0)) __PYX_ERR(0, 96, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addPointLight") < 0)) __PYX_ERR(0, 100, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -3175,16 +3454,16 @@ static PyObject *__pyx_pw_3gvt_21addPointLight(PyObject *__pyx_self, PyObject *_ } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addPointLight", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 96, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addPointLight", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 100, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addPointLight", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 96, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 96, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_color), __pyx_ptype_5numpy_ndarray, 1, "color", 0))) __PYX_ERR(0, 96, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_20addPointLight(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_color); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 100, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 100, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_color), __pyx_ptype_5numpy_ndarray, 1, "color", 0))) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_22addPointLight(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_color); /* function exit code */ goto __pyx_L0; @@ -3195,7 +3474,7 @@ static PyObject *__pyx_pw_3gvt_21addPointLight(PyObject *__pyx_self, PyObject *_ return __pyx_r; } -static PyObject *__pyx_pf_3gvt_20addPointLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color) { +static PyObject *__pyx_pf_3gvt_22addPointLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color) { __Pyx_LocalBuf_ND __pyx_pybuffernd_color; __Pyx_Buffer __pyx_pybuffer_color; __Pyx_LocalBuf_ND __pyx_pybuffernd_pos; @@ -3217,23 +3496,23 @@ static PyObject *__pyx_pf_3gvt_20addPointLight(CYTHON_UNUSED PyObject *__pyx_sel __pyx_pybuffernd_color.rcbuffer = &__pyx_pybuffer_color; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 96, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 100, __pyx_L1_error) } __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_color.rcbuffer->pybuffer, (PyObject*)__pyx_v_color, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 96, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_color.rcbuffer->pybuffer, (PyObject*)__pyx_v_color, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 100, __pyx_L1_error) } __pyx_pybuffernd_color.diminfo[0].strides = __pyx_pybuffernd_color.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_color.diminfo[0].shape = __pyx_pybuffernd_color.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":97 + /* "gvt.pyx":101 * * def addPointLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): * _addPointLight(name.encode(), pos.data, color.data) # <<<<<<<<<<<<<< * * def addAreaLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 97, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3246,18 +3525,18 @@ static PyObject *__pyx_pf_3gvt_20addPointLight(CYTHON_UNUSED PyObject *__pyx_sel } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 101, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 97, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 101, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addPointLight(__pyx_t_4, ((float *)__pyx_v_pos->data), ((float *)__pyx_v_color->data)); - /* "gvt.pyx":96 + /* "gvt.pyx":100 * _addInstance(name.encode(), m.data) * * def addPointLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): # <<<<<<<<<<<<<< @@ -3291,7 +3570,7 @@ static PyObject *__pyx_pf_3gvt_20addPointLight(CYTHON_UNUSED PyObject *__pyx_sel return __pyx_r; } -/* "gvt.pyx":99 +/* "gvt.pyx":103 * _addPointLight(name.encode(), pos.data, color.data) * * def addAreaLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): # <<<<<<<<<<<<<< @@ -3300,9 +3579,9 @@ static PyObject *__pyx_pf_3gvt_20addPointLight(CYTHON_UNUSED PyObject *__pyx_sel */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_23addAreaLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_23addAreaLight = {"addAreaLight", (PyCFunction)__pyx_pw_3gvt_23addAreaLight, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_23addAreaLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_25addAreaLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_25addAreaLight = {"addAreaLight", (PyCFunction)__pyx_pw_3gvt_25addAreaLight, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_25addAreaLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyArrayObject *__pyx_v_pos = 0; PyArrayObject *__pyx_v_color = 0; @@ -3320,11 +3599,17 @@ static PyObject *__pyx_pw_3gvt_23addAreaLight(PyObject *__pyx_self, PyObject *__ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -3333,34 +3618,39 @@ static PyObject *__pyx_pw_3gvt_23addAreaLight(PyObject *__pyx_self, PyObject *__ case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 1); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 1); __PYX_ERR(0, 103, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 2); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 2); __PYX_ERR(0, 103, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 3); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 3); __PYX_ERR(0, 103, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 4); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 4); __PYX_ERR(0, 103, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 5); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, 5); __PYX_ERR(0, 103, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addAreaLight") < 0)) __PYX_ERR(0, 99, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addAreaLight") < 0)) __PYX_ERR(0, 103, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 6) { goto __pyx_L5_argtuple_error; @@ -3376,22 +3666,22 @@ static PyObject *__pyx_pw_3gvt_23addAreaLight(PyObject *__pyx_self, PyObject *__ __pyx_v_pos = ((PyArrayObject *)values[1]); __pyx_v_color = ((PyArrayObject *)values[2]); __pyx_v_n = ((PyArrayObject *)values[3]); - __pyx_v_w = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_w == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 99, __pyx_L3_error) - __pyx_v_h = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_h == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 99, __pyx_L3_error) + __pyx_v_w = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_w == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L3_error) + __pyx_v_h = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_h == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 99, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addAreaLight", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 103, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addAreaLight", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 99, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 99, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_color), __pyx_ptype_5numpy_ndarray, 1, "color", 0))) __PYX_ERR(0, 99, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_n), __pyx_ptype_5numpy_ndarray, 1, "n", 0))) __PYX_ERR(0, 99, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_22addAreaLight(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_color, __pyx_v_n, __pyx_v_w, __pyx_v_h); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 103, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 103, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_color), __pyx_ptype_5numpy_ndarray, 1, "color", 0))) __PYX_ERR(0, 103, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_n), __pyx_ptype_5numpy_ndarray, 1, "n", 0))) __PYX_ERR(0, 103, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_24addAreaLight(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_color, __pyx_v_n, __pyx_v_w, __pyx_v_h); /* function exit code */ goto __pyx_L0; @@ -3402,7 +3692,7 @@ static PyObject *__pyx_pw_3gvt_23addAreaLight(PyObject *__pyx_self, PyObject *__ return __pyx_r; } -static PyObject *__pyx_pf_3gvt_22addAreaLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color, PyArrayObject *__pyx_v_n, float __pyx_v_w, float __pyx_v_h) { +static PyObject *__pyx_pf_3gvt_24addAreaLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color, PyArrayObject *__pyx_v_n, float __pyx_v_w, float __pyx_v_h) { __Pyx_LocalBuf_ND __pyx_pybuffernd_color; __Pyx_Buffer __pyx_pybuffer_color; __Pyx_LocalBuf_ND __pyx_pybuffernd_n; @@ -3430,28 +3720,28 @@ static PyObject *__pyx_pf_3gvt_22addAreaLight(CYTHON_UNUSED PyObject *__pyx_self __pyx_pybuffernd_n.rcbuffer = &__pyx_pybuffer_n; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 99, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 103, __pyx_L1_error) } __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_color.rcbuffer->pybuffer, (PyObject*)__pyx_v_color, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 99, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_color.rcbuffer->pybuffer, (PyObject*)__pyx_v_color, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 103, __pyx_L1_error) } __pyx_pybuffernd_color.diminfo[0].strides = __pyx_pybuffernd_color.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_color.diminfo[0].shape = __pyx_pybuffernd_color.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_n.rcbuffer->pybuffer, (PyObject*)__pyx_v_n, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 99, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_n.rcbuffer->pybuffer, (PyObject*)__pyx_v_n, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 103, __pyx_L1_error) } __pyx_pybuffernd_n.diminfo[0].strides = __pyx_pybuffernd_n.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_n.diminfo[0].shape = __pyx_pybuffernd_n.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":100 + /* "gvt.pyx":104 * * def addAreaLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): * _addAreaLight(name.encode(), pos.data, color.data, n.data, w, h) # <<<<<<<<<<<<<< * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3464,18 +3754,18 @@ static PyObject *__pyx_pf_3gvt_22addAreaLight(CYTHON_UNUSED PyObject *__pyx_self } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 104, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 100, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 104, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addAreaLight(__pyx_t_4, ((float *)__pyx_v_pos->data), ((float *)__pyx_v_color->data), ((float *)__pyx_v_n->data), __pyx_v_w, __pyx_v_h); - /* "gvt.pyx":99 + /* "gvt.pyx":103 * _addPointLight(name.encode(), pos.data, color.data) * * def addAreaLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): # <<<<<<<<<<<<<< @@ -3511,7 +3801,7 @@ static PyObject *__pyx_pf_3gvt_22addAreaLight(CYTHON_UNUSED PyObject *__pyx_self return __pyx_r; } -/* "gvt.pyx":102 +/* "gvt.pyx":106 * _addAreaLight(name.encode(), pos.data, color.data, n.data, w, h) * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): # <<<<<<<<<<<<<< @@ -3520,9 +3810,9 @@ static PyObject *__pyx_pf_3gvt_22addAreaLight(CYTHON_UNUSED PyObject *__pyx_self */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_25modifyLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_25modifyLight = {"modifyLight", (PyCFunction)__pyx_pw_3gvt_25modifyLight, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_25modifyLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_27modifyLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_27modifyLight = {"modifyLight", (PyCFunction)__pyx_pw_3gvt_27modifyLight, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_27modifyLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyArrayObject *__pyx_v_pos = 0; PyArrayObject *__pyx_v_color = 0; @@ -3537,8 +3827,11 @@ static PyObject *__pyx_pw_3gvt_25modifyLight(PyObject *__pyx_self, PyObject *__p const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -3547,19 +3840,21 @@ static PyObject *__pyx_pw_3gvt_25modifyLight(PyObject *__pyx_self, PyObject *__p case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 3, 3, 1); __PYX_ERR(0, 102, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 3, 3, 1); __PYX_ERR(0, 106, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 3, 3, 2); __PYX_ERR(0, 102, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 3, 3, 2); __PYX_ERR(0, 106, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "modifyLight") < 0)) __PYX_ERR(0, 102, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "modifyLight") < 0)) __PYX_ERR(0, 106, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -3574,16 +3869,16 @@ static PyObject *__pyx_pw_3gvt_25modifyLight(PyObject *__pyx_self, PyObject *__p } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 102, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 106, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.modifyLight", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 102, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 102, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_color), __pyx_ptype_5numpy_ndarray, 1, "color", 0))) __PYX_ERR(0, 102, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_24modifyLight(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_color); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 106, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 106, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_color), __pyx_ptype_5numpy_ndarray, 1, "color", 0))) __PYX_ERR(0, 106, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_26modifyLight(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_color); /* function exit code */ goto __pyx_L0; @@ -3594,7 +3889,7 @@ static PyObject *__pyx_pw_3gvt_25modifyLight(PyObject *__pyx_self, PyObject *__p return __pyx_r; } -static PyObject *__pyx_pf_3gvt_24modifyLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color) { +static PyObject *__pyx_pf_3gvt_26modifyLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color) { __Pyx_LocalBuf_ND __pyx_pybuffernd_color; __Pyx_Buffer __pyx_pybuffer_color; __Pyx_LocalBuf_ND __pyx_pybuffernd_pos; @@ -3616,23 +3911,23 @@ static PyObject *__pyx_pf_3gvt_24modifyLight(CYTHON_UNUSED PyObject *__pyx_self, __pyx_pybuffernd_color.rcbuffer = &__pyx_pybuffer_color; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 102, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) } __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_color.rcbuffer->pybuffer, (PyObject*)__pyx_v_color, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 102, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_color.rcbuffer->pybuffer, (PyObject*)__pyx_v_color, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 106, __pyx_L1_error) } __pyx_pybuffernd_color.diminfo[0].strides = __pyx_pybuffernd_color.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_color.diminfo[0].shape = __pyx_pybuffernd_color.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":103 + /* "gvt.pyx":107 * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): * _modifyLight(name.encode(),pos.data, color.data) # <<<<<<<<<<<<<< * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 103, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3645,18 +3940,18 @@ static PyObject *__pyx_pf_3gvt_24modifyLight(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 107, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 103, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 107, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; modifyLight(__pyx_t_4, ((float *)__pyx_v_pos->data), ((float *)__pyx_v_color->data)); - /* "gvt.pyx":102 + /* "gvt.pyx":106 * _addAreaLight(name.encode(), pos.data, color.data, n.data, w, h) * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): # <<<<<<<<<<<<<< @@ -3690,7 +3985,7 @@ static PyObject *__pyx_pf_3gvt_24modifyLight(CYTHON_UNUSED PyObject *__pyx_self, return __pyx_r; } -/* "gvt.pyx":105 +/* "gvt.pyx":109 * _modifyLight(name.encode(),pos.data, color.data) * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): # <<<<<<<<<<<<<< @@ -3699,9 +3994,9 @@ static PyObject *__pyx_pf_3gvt_24modifyLight(CYTHON_UNUSED PyObject *__pyx_self, */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_27modifyLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_27modifyLight = {"modifyLight", (PyCFunction)__pyx_pw_3gvt_27modifyLight, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_27modifyLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_29modifyLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_29modifyLight = {"modifyLight", (PyCFunction)__pyx_pw_3gvt_29modifyLight, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_29modifyLight(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyArrayObject *__pyx_v_pos = 0; PyArrayObject *__pyx_v_color = 0; @@ -3719,11 +4014,17 @@ static PyObject *__pyx_pw_3gvt_27modifyLight(PyObject *__pyx_self, PyObject *__p const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -3732,34 +4033,39 @@ static PyObject *__pyx_pw_3gvt_27modifyLight(PyObject *__pyx_self, PyObject *__p case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 1); __PYX_ERR(0, 105, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 1); __PYX_ERR(0, 109, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_color)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 2); __PYX_ERR(0, 105, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 2); __PYX_ERR(0, 109, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_n)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 3); __PYX_ERR(0, 105, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 3); __PYX_ERR(0, 109, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 4); __PYX_ERR(0, 105, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 4); __PYX_ERR(0, 109, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 5); __PYX_ERR(0, 105, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, 5); __PYX_ERR(0, 109, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "modifyLight") < 0)) __PYX_ERR(0, 105, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "modifyLight") < 0)) __PYX_ERR(0, 109, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 6) { goto __pyx_L5_argtuple_error; @@ -3775,22 +4081,22 @@ static PyObject *__pyx_pw_3gvt_27modifyLight(PyObject *__pyx_self, PyObject *__p __pyx_v_pos = ((PyArrayObject *)values[1]); __pyx_v_color = ((PyArrayObject *)values[2]); __pyx_v_n = ((PyArrayObject *)values[3]); - __pyx_v_w = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_w == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L3_error) - __pyx_v_h = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_h == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 105, __pyx_L3_error) + __pyx_v_w = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_w == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) + __pyx_v_h = __pyx_PyFloat_AsFloat(values[5]); if (unlikely((__pyx_v_h == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 105, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyLight", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 109, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.modifyLight", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 105, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 105, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_color), __pyx_ptype_5numpy_ndarray, 1, "color", 0))) __PYX_ERR(0, 105, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_n), __pyx_ptype_5numpy_ndarray, 1, "n", 0))) __PYX_ERR(0, 105, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_26modifyLight(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_color, __pyx_v_n, __pyx_v_w, __pyx_v_h); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 109, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 109, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_color), __pyx_ptype_5numpy_ndarray, 1, "color", 0))) __PYX_ERR(0, 109, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_n), __pyx_ptype_5numpy_ndarray, 1, "n", 0))) __PYX_ERR(0, 109, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_28modifyLight(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_color, __pyx_v_n, __pyx_v_w, __pyx_v_h); /* function exit code */ goto __pyx_L0; @@ -3801,7 +4107,7 @@ static PyObject *__pyx_pw_3gvt_27modifyLight(PyObject *__pyx_self, PyObject *__p return __pyx_r; } -static PyObject *__pyx_pf_3gvt_26modifyLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color, PyArrayObject *__pyx_v_n, float __pyx_v_w, float __pyx_v_h) { +static PyObject *__pyx_pf_3gvt_28modifyLight(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_color, PyArrayObject *__pyx_v_n, float __pyx_v_w, float __pyx_v_h) { __Pyx_LocalBuf_ND __pyx_pybuffernd_color; __Pyx_Buffer __pyx_pybuffer_color; __Pyx_LocalBuf_ND __pyx_pybuffernd_n; @@ -3829,28 +4135,28 @@ static PyObject *__pyx_pf_3gvt_26modifyLight(CYTHON_UNUSED PyObject *__pyx_self, __pyx_pybuffernd_n.rcbuffer = &__pyx_pybuffer_n; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 105, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_color.rcbuffer->pybuffer, (PyObject*)__pyx_v_color, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 105, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_color.rcbuffer->pybuffer, (PyObject*)__pyx_v_color, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_pybuffernd_color.diminfo[0].strides = __pyx_pybuffernd_color.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_color.diminfo[0].shape = __pyx_pybuffernd_color.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_n.rcbuffer->pybuffer, (PyObject*)__pyx_v_n, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 105, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_n.rcbuffer->pybuffer, (PyObject*)__pyx_v_n, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 109, __pyx_L1_error) } __pyx_pybuffernd_n.diminfo[0].strides = __pyx_pybuffernd_n.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_n.diminfo[0].shape = __pyx_pybuffernd_n.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":106 + /* "gvt.pyx":110 * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): * _modifyLight(name.encode(),pos.data,color.data,n.data,w,h) # <<<<<<<<<<<<<< * * def addCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov, int depth, int samples, float jitter): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 106, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -3863,18 +4169,18 @@ static PyObject *__pyx_pf_3gvt_26modifyLight(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 110, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 106, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 110, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; modifyLight(__pyx_t_4, ((float *)__pyx_v_pos->data), ((float *)__pyx_v_color->data), ((float *)__pyx_v_n->data), __pyx_v_w, __pyx_v_h); - /* "gvt.pyx":105 + /* "gvt.pyx":109 * _modifyLight(name.encode(),pos.data, color.data) * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): # <<<<<<<<<<<<<< @@ -3910,7 +4216,7 @@ static PyObject *__pyx_pf_3gvt_26modifyLight(CYTHON_UNUSED PyObject *__pyx_self, return __pyx_r; } -/* "gvt.pyx":108 +/* "gvt.pyx":112 * _modifyLight(name.encode(),pos.data,color.data,n.data,w,h) * * def addCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov, int depth, int samples, float jitter): # <<<<<<<<<<<<<< @@ -3919,9 +4225,9 @@ static PyObject *__pyx_pf_3gvt_26modifyLight(CYTHON_UNUSED PyObject *__pyx_self, */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_29addCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_29addCamera = {"addCamera", (PyCFunction)__pyx_pw_3gvt_29addCamera, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_29addCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_31addCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_31addCamera = {"addCamera", (PyCFunction)__pyx_pw_3gvt_31addCamera, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_31addCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyArrayObject *__pyx_v_pos = 0; PyArrayObject *__pyx_v_focus = 0; @@ -3941,13 +4247,21 @@ static PyObject *__pyx_pw_3gvt_29addCamera(PyObject *__pyx_self, PyObject *__pyx const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 8: values[7] = PyTuple_GET_ITEM(__pyx_args, 7); + CYTHON_FALLTHROUGH; case 7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6); + CYTHON_FALLTHROUGH; case 6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5); + CYTHON_FALLTHROUGH; case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -3956,44 +4270,51 @@ static PyObject *__pyx_pw_3gvt_29addCamera(PyObject *__pyx_self, PyObject *__pyx case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 1); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 1); __PYX_ERR(0, 112, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_focus)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 2); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 2); __PYX_ERR(0, 112, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_up)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 3); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 3); __PYX_ERR(0, 112, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fov)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 4); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 4); __PYX_ERR(0, 112, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 5: if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_depth)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 5); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 5); __PYX_ERR(0, 112, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 6: if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_samples)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 6); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 6); __PYX_ERR(0, 112, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 7: if (likely((values[7] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_jitter)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 7); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, 7); __PYX_ERR(0, 112, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addCamera") < 0)) __PYX_ERR(0, 108, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addCamera") < 0)) __PYX_ERR(0, 112, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 8) { goto __pyx_L5_argtuple_error; @@ -4011,24 +4332,24 @@ static PyObject *__pyx_pw_3gvt_29addCamera(PyObject *__pyx_self, PyObject *__pyx __pyx_v_pos = ((PyArrayObject *)values[1]); __pyx_v_focus = ((PyArrayObject *)values[2]); __pyx_v_up = ((PyArrayObject *)values[3]); - __pyx_v_fov = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_fov == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) - __pyx_v_depth = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_depth == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) - __pyx_v_samples = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_samples == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) - __pyx_v_jitter = __pyx_PyFloat_AsFloat(values[7]); if (unlikely((__pyx_v_jitter == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 108, __pyx_L3_error) + __pyx_v_fov = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_fov == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 112, __pyx_L3_error) + __pyx_v_depth = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_depth == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 112, __pyx_L3_error) + __pyx_v_samples = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_samples == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 112, __pyx_L3_error) + __pyx_v_jitter = __pyx_PyFloat_AsFloat(values[7]); if (unlikely((__pyx_v_jitter == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 112, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 108, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addCamera", 1, 8, 8, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 112, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addCamera", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 108, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 108, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_focus), __pyx_ptype_5numpy_ndarray, 1, "focus", 0))) __PYX_ERR(0, 108, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_up), __pyx_ptype_5numpy_ndarray, 1, "up", 0))) __PYX_ERR(0, 108, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_28addCamera(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_focus, __pyx_v_up, __pyx_v_fov, __pyx_v_depth, __pyx_v_samples, __pyx_v_jitter); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 112, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 112, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_focus), __pyx_ptype_5numpy_ndarray, 1, "focus", 0))) __PYX_ERR(0, 112, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_up), __pyx_ptype_5numpy_ndarray, 1, "up", 0))) __PYX_ERR(0, 112, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_30addCamera(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_focus, __pyx_v_up, __pyx_v_fov, __pyx_v_depth, __pyx_v_samples, __pyx_v_jitter); /* function exit code */ goto __pyx_L0; @@ -4039,7 +4360,7 @@ static PyObject *__pyx_pw_3gvt_29addCamera(PyObject *__pyx_self, PyObject *__pyx return __pyx_r; } -static PyObject *__pyx_pf_3gvt_28addCamera(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_focus, PyArrayObject *__pyx_v_up, float __pyx_v_fov, int __pyx_v_depth, int __pyx_v_samples, float __pyx_v_jitter) { +static PyObject *__pyx_pf_3gvt_30addCamera(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_focus, PyArrayObject *__pyx_v_up, float __pyx_v_fov, int __pyx_v_depth, int __pyx_v_samples, float __pyx_v_jitter) { __Pyx_LocalBuf_ND __pyx_pybuffernd_focus; __Pyx_Buffer __pyx_pybuffer_focus; __Pyx_LocalBuf_ND __pyx_pybuffernd_pos; @@ -4067,28 +4388,28 @@ static PyObject *__pyx_pf_3gvt_28addCamera(CYTHON_UNUSED PyObject *__pyx_self, P __pyx_pybuffernd_up.rcbuffer = &__pyx_pybuffer_up; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 108, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 112, __pyx_L1_error) } __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_focus.rcbuffer->pybuffer, (PyObject*)__pyx_v_focus, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 108, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_focus.rcbuffer->pybuffer, (PyObject*)__pyx_v_focus, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 112, __pyx_L1_error) } __pyx_pybuffernd_focus.diminfo[0].strides = __pyx_pybuffernd_focus.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_focus.diminfo[0].shape = __pyx_pybuffernd_focus.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_up.rcbuffer->pybuffer, (PyObject*)__pyx_v_up, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 108, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_up.rcbuffer->pybuffer, (PyObject*)__pyx_v_up, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 112, __pyx_L1_error) } __pyx_pybuffernd_up.diminfo[0].strides = __pyx_pybuffernd_up.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_up.diminfo[0].shape = __pyx_pybuffernd_up.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":109 + /* "gvt.pyx":113 * * def addCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov, int depth, int samples, float jitter): * _addCamera(name.encode(), pos.data, focus.data,up.data,fov,depth,samples,jitter) # <<<<<<<<<<<<<< * * def modifyCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 109, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4101,18 +4422,18 @@ static PyObject *__pyx_pf_3gvt_28addCamera(CYTHON_UNUSED PyObject *__pyx_self, P } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 113, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 109, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 113, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addCamera(__pyx_t_4, ((float *)__pyx_v_pos->data), ((float *)__pyx_v_focus->data), ((float *)__pyx_v_up->data), __pyx_v_fov, __pyx_v_depth, __pyx_v_samples, __pyx_v_jitter); - /* "gvt.pyx":108 + /* "gvt.pyx":112 * _modifyLight(name.encode(),pos.data,color.data,n.data,w,h) * * def addCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov, int depth, int samples, float jitter): # <<<<<<<<<<<<<< @@ -4148,7 +4469,7 @@ static PyObject *__pyx_pf_3gvt_28addCamera(CYTHON_UNUSED PyObject *__pyx_self, P return __pyx_r; } -/* "gvt.pyx":111 +/* "gvt.pyx":115 * _addCamera(name.encode(), pos.data, focus.data,up.data,fov,depth,samples,jitter) * * def modifyCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov): # <<<<<<<<<<<<<< @@ -4157,9 +4478,9 @@ static PyObject *__pyx_pf_3gvt_28addCamera(CYTHON_UNUSED PyObject *__pyx_self, P */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_31modifyCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_31modifyCamera = {"modifyCamera", (PyCFunction)__pyx_pw_3gvt_31modifyCamera, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_31modifyCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_33modifyCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_33modifyCamera = {"modifyCamera", (PyCFunction)__pyx_pw_3gvt_33modifyCamera, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_33modifyCamera(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyArrayObject *__pyx_v_pos = 0; PyArrayObject *__pyx_v_focus = 0; @@ -4176,10 +4497,15 @@ static PyObject *__pyx_pw_3gvt_31modifyCamera(PyObject *__pyx_self, PyObject *__ const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4); + CYTHON_FALLTHROUGH; case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -4188,29 +4514,33 @@ static PyObject *__pyx_pw_3gvt_31modifyCamera(PyObject *__pyx_self, PyObject *__ case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_pos)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, 1); __PYX_ERR(0, 111, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, 1); __PYX_ERR(0, 115, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_focus)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, 2); __PYX_ERR(0, 111, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, 2); __PYX_ERR(0, 115, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_up)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, 3); __PYX_ERR(0, 111, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, 3); __PYX_ERR(0, 115, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 4: if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fov)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, 4); __PYX_ERR(0, 111, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, 4); __PYX_ERR(0, 115, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "modifyCamera") < 0)) __PYX_ERR(0, 111, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "modifyCamera") < 0)) __PYX_ERR(0, 115, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 5) { goto __pyx_L5_argtuple_error; @@ -4225,21 +4555,21 @@ static PyObject *__pyx_pw_3gvt_31modifyCamera(PyObject *__pyx_self, PyObject *__ __pyx_v_pos = ((PyArrayObject *)values[1]); __pyx_v_focus = ((PyArrayObject *)values[2]); __pyx_v_up = ((PyArrayObject *)values[3]); - __pyx_v_fov = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_fov == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 111, __pyx_L3_error) + __pyx_v_fov = __pyx_PyFloat_AsFloat(values[4]); if (unlikely((__pyx_v_fov == (float)-1) && PyErr_Occurred())) __PYX_ERR(0, 115, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 111, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyCamera", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 115, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.modifyCamera", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 111, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 111, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_focus), __pyx_ptype_5numpy_ndarray, 1, "focus", 0))) __PYX_ERR(0, 111, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_up), __pyx_ptype_5numpy_ndarray, 1, "up", 0))) __PYX_ERR(0, 111, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_30modifyCamera(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_focus, __pyx_v_up, __pyx_v_fov); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 115, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_pos), __pyx_ptype_5numpy_ndarray, 1, "pos", 0))) __PYX_ERR(0, 115, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_focus), __pyx_ptype_5numpy_ndarray, 1, "focus", 0))) __PYX_ERR(0, 115, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_up), __pyx_ptype_5numpy_ndarray, 1, "up", 0))) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_32modifyCamera(__pyx_self, __pyx_v_name, __pyx_v_pos, __pyx_v_focus, __pyx_v_up, __pyx_v_fov); /* function exit code */ goto __pyx_L0; @@ -4250,7 +4580,7 @@ static PyObject *__pyx_pw_3gvt_31modifyCamera(PyObject *__pyx_self, PyObject *__ return __pyx_r; } -static PyObject *__pyx_pf_3gvt_30modifyCamera(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_focus, PyArrayObject *__pyx_v_up, float __pyx_v_fov) { +static PyObject *__pyx_pf_3gvt_32modifyCamera(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyArrayObject *__pyx_v_pos, PyArrayObject *__pyx_v_focus, PyArrayObject *__pyx_v_up, float __pyx_v_fov) { __Pyx_LocalBuf_ND __pyx_pybuffernd_focus; __Pyx_Buffer __pyx_pybuffer_focus; __Pyx_LocalBuf_ND __pyx_pybuffernd_pos; @@ -4278,28 +4608,28 @@ static PyObject *__pyx_pf_3gvt_30modifyCamera(CYTHON_UNUSED PyObject *__pyx_self __pyx_pybuffernd_up.rcbuffer = &__pyx_pybuffer_up; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 111, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_pos.rcbuffer->pybuffer, (PyObject*)__pyx_v_pos, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 115, __pyx_L1_error) } __pyx_pybuffernd_pos.diminfo[0].strides = __pyx_pybuffernd_pos.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_pos.diminfo[0].shape = __pyx_pybuffernd_pos.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_focus.rcbuffer->pybuffer, (PyObject*)__pyx_v_focus, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 111, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_focus.rcbuffer->pybuffer, (PyObject*)__pyx_v_focus, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 115, __pyx_L1_error) } __pyx_pybuffernd_focus.diminfo[0].strides = __pyx_pybuffernd_focus.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_focus.diminfo[0].shape = __pyx_pybuffernd_focus.rcbuffer->pybuffer.shape[0]; { __Pyx_BufFmt_StackElem __pyx_stack[1]; - if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_up.rcbuffer->pybuffer, (PyObject*)__pyx_v_up, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 111, __pyx_L1_error) + if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_up.rcbuffer->pybuffer, (PyObject*)__pyx_v_up, &__Pyx_TypeInfo_float, PyBUF_FORMAT| PyBUF_C_CONTIGUOUS, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 115, __pyx_L1_error) } __pyx_pybuffernd_up.diminfo[0].strides = __pyx_pybuffernd_up.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_up.diminfo[0].shape = __pyx_pybuffernd_up.rcbuffer->pybuffer.shape[0]; - /* "gvt.pyx":112 + /* "gvt.pyx":116 * * def modifyCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov): * _modifyCamera(name.encode(), pos.data, focus.data,up.data,fov) # <<<<<<<<<<<<<< * * def addFilm(str name, int w, int h, str path): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 112, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 116, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4312,18 +4642,18 @@ static PyObject *__pyx_pf_3gvt_30modifyCamera(CYTHON_UNUSED PyObject *__pyx_self } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 116, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 112, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 116, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; modifyCamera(__pyx_t_4, ((float *)__pyx_v_pos->data), ((float *)__pyx_v_focus->data), ((float *)__pyx_v_up->data), __pyx_v_fov); - /* "gvt.pyx":111 + /* "gvt.pyx":115 * _addCamera(name.encode(), pos.data, focus.data,up.data,fov,depth,samples,jitter) * * def modifyCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov): # <<<<<<<<<<<<<< @@ -4359,7 +4689,7 @@ static PyObject *__pyx_pf_3gvt_30modifyCamera(CYTHON_UNUSED PyObject *__pyx_self return __pyx_r; } -/* "gvt.pyx":114 +/* "gvt.pyx":118 * _modifyCamera(name.encode(), pos.data, focus.data,up.data,fov) * * def addFilm(str name, int w, int h, str path): # <<<<<<<<<<<<<< @@ -4368,9 +4698,9 @@ static PyObject *__pyx_pf_3gvt_30modifyCamera(CYTHON_UNUSED PyObject *__pyx_self */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_33addFilm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_33addFilm = {"addFilm", (PyCFunction)__pyx_pw_3gvt_33addFilm, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_33addFilm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_35addFilm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_35addFilm = {"addFilm", (PyCFunction)__pyx_pw_3gvt_35addFilm, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_35addFilm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; int __pyx_v_w; int __pyx_v_h; @@ -4386,9 +4716,13 @@ static PyObject *__pyx_pw_3gvt_33addFilm(PyObject *__pyx_self, PyObject *__pyx_a const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -4397,24 +4731,27 @@ static PyObject *__pyx_pw_3gvt_33addFilm(PyObject *__pyx_self, PyObject *__pyx_a case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addFilm", 1, 4, 4, 1); __PYX_ERR(0, 114, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addFilm", 1, 4, 4, 1); __PYX_ERR(0, 118, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addFilm", 1, 4, 4, 2); __PYX_ERR(0, 114, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addFilm", 1, 4, 4, 2); __PYX_ERR(0, 118, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addFilm", 1, 4, 4, 3); __PYX_ERR(0, 114, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addFilm", 1, 4, 4, 3); __PYX_ERR(0, 118, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addFilm") < 0)) __PYX_ERR(0, 114, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addFilm") < 0)) __PYX_ERR(0, 118, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -4425,21 +4762,21 @@ static PyObject *__pyx_pw_3gvt_33addFilm(PyObject *__pyx_self, PyObject *__pyx_a values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_w = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_w == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error) - __pyx_v_h = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_h == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 114, __pyx_L3_error) + __pyx_v_w = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_w == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 118, __pyx_L3_error) + __pyx_v_h = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_h == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 118, __pyx_L3_error) __pyx_v_path = ((PyObject*)values[3]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addFilm", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 114, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addFilm", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 118, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addFilm", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 114, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 114, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_32addFilm(__pyx_self, __pyx_v_name, __pyx_v_w, __pyx_v_h, __pyx_v_path); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 118, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_34addFilm(__pyx_self, __pyx_v_name, __pyx_v_w, __pyx_v_h, __pyx_v_path); /* function exit code */ goto __pyx_L0; @@ -4450,7 +4787,7 @@ static PyObject *__pyx_pw_3gvt_33addFilm(PyObject *__pyx_self, PyObject *__pyx_a return __pyx_r; } -static PyObject *__pyx_pf_3gvt_32addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_w, int __pyx_v_h, PyObject *__pyx_v_path) { +static PyObject *__pyx_pf_3gvt_34addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_w, int __pyx_v_h, PyObject *__pyx_v_path) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -4460,14 +4797,14 @@ static PyObject *__pyx_pf_3gvt_32addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyO std::string __pyx_t_5; __Pyx_RefNannySetupContext("addFilm", 0); - /* "gvt.pyx":115 + /* "gvt.pyx":119 * * def addFilm(str name, int w, int h, str path): * _addFilm(name.encode(),w,h,path.encode()) # <<<<<<<<<<<<<< * * def modifyFilm(str name, int w, int h, str path): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4480,16 +4817,16 @@ static PyObject *__pyx_pf_3gvt_32addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4502,18 +4839,18 @@ static PyObject *__pyx_pf_3gvt_32addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyO } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 115, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 119, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addFilm(__pyx_t_4, __pyx_v_w, __pyx_v_h, __pyx_t_5); - /* "gvt.pyx":114 + /* "gvt.pyx":118 * _modifyCamera(name.encode(), pos.data, focus.data,up.data,fov) * * def addFilm(str name, int w, int h, str path): # <<<<<<<<<<<<<< @@ -4536,7 +4873,7 @@ static PyObject *__pyx_pf_3gvt_32addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyO return __pyx_r; } -/* "gvt.pyx":117 +/* "gvt.pyx":121 * _addFilm(name.encode(),w,h,path.encode()) * * def modifyFilm(str name, int w, int h, str path): # <<<<<<<<<<<<<< @@ -4545,9 +4882,9 @@ static PyObject *__pyx_pf_3gvt_32addFilm(CYTHON_UNUSED PyObject *__pyx_self, PyO */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_35modifyFilm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_35modifyFilm = {"modifyFilm", (PyCFunction)__pyx_pw_3gvt_35modifyFilm, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_35modifyFilm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_37modifyFilm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_37modifyFilm = {"modifyFilm", (PyCFunction)__pyx_pw_3gvt_37modifyFilm, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_37modifyFilm(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; int __pyx_v_w; int __pyx_v_h; @@ -4563,9 +4900,13 @@ static PyObject *__pyx_pw_3gvt_35modifyFilm(PyObject *__pyx_self, PyObject *__py const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3); + CYTHON_FALLTHROUGH; case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -4574,24 +4915,27 @@ static PyObject *__pyx_pw_3gvt_35modifyFilm(PyObject *__pyx_self, PyObject *__py case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_w)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyFilm", 1, 4, 4, 1); __PYX_ERR(0, 117, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyFilm", 1, 4, 4, 1); __PYX_ERR(0, 121, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_h)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyFilm", 1, 4, 4, 2); __PYX_ERR(0, 117, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyFilm", 1, 4, 4, 2); __PYX_ERR(0, 121, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 3: if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_path)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("modifyFilm", 1, 4, 4, 3); __PYX_ERR(0, 117, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyFilm", 1, 4, 4, 3); __PYX_ERR(0, 121, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "modifyFilm") < 0)) __PYX_ERR(0, 117, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "modifyFilm") < 0)) __PYX_ERR(0, 121, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 4) { goto __pyx_L5_argtuple_error; @@ -4602,21 +4946,21 @@ static PyObject *__pyx_pw_3gvt_35modifyFilm(PyObject *__pyx_self, PyObject *__py values[3] = PyTuple_GET_ITEM(__pyx_args, 3); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_w = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_w == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 117, __pyx_L3_error) - __pyx_v_h = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_h == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 117, __pyx_L3_error) + __pyx_v_w = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_w == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L3_error) + __pyx_v_h = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_h == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L3_error) __pyx_v_path = ((PyObject*)values[3]); } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("modifyFilm", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 117, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("modifyFilm", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 121, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.modifyFilm", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 117, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 117, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_34modifyFilm(__pyx_self, __pyx_v_name, __pyx_v_w, __pyx_v_h, __pyx_v_path); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 121, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_path), (&PyString_Type), 1, "path", 1))) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_36modifyFilm(__pyx_self, __pyx_v_name, __pyx_v_w, __pyx_v_h, __pyx_v_path); /* function exit code */ goto __pyx_L0; @@ -4627,7 +4971,7 @@ static PyObject *__pyx_pw_3gvt_35modifyFilm(PyObject *__pyx_self, PyObject *__py return __pyx_r; } -static PyObject *__pyx_pf_3gvt_34modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_w, int __pyx_v_h, PyObject *__pyx_v_path) { +static PyObject *__pyx_pf_3gvt_36modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_w, int __pyx_v_h, PyObject *__pyx_v_path) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -4637,14 +4981,14 @@ static PyObject *__pyx_pf_3gvt_34modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, std::string __pyx_t_5; __Pyx_RefNannySetupContext("modifyFilm", 0); - /* "gvt.pyx":118 + /* "gvt.pyx":122 * * def modifyFilm(str name, int w, int h, str path): * _modifyFilm(name.encode(),w,h,path.encode()) # <<<<<<<<<<<<<< * * def addRenderer(str name, int adapter, int schedule): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4657,16 +5001,16 @@ static PyObject *__pyx_pf_3gvt_34modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_path, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4679,18 +5023,18 @@ static PyObject *__pyx_pf_3gvt_34modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 122, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 118, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 122, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; modifyFilm(__pyx_t_4, __pyx_v_w, __pyx_v_h, __pyx_t_5); - /* "gvt.pyx":117 + /* "gvt.pyx":121 * _addFilm(name.encode(),w,h,path.encode()) * * def modifyFilm(str name, int w, int h, str path): # <<<<<<<<<<<<<< @@ -4713,7 +5057,7 @@ static PyObject *__pyx_pf_3gvt_34modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, return __pyx_r; } -/* "gvt.pyx":120 +/* "gvt.pyx":124 * _modifyFilm(name.encode(),w,h,path.encode()) * * def addRenderer(str name, int adapter, int schedule): # <<<<<<<<<<<<<< @@ -4722,9 +5066,9 @@ static PyObject *__pyx_pf_3gvt_34modifyFilm(CYTHON_UNUSED PyObject *__pyx_self, */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_37addRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_37addRenderer = {"addRenderer", (PyCFunction)__pyx_pw_3gvt_37addRenderer, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_37addRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_39addRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_39addRenderer = {"addRenderer", (PyCFunction)__pyx_pw_3gvt_39addRenderer, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_39addRenderer(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; int __pyx_v_adapter; int __pyx_v_schedule; @@ -4739,8 +5083,11 @@ static PyObject *__pyx_pw_3gvt_37addRenderer(PyObject *__pyx_self, PyObject *__p const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2); + CYTHON_FALLTHROUGH; case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -4749,19 +5096,21 @@ static PyObject *__pyx_pw_3gvt_37addRenderer(PyObject *__pyx_self, PyObject *__p case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_adapter)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addRenderer", 1, 3, 3, 1); __PYX_ERR(0, 120, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addRenderer", 1, 3, 3, 1); __PYX_ERR(0, 124, __pyx_L3_error) } + CYTHON_FALLTHROUGH; case 2: if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_schedule)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("addRenderer", 1, 3, 3, 2); __PYX_ERR(0, 120, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addRenderer", 1, 3, 3, 2); __PYX_ERR(0, 124, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addRenderer") < 0)) __PYX_ERR(0, 120, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "addRenderer") < 0)) __PYX_ERR(0, 124, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 3) { goto __pyx_L5_argtuple_error; @@ -4771,19 +5120,19 @@ static PyObject *__pyx_pw_3gvt_37addRenderer(PyObject *__pyx_self, PyObject *__p values[2] = PyTuple_GET_ITEM(__pyx_args, 2); } __pyx_v_name = ((PyObject*)values[0]); - __pyx_v_adapter = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_adapter == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 120, __pyx_L3_error) - __pyx_v_schedule = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_schedule == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 120, __pyx_L3_error) + __pyx_v_adapter = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_adapter == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 124, __pyx_L3_error) + __pyx_v_schedule = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_schedule == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 124, __pyx_L3_error) } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("addRenderer", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 120, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("addRenderer", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 124, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.addRenderer", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 120, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_36addRenderer(__pyx_self, __pyx_v_name, __pyx_v_adapter, __pyx_v_schedule); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_38addRenderer(__pyx_self, __pyx_v_name, __pyx_v_adapter, __pyx_v_schedule); /* function exit code */ goto __pyx_L0; @@ -4794,7 +5143,7 @@ static PyObject *__pyx_pw_3gvt_37addRenderer(PyObject *__pyx_self, PyObject *__p return __pyx_r; } -static PyObject *__pyx_pf_3gvt_36addRenderer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_adapter, int __pyx_v_schedule) { +static PyObject *__pyx_pf_3gvt_38addRenderer(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, int __pyx_v_adapter, int __pyx_v_schedule) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -4803,14 +5152,14 @@ static PyObject *__pyx_pf_3gvt_36addRenderer(CYTHON_UNUSED PyObject *__pyx_self, std::string __pyx_t_4; __Pyx_RefNannySetupContext("addRenderer", 0); - /* "gvt.pyx":121 + /* "gvt.pyx":125 * * def addRenderer(str name, int adapter, int schedule): * _addRenderer(name.encode(),adapter,schedule) # <<<<<<<<<<<<<< * * def render(str name): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4823,18 +5172,18 @@ static PyObject *__pyx_pf_3gvt_36addRenderer(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 121, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 125, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; addRenderer(__pyx_t_4, __pyx_v_adapter, __pyx_v_schedule); - /* "gvt.pyx":120 + /* "gvt.pyx":124 * _modifyFilm(name.encode(),w,h,path.encode()) * * def addRenderer(str name, int adapter, int schedule): # <<<<<<<<<<<<<< @@ -4857,7 +5206,7 @@ static PyObject *__pyx_pf_3gvt_36addRenderer(CYTHON_UNUSED PyObject *__pyx_self, return __pyx_r; } -/* "gvt.pyx":123 +/* "gvt.pyx":127 * _addRenderer(name.encode(),adapter,schedule) * * def render(str name): # <<<<<<<<<<<<<< @@ -4866,14 +5215,14 @@ static PyObject *__pyx_pf_3gvt_36addRenderer(CYTHON_UNUSED PyObject *__pyx_self, */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_39render(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_39render = {"render", (PyCFunction)__pyx_pw_3gvt_39render, METH_O, 0}; -static PyObject *__pyx_pw_3gvt_39render(PyObject *__pyx_self, PyObject *__pyx_v_name) { +static PyObject *__pyx_pw_3gvt_41render(PyObject *__pyx_self, PyObject *__pyx_v_name); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_41render = {"render", (PyCFunction)__pyx_pw_3gvt_41render, METH_O, 0}; +static PyObject *__pyx_pw_3gvt_41render(PyObject *__pyx_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = 0; __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("render (wrapper)", 0); - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 123, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_38render(__pyx_self, ((PyObject*)__pyx_v_name)); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_40render(__pyx_self, ((PyObject*)__pyx_v_name)); /* function exit code */ goto __pyx_L0; @@ -4884,7 +5233,7 @@ static PyObject *__pyx_pw_3gvt_39render(PyObject *__pyx_self, PyObject *__pyx_v_ return __pyx_r; } -static PyObject *__pyx_pf_3gvt_38render(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name) { +static PyObject *__pyx_pf_3gvt_40render(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -4893,14 +5242,14 @@ static PyObject *__pyx_pf_3gvt_38render(CYTHON_UNUSED PyObject *__pyx_self, PyOb std::string __pyx_t_4; __Pyx_RefNannySetupContext("render", 0); - /* "gvt.pyx":124 + /* "gvt.pyx":128 * * def render(str name): * _render(name.encode()) # <<<<<<<<<<<<<< * * def writeimage(str name, str output): */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -4913,18 +5262,18 @@ static PyObject *__pyx_pf_3gvt_38render(CYTHON_UNUSED PyObject *__pyx_self, PyOb } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 124, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 128, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; render(__pyx_t_4); - /* "gvt.pyx":123 + /* "gvt.pyx":127 * _addRenderer(name.encode(),adapter,schedule) * * def render(str name): # <<<<<<<<<<<<<< @@ -4947,7 +5296,7 @@ static PyObject *__pyx_pf_3gvt_38render(CYTHON_UNUSED PyObject *__pyx_self, PyOb return __pyx_r; } -/* "gvt.pyx":126 +/* "gvt.pyx":130 * _render(name.encode()) * * def writeimage(str name, str output): # <<<<<<<<<<<<<< @@ -4955,9 +5304,9 @@ static PyObject *__pyx_pf_3gvt_38render(CYTHON_UNUSED PyObject *__pyx_self, PyOb */ /* Python wrapper */ -static PyObject *__pyx_pw_3gvt_41writeimage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ -static PyMethodDef __pyx_mdef_3gvt_41writeimage = {"writeimage", (PyCFunction)__pyx_pw_3gvt_41writeimage, METH_VARARGS|METH_KEYWORDS, 0}; -static PyObject *__pyx_pw_3gvt_41writeimage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { +static PyObject *__pyx_pw_3gvt_43writeimage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/ +static PyMethodDef __pyx_mdef_3gvt_43writeimage = {"writeimage", (PyCFunction)__pyx_pw_3gvt_43writeimage, METH_VARARGS|METH_KEYWORDS, 0}; +static PyObject *__pyx_pw_3gvt_43writeimage(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) { PyObject *__pyx_v_name = 0; PyObject *__pyx_v_output = 0; PyObject *__pyx_r = 0; @@ -4971,7 +5320,9 @@ static PyObject *__pyx_pw_3gvt_41writeimage(PyObject *__pyx_self, PyObject *__py const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args); switch (pos_args) { case 2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1); + CYTHON_FALLTHROUGH; case 1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0); + CYTHON_FALLTHROUGH; case 0: break; default: goto __pyx_L5_argtuple_error; } @@ -4980,14 +5331,15 @@ static PyObject *__pyx_pw_3gvt_41writeimage(PyObject *__pyx_self, PyObject *__py case 0: if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name)) != 0)) kw_args--; else goto __pyx_L5_argtuple_error; + CYTHON_FALLTHROUGH; case 1: if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_output)) != 0)) kw_args--; else { - __Pyx_RaiseArgtupleInvalid("writeimage", 1, 2, 2, 1); __PYX_ERR(0, 126, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("writeimage", 1, 2, 2, 1); __PYX_ERR(0, 130, __pyx_L3_error) } } if (unlikely(kw_args > 0)) { - if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "writeimage") < 0)) __PYX_ERR(0, 126, __pyx_L3_error) + if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "writeimage") < 0)) __PYX_ERR(0, 130, __pyx_L3_error) } } else if (PyTuple_GET_SIZE(__pyx_args) != 2) { goto __pyx_L5_argtuple_error; @@ -5000,15 +5352,15 @@ static PyObject *__pyx_pw_3gvt_41writeimage(PyObject *__pyx_self, PyObject *__py } goto __pyx_L4_argument_unpacking_done; __pyx_L5_argtuple_error:; - __Pyx_RaiseArgtupleInvalid("writeimage", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 126, __pyx_L3_error) + __Pyx_RaiseArgtupleInvalid("writeimage", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 130, __pyx_L3_error) __pyx_L3_error:; __Pyx_AddTraceback("gvt.writeimage", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_RefNannyFinishContext(); return NULL; __pyx_L4_argument_unpacking_done:; - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 126, __pyx_L1_error) - if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), (&PyString_Type), 1, "output", 1))) __PYX_ERR(0, 126, __pyx_L1_error) - __pyx_r = __pyx_pf_3gvt_40writeimage(__pyx_self, __pyx_v_name, __pyx_v_output); + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) __PYX_ERR(0, 130, __pyx_L1_error) + if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_output), (&PyString_Type), 1, "output", 1))) __PYX_ERR(0, 130, __pyx_L1_error) + __pyx_r = __pyx_pf_3gvt_42writeimage(__pyx_self, __pyx_v_name, __pyx_v_output); /* function exit code */ goto __pyx_L0; @@ -5019,7 +5371,7 @@ static PyObject *__pyx_pw_3gvt_41writeimage(PyObject *__pyx_self, PyObject *__py return __pyx_r; } -static PyObject *__pyx_pf_3gvt_40writeimage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyObject *__pyx_v_output) { +static PyObject *__pyx_pf_3gvt_42writeimage(CYTHON_UNUSED PyObject *__pyx_self, PyObject *__pyx_v_name, PyObject *__pyx_v_output) { PyObject *__pyx_r = NULL; __Pyx_RefNannyDeclarations PyObject *__pyx_t_1 = NULL; @@ -5029,12 +5381,12 @@ static PyObject *__pyx_pf_3gvt_40writeimage(CYTHON_UNUSED PyObject *__pyx_self, std::string __pyx_t_5; __Pyx_RefNannySetupContext("writeimage", 0); - /* "gvt.pyx":127 + /* "gvt.pyx":131 * * def writeimage(str name, str output): * _writeimage(name.encode(),output.encode()) # <<<<<<<<<<<<<< */ - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5047,16 +5399,16 @@ static PyObject *__pyx_pf_3gvt_40writeimage(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_4 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 131, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_output, __pyx_n_s_encode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 131, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_2); __pyx_t_3 = NULL; if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) { @@ -5069,18 +5421,18 @@ static PyObject *__pyx_pf_3gvt_40writeimage(CYTHON_UNUSED PyObject *__pyx_self, } } if (__pyx_t_3) { - __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error) __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; } else { - __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_1 = __Pyx_PyObject_CallNoArg(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 131, __pyx_L1_error) } __Pyx_GOTREF(__pyx_t_1); __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; - __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 127, __pyx_L1_error) + __pyx_t_5 = __pyx_convert_string_from_py_std__in_string(__pyx_t_1); if (unlikely(PyErr_Occurred())) __PYX_ERR(0, 131, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; writeimage(__pyx_t_4, __pyx_t_5); - /* "gvt.pyx":126 + /* "gvt.pyx":130 * _render(name.encode()) * * def writeimage(str name, str output): # <<<<<<<<<<<<<< @@ -5102,7 +5454,7 @@ static PyObject *__pyx_pf_3gvt_40writeimage(CYTHON_UNUSED PyObject *__pyx_self, return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":197 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":197 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -5149,7 +5501,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_GIVEREF(__pyx_v_info->obj); } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":203 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":203 * # of flags * * if info == NULL: return # <<<<<<<<<<<<<< @@ -5162,7 +5514,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L0; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":206 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":206 * * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -5171,7 +5523,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_endian_detector = 1; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":207 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":207 * cdef int copy_shape, i, ndim * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -5180,7 +5532,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":209 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":209 * cdef bint little_endian = ((&endian_detector)[0] != 0) * * ndim = PyArray_NDIM(self) # <<<<<<<<<<<<<< @@ -5189,7 +5541,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_ndim = PyArray_NDIM(__pyx_v_self); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":211 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -5199,7 +5551,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":212 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":212 * * if sizeof(npy_intp) != sizeof(Py_ssize_t): * copy_shape = 1 # <<<<<<<<<<<<<< @@ -5208,7 +5560,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_copy_shape = 1; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":211 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":211 * ndim = PyArray_NDIM(self) * * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -5218,7 +5570,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L4; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":214 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":214 * copy_shape = 1 * else: * copy_shape = 0 # <<<<<<<<<<<<<< @@ -5230,7 +5582,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L4:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -5244,7 +5596,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L6_bool_binop_done; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":217 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":217 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -5255,7 +5607,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L6_bool_binop_done:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -5264,7 +5616,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":218 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -5277,7 +5629,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 218, __pyx_L1_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":216 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":216 * copy_shape = 0 * * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -5286,7 +5638,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -5300,7 +5652,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L9_bool_binop_done; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":221 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":221 * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): # <<<<<<<<<<<<<< @@ -5311,7 +5663,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L9_bool_binop_done:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -5320,7 +5672,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":222 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -5333,7 +5685,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 222, __pyx_L1_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":220 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":220 * raise ValueError(u"ndarray is not C contiguous") * * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) # <<<<<<<<<<<<<< @@ -5342,7 +5694,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":224 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":224 * raise ValueError(u"ndarray is not Fortran contiguous") * * info.buf = PyArray_DATA(self) # <<<<<<<<<<<<<< @@ -5351,7 +5703,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->buf = PyArray_DATA(__pyx_v_self); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":225 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":225 * * info.buf = PyArray_DATA(self) * info.ndim = ndim # <<<<<<<<<<<<<< @@ -5360,7 +5712,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->ndim = __pyx_v_ndim; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":226 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -5370,7 +5722,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = (__pyx_v_copy_shape != 0); if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":229 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":229 * # Allocate new buffer for strides and shape info. * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) # <<<<<<<<<<<<<< @@ -5379,7 +5731,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->strides = ((Py_ssize_t *)malloc((((sizeof(Py_ssize_t)) * ((size_t)__pyx_v_ndim)) * 2))); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":230 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":230 * # This is allocated as one block, strides first. * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim # <<<<<<<<<<<<<< @@ -5388,7 +5740,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->shape = (__pyx_v_info->strides + __pyx_v_ndim); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":231 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":231 * info.strides = stdlib.malloc(sizeof(Py_ssize_t) * ndim * 2) * info.shape = info.strides + ndim * for i in range(ndim): # <<<<<<<<<<<<<< @@ -5399,7 +5751,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P for (__pyx_t_5 = 0; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) { __pyx_v_i = __pyx_t_5; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":232 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":232 * info.shape = info.strides + ndim * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] # <<<<<<<<<<<<<< @@ -5408,7 +5760,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->strides[__pyx_v_i]) = (PyArray_STRIDES(__pyx_v_self)[__pyx_v_i]); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":233 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":233 * for i in range(ndim): * info.strides[i] = PyArray_STRIDES(self)[i] * info.shape[i] = PyArray_DIMS(self)[i] # <<<<<<<<<<<<<< @@ -5418,7 +5770,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_info->shape[__pyx_v_i]) = (PyArray_DIMS(__pyx_v_self)[__pyx_v_i]); } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":226 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":226 * info.buf = PyArray_DATA(self) * info.ndim = ndim * if copy_shape: # <<<<<<<<<<<<<< @@ -5428,7 +5780,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L11; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":235 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":235 * info.shape[i] = PyArray_DIMS(self)[i] * else: * info.strides = PyArray_STRIDES(self) # <<<<<<<<<<<<<< @@ -5438,7 +5790,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->strides = ((Py_ssize_t *)PyArray_STRIDES(__pyx_v_self)); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":236 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":236 * else: * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) # <<<<<<<<<<<<<< @@ -5449,7 +5801,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L11:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":237 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":237 * info.strides = PyArray_STRIDES(self) * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL # <<<<<<<<<<<<<< @@ -5458,7 +5810,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->suboffsets = NULL; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":238 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":238 * info.shape = PyArray_DIMS(self) * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) # <<<<<<<<<<<<<< @@ -5467,7 +5819,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->itemsize = PyArray_ITEMSIZE(__pyx_v_self); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":239 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":239 * info.suboffsets = NULL * info.itemsize = PyArray_ITEMSIZE(self) * info.readonly = not PyArray_ISWRITEABLE(self) # <<<<<<<<<<<<<< @@ -5476,7 +5828,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->readonly = (!(PyArray_ISWRITEABLE(__pyx_v_self) != 0)); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":242 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":242 * * cdef int t * cdef char* f = NULL # <<<<<<<<<<<<<< @@ -5485,7 +5837,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_f = NULL; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":243 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":243 * cdef int t * cdef char* f = NULL * cdef dtype descr = self.descr # <<<<<<<<<<<<<< @@ -5497,7 +5849,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_descr = ((PyArray_Descr *)__pyx_t_3); __pyx_t_3 = 0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":246 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":246 * cdef int offset * * cdef bint hasfields = PyDataType_HASFIELDS(descr) # <<<<<<<<<<<<<< @@ -5506,7 +5858,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_hasfields = PyDataType_HASFIELDS(__pyx_v_descr); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":248 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -5524,7 +5876,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_L15_bool_binop_done:; if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":250 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":250 * if not hasfields and not copy_shape: * # do not call releasebuffer * info.obj = None # <<<<<<<<<<<<<< @@ -5537,7 +5889,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_v_info->obj); __pyx_v_info->obj = Py_None; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":248 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":248 * cdef bint hasfields = PyDataType_HASFIELDS(descr) * * if not hasfields and not copy_shape: # <<<<<<<<<<<<<< @@ -5547,7 +5899,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P goto __pyx_L14; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":253 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":253 * else: * # need to call releasebuffer * info.obj = self # <<<<<<<<<<<<<< @@ -5563,7 +5915,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L14:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":255 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -5573,7 +5925,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = ((!(__pyx_v_hasfields != 0)) != 0); if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":256 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":256 * * if not hasfields: * t = descr.type_num # <<<<<<<<<<<<<< @@ -5583,7 +5935,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_4 = __pyx_v_descr->type_num; __pyx_v_t = __pyx_t_4; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -5603,7 +5955,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P } __pyx_L20_next_or:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":258 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":258 * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -5620,7 +5972,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_1 = __pyx_t_2; __pyx_L19_bool_binop_done:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -5629,7 +5981,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":259 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -5642,7 +5994,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 259, __pyx_L1_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":257 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":257 * if not hasfields: * t = descr.type_num * if ((descr.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -5651,7 +6003,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":260 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":260 * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" # <<<<<<<<<<<<<< @@ -5663,7 +6015,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"b"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":261 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":261 * raise ValueError(u"Non-native byte order not supported") * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" # <<<<<<<<<<<<<< @@ -5674,7 +6026,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"B"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":262 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":262 * if t == NPY_BYTE: f = "b" * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" # <<<<<<<<<<<<<< @@ -5685,7 +6037,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"h"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":263 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":263 * elif t == NPY_UBYTE: f = "B" * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" # <<<<<<<<<<<<<< @@ -5696,7 +6048,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"H"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":264 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":264 * elif t == NPY_SHORT: f = "h" * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" # <<<<<<<<<<<<<< @@ -5707,7 +6059,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"i"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":265 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":265 * elif t == NPY_USHORT: f = "H" * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" # <<<<<<<<<<<<<< @@ -5718,7 +6070,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"I"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":266 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":266 * elif t == NPY_INT: f = "i" * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" # <<<<<<<<<<<<<< @@ -5729,7 +6081,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"l"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":267 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":267 * elif t == NPY_UINT: f = "I" * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" # <<<<<<<<<<<<<< @@ -5740,7 +6092,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"L"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":268 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":268 * elif t == NPY_LONG: f = "l" * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" # <<<<<<<<<<<<<< @@ -5751,7 +6103,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"q"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":269 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":269 * elif t == NPY_ULONG: f = "L" * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" # <<<<<<<<<<<<<< @@ -5762,7 +6114,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Q"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":270 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":270 * elif t == NPY_LONGLONG: f = "q" * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" # <<<<<<<<<<<<<< @@ -5773,7 +6125,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"f"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":271 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":271 * elif t == NPY_ULONGLONG: f = "Q" * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" # <<<<<<<<<<<<<< @@ -5784,7 +6136,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"d"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":272 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":272 * elif t == NPY_FLOAT: f = "f" * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" # <<<<<<<<<<<<<< @@ -5795,7 +6147,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"g"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":273 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":273 * elif t == NPY_DOUBLE: f = "d" * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" # <<<<<<<<<<<<<< @@ -5806,7 +6158,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zf"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":274 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":274 * elif t == NPY_LONGDOUBLE: f = "g" * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" # <<<<<<<<<<<<<< @@ -5817,7 +6169,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zd"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":275 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":275 * elif t == NPY_CFLOAT: f = "Zf" * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" # <<<<<<<<<<<<<< @@ -5828,7 +6180,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_v_f = ((char *)"Zg"); break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":276 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":276 * elif t == NPY_CDOUBLE: f = "Zd" * elif t == NPY_CLONGDOUBLE: f = "Zg" * elif t == NPY_OBJECT: f = "O" # <<<<<<<<<<<<<< @@ -5840,7 +6192,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; default: - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":278 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":278 * elif t == NPY_OBJECT: f = "O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -5866,7 +6218,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P break; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":279 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":279 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f # <<<<<<<<<<<<<< @@ -5875,7 +6227,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_info->format = __pyx_v_f; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":280 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":280 * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * info.format = f * return # <<<<<<<<<<<<<< @@ -5885,7 +6237,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_r = 0; goto __pyx_L0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":255 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":255 * info.obj = self * * if not hasfields: # <<<<<<<<<<<<<< @@ -5894,7 +6246,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":282 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":282 * return * else: * info.format = stdlib.malloc(_buffer_format_string_len) # <<<<<<<<<<<<<< @@ -5904,7 +6256,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P /*else*/ { __pyx_v_info->format = ((char *)malloc(0xFF)); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":283 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":283 * else: * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment # <<<<<<<<<<<<<< @@ -5913,7 +6265,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ (__pyx_v_info->format[0]) = '^'; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":284 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":284 * info.format = stdlib.malloc(_buffer_format_string_len) * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 # <<<<<<<<<<<<<< @@ -5922,7 +6274,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P */ __pyx_v_offset = 0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":285 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":285 * info.format[0] = c'^' # Native data types, manual alignment * offset = 0 * f = _util_dtypestring(descr, info.format + 1, # <<<<<<<<<<<<<< @@ -5932,7 +6284,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P __pyx_t_7 = __pyx_f_5numpy__util_dtypestring(__pyx_v_descr, (__pyx_v_info->format + 1), (__pyx_v_info->format + 0xFF), (&__pyx_v_offset)); if (unlikely(__pyx_t_7 == NULL)) __PYX_ERR(1, 285, __pyx_L1_error) __pyx_v_f = __pyx_t_7; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":288 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":288 * info.format + _buffer_format_string_len, * &offset) * f[0] = c'\0' # Terminate format string # <<<<<<<<<<<<<< @@ -5942,7 +6294,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P (__pyx_v_f[0]) = '\x00'; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":197 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":197 * # experimental exception made for __getbuffer__ and __releasebuffer__ * # -- the details of this may change. * def __getbuffer__(ndarray self, Py_buffer* info, int flags): # <<<<<<<<<<<<<< @@ -5974,7 +6326,7 @@ static int __pyx_pf_5numpy_7ndarray___getbuffer__(PyArrayObject *__pyx_v_self, P return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":290 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -5998,7 +6350,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s int __pyx_t_1; __Pyx_RefNannySetupContext("__releasebuffer__", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -6008,7 +6360,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (PyArray_HASFIELDS(__pyx_v_self) != 0); if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":292 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":292 * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): * stdlib.free(info.format) # <<<<<<<<<<<<<< @@ -6017,7 +6369,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ free(__pyx_v_info->format); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":291 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":291 * * def __releasebuffer__(ndarray self, Py_buffer* info): * if PyArray_HASFIELDS(self): # <<<<<<<<<<<<<< @@ -6026,7 +6378,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -6036,7 +6388,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __pyx_t_1 = (((sizeof(npy_intp)) != (sizeof(Py_ssize_t))) != 0); if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":294 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":294 * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): * stdlib.free(info.strides) # <<<<<<<<<<<<<< @@ -6045,7 +6397,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ free(__pyx_v_info->strides); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":293 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":293 * if PyArray_HASFIELDS(self): * stdlib.free(info.format) * if sizeof(npy_intp) != sizeof(Py_ssize_t): # <<<<<<<<<<<<<< @@ -6054,7 +6406,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":290 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":290 * f[0] = c'\0' # Terminate format string * * def __releasebuffer__(ndarray self, Py_buffer* info): # <<<<<<<<<<<<<< @@ -6066,7 +6418,7 @@ static void __pyx_pf_5numpy_7ndarray_2__releasebuffer__(PyArrayObject *__pyx_v_s __Pyx_RefNannyFinishContext(); } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":770 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":770 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -6080,7 +6432,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew1", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":771 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":771 * * cdef inline object PyArray_MultiIterNew1(a): * return PyArray_MultiIterNew(1, a) # <<<<<<<<<<<<<< @@ -6094,7 +6446,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":770 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":770 * ctypedef npy_cdouble complex_t * * cdef inline object PyArray_MultiIterNew1(a): # <<<<<<<<<<<<<< @@ -6113,7 +6465,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew1(PyObject *__ return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":773 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":773 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -6127,7 +6479,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew2", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":774 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":774 * * cdef inline object PyArray_MultiIterNew2(a, b): * return PyArray_MultiIterNew(2, a, b) # <<<<<<<<<<<<<< @@ -6141,7 +6493,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":773 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":773 * return PyArray_MultiIterNew(1, a) * * cdef inline object PyArray_MultiIterNew2(a, b): # <<<<<<<<<<<<<< @@ -6160,7 +6512,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew2(PyObject *__ return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":776 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -6174,7 +6526,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew3", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":777 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":777 * * cdef inline object PyArray_MultiIterNew3(a, b, c): * return PyArray_MultiIterNew(3, a, b, c) # <<<<<<<<<<<<<< @@ -6188,7 +6540,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":776 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":776 * return PyArray_MultiIterNew(2, a, b) * * cdef inline object PyArray_MultiIterNew3(a, b, c): # <<<<<<<<<<<<<< @@ -6207,7 +6559,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew3(PyObject *__ return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":779 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -6221,7 +6573,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew4", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":780 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":780 * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): * return PyArray_MultiIterNew(4, a, b, c, d) # <<<<<<<<<<<<<< @@ -6235,7 +6587,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":779 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":779 * return PyArray_MultiIterNew(3, a, b, c) * * cdef inline object PyArray_MultiIterNew4(a, b, c, d): # <<<<<<<<<<<<<< @@ -6254,7 +6606,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew4(PyObject *__ return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":782 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":782 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -6268,7 +6620,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ PyObject *__pyx_t_1 = NULL; __Pyx_RefNannySetupContext("PyArray_MultiIterNew5", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":783 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":783 * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): * return PyArray_MultiIterNew(5, a, b, c, d, e) # <<<<<<<<<<<<<< @@ -6282,7 +6634,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ __pyx_t_1 = 0; goto __pyx_L0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":782 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":782 * return PyArray_MultiIterNew(4, a, b, c, d) * * cdef inline object PyArray_MultiIterNew5(a, b, c, d, e): # <<<<<<<<<<<<<< @@ -6301,7 +6653,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_PyArray_MultiIterNew5(PyObject *__ return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":785 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -6330,7 +6682,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx char *__pyx_t_9; __Pyx_RefNannySetupContext("_util_dtypestring", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":790 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":790 * * cdef dtype child * cdef int endian_detector = 1 # <<<<<<<<<<<<<< @@ -6339,7 +6691,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_endian_detector = 1; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":791 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":791 * cdef dtype child * cdef int endian_detector = 1 * cdef bint little_endian = ((&endian_detector)[0] != 0) # <<<<<<<<<<<<<< @@ -6348,7 +6700,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_little_endian = ((((char *)(&__pyx_v_endian_detector))[0]) != 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -6371,7 +6723,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_childname, __pyx_t_3); __pyx_t_3 = 0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":795 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":795 * * for childname in descr.names: * fields = descr.fields[childname] # <<<<<<<<<<<<<< @@ -6388,7 +6740,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_fields, ((PyObject*)__pyx_t_3)); __pyx_t_3 = 0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":796 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":796 * for childname in descr.names: * fields = descr.fields[childname] * child, new_offset = fields # <<<<<<<<<<<<<< @@ -6427,7 +6779,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_new_offset, __pyx_t_4); __pyx_t_4 = 0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -6444,7 +6796,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((((__pyx_v_end - __pyx_v_f) - ((int)__pyx_t_5)) < 15) != 0); if (__pyx_t_6) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -6457,7 +6809,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 799, __pyx_L1_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":798 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":798 * child, new_offset = fields * * if (end - f) - (new_offset - offset[0]) < 15: # <<<<<<<<<<<<<< @@ -6466,7 +6818,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -6486,7 +6838,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L8_next_or:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":802 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":802 * * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): # <<<<<<<<<<<<<< @@ -6503,7 +6855,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = __pyx_t_7; __pyx_L7_bool_binop_done:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -6512,7 +6864,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ if (__pyx_t_6) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -6525,7 +6877,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __PYX_ERR(1, 803, __pyx_L1_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":801 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":801 * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") * * if ((child.byteorder == c'>' and little_endian) or # <<<<<<<<<<<<<< @@ -6534,7 +6886,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":813 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":813 * * # Output padding bytes * while offset[0] < new_offset: # <<<<<<<<<<<<<< @@ -6550,7 +6902,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; if (!__pyx_t_6) break; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":814 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":814 * # Output padding bytes * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte # <<<<<<<<<<<<<< @@ -6559,7 +6911,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ (__pyx_v_f[0]) = 0x78; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":815 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":815 * while offset[0] < new_offset: * f[0] = 120 # "x"; pad byte * f += 1 # <<<<<<<<<<<<<< @@ -6568,7 +6920,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":816 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":816 * f[0] = 120 # "x"; pad byte * f += 1 * offset[0] += 1 # <<<<<<<<<<<<<< @@ -6579,7 +6931,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + 1); } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":818 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":818 * offset[0] += 1 * * offset[0] += child.itemsize # <<<<<<<<<<<<<< @@ -6589,7 +6941,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_8 = 0; (__pyx_v_offset[__pyx_t_8]) = ((__pyx_v_offset[__pyx_t_8]) + __pyx_v_child->elsize); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -6599,7 +6951,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = ((!(PyDataType_HASFIELDS(__pyx_v_child) != 0)) != 0); if (__pyx_t_6) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":821 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":821 * * if not PyDataType_HASFIELDS(child): * t = child.type_num # <<<<<<<<<<<<<< @@ -6611,7 +6963,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_XDECREF_SET(__pyx_v_t, __pyx_t_4); __pyx_t_4 = 0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -6621,7 +6973,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_t_6 = (((__pyx_v_end - __pyx_v_f) < 5) != 0); if (__pyx_t_6) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -6634,7 +6986,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0; __PYX_ERR(1, 823, __pyx_L1_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":822 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":822 * if not PyDataType_HASFIELDS(child): * t = child.type_num * if end - f < 5: # <<<<<<<<<<<<<< @@ -6643,7 +6995,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":826 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":826 * * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" # <<<<<<<<<<<<<< @@ -6661,7 +7013,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":827 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":827 * # Until ticket #99 is fixed, use integers to avoid warnings * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" # <<<<<<<<<<<<<< @@ -6679,7 +7031,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":828 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":828 * if t == NPY_BYTE: f[0] = 98 #"b" * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" # <<<<<<<<<<<<<< @@ -6697,7 +7049,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":829 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":829 * elif t == NPY_UBYTE: f[0] = 66 #"B" * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" # <<<<<<<<<<<<<< @@ -6715,7 +7067,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":830 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":830 * elif t == NPY_SHORT: f[0] = 104 #"h" * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" # <<<<<<<<<<<<<< @@ -6733,7 +7085,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":831 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":831 * elif t == NPY_USHORT: f[0] = 72 #"H" * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" # <<<<<<<<<<<<<< @@ -6751,7 +7103,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":832 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":832 * elif t == NPY_INT: f[0] = 105 #"i" * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" # <<<<<<<<<<<<<< @@ -6769,7 +7121,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":833 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":833 * elif t == NPY_UINT: f[0] = 73 #"I" * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" # <<<<<<<<<<<<<< @@ -6787,7 +7139,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":834 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":834 * elif t == NPY_LONG: f[0] = 108 #"l" * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" # <<<<<<<<<<<<<< @@ -6805,7 +7157,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":835 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":835 * elif t == NPY_ULONG: f[0] = 76 #"L" * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" # <<<<<<<<<<<<<< @@ -6823,7 +7175,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":836 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":836 * elif t == NPY_LONGLONG: f[0] = 113 #"q" * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" # <<<<<<<<<<<<<< @@ -6841,7 +7193,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":837 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":837 * elif t == NPY_ULONGLONG: f[0] = 81 #"Q" * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" # <<<<<<<<<<<<<< @@ -6859,7 +7211,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":838 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":838 * elif t == NPY_FLOAT: f[0] = 102 #"f" * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" # <<<<<<<<<<<<<< @@ -6877,7 +7229,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":839 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":839 * elif t == NPY_DOUBLE: f[0] = 100 #"d" * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf # <<<<<<<<<<<<<< @@ -6897,7 +7249,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":840 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":840 * elif t == NPY_LONGDOUBLE: f[0] = 103 #"g" * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd # <<<<<<<<<<<<<< @@ -6917,7 +7269,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":841 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":841 * elif t == NPY_CFLOAT: f[0] = 90; f[1] = 102; f += 1 # Zf * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg # <<<<<<<<<<<<<< @@ -6937,7 +7289,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":842 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":842 * elif t == NPY_CDOUBLE: f[0] = 90; f[1] = 100; f += 1 # Zd * elif t == NPY_CLONGDOUBLE: f[0] = 90; f[1] = 103; f += 1 # Zg * elif t == NPY_OBJECT: f[0] = 79 #"O" # <<<<<<<<<<<<<< @@ -6955,7 +7307,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L15; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":844 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":844 * elif t == NPY_OBJECT: f[0] = 79 #"O" * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) # <<<<<<<<<<<<<< @@ -6979,7 +7331,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L15:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":845 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":845 * else: * raise ValueError(u"unknown dtype code in numpy.pxd (%d)" % t) * f += 1 # <<<<<<<<<<<<<< @@ -6988,7 +7340,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx */ __pyx_v_f = (__pyx_v_f + 1); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":820 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":820 * offset[0] += child.itemsize * * if not PyDataType_HASFIELDS(child): # <<<<<<<<<<<<<< @@ -6998,7 +7350,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx goto __pyx_L13; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":849 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":849 * # Cython ignores struct boundary information ("T{...}"), * # so don't output it * f = _util_dtypestring(child, f, end, offset) # <<<<<<<<<<<<<< @@ -7011,7 +7363,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __pyx_L13:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":794 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":794 * cdef tuple fields * * for childname in descr.names: # <<<<<<<<<<<<<< @@ -7021,7 +7373,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx } __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":850 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":850 * # so don't output it * f = _util_dtypestring(child, f, end, offset) * return f # <<<<<<<<<<<<<< @@ -7031,7 +7383,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx __pyx_r = __pyx_v_f; goto __pyx_L0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":785 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":785 * return PyArray_MultiIterNew(5, a, b, c, d, e) * * cdef inline char* _util_dtypestring(dtype descr, char* f, char* end, int* offset) except NULL: # <<<<<<<<<<<<<< @@ -7056,7 +7408,7 @@ static CYTHON_INLINE char *__pyx_f_5numpy__util_dtypestring(PyArray_Descr *__pyx return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":966 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -7071,7 +7423,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a int __pyx_t_2; __Pyx_RefNannySetupContext("set_array_base", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -7082,7 +7434,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __pyx_t_2 = (__pyx_t_1 != 0); if (__pyx_t_2) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":969 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":969 * cdef PyObject* baseptr * if base is None: * baseptr = NULL # <<<<<<<<<<<<<< @@ -7091,7 +7443,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_baseptr = NULL; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":968 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":968 * cdef inline void set_array_base(ndarray arr, object base): * cdef PyObject* baseptr * if base is None: # <<<<<<<<<<<<<< @@ -7101,7 +7453,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a goto __pyx_L3; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":971 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":971 * baseptr = NULL * else: * Py_INCREF(base) # important to do this before decref below! # <<<<<<<<<<<<<< @@ -7111,7 +7463,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a /*else*/ { Py_INCREF(__pyx_v_base); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":972 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":972 * else: * Py_INCREF(base) # important to do this before decref below! * baseptr = base # <<<<<<<<<<<<<< @@ -7122,7 +7474,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a } __pyx_L3:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":973 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":973 * Py_INCREF(base) # important to do this before decref below! * baseptr = base * Py_XDECREF(arr.base) # <<<<<<<<<<<<<< @@ -7131,7 +7483,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ Py_XDECREF(__pyx_v_arr->base); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":974 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":974 * baseptr = base * Py_XDECREF(arr.base) * arr.base = baseptr # <<<<<<<<<<<<<< @@ -7140,7 +7492,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a */ __pyx_v_arr->base = __pyx_v_baseptr; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":966 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":966 * * * cdef inline void set_array_base(ndarray arr, object base): # <<<<<<<<<<<<<< @@ -7152,7 +7504,7 @@ static CYTHON_INLINE void __pyx_f_5numpy_set_array_base(PyArrayObject *__pyx_v_a __Pyx_RefNannyFinishContext(); } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":976 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -7166,7 +7518,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py int __pyx_t_1; __Pyx_RefNannySetupContext("get_array_base", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -7176,7 +7528,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_t_1 = ((__pyx_v_arr->base == NULL) != 0); if (__pyx_t_1) { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":978 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":978 * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: * return None # <<<<<<<<<<<<<< @@ -7188,7 +7540,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py __pyx_r = Py_None; goto __pyx_L0; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":977 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":977 * * cdef inline object get_array_base(ndarray arr): * if arr.base is NULL: # <<<<<<<<<<<<<< @@ -7197,7 +7549,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py */ } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":980 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":980 * return None * else: * return arr.base # <<<<<<<<<<<<<< @@ -7211,7 +7563,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py goto __pyx_L0; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":976 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":976 * arr.base = baseptr * * cdef inline object get_array_base(ndarray arr): # <<<<<<<<<<<<<< @@ -7226,7 +7578,7 @@ static CYTHON_INLINE PyObject *__pyx_f_5numpy_get_array_base(PyArrayObject *__py return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":985 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":985 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -7247,7 +7599,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_array", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -7263,7 +7615,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":987 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":987 * cdef inline int import_array() except -1: * try: * _import_array() # <<<<<<<<<<<<<< @@ -7272,7 +7624,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { */ __pyx_t_4 = _import_array(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 987, __pyx_L3_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -7283,11 +7635,11 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L10_try_end; + goto __pyx_L8_try_end; __pyx_L3_error:; __Pyx_PyThreadState_assign - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":988 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":988 * try: * _import_array() * except Exception: # <<<<<<<<<<<<<< @@ -7302,7 +7654,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":989 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":989 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -7318,7 +7670,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":986 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":986 * # Cython code. * cdef inline int import_array() except -1: * try: # <<<<<<<<<<<<<< @@ -7331,10 +7683,10 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; - __pyx_L10_try_end:; + __pyx_L8_try_end:; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":985 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":985 * # Versions of the import_* functions which are more suitable for * # Cython code. * cdef inline int import_array() except -1: # <<<<<<<<<<<<<< @@ -7357,7 +7709,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_array(void) { return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":991 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":991 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -7378,7 +7730,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_umath", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -7394,7 +7746,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":993 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":993 * cdef inline int import_umath() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -7403,7 +7755,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 993, __pyx_L3_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -7414,11 +7766,11 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L10_try_end; + goto __pyx_L8_try_end; __pyx_L3_error:; __Pyx_PyThreadState_assign - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":994 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":994 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -7433,7 +7785,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":995 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":995 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -7449,7 +7801,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":992 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":992 * * cdef inline int import_umath() except -1: * try: # <<<<<<<<<<<<<< @@ -7462,10 +7814,10 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; - __pyx_L10_try_end:; + __pyx_L8_try_end:; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":991 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":991 * raise ImportError("numpy.core.multiarray failed to import") * * cdef inline int import_umath() except -1: # <<<<<<<<<<<<<< @@ -7488,7 +7840,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_umath(void) { return __pyx_r; } -/* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":997 +/* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -7509,7 +7861,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { PyObject *__pyx_t_8 = NULL; __Pyx_RefNannySetupContext("import_ufunc", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -7525,7 +7877,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGOTREF(__pyx_t_3); /*try:*/ { - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":999 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":999 * cdef inline int import_ufunc() except -1: * try: * _import_umath() # <<<<<<<<<<<<<< @@ -7534,7 +7886,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { */ __pyx_t_4 = _import_umath(); if (unlikely(__pyx_t_4 == -1)) __PYX_ERR(1, 999, __pyx_L3_error) - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -7545,11 +7897,11 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0; - goto __pyx_L10_try_end; + goto __pyx_L8_try_end; __pyx_L3_error:; __Pyx_PyThreadState_assign - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1000 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1000 * try: * _import_umath() * except Exception: # <<<<<<<<<<<<<< @@ -7563,7 +7915,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_GOTREF(__pyx_t_6); __Pyx_GOTREF(__pyx_t_7); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1001 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -7577,7 +7929,7 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { goto __pyx_L5_except_error; __pyx_L5_except_error:; - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":998 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":998 * * cdef inline int import_ufunc() except -1: * try: # <<<<<<<<<<<<<< @@ -7590,10 +7942,10 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { __Pyx_XGIVEREF(__pyx_t_3); __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3); goto __pyx_L1_error; - __pyx_L10_try_end:; + __pyx_L8_try_end:; } - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":997 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":997 * raise ImportError("numpy.core.umath failed to import") * * cdef inline int import_ufunc() except -1: # <<<<<<<<<<<<<< @@ -7621,21 +7973,21 @@ static CYTHON_INLINE int __pyx_f_5numpy_import_ufunc(void) { * @cname("__pyx_convert_string_from_py_std__in_string") * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: # <<<<<<<<<<<<<< * cdef Py_ssize_t length - * cdef char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) */ static std::string __pyx_convert_string_from_py_std__in_string(PyObject *__pyx_v_o) { Py_ssize_t __pyx_v_length; - char *__pyx_v_data; + char const *__pyx_v_data; std::string __pyx_r; __Pyx_RefNannyDeclarations - char *__pyx_t_1; + char const *__pyx_t_1; __Pyx_RefNannySetupContext("__pyx_convert_string_from_py_std__in_string", 0); /* "string.from_py":15 * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: * cdef Py_ssize_t length - * cdef char* data = __Pyx_PyObject_AsStringAndSize(o, &length) # <<<<<<<<<<<<<< + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) # <<<<<<<<<<<<<< * return string(data, length) * */ @@ -7644,7 +7996,7 @@ static std::string __pyx_convert_string_from_py_std__in_string(PyObject *__pyx_v /* "string.from_py":16 * cdef Py_ssize_t length - * cdef char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) * return string(data, length) # <<<<<<<<<<<<<< * * @@ -7657,12 +8009,13 @@ static std::string __pyx_convert_string_from_py_std__in_string(PyObject *__pyx_v * @cname("__pyx_convert_string_from_py_std__in_string") * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: # <<<<<<<<<<<<<< * cdef Py_ssize_t length - * cdef char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) */ /* function exit code */ __pyx_L1_error:; __Pyx_AddTraceback("string.from_py.__pyx_convert_string_from_py_std__in_string", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_pretend_to_initialize(&__pyx_r); __pyx_L0:; __Pyx_RefNannyFinishContext(); return __pyx_r; @@ -7711,11 +8064,14 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_addPointLight, __pyx_k_addPointLight, sizeof(__pyx_k_addPointLight), 0, 0, 1, 1}, {&__pyx_n_s_addRenderer, __pyx_k_addRenderer, sizeof(__pyx_k_addRenderer), 0, 0, 1, 1}, {&__pyx_n_s_alpha, __pyx_k_alpha, sizeof(__pyx_k_alpha), 0, 0, 1, 1}, + {&__pyx_n_s_cline_in_traceback, __pyx_k_cline_in_traceback, sizeof(__pyx_k_cline_in_traceback), 0, 0, 1, 1}, {&__pyx_n_s_color, __pyx_k_color, sizeof(__pyx_k_color), 0, 0, 1, 1}, {&__pyx_n_s_compute_normal, __pyx_k_compute_normal, sizeof(__pyx_k_compute_normal), 0, 0, 1, 1}, {&__pyx_n_s_createMesh, __pyx_k_createMesh, sizeof(__pyx_k_createMesh), 0, 0, 1, 1}, {&__pyx_n_s_ctypes, __pyx_k_ctypes, sizeof(__pyx_k_ctypes), 0, 0, 1, 1}, {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1}, + {&__pyx_n_s_dirname, __pyx_k_dirname, sizeof(__pyx_k_dirname), 0, 0, 1, 1}, + {&__pyx_n_s_dist, __pyx_k_dist, sizeof(__pyx_k_dist), 0, 0, 1, 1}, {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1}, {&__pyx_n_s_finishMesh, __pyx_k_finishMesh, sizeof(__pyx_k_finishMesh), 0, 0, 1, 1}, {&__pyx_n_s_focus, __pyx_k_focus, sizeof(__pyx_k_focus), 0, 0, 1, 1}, @@ -7723,7 +8079,6 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_gvt, __pyx_k_gvt, sizeof(__pyx_k_gvt), 0, 0, 1, 1}, {&__pyx_n_s_gvtInit, __pyx_k_gvtInit, sizeof(__pyx_k_gvtInit), 0, 0, 1, 1}, {&__pyx_n_s_h, __pyx_k_h, sizeof(__pyx_k_h), 0, 0, 1, 1}, - {&__pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_k_home_jbarbosa_r_pygvt_src_gvt_g, sizeof(__pyx_k_home_jbarbosa_r_pygvt_src_gvt_g), 0, 0, 1, 0}, {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1}, {&__pyx_n_s_jitter, __pyx_k_jitter, sizeof(__pyx_k_jitter), 0, 0, 1, 1}, {&__pyx_n_s_kd, __pyx_k_kd, sizeof(__pyx_k_kd), 0, 0, 1, 1}, @@ -7747,10 +8102,12 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_path, __pyx_k_path, sizeof(__pyx_k_path), 0, 0, 1, 1}, {&__pyx_n_s_pos, __pyx_k_pos, sizeof(__pyx_k_pos), 0, 0, 1, 1}, {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1}, + {&__pyx_n_s_readPly, __pyx_k_readPly, sizeof(__pyx_k_readPly), 0, 0, 1, 1}, {&__pyx_n_s_render, __pyx_k_render, sizeof(__pyx_k_render), 0, 0, 1, 1}, {&__pyx_n_s_samples, __pyx_k_samples, sizeof(__pyx_k_samples), 0, 0, 1, 1}, {&__pyx_n_s_schedule, __pyx_k_schedule, sizeof(__pyx_k_schedule), 0, 0, 1, 1}, {&__pyx_n_s_size, __pyx_k_size, sizeof(__pyx_k_size), 0, 0, 1, 1}, + {&__pyx_kp_s_src_gvt_gvt_pyx, __pyx_k_src_gvt_gvt_pyx, sizeof(__pyx_k_src_gvt_gvt_pyx), 0, 0, 1, 0}, {&__pyx_n_s_sys, __pyx_k_sys, sizeof(__pyx_k_sys), 0, 0, 1, 1}, {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1}, {&__pyx_n_s_triangles, __pyx_k_triangles, sizeof(__pyx_k_triangles), 0, 0, 1, 1}, @@ -7758,6 +8115,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = { {&__pyx_n_s_up, __pyx_k_up, sizeof(__pyx_k_up), 0, 0, 1, 1}, {&__pyx_n_s_vertices, __pyx_k_vertices, sizeof(__pyx_k_vertices), 0, 0, 1, 1}, {&__pyx_n_s_w, __pyx_k_w, sizeof(__pyx_k_w), 0, 0, 1, 1}, + {&__pyx_n_s_world_bounds, __pyx_k_world_bounds, sizeof(__pyx_k_world_bounds), 0, 0, 1, 1}, {&__pyx_n_s_writeimage, __pyx_k_writeimage, sizeof(__pyx_k_writeimage), 0, 0, 1, 1}, {0, 0, 0, 0, 0, 0, 0} }; @@ -7775,7 +8133,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_RefNannyDeclarations __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":218 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":218 * if ((flags & pybuf.PyBUF_C_CONTIGUOUS == pybuf.PyBUF_C_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_C_CONTIGUOUS)): * raise ValueError(u"ndarray is not C contiguous") # <<<<<<<<<<<<<< @@ -7786,7 +8144,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple_); __Pyx_GIVEREF(__pyx_tuple_); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":222 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":222 * if ((flags & pybuf.PyBUF_F_CONTIGUOUS == pybuf.PyBUF_F_CONTIGUOUS) * and not PyArray_CHKFLAGS(self, NPY_F_CONTIGUOUS)): * raise ValueError(u"ndarray is not Fortran contiguous") # <<<<<<<<<<<<<< @@ -7797,7 +8155,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__2); __Pyx_GIVEREF(__pyx_tuple__2); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":259 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":259 * if ((descr.byteorder == c'>' and little_endian) or * (descr.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -7808,7 +8166,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__3); __Pyx_GIVEREF(__pyx_tuple__3); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":799 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":799 * * if (end - f) - (new_offset - offset[0]) < 15: * raise RuntimeError(u"Format string allocated too short, see comment in numpy.pxd") # <<<<<<<<<<<<<< @@ -7819,7 +8177,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__4); __Pyx_GIVEREF(__pyx_tuple__4); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":803 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":803 * if ((child.byteorder == c'>' and little_endian) or * (child.byteorder == c'<' and not little_endian)): * raise ValueError(u"Non-native byte order not supported") # <<<<<<<<<<<<<< @@ -7830,7 +8188,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__5); __Pyx_GIVEREF(__pyx_tuple__5); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":823 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":823 * t = child.type_num * if end - f < 5: * raise RuntimeError(u"Format string allocated too short.") # <<<<<<<<<<<<<< @@ -7841,7 +8199,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__6); __Pyx_GIVEREF(__pyx_tuple__6); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":989 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":989 * _import_array() * except Exception: * raise ImportError("numpy.core.multiarray failed to import") # <<<<<<<<<<<<<< @@ -7852,7 +8210,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__7); __Pyx_GIVEREF(__pyx_tuple__7); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":995 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":995 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -7863,7 +8221,7 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__8); __Pyx_GIVEREF(__pyx_tuple__8); - /* "virtual/pygvt/lib/python3.4/site-packages/Cython/Includes/numpy/__init__.pxd":1001 + /* "../../../../anaconda3/envs/pygvt/lib/python3.6/site-packages/Cython/Includes/numpy/__init__.pxd":1001 * _import_umath() * except Exception: * raise ImportError("numpy.core.umath failed to import") # <<<<<<<<<<<<<< @@ -7872,253 +8230,265 @@ static int __Pyx_InitCachedConstants(void) { __Pyx_GOTREF(__pyx_tuple__9); __Pyx_GIVEREF(__pyx_tuple__9); - /* "gvt.pyx":44 + /* "gvt.pyx":45 * #void gvtInit(int &argc, char **&argv) * * def gvtInit(): # <<<<<<<<<<<<<< * # cdef char **c_argv * # c_argv = malloc(sizeof(char*) * len(sys.argv)) */ - __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_gvtInit, 44, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 44, __pyx_L1_error) + __pyx_codeobj__10 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_gvtInit, 45, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__10)) __PYX_ERR(0, 45, __pyx_L1_error) - /* "gvt.pyx":66 + /* "gvt.pyx":67 * # _gvtInit(argc,argv) * - * def createMesh(str name): # <<<<<<<<<<<<<< - * _createMesh(name.encode()) + * def readPly(str dirname, bool dist, np.ndarray[float, ndim=1, mode="c"] world_bounds): # <<<<<<<<<<<<<< + * _readPly(dirname.encode(), dist, world_bounds.data) * */ - __pyx_tuple__11 = PyTuple_Pack(1, __pyx_n_s_name); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 66, __pyx_L1_error) + __pyx_tuple__11 = PyTuple_Pack(3, __pyx_n_s_dirname, __pyx_n_s_dist, __pyx_n_s_world_bounds); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 67, __pyx_L1_error) __Pyx_GOTREF(__pyx_tuple__11); __Pyx_GIVEREF(__pyx_tuple__11); - __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_createMesh, 66, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 66, __pyx_L1_error) + __pyx_codeobj__12 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__11, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_readPly, 67, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__12)) __PYX_ERR(0, 67, __pyx_L1_error) + + /* "gvt.pyx":70 + * _readPly(dirname.encode(), dist, world_bounds.data) + * + * def createMesh(str name): # <<<<<<<<<<<<<< + * _createMesh(name.encode()) + * + */ + __pyx_tuple__13 = PyTuple_Pack(1, __pyx_n_s_name); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 70, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__13); + __Pyx_GIVEREF(__pyx_tuple__13); + __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_createMesh, 70, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 70, __pyx_L1_error) - /* "gvt.pyx":69 + /* "gvt.pyx":73 * _createMesh(name.encode()) * * def addMeshVertices(str name, int size, np.ndarray[float, ndim=1, mode="c"] vertices not None): # <<<<<<<<<<<<<< * _addMeshVertices(name.encode(),size, vertices.data) * */ - __pyx_tuple__13 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_size, __pyx_n_s_vertices); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(0, 69, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__13); - __Pyx_GIVEREF(__pyx_tuple__13); - __pyx_codeobj__14 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__13, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addMeshVertices, 69, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__14)) __PYX_ERR(0, 69, __pyx_L1_error) + __pyx_tuple__15 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_size, __pyx_n_s_vertices); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 73, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__15); + __Pyx_GIVEREF(__pyx_tuple__15); + __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addMeshVertices, 73, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 73, __pyx_L1_error) - /* "gvt.pyx":72 + /* "gvt.pyx":76 * _addMeshVertices(name.encode(),size, vertices.data) * * def addMeshTriangles(str name, unsigned n, np.ndarray[unsigned, ndim=1, mode="c"] triangles): # <<<<<<<<<<<<<< * _addMeshTriangles(name.encode(), n, triangles.data) * */ - __pyx_tuple__15 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_n, __pyx_n_s_triangles); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(0, 72, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__15); - __Pyx_GIVEREF(__pyx_tuple__15); - __pyx_codeobj__16 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__15, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addMeshTriangles, 72, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__16)) __PYX_ERR(0, 72, __pyx_L1_error) + __pyx_tuple__17 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_n, __pyx_n_s_triangles); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 76, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__17); + __Pyx_GIVEREF(__pyx_tuple__17); + __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addMeshTriangles, 76, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 76, __pyx_L1_error) - /* "gvt.pyx":75 + /* "gvt.pyx":79 * _addMeshTriangles(name.encode(), n, triangles.data) * * def addMeshFaceNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): # <<<<<<<<<<<<<< * _addMeshFaceNormals(name.encode(), n, normals.data) * */ - __pyx_tuple__17 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_n, __pyx_n_s_normals); if (unlikely(!__pyx_tuple__17)) __PYX_ERR(0, 75, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__17); - __Pyx_GIVEREF(__pyx_tuple__17); - __pyx_codeobj__18 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__17, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addMeshFaceNormals, 75, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__18)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_tuple__19 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_n, __pyx_n_s_normals); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 79, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__19); + __Pyx_GIVEREF(__pyx_tuple__19); + __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addMeshFaceNormals, 79, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 79, __pyx_L1_error) - /* "gvt.pyx":78 + /* "gvt.pyx":82 * _addMeshFaceNormals(name.encode(), n, normals.data) * * def addMeshVertexNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): # <<<<<<<<<<<<<< * _addMeshVertexNormals(name.encode(),n, normals.data) * */ - __pyx_tuple__19 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_n, __pyx_n_s_normals); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(0, 78, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__19); - __Pyx_GIVEREF(__pyx_tuple__19); - __pyx_codeobj__20 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__19, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addMeshVertexNormals, 78, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__20)) __PYX_ERR(0, 78, __pyx_L1_error) + __pyx_tuple__21 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_n, __pyx_n_s_normals); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 82, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__21); + __Pyx_GIVEREF(__pyx_tuple__21); + __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addMeshVertexNormals, 82, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 82, __pyx_L1_error) - /* "gvt.pyx":81 + /* "gvt.pyx":85 * _addMeshVertexNormals(name.encode(),n, normals.data) * * def finishMesh( str name, bool compute_normal = True): # <<<<<<<<<<<<<< * _finishMesh(name.encode(),compute_normal) * */ - __pyx_tuple__21 = PyTuple_Pack(2, __pyx_n_s_name, __pyx_n_s_compute_normal); if (unlikely(!__pyx_tuple__21)) __PYX_ERR(0, 81, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__21); - __Pyx_GIVEREF(__pyx_tuple__21); - __pyx_codeobj__22 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__21, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_finishMesh, 81, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__22)) __PYX_ERR(0, 81, __pyx_L1_error) + __pyx_tuple__23 = PyTuple_Pack(2, __pyx_n_s_name, __pyx_n_s_compute_normal); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 85, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__23); + __Pyx_GIVEREF(__pyx_tuple__23); + __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_finishMesh, 85, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 85, __pyx_L1_error) - /* "gvt.pyx":84 + /* "gvt.pyx":88 * _finishMesh(name.encode(),compute_normal) * * def addMeshMaterialLambert( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, float alpha): # <<<<<<<<<<<<<< * _addMeshMaterial(name.encode() ,mattype, kd.data, alpha) * */ - __pyx_tuple__23 = PyTuple_Pack(4, __pyx_n_s_name, __pyx_n_s_mattype, __pyx_n_s_kd, __pyx_n_s_alpha); if (unlikely(!__pyx_tuple__23)) __PYX_ERR(0, 84, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__23); - __Pyx_GIVEREF(__pyx_tuple__23); - __pyx_codeobj__24 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__23, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addMeshMaterialLambert, 84, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__24)) __PYX_ERR(0, 84, __pyx_L1_error) + __pyx_tuple__25 = PyTuple_Pack(4, __pyx_n_s_name, __pyx_n_s_mattype, __pyx_n_s_kd, __pyx_n_s_alpha); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 88, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__25); + __Pyx_GIVEREF(__pyx_tuple__25); + __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addMeshMaterialLambert, 88, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 88, __pyx_L1_error) - /* "gvt.pyx":87 + /* "gvt.pyx":91 * _addMeshMaterial(name.encode() ,mattype, kd.data, alpha) * * def addMeshMaterialSpecular( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, np.ndarray[float, ndim=1, mode="c"] ks, float alpha ): # <<<<<<<<<<<<<< * _addMeshMaterial2(name.encode(), mattype, kd.data, ks.data, alpha) * */ - __pyx_tuple__25 = PyTuple_Pack(5, __pyx_n_s_name, __pyx_n_s_mattype, __pyx_n_s_kd, __pyx_n_s_ks, __pyx_n_s_alpha); if (unlikely(!__pyx_tuple__25)) __PYX_ERR(0, 87, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__25); - __Pyx_GIVEREF(__pyx_tuple__25); - __pyx_codeobj__26 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__25, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addMeshMaterialSpecular, 87, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__26)) __PYX_ERR(0, 87, __pyx_L1_error) + __pyx_tuple__27 = PyTuple_Pack(5, __pyx_n_s_name, __pyx_n_s_mattype, __pyx_n_s_kd, __pyx_n_s_ks, __pyx_n_s_alpha); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 91, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__27); + __Pyx_GIVEREF(__pyx_tuple__27); + __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addMeshMaterialSpecular, 91, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 91, __pyx_L1_error) - /* "gvt.pyx":93 + /* "gvt.pyx":97 * # _addMeshMaterials(name.encode(),n, mattype.data, kd.data, ks.float, alpha.data) * * def addInstance(str name, np.ndarray[float, ndim=1, mode="c"] m): # <<<<<<<<<<<<<< * _addInstance(name.encode(), m.data) * */ - __pyx_tuple__27 = PyTuple_Pack(2, __pyx_n_s_name, __pyx_n_s_m); if (unlikely(!__pyx_tuple__27)) __PYX_ERR(0, 93, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__27); - __Pyx_GIVEREF(__pyx_tuple__27); - __pyx_codeobj__28 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__27, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addInstance, 93, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__28)) __PYX_ERR(0, 93, __pyx_L1_error) + __pyx_tuple__29 = PyTuple_Pack(2, __pyx_n_s_name, __pyx_n_s_m); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 97, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__29); + __Pyx_GIVEREF(__pyx_tuple__29); + __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addInstance, 97, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 97, __pyx_L1_error) - /* "gvt.pyx":96 + /* "gvt.pyx":100 * _addInstance(name.encode(), m.data) * * def addPointLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): # <<<<<<<<<<<<<< * _addPointLight(name.encode(), pos.data, color.data) * */ - __pyx_tuple__29 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_color); if (unlikely(!__pyx_tuple__29)) __PYX_ERR(0, 96, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__29); - __Pyx_GIVEREF(__pyx_tuple__29); - __pyx_codeobj__30 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__29, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addPointLight, 96, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__30)) __PYX_ERR(0, 96, __pyx_L1_error) + __pyx_tuple__31 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_color); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 100, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__31); + __Pyx_GIVEREF(__pyx_tuple__31); + __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addPointLight, 100, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 100, __pyx_L1_error) - /* "gvt.pyx":99 + /* "gvt.pyx":103 * _addPointLight(name.encode(), pos.data, color.data) * * def addAreaLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): # <<<<<<<<<<<<<< * _addAreaLight(name.encode(), pos.data, color.data, n.data, w, h) * */ - __pyx_tuple__31 = PyTuple_Pack(6, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_color, __pyx_n_s_n, __pyx_n_s_w, __pyx_n_s_h); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 99, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__31); - __Pyx_GIVEREF(__pyx_tuple__31); - __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addAreaLight, 99, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 99, __pyx_L1_error) + __pyx_tuple__33 = PyTuple_Pack(6, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_color, __pyx_n_s_n, __pyx_n_s_w, __pyx_n_s_h); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 103, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__33); + __Pyx_GIVEREF(__pyx_tuple__33); + __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addAreaLight, 103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 103, __pyx_L1_error) - /* "gvt.pyx":102 + /* "gvt.pyx":106 * _addAreaLight(name.encode(), pos.data, color.data, n.data, w, h) * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): # <<<<<<<<<<<<<< * _modifyLight(name.encode(),pos.data, color.data) * */ - __pyx_tuple__33 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_color); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 102, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__33); - __Pyx_GIVEREF(__pyx_tuple__33); - __pyx_codeobj__34 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__33, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_modifyLight, 102, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__34)) __PYX_ERR(0, 102, __pyx_L1_error) + __pyx_tuple__35 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_color); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 106, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__35); + __Pyx_GIVEREF(__pyx_tuple__35); + __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_modifyLight, 106, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 106, __pyx_L1_error) - /* "gvt.pyx":105 + /* "gvt.pyx":109 * _modifyLight(name.encode(),pos.data, color.data) * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): # <<<<<<<<<<<<<< * _modifyLight(name.encode(),pos.data,color.data,n.data,w,h) * */ - __pyx_tuple__35 = PyTuple_Pack(6, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_color, __pyx_n_s_n, __pyx_n_s_w, __pyx_n_s_h); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 105, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__35); - __Pyx_GIVEREF(__pyx_tuple__35); - __pyx_codeobj__36 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__35, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_modifyLight, 105, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__36)) __PYX_ERR(0, 105, __pyx_L1_error) + __pyx_tuple__37 = PyTuple_Pack(6, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_color, __pyx_n_s_n, __pyx_n_s_w, __pyx_n_s_h); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 109, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__37); + __Pyx_GIVEREF(__pyx_tuple__37); + __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(6, 0, 6, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_modifyLight, 109, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 109, __pyx_L1_error) - /* "gvt.pyx":108 + /* "gvt.pyx":112 * _modifyLight(name.encode(),pos.data,color.data,n.data,w,h) * * def addCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov, int depth, int samples, float jitter): # <<<<<<<<<<<<<< * _addCamera(name.encode(), pos.data, focus.data,up.data,fov,depth,samples,jitter) * */ - __pyx_tuple__37 = PyTuple_Pack(8, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_focus, __pyx_n_s_up, __pyx_n_s_fov, __pyx_n_s_depth, __pyx_n_s_samples, __pyx_n_s_jitter); if (unlikely(!__pyx_tuple__37)) __PYX_ERR(0, 108, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__37); - __Pyx_GIVEREF(__pyx_tuple__37); - __pyx_codeobj__38 = (PyObject*)__Pyx_PyCode_New(8, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__37, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addCamera, 108, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__38)) __PYX_ERR(0, 108, __pyx_L1_error) + __pyx_tuple__39 = PyTuple_Pack(8, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_focus, __pyx_n_s_up, __pyx_n_s_fov, __pyx_n_s_depth, __pyx_n_s_samples, __pyx_n_s_jitter); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 112, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__39); + __Pyx_GIVEREF(__pyx_tuple__39); + __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(8, 0, 8, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addCamera, 112, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 112, __pyx_L1_error) - /* "gvt.pyx":111 + /* "gvt.pyx":115 * _addCamera(name.encode(), pos.data, focus.data,up.data,fov,depth,samples,jitter) * * def modifyCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov): # <<<<<<<<<<<<<< * _modifyCamera(name.encode(), pos.data, focus.data,up.data,fov) * */ - __pyx_tuple__39 = PyTuple_Pack(5, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_focus, __pyx_n_s_up, __pyx_n_s_fov); if (unlikely(!__pyx_tuple__39)) __PYX_ERR(0, 111, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__39); - __Pyx_GIVEREF(__pyx_tuple__39); - __pyx_codeobj__40 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__39, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_modifyCamera, 111, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__40)) __PYX_ERR(0, 111, __pyx_L1_error) + __pyx_tuple__41 = PyTuple_Pack(5, __pyx_n_s_name, __pyx_n_s_pos, __pyx_n_s_focus, __pyx_n_s_up, __pyx_n_s_fov); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 115, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__41); + __Pyx_GIVEREF(__pyx_tuple__41); + __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(5, 0, 5, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_modifyCamera, 115, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 115, __pyx_L1_error) - /* "gvt.pyx":114 + /* "gvt.pyx":118 * _modifyCamera(name.encode(), pos.data, focus.data,up.data,fov) * * def addFilm(str name, int w, int h, str path): # <<<<<<<<<<<<<< * _addFilm(name.encode(),w,h,path.encode()) * */ - __pyx_tuple__41 = PyTuple_Pack(4, __pyx_n_s_name, __pyx_n_s_w, __pyx_n_s_h, __pyx_n_s_path); if (unlikely(!__pyx_tuple__41)) __PYX_ERR(0, 114, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__41); - __Pyx_GIVEREF(__pyx_tuple__41); - __pyx_codeobj__42 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__41, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addFilm, 114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__42)) __PYX_ERR(0, 114, __pyx_L1_error) + __pyx_tuple__43 = PyTuple_Pack(4, __pyx_n_s_name, __pyx_n_s_w, __pyx_n_s_h, __pyx_n_s_path); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 118, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__43); + __Pyx_GIVEREF(__pyx_tuple__43); + __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addFilm, 118, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 118, __pyx_L1_error) - /* "gvt.pyx":117 + /* "gvt.pyx":121 * _addFilm(name.encode(),w,h,path.encode()) * * def modifyFilm(str name, int w, int h, str path): # <<<<<<<<<<<<<< * _modifyFilm(name.encode(),w,h,path.encode()) * */ - __pyx_tuple__43 = PyTuple_Pack(4, __pyx_n_s_name, __pyx_n_s_w, __pyx_n_s_h, __pyx_n_s_path); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 117, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__43); - __Pyx_GIVEREF(__pyx_tuple__43); - __pyx_codeobj__44 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__43, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_modifyFilm, 117, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__44)) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_tuple__45 = PyTuple_Pack(4, __pyx_n_s_name, __pyx_n_s_w, __pyx_n_s_h, __pyx_n_s_path); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 121, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__45); + __Pyx_GIVEREF(__pyx_tuple__45); + __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_modifyFilm, 121, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 121, __pyx_L1_error) - /* "gvt.pyx":120 + /* "gvt.pyx":124 * _modifyFilm(name.encode(),w,h,path.encode()) * * def addRenderer(str name, int adapter, int schedule): # <<<<<<<<<<<<<< * _addRenderer(name.encode(),adapter,schedule) * */ - __pyx_tuple__45 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_adapter, __pyx_n_s_schedule); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 120, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__45); - __Pyx_GIVEREF(__pyx_tuple__45); - __pyx_codeobj__46 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__45, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_addRenderer, 120, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__46)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_tuple__47 = PyTuple_Pack(3, __pyx_n_s_name, __pyx_n_s_adapter, __pyx_n_s_schedule); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 124, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__47); + __Pyx_GIVEREF(__pyx_tuple__47); + __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_addRenderer, 124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 124, __pyx_L1_error) - /* "gvt.pyx":123 + /* "gvt.pyx":127 * _addRenderer(name.encode(),adapter,schedule) * * def render(str name): # <<<<<<<<<<<<<< * _render(name.encode()) * */ - __pyx_tuple__47 = PyTuple_Pack(1, __pyx_n_s_name); if (unlikely(!__pyx_tuple__47)) __PYX_ERR(0, 123, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__47); - __Pyx_GIVEREF(__pyx_tuple__47); - __pyx_codeobj__48 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__47, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_render, 123, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__48)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_tuple__49 = PyTuple_Pack(1, __pyx_n_s_name); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 127, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__49); + __Pyx_GIVEREF(__pyx_tuple__49); + __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_render, 127, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 127, __pyx_L1_error) - /* "gvt.pyx":126 + /* "gvt.pyx":130 * _render(name.encode()) * * def writeimage(str name, str output): # <<<<<<<<<<<<<< * _writeimage(name.encode(),output.encode()) */ - __pyx_tuple__49 = PyTuple_Pack(2, __pyx_n_s_name, __pyx_n_s_output); if (unlikely(!__pyx_tuple__49)) __PYX_ERR(0, 126, __pyx_L1_error) - __Pyx_GOTREF(__pyx_tuple__49); - __Pyx_GIVEREF(__pyx_tuple__49); - __pyx_codeobj__50 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__49, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_jbarbosa_r_pygvt_src_gvt_g, __pyx_n_s_writeimage, 126, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__50)) __PYX_ERR(0, 126, __pyx_L1_error) + __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_name, __pyx_n_s_output); if (unlikely(!__pyx_tuple__51)) __PYX_ERR(0, 130, __pyx_L1_error) + __Pyx_GOTREF(__pyx_tuple__51); + __Pyx_GIVEREF(__pyx_tuple__51); + __pyx_codeobj__52 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__51, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_gvt_gvt_pyx, __pyx_n_s_writeimage, 130, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__52)) __PYX_ERR(0, 130, __pyx_L1_error) __Pyx_RefNannyFinishContext(); return 0; __pyx_L1_error:; @@ -8189,6 +8559,7 @@ PyMODINIT_FUNC PyInit_gvt(void) __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) __PYX_ERR(0, 1, __pyx_L1_error) Py_INCREF(__pyx_d); __pyx_b = PyImport_AddModule(__Pyx_BUILTIN_MODULE_NAME); if (unlikely(!__pyx_b)) __PYX_ERR(0, 1, __pyx_L1_error) + __pyx_cython_runtime = PyImport_AddModule((char *) "cython_runtime"); if (unlikely(!__pyx_cython_runtime)) __PYX_ERR(0, 1, __pyx_L1_error) #if CYTHON_COMPILING_IN_PYPY Py_INCREF(__pyx_b); #endif @@ -8273,255 +8644,267 @@ PyMODINIT_FUNC PyInit_gvt(void) if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 6, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":44 + /* "gvt.pyx":45 * #void gvtInit(int &argc, char **&argv) * * def gvtInit(): # <<<<<<<<<<<<<< * # cdef char **c_argv * # c_argv = malloc(sizeof(char*) * len(sys.argv)) */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_1gvtInit, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 44, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_1gvtInit, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_gvtInit, __pyx_t_1) < 0) __PYX_ERR(0, 44, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_gvtInit, __pyx_t_1) < 0) __PYX_ERR(0, 45, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":66 + /* "gvt.pyx":67 * # _gvtInit(argc,argv) * + * def readPly(str dirname, bool dist, np.ndarray[float, ndim=1, mode="c"] world_bounds): # <<<<<<<<<<<<<< + * _readPly(dirname.encode(), dist, world_bounds.data) + * + */ + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_3readPly, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_GOTREF(__pyx_t_1); + if (PyDict_SetItem(__pyx_d, __pyx_n_s_readPly, __pyx_t_1) < 0) __PYX_ERR(0, 67, __pyx_L1_error) + __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; + + /* "gvt.pyx":70 + * _readPly(dirname.encode(), dist, world_bounds.data) + * * def createMesh(str name): # <<<<<<<<<<<<<< * _createMesh(name.encode()) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_3createMesh, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 66, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_5createMesh, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_createMesh, __pyx_t_1) < 0) __PYX_ERR(0, 66, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_createMesh, __pyx_t_1) < 0) __PYX_ERR(0, 70, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":69 + /* "gvt.pyx":73 * _createMesh(name.encode()) * * def addMeshVertices(str name, int size, np.ndarray[float, ndim=1, mode="c"] vertices not None): # <<<<<<<<<<<<<< * _addMeshVertices(name.encode(),size, vertices.data) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_5addMeshVertices, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 69, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_7addMeshVertices, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshVertices, __pyx_t_1) < 0) __PYX_ERR(0, 69, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshVertices, __pyx_t_1) < 0) __PYX_ERR(0, 73, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":72 + /* "gvt.pyx":76 * _addMeshVertices(name.encode(),size, vertices.data) * * def addMeshTriangles(str name, unsigned n, np.ndarray[unsigned, ndim=1, mode="c"] triangles): # <<<<<<<<<<<<<< * _addMeshTriangles(name.encode(), n, triangles.data) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_7addMeshTriangles, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 72, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_9addMeshTriangles, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshTriangles, __pyx_t_1) < 0) __PYX_ERR(0, 72, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshTriangles, __pyx_t_1) < 0) __PYX_ERR(0, 76, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":75 + /* "gvt.pyx":79 * _addMeshTriangles(name.encode(), n, triangles.data) * * def addMeshFaceNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): # <<<<<<<<<<<<<< * _addMeshFaceNormals(name.encode(), n, normals.data) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_9addMeshFaceNormals, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 75, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_11addMeshFaceNormals, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshFaceNormals, __pyx_t_1) < 0) __PYX_ERR(0, 75, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshFaceNormals, __pyx_t_1) < 0) __PYX_ERR(0, 79, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":78 + /* "gvt.pyx":82 * _addMeshFaceNormals(name.encode(), n, normals.data) * * def addMeshVertexNormals( str name, unsigned n, np.ndarray[float, ndim=1, mode="c"] normals): # <<<<<<<<<<<<<< * _addMeshVertexNormals(name.encode(),n, normals.data) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_11addMeshVertexNormals, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 78, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_13addMeshVertexNormals, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 82, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshVertexNormals, __pyx_t_1) < 0) __PYX_ERR(0, 78, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshVertexNormals, __pyx_t_1) < 0) __PYX_ERR(0, 82, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":81 + /* "gvt.pyx":85 * _addMeshVertexNormals(name.encode(),n, normals.data) * * def finishMesh( str name, bool compute_normal = True): # <<<<<<<<<<<<<< * _finishMesh(name.encode(),compute_normal) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_13finishMesh, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 81, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_15finishMesh, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_finishMesh, __pyx_t_1) < 0) __PYX_ERR(0, 81, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_finishMesh, __pyx_t_1) < 0) __PYX_ERR(0, 85, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":84 + /* "gvt.pyx":88 * _finishMesh(name.encode(),compute_normal) * * def addMeshMaterialLambert( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, float alpha): # <<<<<<<<<<<<<< * _addMeshMaterial(name.encode() ,mattype, kd.data, alpha) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_15addMeshMaterialLambert, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 84, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_17addMeshMaterialLambert, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 88, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshMaterialLambert, __pyx_t_1) < 0) __PYX_ERR(0, 84, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshMaterialLambert, __pyx_t_1) < 0) __PYX_ERR(0, 88, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":87 + /* "gvt.pyx":91 * _addMeshMaterial(name.encode() ,mattype, kd.data, alpha) * * def addMeshMaterialSpecular( str name, unsigned mattype, np.ndarray[float, ndim=1, mode="c"] kd, np.ndarray[float, ndim=1, mode="c"] ks, float alpha ): # <<<<<<<<<<<<<< * _addMeshMaterial2(name.encode(), mattype, kd.data, ks.data, alpha) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_17addMeshMaterialSpecular, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 87, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_19addMeshMaterialSpecular, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshMaterialSpecular, __pyx_t_1) < 0) __PYX_ERR(0, 87, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addMeshMaterialSpecular, __pyx_t_1) < 0) __PYX_ERR(0, 91, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":93 + /* "gvt.pyx":97 * # _addMeshMaterials(name.encode(),n, mattype.data, kd.data, ks.float, alpha.data) * * def addInstance(str name, np.ndarray[float, ndim=1, mode="c"] m): # <<<<<<<<<<<<<< * _addInstance(name.encode(), m.data) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_19addInstance, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 93, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_21addInstance, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addInstance, __pyx_t_1) < 0) __PYX_ERR(0, 93, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addInstance, __pyx_t_1) < 0) __PYX_ERR(0, 97, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":96 + /* "gvt.pyx":100 * _addInstance(name.encode(), m.data) * * def addPointLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): # <<<<<<<<<<<<<< * _addPointLight(name.encode(), pos.data, color.data) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_21addPointLight, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 96, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_23addPointLight, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addPointLight, __pyx_t_1) < 0) __PYX_ERR(0, 96, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addPointLight, __pyx_t_1) < 0) __PYX_ERR(0, 100, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":99 + /* "gvt.pyx":103 * _addPointLight(name.encode(), pos.data, color.data) * * def addAreaLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): # <<<<<<<<<<<<<< * _addAreaLight(name.encode(), pos.data, color.data, n.data, w, h) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_23addAreaLight, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 99, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_25addAreaLight, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addAreaLight, __pyx_t_1) < 0) __PYX_ERR(0, 99, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addAreaLight, __pyx_t_1) < 0) __PYX_ERR(0, 103, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":102 + /* "gvt.pyx":106 * _addAreaLight(name.encode(), pos.data, color.data, n.data, w, h) * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color): # <<<<<<<<<<<<<< * _modifyLight(name.encode(),pos.data, color.data) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_25modifyLight, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 102, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_27modifyLight, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_modifyLight, __pyx_t_1) < 0) __PYX_ERR(0, 102, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_modifyLight, __pyx_t_1) < 0) __PYX_ERR(0, 106, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":105 + /* "gvt.pyx":109 * _modifyLight(name.encode(),pos.data, color.data) * * def modifyLight(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] color, np.ndarray[float, ndim=1, mode="c"] n, float w, float h): # <<<<<<<<<<<<<< * _modifyLight(name.encode(),pos.data,color.data,n.data,w,h) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_27modifyLight, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 105, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_29modifyLight, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_modifyLight, __pyx_t_1) < 0) __PYX_ERR(0, 105, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_modifyLight, __pyx_t_1) < 0) __PYX_ERR(0, 109, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":108 + /* "gvt.pyx":112 * _modifyLight(name.encode(),pos.data,color.data,n.data,w,h) * * def addCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov, int depth, int samples, float jitter): # <<<<<<<<<<<<<< * _addCamera(name.encode(), pos.data, focus.data,up.data,fov,depth,samples,jitter) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_29addCamera, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 108, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_31addCamera, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addCamera, __pyx_t_1) < 0) __PYX_ERR(0, 108, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addCamera, __pyx_t_1) < 0) __PYX_ERR(0, 112, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":111 + /* "gvt.pyx":115 * _addCamera(name.encode(), pos.data, focus.data,up.data,fov,depth,samples,jitter) * * def modifyCamera(str name, np.ndarray[float, ndim=1, mode="c"] pos, np.ndarray[float, ndim=1, mode="c"] focus, np.ndarray[float, ndim=1, mode="c"] up, float fov): # <<<<<<<<<<<<<< * _modifyCamera(name.encode(), pos.data, focus.data,up.data,fov) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_31modifyCamera, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 111, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_33modifyCamera, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_modifyCamera, __pyx_t_1) < 0) __PYX_ERR(0, 111, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_modifyCamera, __pyx_t_1) < 0) __PYX_ERR(0, 115, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":114 + /* "gvt.pyx":118 * _modifyCamera(name.encode(), pos.data, focus.data,up.data,fov) * * def addFilm(str name, int w, int h, str path): # <<<<<<<<<<<<<< * _addFilm(name.encode(),w,h,path.encode()) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_33addFilm, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 114, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_35addFilm, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addFilm, __pyx_t_1) < 0) __PYX_ERR(0, 114, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addFilm, __pyx_t_1) < 0) __PYX_ERR(0, 118, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":117 + /* "gvt.pyx":121 * _addFilm(name.encode(),w,h,path.encode()) * * def modifyFilm(str name, int w, int h, str path): # <<<<<<<<<<<<<< * _modifyFilm(name.encode(),w,h,path.encode()) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_35modifyFilm, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 117, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_37modifyFilm, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_modifyFilm, __pyx_t_1) < 0) __PYX_ERR(0, 117, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_modifyFilm, __pyx_t_1) < 0) __PYX_ERR(0, 121, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":120 + /* "gvt.pyx":124 * _modifyFilm(name.encode(),w,h,path.encode()) * * def addRenderer(str name, int adapter, int schedule): # <<<<<<<<<<<<<< * _addRenderer(name.encode(),adapter,schedule) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_37addRenderer, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 120, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_39addRenderer, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_addRenderer, __pyx_t_1) < 0) __PYX_ERR(0, 120, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_addRenderer, __pyx_t_1) < 0) __PYX_ERR(0, 124, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":123 + /* "gvt.pyx":127 * _addRenderer(name.encode(),adapter,schedule) * * def render(str name): # <<<<<<<<<<<<<< * _render(name.encode()) * */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_39render, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 123, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_41render, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 127, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_render, __pyx_t_1) < 0) __PYX_ERR(0, 123, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_render, __pyx_t_1) < 0) __PYX_ERR(0, 127, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; - /* "gvt.pyx":126 + /* "gvt.pyx":130 * _render(name.encode()) * * def writeimage(str name, str output): # <<<<<<<<<<<<<< * _writeimage(name.encode(),output.encode()) */ - __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_41writeimage, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 126, __pyx_L1_error) + __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_3gvt_43writeimage, NULL, __pyx_n_s_gvt); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 130, __pyx_L1_error) __Pyx_GOTREF(__pyx_t_1); - if (PyDict_SetItem(__pyx_d, __pyx_n_s_writeimage, __pyx_t_1) < 0) __PYX_ERR(0, 126, __pyx_L1_error) + if (PyDict_SetItem(__pyx_d, __pyx_n_s_writeimage, __pyx_t_1) < 0) __PYX_ERR(0, 130, __pyx_L1_error) __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; /* "gvt.pyx":1 @@ -8539,7 +8922,7 @@ PyMODINIT_FUNC PyInit_gvt(void) * @cname("__pyx_convert_string_from_py_std__in_string") * cdef string __pyx_convert_string_from_py_std__in_string(object o) except *: # <<<<<<<<<<<<<< * cdef Py_ssize_t length - * cdef char* data = __Pyx_PyObject_AsStringAndSize(o, &length) + * cdef const char* data = __Pyx_PyObject_AsStringAndSize(o, &length) */ /*--- Wrapped vars code ---*/ @@ -8549,7 +8932,7 @@ PyMODINIT_FUNC PyInit_gvt(void) __Pyx_XDECREF(__pyx_t_1); if (__pyx_m) { if (__pyx_d) { - __Pyx_AddTraceback("init gvt", __pyx_clineno, __pyx_lineno, __pyx_filename); + __Pyx_AddTraceback("init gvt", 0, __pyx_lineno, __pyx_filename); } Py_DECREF(__pyx_m); __pyx_m = 0; } else if (!PyErr_Occurred()) { @@ -8582,278 +8965,8 @@ static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) { } #endif -/* ArgTypeTest */ -static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) { - PyErr_Format(PyExc_TypeError, - "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", - name, type->tp_name, Py_TYPE(obj)->tp_name); -} -static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, - const char *name, int exact) -{ - if (unlikely(!type)) { - PyErr_SetString(PyExc_SystemError, "Missing type object"); - return 0; - } - if (none_allowed && obj == Py_None) return 1; - else if (exact) { - if (likely(Py_TYPE(obj) == type)) return 1; - #if PY_MAJOR_VERSION == 2 - else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; - #endif - } - else { - if (likely(PyObject_TypeCheck(obj, type))) return 1; - } - __Pyx_RaiseArgumentTypeInvalid(name, obj, type); - return 0; -} - -/* PyCFunctionFastCall */ -#if CYTHON_FAST_PYCCALL -static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { - PyCFunctionObject *func = (PyCFunctionObject*)func_obj; - PyCFunction meth = PyCFunction_GET_FUNCTION(func); - PyObject *self = PyCFunction_GET_SELF(func); - assert(PyCFunction_Check(func)); - assert(METH_FASTCALL == (PyCFunction_GET_FLAGS(func) & ~(METH_CLASS | METH_STATIC | METH_COEXIST))); - assert(nargs >= 0); - assert(nargs == 0 || args != NULL); - /* _PyCFunction_FastCallDict() must not be called with an exception set, - because it may clear it (directly or indirectly) and so the - caller loses its exception */ - assert(!PyErr_Occurred()); - return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs, NULL); -} -#endif // CYTHON_FAST_PYCCALL - -/* PyFunctionFastCall */ -#if CYTHON_FAST_PYCALL -#include "frameobject.h" -static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, - PyObject *globals) { - PyFrameObject *f; - PyThreadState *tstate = PyThreadState_GET(); - PyObject **fastlocals; - Py_ssize_t i; - PyObject *result; - assert(globals != NULL); - /* XXX Perhaps we should create a specialized - PyFrame_New() that doesn't take locals, but does - take builtins without sanity checking them. - */ - assert(tstate != NULL); - f = PyFrame_New(tstate, co, globals, NULL); - if (f == NULL) { - return NULL; - } - fastlocals = f->f_localsplus; - for (i = 0; i < na; i++) { - Py_INCREF(*args); - fastlocals[i] = *args++; - } - result = PyEval_EvalFrameEx(f,0); - ++tstate->recursion_depth; - Py_DECREF(f); - --tstate->recursion_depth; - return result; -} -#if 1 || PY_VERSION_HEX < 0x030600B1 -static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { - PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); - PyObject *globals = PyFunction_GET_GLOBALS(func); - PyObject *argdefs = PyFunction_GET_DEFAULTS(func); - PyObject *closure; -#if PY_MAJOR_VERSION >= 3 - PyObject *kwdefs; -#endif - PyObject *kwtuple, **k; - PyObject **d; - Py_ssize_t nd; - Py_ssize_t nk; - PyObject *result; - assert(kwargs == NULL || PyDict_Check(kwargs)); - nk = kwargs ? PyDict_Size(kwargs) : 0; - if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { - return NULL; - } - if ( -#if PY_MAJOR_VERSION >= 3 - co->co_kwonlyargcount == 0 && -#endif - likely(kwargs == NULL || nk == 0) && - co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { - if (argdefs == NULL && co->co_argcount == nargs) { - result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); - goto done; - } - else if (nargs == 0 && argdefs != NULL - && co->co_argcount == Py_SIZE(argdefs)) { - /* function called with no arguments, but all parameters have - a default value: use default values as arguments .*/ - args = &PyTuple_GET_ITEM(argdefs, 0); - result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); - goto done; - } - } - if (kwargs != NULL) { - Py_ssize_t pos, i; - kwtuple = PyTuple_New(2 * nk); - if (kwtuple == NULL) { - result = NULL; - goto done; - } - k = &PyTuple_GET_ITEM(kwtuple, 0); - pos = i = 0; - while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { - Py_INCREF(k[i]); - Py_INCREF(k[i+1]); - i += 2; - } - nk = i / 2; - } - else { - kwtuple = NULL; - k = NULL; - } - closure = PyFunction_GET_CLOSURE(func); -#if PY_MAJOR_VERSION >= 3 - kwdefs = PyFunction_GET_KW_DEFAULTS(func); -#endif - if (argdefs != NULL) { - d = &PyTuple_GET_ITEM(argdefs, 0); - nd = Py_SIZE(argdefs); - } - else { - d = NULL; - nd = 0; - } -#if PY_MAJOR_VERSION >= 3 - result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, kwdefs, closure); -#else - result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, - args, nargs, - k, (int)nk, - d, (int)nd, closure); -#endif - Py_XDECREF(kwtuple); -done: - Py_LeaveRecursiveCall(); - return result; -} -#endif // CPython < 3.6 -#endif // CYTHON_FAST_PYCALL - -/* PyObjectCall */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { - PyObject *result; - ternaryfunc call = func->ob_type->tp_call; - if (unlikely(!call)) - return PyObject_Call(func, arg, kw); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = (*call)(func, arg, kw); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallMethO */ -#if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { - PyObject *self, *result; - PyCFunction cfunc; - cfunc = PyCFunction_GET_FUNCTION(func); - self = PyCFunction_GET_SELF(func); - if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) - return NULL; - result = cfunc(self, arg); - Py_LeaveRecursiveCall(); - if (unlikely(!result) && unlikely(!PyErr_Occurred())) { - PyErr_SetString( - PyExc_SystemError, - "NULL result without error in PyObject_Call"); - } - return result; -} -#endif - -/* PyObjectCallOneArg */ -#if CYTHON_COMPILING_IN_CPYTHON -static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_New(1); - if (unlikely(!args)) return NULL; - Py_INCREF(arg); - PyTuple_SET_ITEM(args, 0, arg); - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, &arg, 1); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { - return __Pyx_PyObject_CallMethO(func, arg); -#if CYTHON_FAST_PYCCALL - } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { - return __Pyx_PyCFunction_FastCall(func, &arg, 1); -#endif - } - } - return __Pyx__PyObject_CallOneArg(func, arg); -} -#else -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { - PyObject *result; - PyObject *args = PyTuple_Pack(1, arg); - if (unlikely(!args)) return NULL; - result = __Pyx_PyObject_Call(func, args, NULL); - Py_DECREF(args); - return result; -} -#endif - -/* PyObjectCallNoArg */ - #if CYTHON_COMPILING_IN_CPYTHON -static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { -#if CYTHON_FAST_PYCALL - if (PyFunction_Check(func)) { - return __Pyx_PyFunction_FastCall(func, NULL, 0); - } -#endif -#ifdef __Pyx_CyFunction_USED - if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { -#else - if (likely(PyCFunction_Check(func))) { -#endif - if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { - return __Pyx_PyObject_CallMethO(func, NULL); - } - } - return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); -} -#endif - /* RaiseArgTupleInvalid */ - static void __Pyx_RaiseArgtupleInvalid( +static void __Pyx_RaiseArgtupleInvalid( const char* func_name, int exact, Py_ssize_t num_min, @@ -8879,7 +8992,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { } /* RaiseDoubleKeywords */ - static void __Pyx_RaiseDoubleKeywordsError( +static void __Pyx_RaiseDoubleKeywordsError( const char* func_name, PyObject* kw_name) { @@ -8893,7 +9006,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { } /* ParseKeywords */ - static int __Pyx_ParseOptionalKeywords( +static int __Pyx_ParseOptionalKeywords( PyObject *kwds, PyObject **argnames[], PyObject *kwds2, @@ -8994,8 +9107,35 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { return -1; } +/* ArgTypeTest */ +static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) { + PyErr_Format(PyExc_TypeError, + "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)", + name, type->tp_name, Py_TYPE(obj)->tp_name); +} +static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed, + const char *name, int exact) +{ + if (unlikely(!type)) { + PyErr_SetString(PyExc_SystemError, "Missing type object"); + return 0; + } + if (none_allowed && obj == Py_None) return 1; + else if (exact) { + if (likely(Py_TYPE(obj) == type)) return 1; + #if PY_MAJOR_VERSION == 2 + else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1; + #endif + } + else { + if (likely(PyObject_TypeCheck(obj, type))) return 1; + } + __Pyx_RaiseArgumentTypeInvalid(name, obj, type); + return 0; +} + /* BufferFormatCheck */ - static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { +static CYTHON_INLINE int __Pyx_IsLittleEndian(void) { unsigned int n = 1; return *(unsigned char*)(&n) != 0; } @@ -9544,8 +9684,252 @@ static CYTHON_INLINE void __Pyx_SafeReleaseBuffer(Py_buffer* info) { __Pyx_ReleaseBuffer(info); } +/* PyCFunctionFastCall */ + #if CYTHON_FAST_PYCCALL +static CYTHON_INLINE PyObject * __Pyx_PyCFunction_FastCall(PyObject *func_obj, PyObject **args, Py_ssize_t nargs) { + PyCFunctionObject *func = (PyCFunctionObject*)func_obj; + PyCFunction meth = PyCFunction_GET_FUNCTION(func); + PyObject *self = PyCFunction_GET_SELF(func); + int flags = PyCFunction_GET_FLAGS(func); + assert(PyCFunction_Check(func)); + assert(METH_FASTCALL == (flags & ~(METH_CLASS | METH_STATIC | METH_COEXIST | METH_KEYWORDS))); + assert(nargs >= 0); + assert(nargs == 0 || args != NULL); + /* _PyCFunction_FastCallDict() must not be called with an exception set, + because it may clear it (directly or indirectly) and so the + caller loses its exception */ + assert(!PyErr_Occurred()); + if ((PY_VERSION_HEX < 0x030700A0) || unlikely(flags & METH_KEYWORDS)) { + return (*((__Pyx_PyCFunctionFastWithKeywords)meth)) (self, args, nargs, NULL); + } else { + return (*((__Pyx_PyCFunctionFast)meth)) (self, args, nargs); + } +} +#endif + +/* PyFunctionFastCall */ + #if CYTHON_FAST_PYCALL +#include "frameobject.h" +static PyObject* __Pyx_PyFunction_FastCallNoKw(PyCodeObject *co, PyObject **args, Py_ssize_t na, + PyObject *globals) { + PyFrameObject *f; + PyThreadState *tstate = PyThreadState_GET(); + PyObject **fastlocals; + Py_ssize_t i; + PyObject *result; + assert(globals != NULL); + /* XXX Perhaps we should create a specialized + PyFrame_New() that doesn't take locals, but does + take builtins without sanity checking them. + */ + assert(tstate != NULL); + f = PyFrame_New(tstate, co, globals, NULL); + if (f == NULL) { + return NULL; + } + fastlocals = f->f_localsplus; + for (i = 0; i < na; i++) { + Py_INCREF(*args); + fastlocals[i] = *args++; + } + result = PyEval_EvalFrameEx(f,0); + ++tstate->recursion_depth; + Py_DECREF(f); + --tstate->recursion_depth; + return result; +} +#if 1 || PY_VERSION_HEX < 0x030600B1 +static PyObject *__Pyx_PyFunction_FastCallDict(PyObject *func, PyObject **args, int nargs, PyObject *kwargs) { + PyCodeObject *co = (PyCodeObject *)PyFunction_GET_CODE(func); + PyObject *globals = PyFunction_GET_GLOBALS(func); + PyObject *argdefs = PyFunction_GET_DEFAULTS(func); + PyObject *closure; +#if PY_MAJOR_VERSION >= 3 + PyObject *kwdefs; +#endif + PyObject *kwtuple, **k; + PyObject **d; + Py_ssize_t nd; + Py_ssize_t nk; + PyObject *result; + assert(kwargs == NULL || PyDict_Check(kwargs)); + nk = kwargs ? PyDict_Size(kwargs) : 0; + if (Py_EnterRecursiveCall((char*)" while calling a Python object")) { + return NULL; + } + if ( +#if PY_MAJOR_VERSION >= 3 + co->co_kwonlyargcount == 0 && +#endif + likely(kwargs == NULL || nk == 0) && + co->co_flags == (CO_OPTIMIZED | CO_NEWLOCALS | CO_NOFREE)) { + if (argdefs == NULL && co->co_argcount == nargs) { + result = __Pyx_PyFunction_FastCallNoKw(co, args, nargs, globals); + goto done; + } + else if (nargs == 0 && argdefs != NULL + && co->co_argcount == Py_SIZE(argdefs)) { + /* function called with no arguments, but all parameters have + a default value: use default values as arguments .*/ + args = &PyTuple_GET_ITEM(argdefs, 0); + result =__Pyx_PyFunction_FastCallNoKw(co, args, Py_SIZE(argdefs), globals); + goto done; + } + } + if (kwargs != NULL) { + Py_ssize_t pos, i; + kwtuple = PyTuple_New(2 * nk); + if (kwtuple == NULL) { + result = NULL; + goto done; + } + k = &PyTuple_GET_ITEM(kwtuple, 0); + pos = i = 0; + while (PyDict_Next(kwargs, &pos, &k[i], &k[i+1])) { + Py_INCREF(k[i]); + Py_INCREF(k[i+1]); + i += 2; + } + nk = i / 2; + } + else { + kwtuple = NULL; + k = NULL; + } + closure = PyFunction_GET_CLOSURE(func); +#if PY_MAJOR_VERSION >= 3 + kwdefs = PyFunction_GET_KW_DEFAULTS(func); +#endif + if (argdefs != NULL) { + d = &PyTuple_GET_ITEM(argdefs, 0); + nd = Py_SIZE(argdefs); + } + else { + d = NULL; + nd = 0; + } +#if PY_MAJOR_VERSION >= 3 + result = PyEval_EvalCodeEx((PyObject*)co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, kwdefs, closure); +#else + result = PyEval_EvalCodeEx(co, globals, (PyObject *)NULL, + args, nargs, + k, (int)nk, + d, (int)nd, closure); +#endif + Py_XDECREF(kwtuple); +done: + Py_LeaveRecursiveCall(); + return result; +} +#endif +#endif + +/* PyObjectCall */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) { + PyObject *result; + ternaryfunc call = func->ob_type->tp_call; + if (unlikely(!call)) + return PyObject_Call(func, arg, kw); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = (*call)(func, arg, kw); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallMethO */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject *arg) { + PyObject *self, *result; + PyCFunction cfunc; + cfunc = PyCFunction_GET_FUNCTION(func); + self = PyCFunction_GET_SELF(func); + if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object"))) + return NULL; + result = cfunc(self, arg); + Py_LeaveRecursiveCall(); + if (unlikely(!result) && unlikely(!PyErr_Occurred())) { + PyErr_SetString( + PyExc_SystemError, + "NULL result without error in PyObject_Call"); + } + return result; +} +#endif + +/* PyObjectCallOneArg */ + #if CYTHON_COMPILING_IN_CPYTHON +static PyObject* __Pyx__PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_New(1); + if (unlikely(!args)) return NULL; + Py_INCREF(arg); + PyTuple_SET_ITEM(args, 0, arg); + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, &arg, 1); + } +#endif + if (likely(PyCFunction_Check(func))) { + if (likely(PyCFunction_GET_FLAGS(func) & METH_O)) { + return __Pyx_PyObject_CallMethO(func, arg); +#if CYTHON_FAST_PYCCALL + } else if (PyCFunction_GET_FLAGS(func) & METH_FASTCALL) { + return __Pyx_PyCFunction_FastCall(func, &arg, 1); +#endif + } + } + return __Pyx__PyObject_CallOneArg(func, arg); +} +#else +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg) { + PyObject *result; + PyObject *args = PyTuple_Pack(1, arg); + if (unlikely(!args)) return NULL; + result = __Pyx_PyObject_Call(func, args, NULL); + Py_DECREF(args); + return result; +} +#endif + +/* PyObjectCallNoArg */ + #if CYTHON_COMPILING_IN_CPYTHON +static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) { +#if CYTHON_FAST_PYCALL + if (PyFunction_Check(func)) { + return __Pyx_PyFunction_FastCall(func, NULL, 0); + } +#endif +#ifdef __Pyx_CyFunction_USED + if (likely(PyCFunction_Check(func) || PyObject_TypeCheck(func, __pyx_CyFunctionType))) { +#else + if (likely(PyCFunction_Check(func))) { +#endif + if (likely(PyCFunction_GET_FLAGS(func) & METH_NOARGS)) { + return __Pyx_PyObject_CallMethO(func, NULL); + } + } + return __Pyx_PyObject_Call(func, __pyx_empty_tuple, NULL); +} +#endif + /* PyErrFetchRestore */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx_ErrRestoreInState(PyThreadState *tstate, PyObject *type, PyObject *value, PyObject *tb) { PyObject *tmp_type, *tmp_value, *tmp_tb; tmp_type = tstate->curexc_type; @@ -9569,7 +9953,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject #endif /* GetBuiltinName */ - static PyObject *__Pyx_GetBuiltinName(PyObject *name) { + static PyObject *__Pyx_GetBuiltinName(PyObject *name) { PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name); if (unlikely(!result)) { PyErr_Format(PyExc_NameError, @@ -9583,7 +9967,7 @@ static CYTHON_INLINE void __Pyx_ErrFetchInState(PyThreadState *tstate, PyObject } /* RaiseException */ - #if PY_MAJOR_VERSION < 3 + #if PY_MAJOR_VERSION < 3 static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, CYTHON_UNUSED PyObject *cause) { __Pyx_PyThreadState_declare @@ -9746,25 +10130,25 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject #endif /* RaiseTooManyValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { + static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) { PyErr_Format(PyExc_ValueError, "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected); } /* RaiseNeedMoreValuesToUnpack */ - static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { + static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) { PyErr_Format(PyExc_ValueError, "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack", index, (index == 1) ? "" : "s"); } /* RaiseNoneIterError */ - static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { + static CYTHON_INLINE void __Pyx_RaiseNoneNotIterableError(void) { PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable"); } /* ExtTypeTest */ - static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { + static CYTHON_INLINE int __Pyx_TypeTest(PyObject *obj, PyTypeObject *type) { if (unlikely(!type)) { PyErr_SetString(PyExc_SystemError, "Missing type object"); return 0; @@ -9777,7 +10161,7 @@ static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject } /* SaveResetException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE void __Pyx__ExceptionSave(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { *type = tstate->exc_type; *value = tstate->exc_value; @@ -9801,7 +10185,7 @@ static CYTHON_INLINE void __Pyx__ExceptionReset(PyThreadState *tstate, PyObject #endif /* PyErrExceptionMatches */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tstate, PyObject* err) { PyObject *exc_type = tstate->curexc_type; if (exc_type == err) return 1; @@ -9811,7 +10195,7 @@ static CYTHON_INLINE int __Pyx_PyErr_ExceptionMatchesInState(PyThreadState* tsta #endif /* GetException */ - #if CYTHON_FAST_THREAD_STATE + #if CYTHON_FAST_THREAD_STATE static int __Pyx__GetException(PyThreadState *tstate, PyObject **type, PyObject **value, PyObject **tb) { #else static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) { @@ -9872,7 +10256,7 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) } /* Import */ - static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { + static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) { PyObject *empty_list = 0; PyObject *module = 0; PyObject *global_dict = 0; @@ -9945,8 +10329,42 @@ static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) return module; } +/* CLineInTraceback */ + static int __Pyx_CLineForTraceback(int c_line) { +#ifdef CYTHON_CLINE_IN_TRACEBACK + return ((CYTHON_CLINE_IN_TRACEBACK)) ? c_line : 0; +#else + PyObject **cython_runtime_dict; + PyObject *use_cline; + cython_runtime_dict = _PyObject_GetDictPtr(__pyx_cython_runtime); + if (unlikely(!cython_runtime_dict)) { + PyObject *ptype, *pvalue, *ptraceback; + PyObject *use_cline_obj; + PyErr_Fetch(&ptype, &pvalue, &ptraceback); + use_cline_obj = __Pyx_PyObject_GetAttrStr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback); + if (use_cline_obj) { + use_cline = PyObject_Not(use_cline_obj) ? Py_False : Py_True; + Py_DECREF(use_cline_obj); + } else { + use_cline = NULL; + } + PyErr_Restore(ptype, pvalue, ptraceback); + } else { + use_cline = PyDict_GetItem(*_PyObject_GetDictPtr(__pyx_cython_runtime), __pyx_n_s_cline_in_traceback); + } + if (!use_cline) { + c_line = 0; + PyObject_SetAttr(__pyx_cython_runtime, __pyx_n_s_cline_in_traceback, Py_False); + } + else if (PyObject_Not(use_cline) != 0) { + c_line = 0; + } + return c_line; +#endif +} + /* CodeObjectCache */ - static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { + static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) { int start = 0, mid = 0, end = count - 1; if (end >= 0 && code_line > entries[end].code_line) { return count; @@ -10026,7 +10444,7 @@ static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) { } /* AddTraceback */ - #include "compile.h" + #include "compile.h" #include "frameobject.h" #include "traceback.h" static PyCodeObject* __Pyx_CreateCodeObjectForTraceback( @@ -10085,12 +10503,15 @@ static void __Pyx_AddTraceback(const char *funcname, int c_line, int py_line, const char *filename) { PyCodeObject *py_code = 0; PyFrameObject *py_frame = 0; - py_code = __pyx_find_code_object(c_line ? c_line : py_line); + if (c_line) { + c_line = __Pyx_CLineForTraceback(c_line); + } + py_code = __pyx_find_code_object(c_line ? -c_line : py_line); if (!py_code) { py_code = __Pyx_CreateCodeObjectForTraceback( funcname, c_line, py_line, filename); if (!py_code) goto bad; - __pyx_insert_code_object(c_line ? c_line : py_line, py_code); + __pyx_insert_code_object(c_line ? -c_line : py_line, py_code); } py_frame = PyFrame_New( PyThreadState_GET(), /*PyThreadState *tstate,*/ @@ -10127,8 +10548,8 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif - /* CIntFromPyVerify */ - #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ + /* CIntFromPyVerify */ + #define __PYX_VERIFY_RETURN_INT(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 0) #define __PYX_VERIFY_RETURN_INT_EXC(target_type, func_type, func_value)\ __PYX__VERIFY_RETURN_INT(target_type, func_type, func_value, 1) @@ -10150,7 +10571,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* Declarations */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_float_complex __pyx_t_float_complex_from_parts(float x, float y) { return ::std::complex< float >(x, y); @@ -10170,7 +10591,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Arithmetic */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_float(__pyx_t_float_complex a, __pyx_t_float_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -10305,7 +10726,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Declarations */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #ifdef __cplusplus static CYTHON_INLINE __pyx_t_double_complex __pyx_t_double_complex_from_parts(double x, double y) { return ::std::complex< double >(x, y); @@ -10325,7 +10746,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* Arithmetic */ - #if CYTHON_CCOMPLEX + #if CYTHON_CCOMPLEX #else static CYTHON_INLINE int __Pyx_c_eq_double(__pyx_t_double_complex a, __pyx_t_double_complex b) { return (a.real == b.real) && (a.imag == b.imag); @@ -10460,7 +10881,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { #endif /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -10491,7 +10912,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_enum__NPY_TYPES(enum NPY_TYPES value) { const enum NPY_TYPES neg_one = (enum NPY_TYPES) -1, const_zero = (enum NPY_TYPES) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -10522,7 +10943,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { + static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) { const int neg_one = (int) -1, const_zero = (int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -10711,7 +11132,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) { + static CYTHON_INLINE unsigned int __Pyx_PyInt_As_unsigned_int(PyObject *x) { const unsigned int neg_one = (unsigned int) -1, const_zero = (unsigned int) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -10900,7 +11321,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntToPy */ - static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { + static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; if (is_unsigned) { @@ -10931,7 +11352,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CIntFromPy */ - static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { + static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) { const long neg_one = (long) -1, const_zero = (long) 0; const int is_unsigned = neg_one > const_zero; #if PY_MAJOR_VERSION < 3 @@ -11120,7 +11541,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* CheckBinaryVersion */ - static int __Pyx_check_binary_version(void) { + static int __Pyx_check_binary_version(void) { char ctversion[4], rtversion[4]; PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION); PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion()); @@ -11136,7 +11557,7 @@ static void __Pyx_ReleaseBuffer(Py_buffer *view) { } /* ModuleImport */ - #ifndef __PYX_HAVE_RT_ImportModule + #ifndef __PYX_HAVE_RT_ImportModule #define __PYX_HAVE_RT_ImportModule static PyObject *__Pyx_ImportModule(const char *name) { PyObject *py_name = 0; @@ -11154,7 +11575,7 @@ static PyObject *__Pyx_ImportModule(const char *name) { #endif /* TypeImport */ - #ifndef __PYX_HAVE_RT_ImportType + #ifndef __PYX_HAVE_RT_ImportType #define __PYX_HAVE_RT_ImportType static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class_name, size_t size, int strict) @@ -11219,7 +11640,7 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class #endif /* InitStrings */ - static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { + static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) { while (t->p) { #if PY_MAJOR_VERSION < 3 if (t->is_unicode) { @@ -11244,6 +11665,8 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class #endif if (!*t->p) return -1; + if (PyObject_Hash(*t->p) == -1) + PyErr_Clear(); ++t; } return 0; @@ -11252,11 +11675,11 @@ static PyTypeObject *__Pyx_ImportType(const char *module_name, const char *class static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) { return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str)); } -static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) { +static CYTHON_INLINE const char* __Pyx_PyObject_AsString(PyObject* o) { Py_ssize_t ignore; return __Pyx_PyObject_AsStringAndSize(o, &ignore); } -static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { +static CYTHON_INLINE const char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) { #if CYTHON_COMPILING_IN_CPYTHON && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT) if ( #if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII diff --git a/pygvt/src/gvt/gvt.pyx b/pygvt/src/gvt/gvt.pyx index c1bea7b2..234d1e1e 100644 --- a/pygvt/src/gvt/gvt.pyx +++ b/pygvt/src/gvt/gvt.pyx @@ -13,6 +13,7 @@ from libcpp cimport bool cdef extern from "api.h": void _gvtInit"gvtInit"(int argc, char** argv) + void _readPly"readPly"(string dirname, bool dist, float* world_bounds) void _createMesh"createMesh"(string) void _addMeshVertices"addMeshVertices"(string name, unsigned &n, float *vertices) void _addMeshTriangles"addMeshTriangles"( string name, unsigned &n, unsigned *triangles) @@ -63,6 +64,9 @@ def gvtInit(): # argv[i] = ctypes.create_string_buffer(enc_arg) # _gvtInit(argc,argv) +def readPly(str dirname, bool dist, np.ndarray[float, ndim=1, mode="c"] world_bounds): + _readPly(dirname.encode(), dist, world_bounds.data) + def createMesh(str name): _createMesh(name.encode()) diff --git a/pygvt/test_example_plyapp.sh b/pygvt/test_example_plyapp.sh new file mode 100644 index 00000000..26fc2563 --- /dev/null +++ b/pygvt/test_example_plyapp.sh @@ -0,0 +1,15 @@ +#!/bin/bash -x + +if [ -z $GVT_DATA ] +then + GVT_DATA=$PWD/../data +fi + +python example_plyapp.py --light-color 30 30 30 ${GVT_DATA}/wavelet_color + +if [ -z ${GVT_MODELS} ]; then + echo "GVT_MODELS is unset. Please specify the model directory." +else + python example_plyapp.py --light-color 900 900 900 ${GVT_MODELS}/enzocolor +fi + diff --git a/src/gvt/render/api/api.cpp b/src/gvt/render/api/api.cpp index 10cf64c2..d4508229 100644 --- a/src/gvt/render/api/api.cpp +++ b/src/gvt/render/api/api.cpp @@ -26,6 +26,7 @@ ACI-1339881 and ACI-1339840 #include #include #include +#include #include @@ -87,6 +88,66 @@ void gvtInit(int argc, char **argv) { cntxt->syncContext(); } +void readPly(const std::string dirname, bool dist, float *world_bounds) { + gvt::render::RenderContext *cntxt = gvt::render::RenderContext::instance(); + + gvt::core::DBNodeH root = cntxt->getRootNode(); + // root += cntxt->createNode( + // "threads", cmd.isSet("threads") ? (int)cmd.get("threads") : (int)std::thread::hardware_concurrency()); + + if (MPI::COMM_WORLD.Get_rank() == 0) { + cntxt->addToSync(cntxt->createNodeFromType("Data", "Data", root.UUID())); + cntxt->addToSync(cntxt->createNodeFromType("Instances", "Instances", root.UUID())); + } + + cntxt->syncContext(); + + gvt::core::DBNodeH dataNodes = root["Data"]; + gvt::core::DBNodeH instNodes = root["Instances"]; + + gvt::render::data::domain::reader::PlyReader plyReader(dirname, dist); + + if (MPI::COMM_WORLD.Get_rank() == 0) { + Box3D bounds; + + for (int k = 0; k < plyReader.getMeshes().size(); k++) { + + // add instance + gvt::core::DBNodeH instnode = cntxt->createNodeFromType("Instance", "inst", instNodes.UUID()); + gvt::core::DBNodeH meshNode = dataNodes.getChildren()[k]; + Box3D *mbox = (Box3D *)meshNode["bbox"].value().toULongLong(); + instnode["id"] = k; + instnode["meshRef"] = meshNode.UUID(); + auto m = new glm::mat4(1.f); + auto minv = new glm::mat4(1.f); + auto normi = new glm::mat3(1.f); + instnode["mat"] = (unsigned long long)m; + *minv = glm::inverse(*m); + instnode["matInv"] = (unsigned long long)minv; + *normi = glm::transpose(glm::inverse(glm::mat3(*m))); + instnode["normi"] = (unsigned long long)normi; + auto il = glm::vec3((*m) * glm::vec4(mbox->bounds_min, 1.f)); + auto ih = glm::vec3((*m) * glm::vec4(mbox->bounds_max, 1.f)); + Box3D *ibox = new gvt::render::data::primitives::Box3D(il, ih); + instnode["bbox"] = (unsigned long long)ibox; + instnode["centroid"] = ibox->centroid(); + + bounds.merge(*ibox); + + cntxt->addToSync(instnode); + } + + world_bounds[0] = bounds.bounds_min[0]; + world_bounds[1] = bounds.bounds_min[1]; + world_bounds[2] = bounds.bounds_min[2]; + world_bounds[3] = bounds.bounds_max[0]; + world_bounds[4] = bounds.bounds_max[1]; + world_bounds[5] = bounds.bounds_max[2]; + } + + cntxt->syncContext(); +} + void createMesh(const std::string name) { gvt::render::RenderContext *cntxt = gvt::render::RenderContext::instance(); diff --git a/src/gvt/render/api/api.h b/src/gvt/render/api/api.h index b2f5b452..c56eee09 100644 --- a/src/gvt/render/api/api.h +++ b/src/gvt/render/api/api.h @@ -50,6 +50,14 @@ void gvtInit(int argc, char **argv); // void addMesh(gvt::render::data::primitives::Box3D *mshbx, gvt::render::data::primitives::Mesh *mesh, // std::string meshname); +/* Reads ply files in a directory. + * \param[in] dirname Name of directory containing ply files. + * \param[in] dist True if multiple nodes are used. + * \param[out] world_bounds Min/Max coordinates for world bounds. bounds_min(x,y,z) and bounds_max(x,y,z). + */ +void readPly(const std::string dirname, bool dist, float *world_bounds); + + /* Creates a mesh with a unique name * \param Mesh unique name */ diff --git a/third-party/ply.h b/third-party/ply.h deleted file mode 100644 index 6b537e3a..00000000 --- a/third-party/ply.h +++ /dev/null @@ -1,169 +0,0 @@ -/* - * - * Header for PLY polygon files. - * - * - Greg Turk, March 1994 - * - * A PLY file contains a single polygonal _object_. - * - * An object is composed of lists of _elements_. Typical elements are - * vertices, faces, edges and materials. - * - * Each type of element for a given object has one or more _properties_ - * associated with the element type. For instance, a vertex element may - * have as properties three floating-point values x,y,z and three unsigned - * chars for red, green and blue. - * - * --------------------------------------------------------------- - * - * Copyright (c) 1994 The Board of Trustees of The Leland Stanford - * Junior University. All rights reserved. - * - * Permission to use, copy, modify and distribute this software and its - * documentation for any purpose is hereby granted without fee, provided - * that the above copyright notice and this permission notice appear in - * all copies of this software and that you do not sell the software. - * - * THE SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, - * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY - * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - * - * */ - -#ifndef __PLY_H__ -#define __PLY_H__ - -#ifdef __cplusplus -extern "C" { -#endif - -#include -#include - -#define PLY_ASCII 1 /* ascii PLY file */ -#define PLY_BINARY_BE 2 /* binary PLY file, big endian */ -#define PLY_BINARY_LE 3 /* binary PLY file, little endian */ - -#define PLY_OKAY 0 /* ply routine worked okay */ -#define PLY_ERROR -1 /* error in ply routine */ - - /* scalar data types supported by PLY format */ - -#define PLY_START_TYPE 0 -#define PLY_CHAR 1 -#define PLY_SHORT 2 -#define PLY_INT 3 -#define PLY_UCHAR 4 -#define PLY_USHORT 5 -#define PLY_UINT 6 -#define PLY_FLOAT 7 -#define PLY_DOUBLE 8 -#define PLY_END_TYPE 9 - -#define PLY_SCALAR 0 -#define PLY_LIST 1 - - - typedef struct PlyProperty { /* description of a property */ - - char *name; /* property name */ - int external_type; /* file's data type */ - int internal_type; /* program's data type */ - int offset; /* offset bytes of prop in a struct */ - - int is_list; /* 1 = list, 0 = scalar */ - int count_external; /* file's count type */ - int count_internal; /* program's count type */ - int count_offset; /* offset byte for list count */ - - } PlyProperty; - - typedef struct PlyElement { /* description of an element */ - char *name; /* element name */ - int num; /* number of elements in this object */ - int size; /* size of element (bytes) or -1 if variable */ - int nprops; /* number of properties for this element */ - PlyProperty **props; /* list of properties in the file */ - char *store_prop; /* flags: property wanted by user? */ - int other_offset; /* offset to un-asked-for props, or -1 if none*/ - int other_size; /* size of other_props structure */ - } PlyElement; - - typedef struct PlyOtherProp { /* describes other properties in an element */ - char *name; /* element name */ - int size; /* size of other_props */ - int nprops; /* number of properties in other_props */ - PlyProperty **props; /* list of properties in other_props */ - } PlyOtherProp; - - typedef struct OtherData { /* for storing other_props for an other element */ - void *other_props; - } OtherData; - - typedef struct OtherElem { /* data for one "other" element */ - char *elem_name; /* names of other elements */ - int elem_count; /* count of instances of each element */ - OtherData **other_data; /* actual property data for the elements */ - PlyOtherProp *other_props; /* description of the property data */ - } OtherElem; - - typedef struct PlyOtherElems { /* "other" elements, not interpreted by user */ - int num_elems; /* number of other elements */ - OtherElem *other_list; /* list of data for other elements */ - } PlyOtherElems; - - typedef struct PlyFile { /* description of PLY file */ - FILE *fp; /* file pointer */ - int file_type; /* ascii or binary */ - float version; /* version number of file */ - int nelems; /* number of elements of object */ - PlyElement **elems; /* list of elements */ - int num_comments; /* number of comments */ - char **comments; /* list of comments */ - int num_obj_info; /* number of items of object information */ - char **obj_info; /* list of object info items */ - PlyElement *which_elem; /* which element we're currently writing */ - PlyOtherElems *other_elems; /* "other" elements from a PLY file */ - } PlyFile; - - /* memory allocation */ - extern char *my_alloc(); -#define myalloc(mem_size) my_alloc((mem_size), __LINE__, __FILE__) - - - /*** delcaration of routines ***/ - - extern PlyFile *ply_write(FILE *, int, char **, int); - extern PlyFile *ply_open_for_writing(char *, int, char **, int, float *); - extern void ply_describe_element(PlyFile *, char *, int, int, PlyProperty *); - extern void ply_describe_property(PlyFile *, char *, PlyProperty *); - extern void ply_element_count(PlyFile *, char *, int); - extern void ply_header_complete(PlyFile *); - extern void ply_put_element_setup(PlyFile *, char *); - extern void ply_put_element(PlyFile *, void *); - extern void ply_put_comment(PlyFile *, char *); - extern void ply_put_obj_info(PlyFile *, char *); - extern PlyFile *ply_read(FILE *, int *, char ***); - extern PlyFile *ply_open_for_reading( char *, int *, char ***, int *, float *); - extern PlyProperty **ply_get_element_description(PlyFile *, char *, int*, int*); - extern void ply_get_element_setup( PlyFile *, char *, int, PlyProperty *); - extern void ply_get_property(PlyFile *, char *, PlyProperty *); - extern PlyOtherProp *ply_get_other_properties(PlyFile *, char *, int); - extern ply_get_element(PlyFile *, void *); - extern char **ply_get_comments(PlyFile *, int *); - extern char **ply_get_obj_info(PlyFile *, int *); - extern void ply_close(PlyFile *); - extern void ply_get_info(PlyFile *, float *, int *); - extern PlyOtherElems *ply_get_other_element (PlyFile *, char *, int); - extern void ply_describe_other_elements ( PlyFile *, PlyOtherElems *); - extern void ply_put_other_elements (PlyFile *); - extern void ply_free_other_elements (PlyOtherElems *); - - extern int equal_strings(char *, char *); - - -#ifdef __cplusplus -} -#endif -#endif /* !__PLY_H__ */ - From abcdc4f63cc8ffa095be0db15bc5d39e88888e27 Mon Sep 17 00:00:00 2001 From: Hyungman Date: Mon, 9 Oct 2017 07:18:56 -0500 Subject: [PATCH 5/5] updated test script to render EnzoPlyData using pygvt --- pygvt/README.md | 1 + pygvt/test_example_plyapp.sh | 1 + 2 files changed, 2 insertions(+) diff --git a/pygvt/README.md b/pygvt/README.md index 5c4a5677..8f081c21 100644 --- a/pygvt/README.md +++ b/pygvt/README.md @@ -47,6 +47,7 @@ export GVT_MODELS=/work/03378/hpark/maverick/gvtmodels source test_example_plyapp.sh display wavelet_color.ppm +display EnzoPlyData.ppm If GVT_MODELS is set, open enzocolor.ppm. display enzocolor.ppm diff --git a/pygvt/test_example_plyapp.sh b/pygvt/test_example_plyapp.sh index 26fc2563..4126d6f8 100644 --- a/pygvt/test_example_plyapp.sh +++ b/pygvt/test_example_plyapp.sh @@ -6,6 +6,7 @@ then fi python example_plyapp.py --light-color 30 30 30 ${GVT_DATA}/wavelet_color +python example_plyapp.py --light-color 500 500 500 ${GVT_DATA}/EnzoPlyData if [ -z ${GVT_MODELS} ]; then echo "GVT_MODELS is unset. Please specify the model directory."