Blender V2.61 - r43446
Classes | Defines | Typedefs | Enumerations | Functions | Variables

CCGSubSurf.c File Reference

#include <stdlib.h>
#include <string.h>
#include <math.h>
#include "CCGSubSurf.h"
#include "MEM_guardedalloc.h"
#include "BLO_sys_types.h"

Go to the source code of this file.

Classes

struct  _EHEntry
struct  _EHash
struct  _EHashIterator
struct  _CCGVert
struct  _CCGEdge
struct  _CCGFace
struct  _CCGSubSurf

Defines

#define CCG_INLINE   inline
#define UNUSED(x)   x
#define EPSILON   (1.0e-35f)
#define EHASH_alloc(eh, nb)   ((eh)->allocatorIFC.alloc((eh)->allocator, nb))
#define EHASH_free(eh, ptr)   ((eh)->allocatorIFC.free((eh)->allocator, ptr))
#define EHASH_hash(eh, item)   (((uintptr_t) (item))%((unsigned int) (eh)->curSize))
#define VertDataZero(av)   { float *_a = (float*) av; _a[0] = _a[1] = _a[2] = 0.0f; }
#define VertDataCopy(av, bv)   { float *_a = (float*) av, *_b = (float*) bv; _a[0] =_b[0]; _a[1] =_b[1]; _a[2] =_b[2]; }
#define VertDataAdd(av, bv)   { float *_a = (float*) av, *_b = (float*) bv; _a[0]+=_b[0]; _a[1]+=_b[1]; _a[2]+=_b[2]; }
#define VertDataSub(av, bv)   { float *_a = (float*) av, *_b = (float*) bv; _a[0]-=_b[0]; _a[1]-=_b[1]; _a[2]-=_b[2]; }
#define VertDataMulN(av, n)   { float *_a = (float*) av; _a[0]*=n; _a[1]*=n; _a[2]*=n; }
#define VertDataAvg4(tv, av, bv, cv, dv)
#define NormZero(av)   { float *_a = (float*) av; _a[0] = _a[1] = _a[2] = 0.0f; }
#define NormCopy(av, bv)   { float *_a = (float*) av, *_b = (float*) bv; _a[0] =_b[0]; _a[1] =_b[1]; _a[2] =_b[2]; }
#define NormAdd(av, bv)   { float *_a = (float*) av, *_b = (float*) bv; _a[0]+=_b[0]; _a[1]+=_b[1]; _a[2]+=_b[2]; }
#define VERT_getLevelData(v)   ((byte*) &(v)[1])
#define EDGE_getLevelData(e)   ((byte*) &(e)[1])
#define FACE_getVerts(f)   ((CCGVert**) &(f)[1])
#define FACE_getEdges(f)   ((CCGEdge**) &(FACE_getVerts(f)[(f)->numVerts]))
#define FACE_getCenterData(f)   ((byte*) &(FACE_getEdges(f)[(f)->numVerts]))
#define CCGSUBSURF_alloc(ss, nb)   ((ss)->allocatorIFC.alloc((ss)->allocator, nb))
#define CCGSUBSURF_realloc(ss, ptr, nb, ob)   ((ss)->allocatorIFC.realloc((ss)->allocator, ptr, nb, ob))
#define CCGSUBSURF_free(ss, ptr)   ((ss)->allocatorIFC.free((ss)->allocator, ptr))
#define VERT_getNo(e, lvl)   _vert_getNo(e, lvl, vertDataSize, normalDataOffset)
#define EDGE_getNo(e, lvl, x)   _edge_getNo(e, lvl, x, vertDataSize, normalDataOffset)
#define FACE_getIFNo(f, lvl, S, x, y)   _face_getIFNo(f, lvl, S, x, y, subdivLevels, vertDataSize, normalDataOffset)
#define FACE_calcIFNo(f, lvl, S, x, y, no)   _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize)
#define FACE_getIENo(f, lvl, S, x)   _face_getIENo(f, lvl, S, x, subdivLevels, vertDataSize, normalDataOffset)
#define VERT_getCo(v, lvl)   _vert_getCo(v, lvl, vertDataSize)
#define EDGE_getCo(e, lvl, x)   _edge_getCo(e, lvl, x, vertDataSize)
#define FACE_getIECo(f, lvl, S, x)   _face_getIECo(f, lvl, S, x, subdivLevels, vertDataSize)
#define FACE_getIFCo(f, lvl, S, x, y)   _face_getIFCo(f, lvl, S, x, y, subdivLevels, vertDataSize)

Typedefs

typedef unsigned char byte
typedef struct _EHEntry EHEntry
typedef struct _EHash EHash
typedef void(* EHEntryFreeFP )(EHEntry *, void *)
typedef struct _EHashIterator EHashIterator

Enumerations

enum  { Vert_eEffected = (1<<0), Vert_eChanged = (1<<1), Vert_eSeam = (1<<2) }
enum  { Edge_eEffected = (1<<0) }
enum  { Face_eEffected = (1<<0) }
enum  SyncState {
  eSyncState_None = 0, eSyncState_Vert, eSyncState_Edge, eSyncState_Face,
  eSyncState_Partial
}

Functions

