void do_insert_data(T data, box2d<double> const& box, node * n, unsigned int& depth) { if (++depth >= max_depth_) { n->cont_.push_back(data); } else { box2d<double> const& node_extent = n->extent(); box2d<double> ext[4]; split_box(node_extent,ext); for (int i=0;i<4;++i) { if (ext[i].contains(box)) { if (!n->children_[i]) { nodes_.push_back(new node(ext[i])); n->children_[i]=&nodes_.back(); } do_insert_data(data,box,n->children_[i],depth); return; } } n->cont_.push_back(data); } }
PRIVATE VOID sel_palette(int blocks, int distinct, struct rgb *my_color_pt) { int boxes; /* int i, j; */ struct box *ptr; init(blocks, distinct, my_color_pt); /* split box into smaller boxes with about equal number of points */ for (boxes = 1; boxes < PALSIZE; boxes++) { /* ptr=frontier->right; j = 0; while (ptr != NULL) { printf("Box %d, distinct %d, total %d\n",j,ptr->nmbr_distinct, ptr->nmbr_pts); for (i=0; i<ptr->nmbr_distinct; i++) printf("pt %d: %d %d %d",i,distinct_pt[ptr->pts[i]].c[RED], distinct_pt[ptr->pts[i]].c[GREEN], distinct_pt[ptr->pts[i]].c[BLUE]); j++; ptr = ptr->right; } */ ptr = find_box(); split_box(ptr); } assign_color(); }
void do_insert_data(T data, SkRect& box, node * n, unsigned int& depth) { if (++depth >= max_depth) { n->data.push_back(data); } else { SkRect& node_extent = n->bounds; SkRect ext[4]; split_box(node_extent, ext); for (int i = 0; i < 4; ++i) { if (ext[i].contains(box)) { if (!n->children[i]) { n->children[i] = new node(ext[i]); } do_insert_data(data, box, n->children[i], depth); return; } } n->data.push_back(data); } }