Index: trunk/src/action_helper.c =================================================================== --- trunk/src/action_helper.c (revision 10982) +++ trunk/src/action_helper.c (revision 10983) @@ -713,7 +713,7 @@ && PCB_FLAG_TEST(PCB_FLAG_SELECTED, thing)) { /* this is not un-doable since LOCK isn't */ PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, thing); - pcb_draw_obj(type, ptr1, ptr2); + pcb_draw_obj((pcb_any_obj_t *)ptr2); pcb_draw(); } pcb_hid_actionl("Report", "Object", NULL); Index: trunk/src/draw.c =================================================================== --- trunk/src/draw.c (revision 10982) +++ trunk/src/draw.c (revision 10983) @@ -573,49 +573,59 @@ } -void pcb_draw_obj(int type, void *ptr1, void *ptr2) +void pcb_draw_obj(pcb_any_obj_t *obj) { - switch (type) { - case PCB_TYPE_VIA: + switch (obj->type) { + case PCB_OBJ_VIA: if (PCB->ViaOn) - pcb_via_invalidate_draw((pcb_pin_t *) ptr2); + pcb_via_invalidate_draw((pcb_pin_t *)obj); break; - case PCB_TYPE_LINE: - if (((pcb_layer_t *) ptr1)->meta.real.vis) - pcb_line_invalidate_draw((pcb_layer_t *) ptr1, (pcb_line_t *) ptr2); + case PCB_OBJ_LINE: + if (obj->parent.layer->meta.real.vis) + pcb_line_invalidate_draw(obj->parent.layer, (pcb_line_t *)obj); break; - case PCB_TYPE_ARC: - if (((pcb_layer_t *) ptr1)->meta.real.vis) - pcb_arc_invalidate_draw((pcb_layer_t *) ptr1, (pcb_arc_t *) ptr2); + case PCB_OBJ_ARC: + if (obj->parent.layer->meta.real.vis) + pcb_arc_invalidate_draw(obj->parent.layer, (pcb_arc_t *)obj); break; - case PCB_TYPE_TEXT: - if (((pcb_layer_t *) ptr1)->meta.real.vis) - pcb_text_invalidate_draw((pcb_layer_t *) ptr1, (pcb_text_t *) ptr2); + case PCB_OBJ_TEXT: + if (obj->parent.layer->meta.real.vis) + pcb_text_invalidate_draw(obj->parent.layer, (pcb_text_t *)obj); break; - case PCB_TYPE_POLYGON: - if (((pcb_layer_t *) ptr1)->meta.real.vis) - pcb_poly_invalidate_draw((pcb_layer_t *) ptr1, (pcb_polygon_t *) ptr2); + case PCB_OBJ_POLYGON: + if (obj->parent.layer->meta.real.vis) + pcb_poly_invalidate_draw(obj->parent.layer, (pcb_polygon_t *)obj); break; - case PCB_TYPE_ELEMENT: - if (pcb_silk_on(PCB) && (PCB_FRONT((pcb_element_t *) ptr2) || PCB->InvisibleObjectsOn)) - pcb_elem_invalidate_draw((pcb_element_t *) ptr2); + case PCB_OBJ_ELEMENT: + if (pcb_silk_on(PCB) && (PCB_FRONT((pcb_element_t *)obj) || PCB->InvisibleObjectsOn)) + pcb_elem_invalidate_draw((pcb_element_t *)obj); break; - case PCB_TYPE_RATLINE: + case PCB_OBJ_RAT: if (PCB->RatOn) - pcb_rat_invalidate_draw((pcb_rat_t *) ptr2); + pcb_rat_invalidate_draw((pcb_rat_t *)obj); break; - case PCB_TYPE_PIN: + case PCB_OBJ_PIN: if (PCB->PinOn) - pcb_pin_invalidate_draw((pcb_pin_t *) ptr2); + pcb_pin_invalidate_draw((pcb_pin_t *)obj); break; - case PCB_TYPE_PAD: + case PCB_OBJ_PAD: if (PCB->PinOn) - pcb_pad_invalidate_draw((pcb_pad_t *) ptr2); + pcb_pad_invalidate_draw((pcb_pad_t *)obj); break; - case PCB_TYPE_ELEMENT_NAME: - if (pcb_silk_on(PCB) && (PCB_FRONT((pcb_element_t *) ptr2) || PCB->InvisibleObjectsOn)) - pcb_elem_name_invalidate_draw((pcb_element_t *) ptr1); + case PCB_OBJ_ETEXT: + if (pcb_silk_on(PCB) && (PCB_FRONT(obj->parent.element) || PCB->InvisibleObjectsOn)) + pcb_elem_name_invalidate_draw(obj->parent.element); break; + case PCB_OBJ_POINT: + case PCB_OBJ_SUBC: + case PCB_OBJ_NET: + case PCB_OBJ_LAYER: + case PCB_OBJ_ELINE: + case PCB_OBJ_EARC: + case PCB_OBJ_CLASS_MASK: + case PCB_OBJ_CLASS_OBJ: + case PCB_OBJ_ANY: + break; } } Index: trunk/src/draw.h =================================================================== --- trunk/src/draw.h (revision 10982) +++ trunk/src/draw.h (revision 10983) @@ -80,7 +80,7 @@ void pcb_draw(void); void pcb_redraw(void); -void pcb_draw_obj(int, void *, void *); +void pcb_draw_obj(pcb_any_obj_t *obj); void pcb_draw_layer(pcb_layer_t *, const pcb_box_t *); void pcb_erase_obj(int, void *, void *); void pcb_draw_ppv(pcb_layergrp_id_t group, const pcb_box_t * drawn_area); Index: trunk/src/find_drc.c =================================================================== --- trunk/src/find_drc.c (revision 10982) +++ trunk/src/find_drc.c (revision 10983) @@ -292,7 +292,7 @@ pcb_undo_add_obj_to_flag(polygon); PCB_FLAG_SET(PCB_FLAG_FOUND, polygon); pcb_poly_invalidate_draw(layer, polygon); - pcb_draw_obj(type, ptr1, ptr2); + pcb_draw_obj((pcb_any_obj_t *)ptr2); drcerr_count++; LocateError(&x, &y); BuildObjectList(&object_count, &object_id_list, &object_type_list); Index: trunk/src/undo_old.c =================================================================== --- trunk/src/undo_old.c (revision 10982) +++ trunk/src/undo_old.c (revision 10983) @@ -142,10 +142,10 @@ pcb_layer_t *layer; layer = LAYER_PTR(pcb_layer_id(RemoveList, (pcb_layer_t *) Ptr1)); - pcb_draw_obj(Type, (void *) layer, Ptr2); + pcb_draw_obj((pcb_any_obj_t *)Ptr2); } else - pcb_draw_obj(Type, Ptr1, Ptr2); + pcb_draw_obj((pcb_any_obj_t *)Ptr2); } /* --------------------------------------------------------------------------- @@ -242,7 +242,7 @@ pcb_erase_obj(type, ptr1, ptr2); ((pcb_pin_t *) ptr2)->DrillingHole = Entry->Data.Size; Entry->Data.Size = swap; - pcb_draw_obj(type, ptr1, ptr2); + pcb_draw_obj((pcb_any_obj_t *)ptr2); return (pcb_true); } return (pcb_false); @@ -273,7 +273,7 @@ pcb_r_insert_entry(Layer->arc_tree, (pcb_box_t *) a, 0); Entry->Data.AngleChange.angle[0] = old_sa; Entry->Data.AngleChange.angle[1] = old_da; - pcb_draw_obj(type, ptr1, a); + pcb_draw_obj((pcb_any_obj_t *)a); return (pcb_true); } return (pcb_false); @@ -304,7 +304,7 @@ pcb_r_insert_entry(Layer->arc_tree, (pcb_box_t *) a, 0); Entry->Data.Move.DX = old_w; Entry->Data.Move.DY = old_h; - pcb_draw_obj(type, ptr1, a); + pcb_draw_obj((pcb_any_obj_t *)a); return (pcb_true); } return (pcb_false); @@ -330,7 +330,7 @@ pcb_poly_clear_from_poly(PCB->Data, type, ptr1, ptr2); Entry->Data.Size = swap; if (pcb_undo_and_draw) - pcb_draw_obj(type, ptr1, ptr2); + pcb_draw_obj((pcb_any_obj_t *)ptr2); return (pcb_true); } return (pcb_false); @@ -357,7 +357,7 @@ ((pcb_pin_t *) ptr2)->Mask = Entry->Data.Size; Entry->Data.Size = swap; if (pcb_undo_and_draw) - pcb_draw_obj(type, ptr1, ptr2); + pcb_draw_obj((pcb_any_obj_t *)ptr2); return (pcb_true); } return (pcb_false); @@ -391,7 +391,7 @@ Entry->Data.Size = swap; pcb_poly_clear_from_poly(PCB->Data, type, ptr1, ptr2); if (pcb_undo_and_draw) - pcb_draw_obj(type, ptr1, ptr2); + pcb_draw_obj((pcb_any_obj_t *)ptr2); return (pcb_true); } return (pcb_false); @@ -435,7 +435,7 @@ Entry->Data.Flags = swap; if (pcb_undo_and_draw && must_redraw) - pcb_draw_obj(type, ptr1, ptr2); + pcb_draw_obj((pcb_any_obj_t *)ptr2); return (pcb_true); } pcb_message(PCB_MSG_ERROR, "hace Internal error: Can't find ID %d type %08x\n", Entry->ID, Entry->Kind); Index: trunk/src_plugins/lib_gtk_common/dlg_drc.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_drc.c (revision 10982) +++ trunk/src_plugins/lib_gtk_common/dlg_drc.c (revision 10983) @@ -230,7 +230,7 @@ case PCB_TYPE_POLYGON: pcb_layervis_change_group_vis(pcb_layer_id(PCB->Data, (pcb_layer_t *) ptr1), pcb_true, pcb_true); } - pcb_draw_obj(object_type, ptr1, ptr2); + pcb_draw_obj((pcb_any_obj_t *)ptr2); } pcb_board_set_changed_flag(pcb_true); pcb_undo_inc_serial(); Index: trunk/src_plugins/lib_gtk_common/dlg_netlist.c =================================================================== --- trunk/src_plugins/lib_gtk_common/dlg_netlist.c (revision 10982) +++ trunk/src_plugins/lib_gtk_common/dlg_netlist.c (revision 10983) @@ -220,7 +220,7 @@ pcb_undo_add_obj_to_flag(conn.obj); PCB_FLAG_TOGGLE(PCB_FLAG_SELECTED, conn.obj); - pcb_draw_obj(type, conn.ptr1, conn.obj); + pcb_draw_obj((pcb_any_obj_t *)conn.obj); } /** Callback when the user clicks on a PCB node in the right node treeview.