static EHash_ehash_new (int estimatedNumEntries, CCGAllocatorIFC *allocatorIFC, CCGAllocatorHDL allocator)
static void _ehash_free (EHash *eh, EHEntryFreeFP freeEntry, void *userData)
static void _ehash_insert (EHash *eh, EHEntry *entry)
static void * _ehash_lookupWithPrev (EHash *eh, void *key, void ***prevp_r)
static void * _ehash_lookup (EHash *eh, void *key)
static EHashIterator_ehashIterator_new (EHash *eh)
static void _ehashIterator_free (EHashIterator *ehi)
static void * _ehashIterator_getCurrent (EHashIterator *ehi)
static void _ehashIterator_next (EHashIterator *ehi)
static int _ehashIterator_isStopped (EHashIterator *ehi)
static void * _stdAllocator_alloc (CCGAllocatorHDL UNUSED(a), int numBytes)
static void * _stdAllocator_realloc (CCGAllocatorHDL UNUSED(a), void *ptr, int newSize, int UNUSED(oldSize))
static void _stdAllocator_free (CCGAllocatorHDL UNUSED(a), void *ptr)
static CCGAllocatorIFC_getStandardAllocatorIFC (void)
static int VertDataEqual (const float *a, const float *b)
static int _edge_isBoundary (const CCGEdge *e)
static CCGVert_vert_new (CCGVertHDL vHDL, CCGSubSurf *ss)
static void _vert_remEdge (CCGVert *v, CCGEdge *e)
static void _vert_remFace (CCGVert *v, CCGFace *f)
static void _vert_addEdge (CCGVert *v, CCGEdge *e, CCGSubSurf *ss)
static void _vert_addFace (CCGVert *v, CCGFace *f, CCGSubSurf *ss)
static CCGEdge_vert_findEdgeTo (const CCGVert *v, const CCGVert *vQ)
static int _vert_isBoundary (const CCGVert *v)
static void * _vert_getCo (CCGVert *v, int lvl, int dataSize)
static float * _vert_getNo (CCGVert *v, int lvl, int dataSize, int normalDataOffset)
static void _vert_free (CCGVert *v, CCGSubSurf *ss)
static int VERT_seam (const CCGVert *v)
static CCGEdge_edge_new (CCGEdgeHDL eHDL, CCGVert *v0, CCGVert *v1, float crease, CCGSubSurf *ss)
static void _edge_remFace (CCGEdge *e, CCGFace *f)
static void _edge_addFace (CCGEdge *e, CCGFace *f, CCGSubSurf *ss)
static CCGVert_edge_getOtherVert (CCGEdge *e, CCGVert *vQ)
static void * _edge_getCo (CCGEdge *e, int lvl, int x, int dataSize)
static float * _edge_getNo (CCGEdge *e, int lvl, int x, int dataSize, int normalDataOffset)
static void * _edge_getCoVert (CCGEdge *e, CCGVert *v, int lvl, int x, int dataSize)
static void _edge_free (CCGEdge *e, CCGSubSurf *ss)
static void _edge_unlinkMarkAndFree (CCGEdge *e, CCGSubSurf *ss)
static float EDGE_getSharpness (CCGEdge *e, int lvl)
static CCGFace_face_new (CCGFaceHDL fHDL, CCGVert **verts, CCGEdge **edges, int numVerts, CCGSubSurf *ss)
static CCG_INLINE void * _face_getIECo (CCGFace *f, int lvl, int S, int x, int levels, int dataSize)
static CCG_INLINE void * _face_getIENo (CCGFace *f, int lvl, int S, int x, int levels, int dataSize, int normalDataOffset)
static CCG_INLINE void * _face_getIFCo (CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize)
static CCG_INLINE float * _face_getIFNo (CCGFace *f, int lvl, int S, int x, int y, int levels, int dataSize, int normalDataOffset)
static int _face_getVertIndex (CCGFace *f, CCGVert *v)
static CCG_INLINE void * _face_getIFCoEdge (CCGFace *f, CCGEdge *e, int lvl, int eX, int eY, int levels, int dataSize)
static float * _face_getIFNoEdge (CCGFace *f, CCGEdge *e, int lvl, int eX, int eY, int levels, int dataSize, int normalDataOffset)
static void _face_calcIFNo (CCGFace *f, int lvl, int S, int x, int y, float *no, int levels, int dataSize)
static void _face_free (CCGFace *f, CCGSubSurf *ss)
static void _face_unlinkMarkAndFree (CCGFace *f, CCGSubSurf *ss)
CCGSubSurfccgSubSurf_new (CCGMeshIFC *ifc, int subdivLevels, CCGAllocatorIFC *allocatorIFC, CCGAllocatorHDL allocator)
void ccgSubSurf_free (CCGSubSurf *ss)
CCGError ccgSubSurf_setAllowEdgeCreation (CCGSubSurf *ss, int allowEdgeCreation, float defaultCreaseValue, void *defaultUserData)
void ccgSubSurf_getAllowEdgeCreation (CCGSubSurf *ss, int *allowEdgeCreation_r, float *defaultCreaseValue_r, void *defaultUserData_r)
CCGError ccgSubSurf_setSubdivisionLevels (CCGSubSurf *ss, int subdivisionLevels)
void ccgSubSurf_getUseAgeCounts (CCGSubSurf *ss, int *useAgeCounts_r, int *vertUserOffset_r, int *edgeUserOffset_r, int *faceUserOffset_r)
CCGError ccgSubSurf_setUseAgeCounts (CCGSubSurf *ss, int useAgeCounts, int vertUserOffset, int edgeUserOffset, int faceUserOffset)
CCGError ccgSubSurf_setCalcVertexNormals (CCGSubSurf *ss, int useVertNormals, int normalDataOffset)
CCGError ccgSubSurf_initFullSync (CCGSubSurf *ss)
CCGError ccgSubSurf_initPartialSync (CCGSubSurf *ss)
CCGError ccgSubSurf_syncVertDel (CCGSubSurf *ss, CCGVertHDL vHDL)
CCGError ccgSubSurf_syncEdgeDel (CCGSubSurf *ss, CCGEdgeHDL eHDL)
CCGError ccgSubSurf_syncFaceDel (CCGSubSurf *ss, CCGFaceHDL fHDL)
CCGError ccgSubSurf_syncVert (CCGSubSurf *ss, CCGVertHDL vHDL, const void *vertData, int seam, CCGVert **v_r)
CCGError ccgSubSurf_syncEdge (CCGSubSurf *ss, CCGEdgeHDL eHDL, CCGVertHDL e_vHDL0, CCGVertHDL e_vHDL1, float crease, CCGEdge **e_r)
CCGError ccgSubSurf_syncFace (CCGSubSurf *ss, CCGFaceHDL fHDL, int numVerts, CCGVertHDL *vHDLs, CCGFace **f_r)
static void ccgSubSurf__sync (CCGSubSurf *ss)
CCGError ccgSubSurf_processSync (CCGSubSurf *ss)
static void ccgSubSurf__calcVertNormals (CCGSubSurf *ss, CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, int numEffectedV, int numEffectedE, int numEffectedF)
static void ccgSubSurf__calcSubdivLevel (CCGSubSurf *ss, CCGVert **effectedV, CCGEdge **effectedE, CCGFace **effectedF, int numEffectedV, int numEffectedE, int numEffectedF, int curLvl)
static void ccgSubSurf__allFaces (CCGSubSurf *ss, CCGFace ***faces, int *numFaces, int *freeFaces)
static void ccgSubSurf__effectedFaceNeighbours (CCGSubSurf *ss, CCGFace **faces, int numFaces, CCGVert ***verts, int *numVerts, CCGEdge ***edges, int *numEdges)
CCGError ccgSubSurf_updateFromFaces (CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF)
CCGError ccgSubSurf_updateToFaces (CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF)
CCGError ccgSubSurf_stitchFaces (CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF)
CCGError ccgSubSurf_updateNormals (CCGSubSurf *ss, CCGFace **effectedF, int numEffectedF)
CCGError ccgSubSurf_updateLevels (CCGSubSurf *ss, int lvl, CCGFace **effectedF, int numEffectedF)
int ccgSubSurf_getNumVerts (const CCGSubSurf *ss)
int ccgSubSurf_getNumEdges (const CCGSubSurf *ss)
int ccgSubSurf_getNumFaces (const CCGSubSurf *ss)
CCGVertccgSubSurf_getVert (CCGSubSurf *ss, CCGVertHDL v)
CCGEdgeccgSubSurf_getEdge (CCGSubSurf *ss, CCGEdgeHDL e)
CCGFaceccgSubSurf_getFace (CCGSubSurf *ss, CCGFaceHDL f)
int ccgSubSurf_getSubdivisionLevels (const CCGSubSurf *ss)
int ccgSubSurf_getEdgeSize (const CCGSubSurf *ss)
int ccgSubSurf_getEdgeLevelSize (const CCGSubSurf *ss, int level)
int ccgSubSurf_getGridSize (const CCGSubSurf *ss)
int ccgSubSurf_getGridLevelSize (const CCGSubSurf *ss, int level)
CCGVertHDL ccgSubSurf_getVertVertHandle (CCGVert *v)
int ccgSubSurf_getVertAge (CCGSubSurf *ss, CCGVert *v)
void * ccgSubSurf_getVertUserData (CCGSubSurf *ss, CCGVert *v)
int ccgSubSurf_getVertNumFaces (CCGVert *v)
CCGFaceccgSubSurf_getVertFace (CCGVert *v, int index)
int ccgSubSurf_getVertNumEdges (CCGVert *v)
CCGEdgeccgSubSurf_getVertEdge (CCGVert *v, int index)
void * ccgSubSurf_getVertData (CCGSubSurf *ss, CCGVert *v)
void * ccgSubSurf_getVertLevelData (CCGSubSurf *ss, CCGVert *v, int level)
CCGEdgeHDL ccgSubSurf_getEdgeEdgeHandle (CCGEdge *e)
int ccgSubSurf_getEdgeAge (CCGSubSurf *ss, CCGEdge *e)
void * ccgSubSurf_getEdgeUserData (CCGSubSurf *ss, CCGEdge *e)
int ccgSubSurf_getEdgeNumFaces (CCGEdge *e)
CCGFaceccgSubSurf_getEdgeFace (CCGEdge *e, int index)
CCGVertccgSubSurf_getEdgeVert0 (CCGEdge *e)
CCGVertccgSubSurf_getEdgeVert1 (CCGEdge *e)
void * ccgSubSurf_getEdgeDataArray (CCGSubSurf *ss, CCGEdge *e)
void * ccgSubSurf_getEdgeData (CCGSubSurf *ss, CCGEdge *e, int x)
void * ccgSubSurf_getEdgeLevelData (CCGSubSurf *ss, CCGEdge *e, int x, int level)
float ccgSubSurf_getEdgeCrease (CCGEdge *e)
CCGFaceHDL ccgSubSurf_getFaceFaceHandle (CCGSubSurf *UNUSED(ss), CCGFace *f)
int ccgSubSurf_getFaceAge (CCGSubSurf *ss, CCGFace *f)
void * ccgSubSurf_getFaceUserData (CCGSubSurf *ss, CCGFace *f)
int ccgSubSurf_getFaceNumVerts (CCGFace *f)
CCGVertccgSubSurf_getFaceVert (CCGSubSurf *UNUSED(ss), CCGFace *f, int index)
CCGEdgeccgSubSurf_getFaceEdge (CCGSubSurf *UNUSED(ss), CCGFace *f, int index)
int ccgSubSurf_getFaceEdgeIndex (CCGFace *f, CCGEdge *e)
void * ccgSubSurf_getFaceCenterData (CCGFace *f)
void * ccgSubSurf_getFaceGridEdgeDataArray (CCGSubSurf *ss, CCGFace *f, int gridIndex)
void * ccgSubSurf_getFaceGridEdgeData (CCGSubSurf *ss, CCGFace *f, int gridIndex, int x)
void * ccgSubSurf_getFaceGridDataArray (CCGSubSurf *ss, CCGFace *f, int gridIndex)
void * ccgSubSurf_getFaceGridData (CCGSubSurf *ss, CCGFace *f, int gridIndex, int x, int y)
CCGVertIteratorccgSubSurf_getVertIterator (CCGSubSurf *ss)
CCGEdgeIteratorccgSubSurf_getEdgeIterator (CCGSubSurf *ss)
CCGFaceIteratorccgSubSurf_getFaceIterator (CCGSubSurf *ss)
CCGVertccgVertIterator_getCurrent (CCGVertIterator *vi)
int ccgVertIterator_isStopped (CCGVertIterator *vi)
void ccgVertIterator_next (CCGVertIterator *vi)
void ccgVertIterator_free (CCGVertIterator *vi)
CCGEdgeccgEdgeIterator_getCurrent (CCGEdgeIterator *vi)
int ccgEdgeIterator_isStopped (CCGEdgeIterator *vi)
void ccgEdgeIterator_next (CCGEdgeIterator *vi)
void ccgEdgeIterator_free (CCGEdgeIterator *vi)
CCGFaceccgFaceIterator_getCurrent (CCGFaceIterator *vi)
int ccgFaceIterator_isStopped (CCGFaceIterator *vi)
void ccgFaceIterator_next (CCGFaceIterator *vi)
void ccgFaceIterator_free (CCGFaceIterator *vi)
int ccgSubSurf_getNumFinalVerts (const CCGSubSurf *ss)
int ccgSubSurf_getNumFinalEdges (const CCGSubSurf *ss)
int ccgSubSurf_getNumFinalFaces (const CCGSubSurf *ss)

Variables

static int kHashSizes []

Detailed Description

Definition in file CCGSubSurf.c.


Define Documentation

#define CCG_INLINE   inline

Definition at line 18 of file CCGSubSurf.c.

#define CCGSUBSURF_alloc (   ss,
  nb 
)    ((ss)->allocatorIFC.alloc((ss)->allocator, nb))
#define CCGSUBSURF_free (   ss,
  ptr 
)    ((ss)->allocatorIFC.free((ss)->allocator, ptr))
#define CCGSUBSURF_realloc (   ss,
  ptr,
  nb,
  ob 
)    ((ss)->allocatorIFC.realloc((ss)->allocator, ptr, nb, ob))

Definition at line 348 of file CCGSubSurf.c.

Referenced by _edge_addFace(), _vert_addEdge(), and _vert_addFace().

#define EDGE_getCo (   e,
  lvl,
 
)    _edge_getCo(e, lvl, x, vertDataSize)
#define EDGE_getLevelData (   e)    ((byte*) &(e)[1])
#define EDGE_getNo (   e,
  lvl,
 
)    _edge_getNo(e, lvl, x, vertDataSize, normalDataOffset)

Definition at line 1157 of file CCGSubSurf.c.

Referenced by ccgSubSurf__calcVertNormals().

#define EHASH_alloc (   eh,
  nb 
)    ((eh)->allocatorIFC.alloc((eh)->allocator, nb))

