[brlcad-commits] SF.net SVN: brlcad:[36965] brlcad/trunk/src/librt/primitives
Open Source Solid Modeling CAD
Brought to you by:
brlcad
From: <br...@us...> - 2009-12-22 03:14:42
|
Revision: 36965 http://brlcad.svn.sourceforge.net/brlcad/?rev=36965&view=rev Author: brlcad Date: 2009-12-22 03:14:30 +0000 (Tue, 22 Dec 2009) Log Message: ----------- more quellage. add more extesive parameter testing to the xxx template for the primitive-specific structure, add more data validation. Modified Paths: -------------- brlcad/trunk/src/librt/primitives/eto/eto.c brlcad/trunk/src/librt/primitives/extrude/extrude.c brlcad/trunk/src/librt/primitives/table.c brlcad/trunk/src/librt/primitives/xxx/xxx.c Modified: brlcad/trunk/src/librt/primitives/eto/eto.c =================================================================== --- brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-22 01:35:21 UTC (rev 36964) +++ brlcad/trunk/src/librt/primitives/eto/eto.c 2009-12-22 03:14:30 UTC (rev 36965) @@ -670,6 +670,8 @@ register struct eto_specific *eto = (struct eto_specific *)stp->st_specific; + if (ap) RT_CK_APPLICATION(ap); + /* take elliptical slice of eto at hit point */ VSET(Ru, hitp->hit_vpriv[X], hitp->hit_vpriv[Y], 0.); VUNITIZE(Ru); @@ -733,7 +735,7 @@ * eto_rd Semiminor axis length (scalar) of eto cross section */ int -rt_eto_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_eto_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { fastf_t a, b; /* axis lengths of ellipse */ fastf_t ang, ch, cv, dh, dv, ntol, dtol, phi, theta; @@ -1195,6 +1197,8 @@ struct rt_eto_internal *tip; union record *rp; + if (dbip) RT_CK_DBI(dbip); + BU_CK_EXTERNAL(ep); rp = (union record *)ep->ext_buf; /* Check record type */ @@ -1239,6 +1243,8 @@ struct rt_eto_internal *tip; union record *eto; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_ETO) return(-1); tip = (struct rt_eto_internal *)ip->idb_ptr; @@ -1288,6 +1294,7 @@ struct rt_eto_internal *tip; fastf_t vec[11]; + if (dbip) RT_CK_DBI(dbip); BU_CK_EXTERNAL(ep); BU_ASSERT_LONG(ep->ext_nbytes, ==, SIZEOF_NETWORK_DOUBLE * 11); @@ -1332,6 +1339,8 @@ struct rt_eto_internal *tip; fastf_t vec[11]; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_ETO) return(-1); tip = (struct rt_eto_internal *)ip->idb_ptr; @@ -1404,11 +1413,13 @@ INTCLAMP(MAGNITUDE(tip->eto_C) * mm2local)); bu_vls_strcat(str, buf); - sprintf(buf, "\tr=%g\n", INTCLAMP(tip->eto_r * mm2local)); - bu_vls_strcat(str, buf); + if (verbose) { + sprintf(buf, "\tr=%g\n", INTCLAMP(tip->eto_r * mm2local)); + bu_vls_strcat(str, buf); - sprintf(buf, "\td=%g\n", INTCLAMP(tip->eto_rd * mm2local)); - bu_vls_strcat(str, buf); + sprintf(buf, "\td=%g\n", INTCLAMP(tip->eto_rd * mm2local)); + bu_vls_strcat(str, buf); + } return(0); } @@ -1440,8 +1451,11 @@ * */ int -rt_eto_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_eto_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + if (!ps) return(0); + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/extrude/extrude.c =================================================================== --- brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-22 01:35:21 UTC (rev 36964) +++ brlcad/trunk/src/librt/primitives/extrude/extrude.c 2009-12-22 03:14:30 UTC (rev 36965) @@ -117,6 +117,8 @@ int vert_count; int curr_vert; + if (rtip) RT_CK_RTI(rtip); + eip = (struct rt_extrude_internal *)ip->idb_ptr; RT_EXTRUDE_CK_MAGIC(eip); skt = eip->skt; @@ -339,6 +341,13 @@ void rt_extrude_print(const struct soltab *stp) { + struct extrude_specific *extr=(struct extrude_specific *)stp->st_specific; + + VPRINT("u vector", extr->u_vec); + VPRINT("v vector", extr->v_vec); + VPRINT("h vector", extr->unit_h); + bn_mat_print("rotation matrix", extr->rot); + bn_mat_print("inverse rotation matrix", extr->irot); } @@ -1072,21 +1081,6 @@ /** - * R T _ E X T R U D E _ U V - * - * For a hit on the surface of an extrude, return the (u, v) - * coordinates of the hit point, 0 <= u, v <= 1. - * - * u = azimuth - * v = elevation - */ -void -rt_extrude_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) -{ -} - - -/** * R T _ E X T R U D E _ F R E E */ void @@ -1116,7 +1110,7 @@ * R T _ E X T R U D E _ P L O T */ int -rt_extrude_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol) +rt_extrude_plot(struct bu_list *vhead, struct rt_db_internal *ip, const struct rt_tess_tol *ttol, const struct bn_tol *tol __attribute__((unused))) { struct rt_extrude_internal *extrude_ip; struct curve *crv=(struct curve *)NULL; @@ -2130,6 +2124,8 @@ union record *rec; unsigned char *ptr; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EXTRUDE) return(-1); extrude_ip = (struct rt_extrude_internal *)ip->idb_ptr; @@ -2175,6 +2171,8 @@ unsigned char *ptr; int rem; + if (dbip) RT_CK_DBI(dbip); + RT_CK_DB_INTERNAL(ip); if (ip->idb_type != ID_EXTRUDE) return(-1); @@ -2221,7 +2219,7 @@ const mat_t mat, const struct db_i *dbip, struct resource *resp, - const int minor_type) + const int minor_type __attribute__((unused))) { struct rt_extrude_internal *extrude_ip; struct rt_db_internal tmp_ip; @@ -2302,9 +2300,12 @@ V3INTCLAMPARGS(u), V3INTCLAMPARGS(v)); bu_vls_strcat(str, buf); - snprintf(buf, 256, "\tsketch name: %s\n", extrude_ip->sketch_name); - bu_vls_strcat(str, buf); + if (verbose) { + snprintf(buf, 256, "\tsketch name: %s\n", extrude_ip->sketch_name); + bu_vls_strcat(str, buf); + } + return(0); } @@ -2357,6 +2358,7 @@ struct rt_extrude_internal *eip, *eop; point_t tmp_vec; + if (dbip) RT_CK_DBI(dbip); RT_CK_DB_INTERNAL(ip); RT_CK_RESOURCE(resp) eip = (struct rt_extrude_internal *)ip->idb_ptr; @@ -2527,8 +2529,11 @@ * */ int -rt_extrude_params(struct pc_pc_set * ps, const struct rt_db_internal *ip) +rt_extrude_params(struct pc_pc_set *ps, const struct rt_db_internal *ip) { + if (!ps) return(0); + if (ip) RT_CK_DB_INTERNAL(ip); + return(0); /* OK */ } Modified: brlcad/trunk/src/librt/primitives/table.c =================================================================== --- brlcad/trunk/src/librt/primitives/table.c 2009-12-22 01:35:21 UTC (rev 36964) +++ brlcad/trunk/src/librt/primitives/table.c 2009-12-22 03:14:30 UTC (rev 36965) @@ -780,7 +780,7 @@ 1, /* 27 Solid of extrusion */ rt_extrude_prep, rt_extrude_shot, rt_extrude_print, rt_extrude_norm, rt_nul_piece_shot, rt_nul_piece_hitsegs, - rt_extrude_uv, rt_extrude_curve, rt_extrude_class, rt_extrude_free, + rt_nul_uv, rt_extrude_curve, rt_extrude_class, rt_extrude_free, rt_extrude_plot, rt_nul_vshot, rt_extrude_tess, rt_nul_tnurb, rt_extrude_import5, rt_extrude_export5, rt_extrude_import4, rt_extrude_export4, rt_extrude_ifree, Modified: brlcad/trunk/src/librt/primitives/xxx/xxx.c =================================================================== --- brlcad/trunk/src/librt/primitives/xxx/xxx.c 2009-12-22 01:35:21 UTC (rev 36964) +++ brlcad/trunk/src/librt/primitives/xxx/xxx.c 2009-12-22 03:14:30 UTC (rev 36965) @@ -88,12 +88,13 @@ rt_xxx_prep(struct soltab *stp, struct rt_db_internal *ip, struct rt_i *rtip) { struct rt_xxx_internal *xxx_ip; - register struct xxx_specific *xxx; - const struct bn_tol *tol = &rtip->rti_tol; + if (stp) RT_CK_SOLTAB(stp); RT_CK_DB_INTERNAL(ip); xxx_ip = (struct rt_xxx_internal *)ip->idb_ptr; RT_XXX_CK_MAGIC(xxx_ip); + + return 0; } @@ -103,8 +104,12 @@ void rt_xxx_print(const struct soltab *stp) { - register const struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + const struct xxx_specific *xxx; + + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); } @@ -121,11 +126,15 @@ int rt_xxx_shot(struct soltab *stp, struct xray *rp, struct application *ap, struct seg *seghead) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; - register struct seg *segp; - const struct bn_tol *tol = &ap->a_rt_i->rti_tol; + struct xxx_specific *xxx; + if (!stp) return -1; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return -1; + RT_CK_SOLTAB(stp); + + if (rp) RT_CK_RAY(rp); + /* the EXAMPLE_NEW_SEGMENT block shows how one might add a new result * if the ray did hit the primitive. the segment values would need to * be adjusted accordingly to match real values instead of -1. @@ -158,9 +167,13 @@ void rt_xxx_norm(struct hit *hitp, struct soltab *stp, struct xray *rp) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + struct xxx_specific *xxx; + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); + VJOIN1(hitp->hit_point, rp->r_pt, hitp->hit_dist, rp->r_dir); } @@ -173,9 +186,13 @@ void rt_xxx_curve(struct curvature *cvp, struct hit *hitp, struct soltab *stp) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + struct xxx_specific *xxx; + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); + cvp->crv_c1 = cvp->crv_c2 = 0; /* any tangent direction */ @@ -194,8 +211,12 @@ void rt_xxx_uv(struct application *ap, struct soltab *stp, struct hit *hitp, struct uvcoord *uvp) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + struct xxx_specific *xxx; + + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); } @@ -205,9 +226,13 @@ void rt_xxx_free(struct soltab *stp) { - register struct xxx_specific *xxx = - (struct xxx_specific *)stp->st_specific; + struct xxx_specific *xxx; + if (!stp) return; + xxx = (struct xxx_specific *)stp->st_specific; + if (!xxx) return; + RT_CK_SOLTAB(stp); + bu_free((char *)xxx, "xxx_specific"); } @@ -348,7 +373,7 @@ int rt_xxx_describe(struct bu_vls *str, const struct rt_db_internal *ip, int verbose, double mm2local) { - register struct rt_xxx_internal *xxx_ip = + struct rt_xxx_internal *xxx_ip = (struct rt_xxx_internal *)ip->idb_ptr; char buf[256]; @@ -374,7 +399,7 @@ void rt_xxx_ifree(struct rt_db_internal *ip, struct resource *resp) { - register struct rt_xxx_internal *xxx_ip; + struct rt_xxx_internal *xxx_ip; RT_CK_DB_INTERNAL(ip); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |