Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 37894) +++ trunk/src/obj_line.c (revision 37895) @@ -456,20 +456,20 @@ } -static rnd_r_dir_t line_callback(const rnd_box_t * b, void *cl) +static rnd_rtree_dir_t line_callback(void *cl, void *obj, const rnd_rtree_box_t *box) { int res; - pcb_line_t *line = (pcb_line_t *) b; + pcb_line_t *line = (pcb_line_t *)obj; struct line_info *i = (struct line_info *) cl; res = can_merge_lines(line, &i->lin, &i->modpts); switch(res) { - case PCB_LINMER_NONE: return RND_R_DIR_NOT_FOUND; + case PCB_LINMER_NONE: return rnd_RTREE_DIR_NOT_FOUND_CONT; case PCB_LINMER_REMPT: i->remove_line = line; longjmp(i->env, 1); break; case PCB_LINMER_SKIP: i->skip_new = 1; longjmp(i->env, 1); break; } - return RND_R_DIR_NOT_FOUND; /* should't ever get here */ + return rnd_RTREE_DIR_NOT_FOUND_CONT; /* should't ever get here */ } @@ -504,7 +504,7 @@ * verify that the layer is on the board first! */ if (setjmp(info.env) == 0) { - rnd_r_search(Layer->line_tree, &search, NULL, line_callback, &info, NULL); + rnd_rtree_search_any(Layer->line_tree, (rnd_rtree_box_t *)&search, NULL, line_callback, &info, NULL); return pcb_line_new(Layer, X1, Y1, X2, Y2, Thickness, Clearance, Flags); } @@ -989,9 +989,9 @@ jmp_buf env; }; -static rnd_r_dir_t moveline_callback(const rnd_box_t * b, void *cl) +static rnd_rtree_dir_t moveline_callback(void *cl, void *obj, const rnd_rtree_box_t *box) { - struct via_info *i = (struct via_info *) cl; + struct via_info *i = (struct via_info *)cl; pcb_pstk_t *ps = pcb_pstk_new(PCB->Data, -1, conf_core.design.via_proto, i->X, i->Y, conf_core.design.clearance, pcb_flag_make(PCB_FLAG_CLEARLINE)); @@ -1047,7 +1047,7 @@ info.X = newone->Point1.X; info.Y = newone->Point1.Y; if (setjmp(info.env) == 0) - rnd_r_search(Layer->line_tree, &sb, NULL, moveline_callback, &info, NULL); + rnd_rtree_search_any(Layer->line_tree, (rnd_rtree_box_t *)&sb, NULL, moveline_callback, &info, NULL); } /* consider via at Point2 */ sb.X1 = newone->Point2.X - newone->Thickness / 2; @@ -1060,7 +1060,7 @@ info.X = newone->Point2.X; info.Y = newone->Point2.Y; if (setjmp(info.env) == 0) - rnd_r_search(Layer->line_tree, &sb, NULL, moveline_callback, &info, NULL); + rnd_rtree_search_any(Layer->line_tree, (rnd_rtree_box_t *)&sb, NULL, moveline_callback, &info, NULL); } return newone; } @@ -1085,10 +1085,10 @@ pcb_line_t *line; rnd_point_t *point; }; -static rnd_r_dir_t remove_point(const rnd_box_t * b, void *cl) +static rnd_rtree_dir_t remove_point(void *cl, void *obj, const rnd_rtree_box_t *box) { - pcb_line_t *line = (pcb_line_t *) b; - struct rlp_info *info = (struct rlp_info *) cl; + pcb_line_t *line = (pcb_line_t *)obj; + struct rlp_info *info = (struct rlp_info *)cl; if (line == info->line) return RND_R_DIR_NOT_FOUND; if ((line->Point1.X == info->point->X) @@ -1103,7 +1103,7 @@ info->point = &line->Point2; longjmp(info->env, 1); } - return RND_R_DIR_NOT_FOUND; + return rnd_RTREE_DIR_NOT_FOUND_CONT; } /* removes a line point, or a line if the selected point is the end */ @@ -1118,7 +1118,7 @@ info.line = Line; info.point = Point; if (setjmp(info.env) == 0) { - rnd_r_search(Layer->line_tree, (const rnd_box_t *) Point, NULL, remove_point, &info, NULL); + rnd_rtree_search_any(Layer->line_tree, (const rnd_rtree_box_t *)Point, NULL, remove_point, &info, NULL); return pcb_lineop_remove(ctx, Layer, Line); } pcb_move_obj(PCB_OBJ_LINE_POINT, Layer, info.line, info.point, other.X - Point->X, other.Y - Point->Y); Index: trunk/src/polygon.c =================================================================== --- trunk/src/polygon.c (revision 37894) +++ trunk/src/polygon.c (revision 37895) @@ -1391,10 +1391,10 @@ pcb_layer_t *layer; pcb_data_t *data; void *user_data; - rnd_r_dir_t (*callback)(pcb_data_t *, pcb_layer_t *, pcb_poly_t *, int, void *, void *, void *user_data); + rnd_rtree_dir_t (*callback)(pcb_data_t *, pcb_layer_t *, pcb_poly_t *, int, void *, void *, void *user_data); }; -static rnd_r_dir_t subtract_plow(pcb_data_t *Data, pcb_layer_t *Layer, pcb_poly_t *Polygon, int type, void *ptr1, void *ptr2, void *user_data) +static rnd_rtree_dir_t subtract_plow(pcb_data_t *Data, pcb_layer_t *Layer, pcb_poly_t *Polygon, int type, void *ptr1, void *ptr2, void *user_data) { if (!Polygon->Clipped) return 0; @@ -1402,58 +1402,58 @@ case PCB_OBJ_PSTK: SubtractPadstack(Data, (pcb_pstk_t *) ptr2, Layer, Polygon); Polygon->NoHolesValid = 0; - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; case PCB_OBJ_LINE: SubtractLine((pcb_line_t *) ptr2, Polygon); Polygon->NoHolesValid = 0; - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; case PCB_OBJ_ARC: SubtractArc((pcb_arc_t *) ptr2, Polygon); Polygon->NoHolesValid = 0; - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; case PCB_OBJ_POLY: if (ptr2 != Polygon) { SubtractPolyPoly((pcb_poly_t *) ptr2, Polygon); Polygon->NoHolesValid = 0; - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; } break; case PCB_OBJ_TEXT: SubtractText((pcb_text_t *) ptr2, Polygon); Polygon->NoHolesValid = 0; - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; } - return RND_R_DIR_NOT_FOUND; + return rnd_RTREE_DIR_NOT_FOUND_CONT; } -static rnd_r_dir_t add_plow(pcb_data_t *Data, pcb_layer_t *Layer, pcb_poly_t *Polygon, int type, void *ptr1, void *ptr2, void *user_data) +static rnd_rtree_dir_t add_plow(pcb_data_t *Data, pcb_layer_t *Layer, pcb_poly_t *Polygon, int type, void *ptr1, void *ptr2, void *user_data) { switch (type) { case PCB_OBJ_PSTK: UnsubtractPadstack(Data, (pcb_pstk_t *) ptr2, Layer, Polygon); - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; case PCB_OBJ_LINE: UnsubtractLine((pcb_line_t *) ptr2, Layer, Polygon); - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; case PCB_OBJ_ARC: UnsubtractArc((pcb_arc_t *) ptr2, Layer, Polygon); - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; case PCB_OBJ_POLY: if (ptr2 != Polygon) { UnsubtractPolyPoly((pcb_poly_t *) ptr2, Polygon); - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; } break; case PCB_OBJ_TEXT: UnsubtractText((pcb_text_t *) ptr2, Layer, Polygon); - return RND_R_DIR_FOUND_CONTINUE; + return rnd_RTREE_DIR_FOUND_CONT; } - return RND_R_DIR_NOT_FOUND; + return rnd_RTREE_DIR_NOT_FOUND_CONT; } int pcb_poly_sub_obj(pcb_data_t *Data, pcb_layer_t *Layer, pcb_poly_t *Polygon, int type, void *obj) { - if (subtract_plow(Data, Layer, Polygon, type, NULL, obj, NULL) == RND_R_DIR_FOUND_CONTINUE) + if (subtract_plow(Data, Layer, Polygon, type, NULL, obj, NULL) & rnd_RTREE_DIR_FOUND) return 0; return -1; } @@ -1460,7 +1460,7 @@ int pcb_poly_unsub_obj(pcb_data_t *Data, pcb_layer_t *Layer, pcb_poly_t *Polygon, int type, void *obj) { - if (add_plow(Data, Layer, Polygon, type, NULL, obj, NULL) == RND_R_DIR_FOUND_CONTINUE) + if (add_plow(Data, Layer, Polygon, type, NULL, obj, NULL) & rnd_RTREE_DIR_FOUND) return 0; return -1; } @@ -1485,7 +1485,7 @@ int pcb_poly_plows(pcb_data_t *Data, int type, void *ptr1, void *ptr2, - rnd_r_dir_t (*call_back) (pcb_data_t *data, pcb_layer_t *lay, pcb_poly_t *poly, int type, void *ptr1, void *ptr2, void *user_data), + rnd_rtree_dir_t (*call_back)(pcb_data_t *data, pcb_layer_t *lay, pcb_poly_t *poly, int type, void *ptr1, void *ptr2, void *user_data), void *user_data) { rnd_box_t sb = ((pcb_any_obj_t *) ptr2)->BoundingBox; Index: trunk/src/polygon.h =================================================================== --- trunk/src/polygon.h (revision 37894) +++ trunk/src/polygon.h (revision 37895) @@ -59,7 +59,7 @@ void pcb_polygon_hole_create_from_attached(void); int pcb_poly_holes(pcb_poly_t * ptr, const rnd_box_t * range, int (*callback) (rnd_pline_t *, void *user_data), void *user_data); int pcb_poly_plows(pcb_data_t *Data, int type, void *ptr1, void *ptr2, - rnd_r_dir_t (*cb)(pcb_data_t *data, pcb_layer_t *lay, pcb_poly_t *poly, int type, void *ptr1, void *ptr2, void *user_data), + rnd_rtree_dir_t (*cb)(pcb_data_t *data, pcb_layer_t *lay, pcb_poly_t *poly, int type, void *ptr1, void *ptr2, void *user_data), void *user_data); void pcb_poly_compute_no_holes(pcb_poly_t * poly);