Definition at line 57 of file CCGSubSurf.c.

Referenced by _ehash_insert(), _ehash_new(), and _ehashIterator_new().

#define EHASH_free (   eh,
  ptr 
)    ((eh)->allocatorIFC.free((eh)->allocator, ptr))

Definition at line 58 of file CCGSubSurf.c.

Referenced by _ehash_free(), _ehash_insert(), and _ehashIterator_free().

#define EHASH_hash (   eh,
  item 
)    (((uintptr_t) (item))%((unsigned int) (eh)->curSize))

Definition at line 60 of file CCGSubSurf.c.

Referenced by _ehash_insert(), _ehash_lookup(), and _ehash_lookupWithPrev().

#define EPSILON   (1.0e-35f)

Definition at line 30 of file CCGSubSurf.c.

Referenced by _face_calcIFNo(), and ccgSubSurf__calcVertNormals().

#define FACE_calcIFNo (   f,
  lvl,
  S,
  x,
  y,
  no 
)    _face_calcIFNo(f, lvl, S, x, y, no, subdivLevels, vertDataSize)

Definition at line 1159 of file CCGSubSurf.c.

Referenced by ccgSubSurf__calcVertNormals().

#define FACE_getCenterData (   f)    ((byte*) &(FACE_getEdges(f)[(f)->numVerts]))
#define FACE_getEdges (   f)    ((CCGEdge**) &(FACE_getVerts(f)[(f)->numVerts]))
#define FACE_getIECo (   f,
  lvl,
  S,
 
)    _face_getIECo(f, lvl, S, x, subdivLevels, vertDataSize)
#define FACE_getIENo (   f,
  lvl,
  S,
 
)    _face_getIENo(f, lvl, S, x, subdivLevels, vertDataSize, normalDataOffset)

Definition at line 1160 of file CCGSubSurf.c.

Referenced by ccgSubSurf__calcVertNormals().

#define FACE_getIFCo (   f,
  lvl,
  S,
  x,
 
)    _face_getIFCo(f, lvl, S, x, y, subdivLevels, vertDataSize)
#define FACE_getIFNo (   f,
  lvl,
  S,
  x,
 
)    _face_getIFNo(f, lvl, S, x, y, subdivLevels, vertDataSize, normalDataOffset)

Definition at line 1158 of file CCGSubSurf.c.

Referenced by ccgSubSurf__calcVertNormals().

#define FACE_getVerts (   f)    ((CCGVert**) &(f)[1])
#define NormAdd (   av,
  bv 
)    { float *_a = (float*) av, *_b = (float*) bv; _a[0]+=_b[0]; _a[1]+=_b[1]; _a[2]+=_b[2]; }

Definition at line 238 of file CCGSubSurf.c.

Referenced by ccgSubSurf__calcVertNormals().

#define NormCopy (   av,
  bv 
)    { float *_a = (float*) av, *_b = (float*) bv; _a[0] =_b[0]; _a[1] =_b[1]; _a[2] =_b[2]; }

Definition at line 237 of file CCGSubSurf.c.

Referenced by ccgSubSurf__calcVertNormals().

#define NormZero (   av)    { float *_a = (float*) av; _a[0] = _a[1] = _a[2] = 0.0f; }

Definition at line 236 of file CCGSubSurf.c.

Referenced by _face_calcIFNo(), and ccgSubSurf__calcVertNormals().

#define UNUSED (   x)    x

Definition at line 25 of file CCGSubSurf.c.

#define VERT_getCo (   v,
  lvl 
)    _vert_getCo(v, lvl, vertDataSize)
#define VERT_getLevelData (   v)    ((byte*) &(v)[1])

Definition at line 268 of file CCGSubSurf.c.

Referenced by _vert_getCo(), _vert_getNo(), and ccgSubSurf_getVertUserData().

#define VERT_getNo (   e,
  lvl 
)    _vert_getNo(e, lvl, vertDataSize, normalDataOffset)

Definition at line 1156 of file CCGSubSurf.c.

#define VertDataAdd (   av,
  bv 
)    { float *_a = (float*) av, *_b = (float*) bv; _a[0]+=_b[0]; _a[1]+=_b[1]; _a[2]+=_b[2]; }
#define VertDataAvg4 (   tv,
  av,
  bv,
  cv,
  dv 
)
Value:
{ \
        float *_t = (float*) tv, *_a = (float*) av, *_b = (float*) bv, *_c = (float*) cv, *_d = (float*) dv; \
        _t[0] = (_a[0]+_b[0]+_c[0]+_d[0])*.25f; \
        _t[1] = (_a[1]+_b[1]+_c[1]+_d[1])*.25f; \
        _t[2] = (_a[2]+_b[2]+_c[2]+_d[2])*.25f; \
    }

Definition at line 229 of file CCGSubSurf.c.

Referenced by ccgSubSurf__calcSubdivLevel().

#define VertDataCopy (   av,
  bv 
)    { float *_a = (float*) av, *_b = (float*) bv; _a[0] =_b[0]; _a[1] =_b[1]; _a[2] =_b[2]; }
#define VertDataMulN (   av,
 
)    { float *_a = (float*) av; _a[0]*=n; _a[1]*=n; _a[2]*=n; }
#define VertDataSub (   av,
  bv 
)    { float *_a = (float*) av, *_b = (float*) bv; _a[0]-=_b[0]; _a[1]-=_b[1]; _a[2]-=_b[2]; }

Definition at line 227 of file CCGSubSurf.c.

Referenced by ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync().

#define VertDataZero (   av)    { float *_a = (float*) av; _a[0] = _a[1] = _a[2] = 0.0f; }

Typedef Documentation

typedef unsigned char byte

Definition at line 34 of file CCGSubSurf.c.

typedef struct _EHash EHash
typedef struct _EHashIterator EHashIterator
typedef struct _EHEntry EHEntry

Definition at line 44 of file CCGSubSurf.c.

typedef void(* EHEntryFreeFP)(EHEntry *, void *)

Definition at line 76 of file CCGSubSurf.c.


Enumeration Type Documentation

anonymous enum
Enumerator:
Vert_eEffected 
Vert_eChanged 
Vert_eSeam 

Definition at line 245 of file CCGSubSurf.c.

anonymous enum
Enumerator:
Edge_eEffected 

Definition at line 250 of file CCGSubSurf.c.

anonymous enum
Enumerator:
Face_eEffected 

Definition at line 253 of file CCGSubSurf.c.

enum SyncState
Enumerator:
eSyncState_None 
eSyncState_Vert 
eSyncState_Edge 
eSyncState_Face 
eSyncState_Partial 

Definition at line 301 of file CCGSubSurf.c.


Function Documentation

static void _edge_addFace ( CCGEdge e,
CCGFace f,
CCGSubSurf ss 
) [static]

Definition at line 461 of file CCGSubSurf.c.

References CCGSUBSURF_realloc, _CCGEdge::faces, and _CCGEdge::numFaces.

Referenced by _face_new().

static void _edge_free ( CCGEdge e,
CCGSubSurf ss 
) [static]
static void* _edge_getCo ( CCGEdge e,
int  lvl,
int  x,
int  dataSize 
) [static]

Definition at line 477 of file CCGSubSurf.c.

References EDGE_getLevelData.

Referenced by ccgSubSurf_getEdgeLevelData().

static void* _edge_getCoVert ( CCGEdge e,
CCGVert v,
int  lvl,
int  x,
int  dataSize 
) [static]
static float* _edge_getNo ( CCGEdge e,
int  lvl,
int  x,
int  dataSize,
int  normalDataOffset 
) [static]

Definition at line 481 of file CCGSubSurf.c.

References EDGE_getLevelData.

static CCGVert* _edge_getOtherVert ( CCGEdge e,
CCGVert vQ 
) [static]

Definition at line 469 of file CCGSubSurf.c.

References _CCGEdge::v0, and _CCGEdge::v1.

Referenced by ccgSubSurf__sync().

static int _edge_isBoundary ( const CCGEdge e) [static]

Definition at line 465 of file CCGSubSurf.c.

References _CCGEdge::numFaces.

Referenced by _vert_isBoundary(), ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync().

static CCGEdge* _edge_new ( CCGEdgeHDL  eHDL,
CCGVert v0,
CCGVert v1,
float  crease,
CCGSubSurf ss 
) [static]
static void _edge_remFace ( CCGEdge e,
CCGFace f 
) [static]

Definition at line 452 of file CCGSubSurf.c.

References _CCGEdge::faces, i, and _CCGEdge::numFaces.

Referenced by _face_unlinkMarkAndFree().

static void _edge_unlinkMarkAndFree ( CCGEdge e,
CCGSubSurf ss 
) [static]
static void _ehash_free ( EHash eh,
EHEntryFreeFP  freeEntry,
void *  userData 
) [static]
static void _ehash_insert ( EHash eh,
EHEntry entry 
) [static]
static void* _ehash_lookup ( EHash eh,
void *  key 
) [static]
static void* _ehash_lookupWithPrev ( EHash eh,
void *  key,
void ***  prevp_r 
) [static]
static EHash* _ehash_new ( int  estimatedNumEntries,
CCGAllocatorIFC allocatorIFC,
CCGAllocatorHDL  allocator 
) [static]
static void _ehashIterator_free ( EHashIterator ehi) [static]

Definition at line 173 of file CCGSubSurf.c.

References _EHashIterator::eh, and EHASH_free.

Referenced by ccgEdgeIterator_free(), ccgFaceIterator_free(), and ccgVertIterator_free().

static void* _ehashIterator_getCurrent ( EHashIterator ehi) [static]
static int _ehashIterator_isStopped ( EHashIterator ehi) [static]
static EHashIterator* _ehashIterator_new ( EHash eh) [static]
static void _ehashIterator_next ( EHashIterator ehi) [static]
static void _face_calcIFNo ( CCGFace f,
int  lvl,
int  S,
int  x,
int  y,
float *  no,
int  levels,
int  dataSize 
) [static]

Definition at line 605 of file CCGSubSurf.c.

References _face_getIFCo(), simple_enum_gen::d, EPSILON, length(), NormZero, and sqrt().

static void _face_free ( CCGFace f,
CCGSubSurf ss 
) [static]
static CCG_INLINE void* _face_getIECo ( CCGFace f,
int  lvl,
int  S,
int  x,
int  levels,
int  dataSize 
) [static]

Definition at line 541 of file CCGSubSurf.c.

References FACE_getCenterData.

Referenced by ccgSubSurf_getFaceGridEdgeData().

static CCG_INLINE void* _face_getIENo ( CCGFace f,
int  lvl,
int  S,
int  x,
int  levels,
int  dataSize,
int  normalDataOffset 
) [static]

Definition at line 547 of file CCGSubSurf.c.

References FACE_getCenterData.

static CCG_INLINE void* _face_getIFCo ( CCGFace f,
int  lvl,
int  S,
int  x,
int  y,
int  levels,
int  dataSize 
) [static]

Definition at line 553 of file CCGSubSurf.c.

References FACE_getCenterData.

Referenced by _face_calcIFNo(), _face_getIFCoEdge(), and ccgSubSurf_getFaceGridData().

static CCG_INLINE void* _face_getIFCoEdge ( CCGFace f,
CCGEdge e,
int  lvl,
int  eX,
int  eY,
int  levels,
int  dataSize 
) [static]
static CCG_INLINE float* _face_getIFNo ( CCGFace f,
int  lvl,
int  S,
int  x,
int  y,
int  levels,
int  dataSize,
int  normalDataOffset 
) [static]

