Index: trunk/src/obj_arc.c =================================================================== --- trunk/src/obj_arc.c (revision 9127) +++ trunk/src/obj_arc.c (revision 9128) @@ -223,6 +223,12 @@ return (Arc); } +pcb_arc_t *pcb_arc_dup(pcb_layer_t *dst, pcb_arc_t *src) +{ + return pcb_arc_new(dst, src->X, src->Y, src->Width, src->Height, src->StartAngle, src->Delta, src->Thickness, src->Clearance, src->Flags); +} + + void pcb_add_arc_on_layer(pcb_layer_t *Layer, pcb_arc_t *Arc) { pcb_arc_bbox(Arc); Index: trunk/src/obj_arc.h =================================================================== --- trunk/src/obj_arc.h (revision 9127) +++ trunk/src/obj_arc.h (revision 9128) @@ -46,6 +46,7 @@ void pcb_arc_free(pcb_arc_t *data); pcb_arc_t *pcb_arc_new(pcb_layer_t *Layer, pcb_coord_t center_x, pcb_coord_t center_y, pcb_coord_t width_r, pcb_coord_t height_r, pcb_angle_t start_angle, pcb_angle_t delta_angle, pcb_coord_t Thickness, pcb_coord_t Clearance, pcb_flag_t Flags); +pcb_arc_t *pcb_arc_dup(pcb_layer_t *dst, pcb_arc_t *src); void *pcb_arc_destroy(pcb_layer_t *Layer, pcb_arc_t *Arc); /* Add objects without creating them or making any "sanity modifications" to them */ Index: trunk/src/obj_line.c =================================================================== --- trunk/src/obj_line.c (revision 9127) +++ trunk/src/obj_line.c (revision 9128) @@ -216,6 +216,11 @@ return (Line); } +pcb_line_t *pcb_line_dup(pcb_layer_t *dst, pcb_line_t *src) +{ + return pcb_line_new(dst, src->Point1.X, src->Point1.Y, src->Point2.X, src->Point2.Y, src->Thickness, src->Clearance, src->Flags); +} + void pcb_add_line_on_layer(pcb_layer_t *Layer, pcb_line_t *Line) { pcb_line_bbox(Line); Index: trunk/src/obj_line.h =================================================================== --- trunk/src/obj_line.h (revision 9127) +++ trunk/src/obj_line.h (revision 9128) @@ -51,7 +51,8 @@ pcb_line_t *pcb_line_new_merge(pcb_layer_t *Layer, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_coord_t Thickness, pcb_coord_t Clearance, pcb_flag_t Flags); pcb_line_t *pcb_line_new(pcb_layer_t *Layer, pcb_coord_t X1, pcb_coord_t Y1, pcb_coord_t X2, pcb_coord_t Y2, pcb_coord_t Thickness, pcb_coord_t Clearance, pcb_flag_t Flags); -void *pcb_line_destroy(pcb_layer_t *Layer, pcb_line_t *Line); +pcb_line_t *pcb_line_dup(pcb_layer_t *Layer, pcb_line_t *src); +void *pcb_line_destroy(pcb_layer_t *dst, pcb_line_t *src); /* Add objects without creating them or making any "sanity modifications" to them */