/* Copyright (c) Mark J. Kilgard, 1998. */ /* This program is freely distributable without licensing fees and is provided without guarantee or warrantee expressed or implied. This program is -not- in the public domain. */ #include #include #include "glsmapint.h" static SphereMapMesh * createSphereMapMesh(void) { SphereMapMesh *mesh; mesh = (SphereMapMesh*) malloc(sizeof(SphereMapMesh)); mesh->steps = 8; mesh->rings = 3; mesh->edgeExtend = 1; mesh->face = NULL; mesh->back = NULL; mesh->refcnt = 0; return mesh; } static void refSphereMapMesh(SphereMapMesh *mesh) { mesh->refcnt++; } SphereMap * smapCreateSphereMap(SphereMap *shareSmap) { SphereMap *smap; int i; smap = (SphereMap*) malloc(sizeof(SphereMap)); if (shareSmap) { smap->mesh = shareSmap->mesh; } else { smap->mesh = createSphereMapMesh(); } refSphereMapMesh(smap->mesh); /* Default texture objects. */ smap->smapTexObj = 1001; for (i=0; i<6; i++) { smap->viewTexObjs[i] = i+1002; } smap->viewTexObj = 1008; /* Default texture dimensions 64x64 */ smap->viewTexDim = 64; smap->smapTexDim = 64; /* Default origin at lower left. */ smap->viewOrigin[X] = 0; smap->viewOrigin[Y] = 0; smap->smapOrigin[X] = 0; smap->smapOrigin[Y] = 0; /* Flags. */ smap->flags = (SphereMapFlags) 0; /* Default eye vector. */ smap->eye[X] = 0.0; smap->eye[Y] = 0.0; smap->eye[Z] = -10.0; /* Default up vector. */ smap->up[X] = 0.0; smap->up[Y] = 0.1; smap->up[Z] = 0.0; /* Default object location vector. */ smap->obj[X] = 0.0; smap->obj[Y] = 0.0; smap->obj[Z] = 0.0; /* Default near and far clip planes. */ smap->viewNear = 0.1; smap->viewFar = 20.0; smap->positionLights = NULL; smap->drawView = NULL; smap->context = NULL; return smap; }