Revision: 76689
http://sourceforge.net/p/brlcad/code/76689
Author: starseeker
Date: 2020-08-07 20:03:58 +0000 (Fri, 07 Aug 2020)
Log Message:
-----------
Start working on function implementations
Modified Paths:
--------------
brlcad/branches/bioh/include/bg/vlist.h
brlcad/branches/bioh/src/libbg/vlist.cpp
Modified: brlcad/branches/bioh/include/bg/vlist.h
===================================================================
--- brlcad/branches/bioh/include/bg/vlist.h 2020-08-07 19:09:00 UTC (rev
76688)
+++ brlcad/branches/bioh/include/bg/vlist.h 2020-08-07 20:03:58 UTC (rev
76689)
@@ -119,23 +119,32 @@
* size is set via command, it applies to the points/segments defined after
that
* command is introduced. */
-BG_EXPORT extern long
+BG_EXPORT extern size_t
bg_vlist_npts(struct bg_vlist *v);
-BG_EXPORT extern long
+BG_EXPORT extern size_t
bg_vlist_ncmds(struct bg_vlist *v);
BG_EXPORT extern long
-bg_vlist_add(struct bg_vlist *v, long i, bg_vlist_cmd_t cmd, point_t *p);
+bg_vlist_append(struct bg_vlist *v, bg_vlist_cmd_t cmd, point_t *p);
+BG_EXPORT extern long
+bg_vlist_insert(struct bg_vlist *v, size_t i, bg_vlist_cmd_t cmd, point_t *p);
+
BG_EXPORT extern bg_vlist_cmd_t
-bg_vlist_get(point_t *op, struct bg_vlist *v, long i, point_t *p,
bg_vlist_cmd_t cmd);
+bg_vlist_get(point_t *op, struct bg_vlist *v, size_t i);
+BG_EXPORT extern int
+bg_vlist_set(struct bg_vlist *v, size_t i, point_t *op, bg_vlist_cmd_t cmd);
+
+BG_EXPORT extern size_t
+bg_vlist_find(struct bg_vlist *v, size_t start_ind, bg_vlist_cmd_t cmd,
point_t *p);
+
BG_EXPORT extern long
-bg_vlist_rm(struct bg_vlist *v, bg_vlist_cmd_t cmd, point_t *p, long i);
+bg_vlist_rm(struct bg_vlist *v, size_t i);
BG_EXPORT extern long
-bg_vlist_get_pnt_size(struct bg_vlist *v, size_t i, point_t *p);
+bg_vlist_get_pnt_size(struct bg_vlist *v, size_t i);
/* Analytic functions */
Modified: brlcad/branches/bioh/src/libbg/vlist.cpp
===================================================================
--- brlcad/branches/bioh/src/libbg/vlist.cpp 2020-08-07 19:09:00 UTC (rev
76688)
+++ brlcad/branches/bioh/src/libbg/vlist.cpp 2020-08-07 20:03:58 UTC (rev
76689)
@@ -92,25 +92,86 @@
-#if 0
size_t
bg_vlist_npnts(struct bg_vlist *v)
{
- size_t num_commands;
- struct bn_vlist *vp;
+ size_t cnt = 0;
- if (UNLIKELY(vlist == NULL)) {
- return 0;
+ for (size_t i = 0; i < v->i->v.size(); i++) {
+ bg_vlist_cmd_t cmd = bg_vlist_get(NULL, v, i);
+ switch (cmd) {
+ case BG_VLIST_POINT_DRAW:
+ case BG_VLIST_TRI_MOVE:
+ case BG_VLIST_TRI_DRAW:
+ case BG_VLIST_POLY_MOVE:
+ case BG_VLIST_POLY_DRAW:
+ cnt++;
+ break;
+ default:
+ // Note: not counting normal data as points
+ continue;
+ }
}
- num_commands = 0;
- for (BU_LIST_FOR(vp, bn_vlist, &(vlist->l))) {
- num_commands += vp->nused;
+ return cnt;
+}
+
+size_t
+bg_vlist_ncmds(struct bg_vlist *v)
+{
+ size_t cnt = 0;
+
+ for (size_t i = 0; i < v->i->v.size(); i++) {
+ bg_vlist_cmd_t cmd = bg_vlist_get(NULL, v, i);
+ if (cmd == BG_VLIST_NULL) {
+ continue;
+ }
+ cnt++;
}
- return num_commands;
+ return cnt;
}
+bg_vlist_cmd_t
+bg_vlist_get(point_t *op, struct bg_vlist *v, size_t i)
+{
+ if (i > v->i->v.size() - 1) {
+ return BG_VLIST_NULL;
+ }
+
+ // Actual node info is either in the queue or the local vector
+ vobj &cv = (v->i->q) ? v->i->q->i->objs[v->i->v[i]] :
v->i->vlocal[v->i->v[i]];
+ if (op) {
+ VMOVE(*op, cv.p);
+ }
+ return cv.cmd;
+}
+
+size_t
+bg_vlist_find(struct bg_vlist *v, size_t start_ind, bg_vlist_cmd_t cmd,
point_t *p)
+{
+ for (size_t i = 0; i < v->i->v.size(); i++) {
+ if (i < start_ind) {
+ continue;
+ }
+ // Actual node info is either in the queue or the local vector
+ vobj &cv = (v->i->q) ? v->i->q->i->objs[v->i->v[i]] :
v->i->vlocal[v->i->v[i]];
+ if (cmd != BG_VLIST_NULL && cv.cmd != cmd) {
+ // If we have a non-NULL command, filter on it
+ continue;
+ }
+ if (p && DIST_PNT_PNT_SQ(*p, cv.p) > VUNITIZE_TOL) {
+ // If we have a non-NULL point, distance filter using it
+ continue;
+ }
+
+ // If we pass all the filters, we have a match
+ return i;
+ }
+ return BG_VLIST_NULL;
+}
+
+#if 0
static int
bn_vlist_bbox_internal(struct bn_vlist *vp, point_t *bmin, point_t *bmax, int
*disp_mode)
{
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
BRL-CAD Source Commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/brlcad-commits