lod.h File Reference


Detailed Description

Definition in file lod.h.

#include <stdlib.h>
#include <string.h>
#include "hoops_tools.h"
#include <math.h>

Go to the source code of this file.

Classes

struct  MxConfig_TAG
struct  MxShell_TAG
struct  MxShellChain_TAG
struct  Vec4_TAG
struct  Vec3_TAG
struct  Vec2_TAG
struct  Mat4_TAG
struct  Mat3_TAG
struct  Mat2_TAG
struct  Block_TAG
struct  MxHeapable_TAG
struct  MxHeap_TAG
struct  MxProxy_TAG
struct  MxEdge_TAG
struct  MxFace_TAG
struct  MxColor_TAG
struct  MxNormal_TAG
struct  MxTexCoord_TAG
struct  vertex_data_TAG
struct  face_data_TAG
struct  MxPairContraction_TAG
struct  MxModel_TAG
struct  MxQSlimEdge_TAG
struct  MxQSlim_TAG
struct  MxQuadric3_TAG

Defines

#define MX_ASSERT(x)   do if (x) {} while (0)
#define MX_ALLOC(size)   malloc (size)
#define MX_FREE(ptr, size)   free (ptr)
#define MX_COPY(src, size, dest)   (memcpy ((dest), (src),(size)))
#define MX_REALLOC(ptr, oldsize, newsize)
#define ALLOC_ARRAY(p, c, t)   p = (t *) MX_ALLOC (c * sizeof (t))
#define local   static
#define null   0
#define until(x)   while(!(x))
#define POINTER_SIZED_INT   long
#define HEC_LOD_MODULE   111
#define ERR_INSUFFICIENT_MEMORY   1
#define MX_ERROR(code, explanation)
#define MX_USE_DEFAULT   -1
#define MX_PLACE_ENDPOINTS   0
#define MX_PLACE_ENDORMID   1
#define MX_PLACE_LINE   2
#define MX_PLACE_OPTIMAL   3
#define MX_PLACE_OPTIMAL_BB   4
#define MX_WEIGHT_UNIFORM   0
#define MX_WEIGHT_AREA   1
#define MX_WEIGHT_ANGLE   2
#define MX_WEIGHT_AVERAGE   3
#define MX_WEIGHT_AREA_UNSCALED   4
#define MX_WEIGHT_RAWNORMALS   5
#define MX_PERCENT   1
#define MX_LEVEL   2
#define isNaN(x)   (!((x)==(volatile double)(x)))
#define M_PI   3.141592653589793238462643383279502884197169399375105820974944592308
#define MxFEQ(a, b, eps)   ((fabs((a)-(b))<(eps)))
#define lengthb(b)   ((b)->used)
#define getb(b, i)   ( (char *)(b)->data + ((i) * (b)->size_each) )
#define getpb(b, i)   ( *( (void **) getb ( (b), (i) ) ) )
#define is_in_heap(h)   ( (h)->token != -47 )
#define not_in_heap(h)   ( (h)->token = -47 )
#define get_heap_pos(h)   ( (h)->token )
#define set_heap_pos(h, t)   ( (h)->token = t )
#define set_heap_key(h, k)   ( (h)->import = k )
#define get_heap_key(h)   ( (h)->import )
#define mxheapable_init(h)   { (h)->import = 0.0f; (h)->token = -47; (h)->payload = NULL; }
#define sizeh(m)   ( lengthb( &((m)->data) ) )
#define opposite_vertex(e, v)   (((v)==(e)->v1)?(e)->v2:(e)->v1)
#define ftop(x)   ( (unsigned char)(((x)>1.0f?1.0f:(x))*255.0f) )
#define ptof(x)   ( (x) / 255.0f )
#define fl_get_face(fl, i)   ( *( (MxFaceID *) getb( fl, i ) ) )
#define vl_get_vertex(vl, i)   ( *( (MxVertexID *) getb( vl, i ) ) )
#define MX_UNBOUND   0x0
#define MX_PERFACE   0x1
#define MX_PERVERTEX   0x2
#define MX_MAX_BINDING   0x2
#define MX_NORMAL_MASK   0x3
#define MX_COLOR_MASK   (0x3<<2)
#define MX_TEXTURE_MASK   (0x3<<4)
#define MX_ALL_MASK   (MX_NORMAL_MASK|MX_COLOR_MASK|MX_TEXTURE_MASK)
#define get_delta_faces(mpc, i)   ( *((int *) getb (&((mpc)->delta_faces), (i) ) ) )
#define get_dead_faces(mpc, i)   ( *((int *) getb (&((mpc)->dead_faces), (i) ) ) )
#define MX_VALID_FLAG   0x01
#define MX_PROXY_FLAG   0x02
#define MX_TOUCHED_FLAG   0x04
#define model_vertex(m, i)   ( (MxVertex *) getb ( &((m)->vertices), (i) ) )
#define model_face(m, i)   ( (MxFace *) getb ( &((m)->faces), (i) ) )
#define model_corner(m, f, i)   ( model_vertex( (m), model_face((m), (f))->v[(i)]) )
#define model_normal(m, i)   ( (MxNormal *) getb ( (m)->normals, (i) ) )
#define model_color(m, i)   ( (MxColor *) getb ( m->colors, i ) )
#define model_texcoord(m, i)   ( (MxTexCoord *) getb ( m->tcoords, i ) )
#define model_vertex_count(m)   ( lengthb( &((m)->vertices) ) )
#define model_face_count(m)   ( lengthb( &((m)->faces) ) )
#define model_vertex_map_entry(m, i)   ( (POINTER_SIZED_INT) getpb ( &((m)->vertex_map), (i) ) )
#define get_v_data(m, i)   ( (vertex_data *) getb ( &((m)->v_data), (i) ) )
#define v_check_tag(m, i, t)   ( get_v_data( (m), (i) )->tag & (t) )
#define v_set_tag(m, i, t)   ( get_v_data( (m), (i) )->tag |= (t) )
#define v_unset_tag(m, i, t)   ( get_v_data( (m), (i) )->tag &= ~(t) )
#define get_vmark(m, i)   ( get_v_data( (m), (i) )->mark )
#define vmarkc(m, i, c)   ( get_v_data( (m), (i) )->mark = (c) )
#define get_f_data(m, i)   ( (face_data *) getb ( &((m)->f_data), (i) ) )
#define f_check_tag(m, i, t)   ( get_f_data( (m), (i) )->tag & (t) )
#define f_set_tag(m, i, t)   ( get_f_data( (m), (i) )->tag |= (t) )
#define f_unset_tag(m, i, t)   ( get_f_data( (m), (i) )->tag &= ~(t) )
#define get_fmark(m, i)   ( get_f_data( (m), (i) )->mark )
#define fmark(m, i, c)   ( get_f_data( (m), (i) )->mark = (c) )
#define vertex_is_valid(m, i)   ( v_check_tag((m),(i),MX_VALID_FLAG) )
#define vertex_mark_valid(m, i)   ( v_set_tag((m),(i),MX_VALID_FLAG) )
#define vertex_mark_invalid(m, i)   ( v_unset_tag((m),(i),MX_VALID_FLAG) )
#define face_is_valid(m, i)   ( f_check_tag((m),(i),MX_VALID_FLAG) )
#define face_mark_valid(m, i)   ( f_set_tag((m),(i),MX_VALID_FLAG) )
#define face_mark_invalid(m, i)   ( f_unset_tag((m),(i),MX_VALID_FLAG) )
#define vertex_check_tag(m, i, t)   ( get_v_data( (m), (i) )->user_tag & (t) )
#define vertex_set_tag(m, i, t)   ( get_v_data( (m), (i) )->user_tag |= (t) )
#define vertex_unset_tag(m, i, t)   ( get_v_data( (m), (i) )->user_tag &= ~(t) )
#define get_vertex_mark(m, i)   ( get_v_data( (m), (i) )->user_mark )
#define vertex_mark(m, i, c)   ( get_v_data( (m), (i) )->user_mark=(c) )
#define face_check_tag(m, i, t)   ( get_f_data( (m), (i) )->user_tag & (t) )
#define face_set_tag(m, i, t)   ( get_f_data( (m), (i) )->user_tag |= (t) )
#define face_unset_tag(m, i, t)   ( get_f_data( (m), i )->user_tag &= ~(t) )
#define get_face_mark(m, i)   ( get_f_data( (m), (i) )->user_mark )
#define face_mark(m, i, c)   ( get_f_data( (m), (i) )->user_mark = (c) )
#define normal_binding(m)   ( ( (m)->nbinding & (m)->binding_mask ) )
#define color_binding(m)   ( ( (m)->cbinding & ((m)->binding_mask >> 2) ) )
#define texcoord_binding(m)   ( ( (m)->tbinding & ((m)->binding_mask >> 4) ) )
#define neighbors(m, v)   ((MxFaceList *) getpb( &((m)->face_links), (v) ))
#define el_get_edge(el, i)   ( (MxQSlimEdge *) getpb( el, i ) )
#define el_add_edge(el, q)   ( addpb( el, q ) )
#define qs_get_quadrics(q, i)   ( (MxQuadric3 *) getpb ( &((q)->quadrics), (i) ) )
#define qs_get_edge_links(q, i)   ( (MxEdgeList *) getpb ( &((q)->edge_links), (i) ) )
#define quad_set_area(q, a)   { (q)->r=(a); }

Typedefs

typedef int MxBool
typedef int MxVertexID
typedef int MxFaceID
typedef Vec3 MxVertex
typedef Block MxFaceList
typedef Block MxVertexList
typedef MxPairContraction MxPairExpansion
typedef Block MxEdgeList

Enumerations

enum  Axis


Generated on Tue Jan 6 22:41:37 2009 for Autodesk DWF 3D Toolkit by  doxygen 1.4.5