Definition at line 559 of file CCGSubSurf.c.

References FACE_getCenterData.

static float* _face_getIFNoEdge ( CCGFace f,
CCGEdge e,
int  lvl,
int  eX,
int  eY,
int  levels,
int  dataSize,
int  normalDataOffset 
) [static]

Definition at line 602 of file CCGSubSurf.c.

References _face_getIFCoEdge().

Referenced by ccgSubSurf__calcVertNormals().

static int _face_getVertIndex ( CCGFace f,
CCGVert v 
) [static]

Definition at line 565 of file CCGSubSurf.c.

References FACE_getVerts, i, and _CCGFace::numVerts.

Referenced by ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__calcVertNormals().

static CCGFace* _face_new ( CCGFaceHDL  fHDL,
CCGVert **  verts,
CCGEdge **  edges,
int  numVerts,
CCGSubSurf ss 
) [static]
static void _face_unlinkMarkAndFree ( CCGFace f,
CCGSubSurf ss 
) [static]
static CCGAllocatorIFC* _getStandardAllocatorIFC ( void  ) [static]
static void* _stdAllocator_alloc ( CCGAllocatorHDL   UNUSEDa,
int  numBytes 
) [static]

Definition at line 198 of file CCGSubSurf.c.

Referenced by _getStandardAllocatorIFC().

static void _stdAllocator_free ( CCGAllocatorHDL   UNUSEDa,
void *  ptr 
) [static]

Definition at line 204 of file CCGSubSurf.c.

References addon::engine::free().

Referenced by _getStandardAllocatorIFC().

static void* _stdAllocator_realloc ( CCGAllocatorHDL   UNUSEDa,
void *  ptr,
int  newSize,
int   UNUSEDoldSize 
) [static]

Definition at line 201 of file CCGSubSurf.c.

Referenced by _getStandardAllocatorIFC().

static void _vert_addEdge ( CCGVert v,
CCGEdge e,
CCGSubSurf ss 
) [static]

Definition at line 387 of file CCGSubSurf.c.

References CCGSUBSURF_realloc, credits_svn_gen::e, _CCGVert::edges, and _CCGVert::numEdges.

Referenced by _edge_new().

static void _vert_addFace ( CCGVert v,
CCGFace f,
CCGSubSurf ss 
) [static]

Definition at line 391 of file CCGSubSurf.c.

References CCGSUBSURF_realloc, _CCGVert::faces, and _CCGVert::numFaces.

Referenced by _face_new().

static CCGEdge* _vert_findEdgeTo ( const CCGVert v,
const CCGVert vQ 
) [static]
static void _vert_free ( CCGVert v,
CCGSubSurf ss 
) [static]
static void* _vert_getCo ( CCGVert v,
int  lvl,
int  dataSize 
) [static]

Definition at line 413 of file CCGSubSurf.c.

References VERT_getLevelData.

Referenced by ccgSubSurf_getVertLevelData(), and ccgSubSurf_syncVert().

static float* _vert_getNo ( CCGVert v,
int  lvl,
int  dataSize,
int  normalDataOffset 
) [static]

Definition at line 416 of file CCGSubSurf.c.

References VERT_getLevelData.

Referenced by ccgSubSurf__calcVertNormals().

static int _vert_isBoundary ( const CCGVert v) [static]

Definition at line 405 of file CCGSubSurf.c.

References _edge_isBoundary(), _CCGVert::edges, i, and _CCGVert::numEdges.

Referenced by ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync().

static CCGVert* _vert_new ( CCGVertHDL  vHDL,
CCGSubSurf ss 
) [static]
static void _vert_remEdge ( CCGVert v,
CCGEdge e 
) [static]

Definition at line 369 of file CCGSubSurf.c.

References _CCGVert::edges, i, and _CCGVert::numEdges.

Referenced by _edge_unlinkMarkAndFree().

static void _vert_remFace ( CCGVert v,
CCGFace f 
) [static]

Definition at line 378 of file CCGSubSurf.c.

References _CCGVert::faces, i, and _CCGVert::numFaces.

Referenced by _face_unlinkMarkAndFree().

void ccgEdgeIterator_free ( CCGEdgeIterator vi)
CCGEdge* ccgEdgeIterator_getCurrent ( CCGEdgeIterator vi)
int ccgEdgeIterator_isStopped ( CCGEdgeIterator vi)
void ccgEdgeIterator_next ( CCGEdgeIterator vi)
void ccgFaceIterator_free ( CCGFaceIterator vi)
CCGFace* ccgFaceIterator_getCurrent ( CCGFaceIterator vi)
int ccgFaceIterator_isStopped ( CCGFaceIterator vi)
void ccgFaceIterator_next ( CCGFaceIterator vi)
static void ccgSubSurf__allFaces ( CCGSubSurf ss,
CCGFace ***  faces,
int *  numFaces,
int *  freeFaces 
) [static]
static void ccgSubSurf__calcSubdivLevel ( CCGSubSurf ss,
CCGVert **  effectedV,
CCGEdge **  effectedE,
CCGFace **  effectedF,
int  numEffectedV,
int  numEffectedE,
int  numEffectedF,
int  curLvl 
) [static]
static void ccgSubSurf__calcVertNormals ( CCGSubSurf ss,
CCGVert **  effectedV,
CCGEdge **  effectedE,
CCGFace **  effectedF,
int  numEffectedV,
int  numEffectedE,
int  numEffectedF 
) [static]
static void ccgSubSurf__effectedFaceNeighbours ( CCGSubSurf ss,
CCGFace **  faces,
int  numFaces,
CCGVert ***  verts,
int *  numVerts,
CCGEdge ***  edges,
int *  numEdges 
) [static]
static void ccgSubSurf__sync ( CCGSubSurf ss) [static]
void ccgSubSurf_free ( CCGSubSurf ss)
void ccgSubSurf_getAllowEdgeCreation ( CCGSubSurf ss,
int *  allowEdgeCreation_r,
float *  defaultCreaseValue_r,
void *  defaultUserData_r 
)
CCGEdge* ccgSubSurf_getEdge ( CCGSubSurf ss,
CCGEdgeHDL  e 
)

Definition at line 2500 of file CCGSubSurf.c.

References _ehash_lookup(), and _CCGSubSurf::eMap.

int ccgSubSurf_getEdgeAge ( CCGSubSurf ss,
CCGEdge e 
)
float ccgSubSurf_getEdgeCrease ( CCGEdge e)

