Revision: 52512
http://brlcad.svn.sourceforge.net/brlcad/?rev=52512&view=rev
Author: bob1961
Date: 2012-09-21 16:04:05 +0000 (Fri, 21 Sep 2012)
Log Message:
-----------
A hole flag is now expected to be included with each polygon contour.
Modified Paths:
--------------
brlcad/trunk/src/libtclcad/tclcad_obj.c
Modified: brlcad/trunk/src/libtclcad/tclcad_obj.c
===================================================================
--- brlcad/trunk/src/libtclcad/tclcad_obj.c 2012-09-20 22:33:23 UTC (rev
52511)
+++ brlcad/trunk/src/libtclcad/tclcad_obj.c 2012-09-21 16:04:05 UTC (rev
52512)
@@ -3327,6 +3327,7 @@
int ac;
size_t point_ac;
const char **point_av;
+ int hole;
/* Split contour j into points */
if (Tcl_SplitList(current_top->to_interp, contour_av[j], &ac,
&point_av) != TCL_OK) {
@@ -3335,16 +3336,25 @@
}
point_ac = ac;
- if (mode != TCLCAD_POLY_CONTOUR_MODE && point_ac < 3) {
+ /* point_ac includes a hole flag */
+ if (mode != TCLCAD_POLY_CONTOUR_MODE && point_ac < 4) {
bu_vls_printf(gedp->ged_result_str, "There must be atleast 3 points
per contour");
Tcl_Free((char *)point_av);
return GED_ERROR;
}
- gpp->gp_contour[j].gpc_num_points = point_ac;
+ gpp->gp_contour[j].gpc_num_points = point_ac - 1;
gpp->gp_contour[j].gpc_point = (point_t *)bu_calloc(point_ac,
sizeof(point_t), "gpc_point");
- for (k = 0; k < point_ac; ++k) {
+ if (bu_sscanf(point_av[0], "%d", &hole) != 1) {
+ bu_vls_printf(gedp->ged_result_str, "contour %zu, point %zu: bad
hole flag - %s\n",
+ j, k, point_av[k]);
+ Tcl_Free((char *)point_av);
+ return GED_ERROR;
+ }
+ gpp->gp_hole[j] = hole;
+
+ for (k = 1; k < point_ac; ++k) {
point_t pt;
if (bu_sscanf(point_av[k], "%lf %lf %lf", &pt[X], &pt[Y], &pt[Z])
!= 3) {
@@ -3355,9 +3365,9 @@
}
if (vflag) {
- MAT4X3PNT(gpp->gp_contour[j].gpc_point[k],
gdvp->gdv_view->gv_view2model, pt);
+ MAT4X3PNT(gpp->gp_contour[j].gpc_point[k-1],
gdvp->gdv_view->gv_view2model, pt);
} else {
- VMOVE(gpp->gp_contour[j].gpc_point[k], pt);
+ VMOVE(gpp->gp_contour[j].gpc_point[k-1], pt);
}
}
@@ -3988,7 +3998,7 @@
bu_vls_printf(gedp->ged_result_str, " {");
for (j = 0; j <
gdpsp->gdps_polygons.gp_polygon[i].gp_num_contours; ++j) {
- bu_vls_printf(gedp->ged_result_str, " {");
+ bu_vls_printf(gedp->ged_result_str, " {%d ",
gdpsp->gdps_polygons.gp_polygon[i].gp_hole[j]);
for (k = 0; k <
gdpsp->gdps_polygons.gp_polygon[i].gp_contour[j].gpc_num_points; ++k) {
point_t pt;
@@ -4067,7 +4077,7 @@
}
contour_ac = ac;
- if (to_extract_contours_av(gedp, gdvp, &gp, contour_ac,
contour_av,gdvp->gdv_view->gv_mode, 0) != GED_OK) {
+ if (to_extract_contours_av(gedp, gdvp, &gp, contour_ac, contour_av,
gdvp->gdv_view->gv_mode, 0) != GED_OK) {
Tcl_Free((char *)contour_av);
return GED_ERROR;
}
@@ -7635,7 +7645,7 @@
fx = x * inv_width * 2.0 - 1.0;
fy = (y * inv_height * -2.0 + 1.0) * inv_aspect;
- bu_vls_printf(&plist, "{ ");
+ bu_vls_printf(&plist, "{0 ");
{
vect_t vdiff;
@@ -7857,7 +7867,7 @@
fx = x * inv_width * 2.0 - 1.0;
fy = (y * inv_height * -2.0 + 1.0) * inv_aspect;
- bu_vls_printf(&plist, "{ ");
+ bu_vls_printf(&plist, "{0 ");
{
fastf_t a, b, arc;
@@ -8010,7 +8020,7 @@
}
MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, gdpsp->gdps_prev_point);
- bu_vls_printf(&plist, "{ {%lf %lf %lf} ", V3ARGS(m_pt));
+ bu_vls_printf(&plist, "{0 {%lf %lf %lf} ", V3ARGS(m_pt));
VSET(v_pt, gdpsp->gdps_prev_point[X], fy, 1.0);
MAT4X3PNT(m_pt, gdvp->gdv_view->gv_view2model, v_pt);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Got visibility?
Most devs has no idea what their production app looks like.
Find out how fast your code is with AppDynamics Lite.
http://ad.doubleclick.net/clk;262219671;13503038;y?
http://info.appdynamics.com/FreeJavaPerformanceDownload.html
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits