44 #include "visp/vpConfig.h"
46 #ifndef DOXYGEN_SHOULD_SKIP_THIS
47 #include <visp/vpMy.h>
48 #include <visp/vpArit.h>
49 #include <visp/vpBound.h>
62 void free_Bound (Bound *bp)
64 Face *fp = bp->face.ptr;
65 Face *fend = fp + bp->face.nbr;
67 for (; fp < fend; fp++) {
68 if (fp->vertex.ptr != fp->vertex.tbl)
69 free ((
char *) fp->vertex.ptr);
71 if (bp->face.ptr != NULL) {
72 free ((
char *) bp->face.ptr);
75 if (bp->point.ptr != NULL) {
76 free ((
char *) bp->point.ptr);
80 if (bp->normal.ptr != NULL) {
81 free ((
char *) bp->normal.ptr);
82 bp->normal.ptr = NULL;
85 bp->is_display = FALSE;
94 void free_huge_Bound (Bound *bp)
105 void free_Bound_scene (Bound_scene *bsp)
107 Bound *bp = bsp->bound.ptr;
108 Bound *bend = bp + bsp->bound.nbr;
110 for (; bp < bend; bp++) {
113 if (bsp->name != NULL) {
114 free ((
char *) bsp->name);
117 if (bsp->bound.ptr != NULL) {
118 free ((
char *) bsp->bound.ptr);
119 bsp->bound.ptr = NULL;
133 void malloc_Bound (Bound *bp, Type type,
int polygonal, Index fn, Index pn)
135 static char proc_name[] =
"malloc_Bound";
137 if ((bp->face.nbr = fn) == 0)
139 else if ((bp->face.ptr = (Face *) malloc (fn *
sizeof (Face)))
145 if ((bp->point.nbr = pn) == 0)
146 bp->point.ptr = NULL;
147 else if ((bp->point.ptr = (Point3f *) malloc (pn *
sizeof (Point3f)))
155 if ((bp->normal.nbr = (bp->is_polygonal ? 0 : pn)) == 0)
156 bp->normal.ptr = NULL;
157 else if ((bp->normal.ptr = (Vector *) malloc (pn *
sizeof (Vector)))
165 bp->is_display = TRUE;
166 bp->is_polygonal = polygonal;
185 void malloc_huge_Bound (Bound *bp)
187 static char proc_name[] =
"malloc_Huge_Bound";
190 malloc_Bound (bp, (Type) BND_NULL, FALSE, FACE_NBR, POINT_NBR);
192 malloc_Bound (bp, (Type) BND_NULL, TRUE, FACE_NBR, POINT_NBR);
194 if ((bp->face.ptr->vertex.ptr =
195 (Index *) malloc (FACE_NBR * VERTEX_NBR *
sizeof (Index))) == NULL) {
210 void malloc_Bound_scene (Bound_scene *bsp,
const char *name, Index bn)
212 static char proc_name[] =
"malloc_Bound_scene";
214 if ((bsp->name = (
char *) malloc ((strlen (name) + 1) *
sizeof (
char)))
219 if ((bsp->bound.nbr = bn) == 0)
220 bsp->bound.ptr = NULL;
221 else if ((bsp->bound.ptr = (Bound *) malloc (bn *
sizeof (Bound)))
226 strcpy (bsp->name, name);