Definition at line 2623 of file CCGSubSurf.c.

References _CCGEdge::crease.

Referenced by ss_sync_from_uv().

void* ccgSubSurf_getEdgeData ( CCGSubSurf ss,
CCGEdge e,
int  x 
)
void* ccgSubSurf_getEdgeDataArray ( CCGSubSurf ss,
CCGEdge e 
)
CCGEdgeHDL ccgSubSurf_getEdgeEdgeHandle ( CCGEdge e)

Definition at line 2580 of file CCGSubSurf.c.

References _CCGEdge::eHDL.

Referenced by ccgDM_copyFinalEdgeArray(), ccgdm_getVertCos(), and getCCGDerivedMesh().

CCGFace* ccgSubSurf_getEdgeFace ( CCGEdge e,
int  index 
)

Definition at line 2597 of file CCGSubSurf.c.

References _CCGEdge::faces, NULL, and _CCGEdge::numFaces.

Referenced by ccgdm_adjacent_grid().

CCGEdgeIterator* ccgSubSurf_getEdgeIterator ( CCGSubSurf ss)
void* ccgSubSurf_getEdgeLevelData ( CCGSubSurf ss,
CCGEdge e,
int  x,
int  level 
)
int ccgSubSurf_getEdgeLevelSize ( const CCGSubSurf ss,
int  level 
)

Definition at line 2513 of file CCGSubSurf.c.

References _CCGSubSurf::subdivLevels.

Referenced by ccgSubSurf_getEdgeSize().

int ccgSubSurf_getEdgeNumFaces ( CCGEdge e)
int ccgSubSurf_getEdgeSize ( const CCGSubSurf ss)
void* ccgSubSurf_getEdgeUserData ( CCGSubSurf ss,
CCGEdge e 
)
CCGVert* ccgSubSurf_getEdgeVert0 ( CCGEdge e)

Definition at line 2604 of file CCGSubSurf.c.

References _CCGEdge::v0.

Referenced by getCCGDerivedMesh(), getEdgeIndex(), and getFaceIndex().

CCGVert* ccgSubSurf_getEdgeVert1 ( CCGEdge e)

Definition at line 2607 of file CCGSubSurf.c.

References _CCGEdge::v1.

Referenced by getCCGDerivedMesh(), and getEdgeIndex().

CCGFace* ccgSubSurf_getFace ( CCGSubSurf ss,
CCGFaceHDL  f 
)

Definition at line 2503 of file CCGSubSurf.c.

References _ehash_lookup(), and _CCGSubSurf::fMap.

Referenced by ss_sync_from_uv().

int ccgSubSurf_getFaceAge ( CCGSubSurf ss,
CCGFace f 
)
void* ccgSubSurf_getFaceCenterData ( CCGFace f)
CCGEdge* ccgSubSurf_getFaceEdge ( CCGSubSurf UNUSEDss,
CCGFace f,
int  index 
)

Definition at line 2654 of file CCGSubSurf.c.

References FACE_getEdges, NULL, and _CCGFace::numVerts.

Referenced by ccgdm_adjacent_grid(), getFaceIndex(), and ss_sync_from_uv().

int ccgSubSurf_getFaceEdgeIndex ( CCGFace f,
CCGEdge e 
)

Definition at line 2661 of file CCGSubSurf.c.

References FACE_getEdges, i, and _CCGFace::numVerts.

CCGFaceHDL ccgSubSurf_getFaceFaceHandle ( CCGSubSurf UNUSEDss,
CCGFace f 
)
void* ccgSubSurf_getFaceGridData ( CCGSubSurf ss,
CCGFace f,
int  gridIndex,
int  x,
int  y 
)
void* ccgSubSurf_getFaceGridDataArray ( CCGSubSurf ss,
CCGFace f,
int  gridIndex 
)
void* ccgSubSurf_getFaceGridEdgeData ( CCGSubSurf ss,
CCGFace f,
int  gridIndex,
int  x 
)
void* ccgSubSurf_getFaceGridEdgeDataArray ( CCGSubSurf ss,
CCGFace f,
int  gridIndex 
)

Definition at line 2673 of file CCGSubSurf.c.

References ccgSubSurf_getFaceGridEdgeData().

CCGFaceIterator* ccgSubSurf_getFaceIterator ( CCGSubSurf ss)
int ccgSubSurf_getFaceNumVerts ( CCGFace f)
void* ccgSubSurf_getFaceUserData ( CCGSubSurf ss,
CCGFace f 
)
CCGVert* ccgSubSurf_getFaceVert ( CCGSubSurf UNUSEDss,
CCGFace f,
int  index 
)

Definition at line 2647 of file CCGSubSurf.c.

References FACE_getVerts, NULL, and _CCGFace::numVerts.

Referenced by getCCGDerivedMesh(), and getFaceIndex().

int ccgSubSurf_getGridLevelSize ( const CCGSubSurf ss,
int  level 
)

Definition at line 2523 of file CCGSubSurf.c.

References _CCGSubSurf::subdivLevels.

Referenced by ccgSubSurf_getGridSize().

int ccgSubSurf_getGridSize ( const CCGSubSurf ss)
int ccgSubSurf_getNumEdges ( const CCGSubSurf ss)
int ccgSubSurf_getNumFaces ( const CCGSubSurf ss)
int ccgSubSurf_getNumFinalEdges ( const CCGSubSurf ss)
int ccgSubSurf_getNumFinalFaces ( const CCGSubSurf ss)

Definition at line 2751 of file CCGSubSurf.c.

References _CCGSubSurf::numGrids, and _CCGSubSurf::subdivLevels.

Referenced by ccgDM_getNumFaces(), and getCCGDerivedMesh().

int ccgSubSurf_getNumFinalVerts ( const CCGSubSurf ss)
int ccgSubSurf_getNumVerts ( const CCGSubSurf ss)
int ccgSubSurf_getSubdivisionLevels ( const CCGSubSurf ss)

Definition at line 2507 of file CCGSubSurf.c.

References _CCGSubSurf::subdivLevels.

Referenced by set_subsurf_uv(), ss_sync_from_derivedmesh(), and ss_sync_from_uv().

void ccgSubSurf_getUseAgeCounts ( CCGSubSurf ss,
int *  useAgeCounts_r,
int *  vertUserOffset_r,
int *  edgeUserOffset_r,
int *  faceUserOffset_r 
)
CCGVert* ccgSubSurf_getVert ( CCGSubSurf ss,
CCGVertHDL  v 
)

