Fixed a nasty bug in texture loading.

This commit is contained in:
Quantum 2013-10-26 23:51:02 -04:00
parent 43636c1eb7
commit ada6ae9121
2 changed files with 69 additions and 47 deletions

View file

@ -1,4 +1,4 @@
/* Generated by Cython 0.18 on Sat Oct 26 16:08:45 2013 */ /* Generated by Cython 0.18 on Sat Oct 26 23:48:35 2013 */
#define PY_SSIZE_T_CLEAN #define PY_SSIZE_T_CLEAN
#include "Python.h" #include "Python.h"
@ -1565,6 +1565,7 @@ static char __pyx_k__newmtl[] = "newmtl";
static char __pyx_k__usemtl[] = "usemtl"; static char __pyx_k__usemtl[] = "usemtl";
static char __pyx_k__xrange[] = "xrange"; static char __pyx_k__xrange[] = "xrange";
static char __pyx_k__IOError[] = "IOError"; static char __pyx_k__IOError[] = "IOError";
static char __pyx_k__abspath[] = "abspath";
static char __pyx_k__dirname[] = "dirname"; static char __pyx_k__dirname[] = "dirname";
static char __pyx_k__normals[] = "normals"; static char __pyx_k__normals[] = "normals";
static char __pyx_k__texture[] = "texture"; static char __pyx_k__texture[] = "texture";
@ -1595,6 +1596,7 @@ static PyObject *__pyx_n_s__Ks;
static PyObject *__pyx_n_s____file__; static PyObject *__pyx_n_s____file__;
static PyObject *__pyx_n_s____main__; static PyObject *__pyx_n_s____main__;
static PyObject *__pyx_n_s____test__; static PyObject *__pyx_n_s____test__;
static PyObject *__pyx_n_s__abspath;
static PyObject *__pyx_n_s__assets; static PyObject *__pyx_n_s__assets;
static PyObject *__pyx_n_s__decode; static PyObject *__pyx_n_s__decode;
static PyObject *__pyx_n_s__dirname; static PyObject *__pyx_n_s__dirname;
@ -4692,7 +4694,7 @@ static int __pyx_pw_9punyverse_6_model_15WavefrontObject_1__init__(PyObject *__p
* cdef Group current_group * cdef Group current_group
* def __init__(self, unicode path): # <<<<<<<<<<<<<< * def __init__(self, unicode path): # <<<<<<<<<<<<<<
* self.path = path * self.path = path
* self.root = os.path.dirname(path) * self.root = os.path.abspath(os.path.dirname(path))
*/ */
static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_obj_9punyverse_6_model_WavefrontObject *__pyx_v_self, PyObject *__pyx_v_path) { static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_obj_9punyverse_6_model_WavefrontObject *__pyx_v_self, PyObject *__pyx_v_path) {
@ -4701,6 +4703,7 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
PyObject *__pyx_t_1 = NULL; PyObject *__pyx_t_1 = NULL;
PyObject *__pyx_t_2 = NULL; PyObject *__pyx_t_2 = NULL;
PyObject *__pyx_t_3 = NULL; PyObject *__pyx_t_3 = NULL;
PyObject *__pyx_t_4 = NULL;
int __pyx_lineno = 0; int __pyx_lineno = 0;
const char *__pyx_filename = NULL; const char *__pyx_filename = NULL;
int __pyx_clineno = 0; int __pyx_clineno = 0;
@ -4710,7 +4713,7 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
* cdef Group current_group * cdef Group current_group
* def __init__(self, unicode path): * def __init__(self, unicode path):
* self.path = path # <<<<<<<<<<<<<< * self.path = path # <<<<<<<<<<<<<<
* self.root = os.path.dirname(path) * self.root = os.path.abspath(os.path.dirname(path))
* self.vertices = [] * self.vertices = []
*/ */
__Pyx_INCREF(((PyObject *)__pyx_v_path)); __Pyx_INCREF(((PyObject *)__pyx_v_path));
@ -4722,7 +4725,7 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
/* "punyverse\_model.pyx":82 /* "punyverse\_model.pyx":82
* def __init__(self, unicode path): * def __init__(self, unicode path):
* self.path = path * self.path = path
* self.root = os.path.dirname(path) # <<<<<<<<<<<<<< * self.root = os.path.abspath(os.path.dirname(path)) # <<<<<<<<<<<<<<
* self.vertices = [] * self.vertices = []
* self.normals = [] * self.normals = []
*/ */
@ -4731,54 +4734,71 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
__pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = PyObject_GetAttr(__pyx_t_1, __pyx_n_s__path); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__dirname); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_1 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__abspath); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_1); __Pyx_GOTREF(__pyx_t_1);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0; __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_2 = __Pyx_GetName(__pyx_m, __pyx_n_s__os); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2); __Pyx_GOTREF(__pyx_t_2);
__Pyx_INCREF(((PyObject *)__pyx_v_path)); __pyx_t_3 = PyObject_GetAttr(__pyx_t_2, __pyx_n_s__path); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_path));
__Pyx_GIVEREF(((PyObject *)__pyx_v_path));
__pyx_t_3 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_2), NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_3);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__pyx_t_2 = PyObject_GetAttr(__pyx_t_3, __pyx_n_s__dirname); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_2);
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
__Pyx_INCREF(((PyObject *)__pyx_v_path));
PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_path));
__Pyx_GIVEREF(((PyObject *)__pyx_v_path));
__pyx_t_4 = PyObject_Call(__pyx_t_2, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
__pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3);
PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
__Pyx_GIVEREF(__pyx_t_4);
__pyx_t_4 = 0;
__pyx_t_4 = PyObject_Call(__pyx_t_1, ((PyObject *)__pyx_t_3), NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_4);
__Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0; __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
__Pyx_DECREF(((PyObject *)__pyx_t_2)); __pyx_t_2 = 0; __Pyx_DECREF(((PyObject *)__pyx_t_3)); __pyx_t_3 = 0;
if (!(likely(PyUnicode_CheckExact(__pyx_t_3))||((__pyx_t_3) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected unicode, got %.200s", Py_TYPE(__pyx_t_3)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;} if (!(likely(PyUnicode_CheckExact(__pyx_t_4))||((__pyx_t_4) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected unicode, got %.200s", Py_TYPE(__pyx_t_4)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GIVEREF(__pyx_t_3); __Pyx_GIVEREF(__pyx_t_4);
__Pyx_GOTREF(__pyx_v_self->root); __Pyx_GOTREF(__pyx_v_self->root);
__Pyx_DECREF(((PyObject *)__pyx_v_self->root)); __Pyx_DECREF(((PyObject *)__pyx_v_self->root));
__pyx_v_self->root = ((PyObject*)__pyx_t_3); __pyx_v_self->root = ((PyObject*)__pyx_t_4);
__pyx_t_3 = 0; __pyx_t_4 = 0;
/* "punyverse\_model.pyx":83 /* "punyverse\_model.pyx":83
* self.path = path * self.path = path
* self.root = os.path.dirname(path) * self.root = os.path.abspath(os.path.dirname(path))
* self.vertices = [] # <<<<<<<<<<<<<< * self.vertices = [] # <<<<<<<<<<<<<<
* self.normals = [] * self.normals = []
* self.textures = [] * self.textures = []
*/ */
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__Pyx_GOTREF(__pyx_v_self->vertices); __Pyx_GOTREF(__pyx_v_self->vertices);
__Pyx_DECREF(((PyObject *)__pyx_v_self->vertices)); __Pyx_DECREF(((PyObject *)__pyx_v_self->vertices));
__pyx_v_self->vertices = ((PyObject*)__pyx_t_3); __pyx_v_self->vertices = ((PyObject*)__pyx_t_4);
__pyx_t_3 = 0; __pyx_t_4 = 0;
/* "punyverse\_model.pyx":84 /* "punyverse\_model.pyx":84
* self.root = os.path.dirname(path) * self.root = os.path.abspath(os.path.dirname(path))
* self.vertices = [] * self.vertices = []
* self.normals = [] # <<<<<<<<<<<<<< * self.normals = [] # <<<<<<<<<<<<<<
* self.textures = [] * self.textures = []
* self.groups = [] * self.groups = []
*/ */
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__Pyx_GOTREF(__pyx_v_self->normals); __Pyx_GOTREF(__pyx_v_self->normals);
__Pyx_DECREF(((PyObject *)__pyx_v_self->normals)); __Pyx_DECREF(((PyObject *)__pyx_v_self->normals));
__pyx_v_self->normals = ((PyObject*)__pyx_t_3); __pyx_v_self->normals = ((PyObject*)__pyx_t_4);
__pyx_t_3 = 0; __pyx_t_4 = 0;
/* "punyverse\_model.pyx":85 /* "punyverse\_model.pyx":85
* self.vertices = [] * self.vertices = []
@ -4787,13 +4807,13 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
* self.groups = [] * self.groups = []
* self.materials = {} * self.materials = {}
*/ */
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__Pyx_GOTREF(__pyx_v_self->textures); __Pyx_GOTREF(__pyx_v_self->textures);
__Pyx_DECREF(((PyObject *)__pyx_v_self->textures)); __Pyx_DECREF(((PyObject *)__pyx_v_self->textures));
__pyx_v_self->textures = ((PyObject*)__pyx_t_3); __pyx_v_self->textures = ((PyObject*)__pyx_t_4);
__pyx_t_3 = 0; __pyx_t_4 = 0;
/* "punyverse\_model.pyx":86 /* "punyverse\_model.pyx":86
* self.normals = [] * self.normals = []
@ -4802,13 +4822,13 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
* self.materials = {} * self.materials = {}
* *
*/ */
__pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(__pyx_t_3); __Pyx_GOTREF(__pyx_t_4);
__Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__Pyx_GOTREF(__pyx_v_self->groups); __Pyx_GOTREF(__pyx_v_self->groups);
__Pyx_DECREF(((PyObject *)__pyx_v_self->groups)); __Pyx_DECREF(((PyObject *)__pyx_v_self->groups));
__pyx_v_self->groups = ((PyObject*)__pyx_t_3); __pyx_v_self->groups = ((PyObject*)__pyx_t_4);
__pyx_t_3 = 0; __pyx_t_4 = 0;
/* "punyverse\_model.pyx":87 /* "punyverse\_model.pyx":87
* self.textures = [] * self.textures = []
@ -4817,13 +4837,13 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
* *
* self.perform_io(self.path) * self.perform_io(self.path)
*/ */
__pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;} __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
__Pyx_GOTREF(((PyObject *)__pyx_t_3)); __Pyx_GOTREF(((PyObject *)__pyx_t_4));
__Pyx_GIVEREF(((PyObject *)__pyx_t_3)); __Pyx_GIVEREF(((PyObject *)__pyx_t_4));
__Pyx_GOTREF(__pyx_v_self->materials); __Pyx_GOTREF(__pyx_v_self->materials);
__Pyx_DECREF(((PyObject *)__pyx_v_self->materials)); __Pyx_DECREF(((PyObject *)__pyx_v_self->materials));
__pyx_v_self->materials = ((PyObject*)__pyx_t_3); __pyx_v_self->materials = ((PyObject*)__pyx_t_4);
__pyx_t_3 = 0; __pyx_t_4 = 0;
/* "punyverse\_model.pyx":89 /* "punyverse\_model.pyx":89
* self.materials = {} * self.materials = {}
@ -4832,10 +4852,10 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
* *
* cdef void new_material(self, list words): * cdef void new_material(self, list words):
*/ */
__pyx_t_3 = ((PyObject *)__pyx_v_self->path); __pyx_t_4 = ((PyObject *)__pyx_v_self->path);
__Pyx_INCREF(__pyx_t_3); __Pyx_INCREF(__pyx_t_4);
__pyx_f_9punyverse_6_model_15WavefrontObject_perform_io(__pyx_v_self, ((PyObject*)__pyx_t_3)); __pyx_f_9punyverse_6_model_15WavefrontObject_perform_io(__pyx_v_self, ((PyObject*)__pyx_t_4));
__Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0; __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
__pyx_r = 0; __pyx_r = 0;
goto __pyx_L0; goto __pyx_L0;
@ -4843,6 +4863,7 @@ static int __pyx_pf_9punyverse_6_model_15WavefrontObject___init__(struct __pyx_o
__Pyx_XDECREF(__pyx_t_1); __Pyx_XDECREF(__pyx_t_1);
__Pyx_XDECREF(__pyx_t_2); __Pyx_XDECREF(__pyx_t_2);
__Pyx_XDECREF(__pyx_t_3); __Pyx_XDECREF(__pyx_t_3);
__Pyx_XDECREF(__pyx_t_4);
__Pyx_AddTraceback("punyverse._model.WavefrontObject.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename); __Pyx_AddTraceback("punyverse._model.WavefrontObject.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
__pyx_r = -1; __pyx_r = -1;
__pyx_L0:; __pyx_L0:;
@ -10723,6 +10744,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
{&__pyx_n_s____file__, __pyx_k____file__, sizeof(__pyx_k____file__), 0, 0, 1, 1}, {&__pyx_n_s____file__, __pyx_k____file__, sizeof(__pyx_k____file__), 0, 0, 1, 1},
{&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1}, {&__pyx_n_s____main__, __pyx_k____main__, sizeof(__pyx_k____main__), 0, 0, 1, 1},
{&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1}, {&__pyx_n_s____test__, __pyx_k____test__, sizeof(__pyx_k____test__), 0, 0, 1, 1},
{&__pyx_n_s__abspath, __pyx_k__abspath, sizeof(__pyx_k__abspath), 0, 0, 1, 1},
{&__pyx_n_s__assets, __pyx_k__assets, sizeof(__pyx_k__assets), 0, 0, 1, 1}, {&__pyx_n_s__assets, __pyx_k__assets, sizeof(__pyx_k__assets), 0, 0, 1, 1},
{&__pyx_n_s__decode, __pyx_k__decode, sizeof(__pyx_k__decode), 0, 0, 1, 1}, {&__pyx_n_s__decode, __pyx_k__decode, sizeof(__pyx_k__decode), 0, 0, 1, 1},
{&__pyx_n_s__dirname, __pyx_k__dirname, sizeof(__pyx_k__dirname), 0, 0, 1, 1}, {&__pyx_n_s__dirname, __pyx_k__dirname, sizeof(__pyx_k__dirname), 0, 0, 1, 1},

View file

@ -79,7 +79,7 @@ cdef class WavefrontObject(object):
cdef Group current_group cdef Group current_group
def __init__(self, unicode path): def __init__(self, unicode path):
self.path = path self.path = path
self.root = os.path.dirname(path) self.root = os.path.abspath(os.path.dirname(path))
self.vertices = [] self.vertices = []
self.normals = [] self.normals = []
self.textures = [] self.textures = []