Definition at line 2497 of file CCGSubSurf.c.

References _ehash_lookup(), and _CCGSubSurf::vMap.

int ccgSubSurf_getVertAge ( CCGSubSurf ss,
CCGVert v 
)
void* ccgSubSurf_getVertData ( CCGSubSurf ss,
CCGVert v 
)
CCGEdge* ccgSubSurf_getVertEdge ( CCGVert v,
int  index 
)

Definition at line 2560 of file CCGSubSurf.c.

References _CCGVert::edges, NULL, and _CCGVert::numEdges.

Referenced by subsurf_calculate_limit_positions().

CCGFace* ccgSubSurf_getVertFace ( CCGVert v,
int  index 
)

Definition at line 2550 of file CCGSubSurf.c.

References _CCGVert::faces, NULL, and _CCGVert::numFaces.

Referenced by subsurf_calculate_limit_positions().

CCGVertIterator* ccgSubSurf_getVertIterator ( CCGSubSurf ss)
void* ccgSubSurf_getVertLevelData ( CCGSubSurf ss,
CCGVert v,
int  level 
)
int ccgSubSurf_getVertNumEdges ( CCGVert v)

Definition at line 2557 of file CCGSubSurf.c.

References _CCGVert::numEdges.

Referenced by subsurf_calculate_limit_positions().

int ccgSubSurf_getVertNumFaces ( CCGVert v)

Definition at line 2547 of file CCGSubSurf.c.

References _CCGVert::numFaces.

Referenced by subsurf_calculate_limit_positions().

void* ccgSubSurf_getVertUserData ( CCGSubSurf ss,
CCGVert v 
)
CCGVertHDL ccgSubSurf_getVertVertHandle ( CCGVert v)

Definition at line 2533 of file CCGSubSurf.c.

References _CCGVert::vHDL.

Referenced by ccgdm_getVertCos(), getCCGDerivedMesh(), and subsurf_calculate_limit_positions().

CCGError ccgSubSurf_initFullSync ( CCGSubSurf ss)
CCGError ccgSubSurf_initPartialSync ( CCGSubSurf ss)
CCGSubSurf* ccgSubSurf_new ( CCGMeshIFC ifc,
int  subdivLevels,
CCGAllocatorIFC allocatorIFC,
CCGAllocatorHDL  allocator 
)
CCGError ccgSubSurf_processSync ( CCGSubSurf ss)
CCGError ccgSubSurf_setAllowEdgeCreation ( CCGSubSurf ss,
int  allowEdgeCreation,
float  defaultCreaseValue,
void *  defaultUserData 
)
CCGError ccgSubSurf_setCalcVertexNormals ( CCGSubSurf ss,
int  useVertNormals,
int  normalDataOffset 
)
CCGError ccgSubSurf_setSubdivisionLevels ( CCGSubSurf ss,
int  subdivisionLevels 
)
CCGError ccgSubSurf_setUseAgeCounts ( CCGSubSurf ss,
int  useAgeCounts,
int  vertUserOffset,
int  edgeUserOffset,
int  faceUserOffset 
)
CCGError ccgSubSurf_stitchFaces ( CCGSubSurf ss,
int  lvl,
CCGFace **  effectedF,
int  numEffectedF 
)
CCGError ccgSubSurf_syncEdge ( CCGSubSurf ss,
CCGEdgeHDL  eHDL,
CCGVertHDL  e_vHDL0,
CCGVertHDL  e_vHDL1,
float  crease,
CCGEdge **  e_r 
)
CCGError ccgSubSurf_syncEdgeDel ( CCGSubSurf ss,
CCGEdgeHDL  eHDL 
)
CCGError ccgSubSurf_syncFace ( CCGSubSurf ss,
CCGFaceHDL  fHDL,
int  numVerts,
CCGVertHDL vHDLs,
CCGFace **  f_r 
)
CCGError ccgSubSurf_syncFaceDel ( CCGSubSurf ss,
CCGFaceHDL  fHDL 
)
CCGError ccgSubSurf_syncVert ( CCGSubSurf ss,
CCGVertHDL  vHDL,
const void *  vertData,
int  seam,
CCGVert **  v_r 
)
CCGError ccgSubSurf_syncVertDel ( CCGSubSurf ss,
CCGVertHDL  vHDL 
)
CCGError ccgSubSurf_updateFromFaces ( CCGSubSurf ss,
int  lvl,
CCGFace **  effectedF,
int  numEffectedF 
)
CCGError ccgSubSurf_updateLevels ( CCGSubSurf ss,
int  lvl,
CCGFace **  effectedF,
int  numEffectedF 
)
CCGError ccgSubSurf_updateNormals ( CCGSubSurf ss,
CCGFace **  effectedF,
int  numEffectedF 
)
CCGError ccgSubSurf_updateToFaces ( CCGSubSurf ss,
int  lvl,
CCGFace **  effectedF,
int  numEffectedF 
)
void ccgVertIterator_free ( CCGVertIterator vi)
CCGVert* ccgVertIterator_getCurrent ( CCGVertIterator vi)
int ccgVertIterator_isStopped ( CCGVertIterator vi)
void ccgVertIterator_next ( CCGVertIterator vi)
static float EDGE_getSharpness ( CCGEdge e,
int  lvl 
) [static]

Definition at line 506 of file CCGSubSurf.c.

References _CCGEdge::crease.

Referenced by ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync().

static int VERT_seam ( const CCGVert v) [static]

Definition at line 426 of file CCGSubSurf.c.

References _CCGVert::flags, and Vert_eSeam.

Referenced by ccgSubSurf__calcSubdivLevel(), and ccgSubSurf__sync().

static int VertDataEqual ( const float *  a,
const float *  b 
) [static]

Definition at line 221 of file CCGSubSurf.c.

Referenced by ccgSubSurf_syncVert().


Variable Documentation

int kHashSizes[] [static]
Initial value:
 {
    1, 3, 5, 11, 17, 37, 67, 131, 257, 521, 1031, 2053, 4099, 8209, 
    16411, 32771, 65537, 131101, 262147, 524309, 1048583, 2097169, 
    4194319, 8388617, 16777259, 33554467, 67108879, 134217757, 268435459
}

Definition at line 38 of file CCGSubSurf.c.

Referenced by _ehash_insert(), and _ehash_new().