Index: trunk/src/tool.c =================================================================== --- trunk/src/tool.c (revision 15581) +++ trunk/src/tool.c (revision 15582) @@ -176,23 +176,14 @@ static void get_grid_lock_coordinates(int type, void *ptr1, void *ptr2, void *ptr3, pcb_coord_t * x, pcb_coord_t * y) { switch (type) { - case PCB_TYPE_VIA: - *x = ((pcb_pin_t *) ptr2)->X; - *y = ((pcb_pin_t *) ptr2)->Y; - break; case PCB_TYPE_LINE: *x = ((pcb_line_t *) ptr2)->Point1.X; *y = ((pcb_line_t *) ptr2)->Point1.Y; break; case PCB_TYPE_TEXT: - case PCB_TYPE_ELEMENT_NAME: *x = ((pcb_text_t *) ptr2)->X; *y = ((pcb_text_t *) ptr2)->Y; break; - case PCB_TYPE_ELEMENT: - *x = ((pcb_element_t *) ptr2)->MarkX; - *y = ((pcb_element_t *) ptr2)->MarkY; - break; case PCB_TYPE_POLY: *x = ((pcb_poly_t *) ptr2)->Points[0].X; *y = ((pcb_poly_t *) ptr2)->Points[0].Y; @@ -246,9 +237,8 @@ if (do_rubberband && conf_core.editor.rubber_band_mode) pcb_event(PCB_EVENT_RUBBER_LOOKUP_LINES, "ippp", pcb_crosshair.AttachedObject.Type, pcb_crosshair.AttachedObject.Ptr1, pcb_crosshair.AttachedObject.Ptr2, pcb_crosshair.AttachedObject.Ptr3); if (do_rubberband && - (pcb_crosshair.AttachedObject.Type == PCB_TYPE_ELEMENT || - pcb_crosshair.AttachedObject.Type == PCB_TYPE_SUBC || - pcb_crosshair.AttachedObject.Type == PCB_TYPE_VIA || + (pcb_crosshair.AttachedObject.Type == PCB_TYPE_SUBC || + pcb_crosshair.AttachedObject.Type == PCB_TYPE_PSTK || pcb_crosshair.AttachedObject.Type == PCB_TYPE_LINE || pcb_crosshair.AttachedObject.Type == PCB_TYPE_LINE_POINT)) pcb_event(PCB_EVENT_RUBBER_LOOKUP_RATS, "ippp", pcb_crosshair.AttachedObject.Type, pcb_crosshair.AttachedObject.Ptr1, pcb_crosshair.AttachedObject.Ptr2, pcb_crosshair.AttachedObject.Ptr3); } Index: trunk/src/tool_arrow.c =================================================================== --- trunk/src/tool_arrow.c (revision 15581) +++ trunk/src/tool_arrow.c (revision 15582) @@ -130,13 +130,13 @@ */ for (test = (PCB_SELECT_TYPES | PCB_MOVE_TYPES | PCB_TYPE_SUBC_FLOATER | PCB_LOOSE_SUBC) & ~PCB_TYPE_RATLINE; test; test &= ~type) { type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, test, &ptr1, &ptr2, &ptr3); - if (!pcb_tool_note.Hit && (type & PCB_MOVE_TYPES) && !PCB_FLAG_TEST(PCB_FLAG_LOCK, (pcb_pin_t *) ptr2)) { + if (!pcb_tool_note.Hit && (type & PCB_MOVE_TYPES) && !PCB_FLAG_TEST(PCB_FLAG_LOCK, (pcb_any_obj_t *) ptr2)) { pcb_tool_note.Hit = type; pcb_tool_note.ptr1 = ptr1; pcb_tool_note.ptr2 = ptr2; pcb_tool_note.ptr3 = ptr3; } - if (!pcb_tool_note.Moving && (type & (PCB_SELECT_TYPES | PCB_LOOSE_SUBC)) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, (pcb_pin_t *) ptr2)) + if (!pcb_tool_note.Moving && (type & (PCB_SELECT_TYPES | PCB_LOOSE_SUBC)) && PCB_FLAG_TEST(PCB_FLAG_SELECTED, (pcb_any_obj_t *) ptr2)) pcb_tool_note.Moving = pcb_true; if ((pcb_tool_note.Hit && pcb_tool_note.Moving) || type == PCB_TYPE_NONE) return; Index: trunk/src/tool_buffer.c =================================================================== --- trunk/src/tool_buffer.c (revision 15581) +++ trunk/src/tool_buffer.c (revision 15582) @@ -52,24 +52,10 @@ void pcb_tool_buffer_notify_mode(void) { void *ptr1, *ptr2, *ptr3; - pcb_text_t estr[PCB_MAX_ELEMENTNAMES]; - pcb_element_t *e = 0; pcb_subc_t *orig_subc = NULL; if (pcb_gui->shift_is_pressed()) { - int type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, PCB_TYPE_ELEMENT | PCB_TYPE_SUBC, &ptr1, &ptr2, - &ptr3); - if (type == PCB_TYPE_ELEMENT) { - e = (pcb_element_t *) ptr1; - if (e) { - int i; - - memcpy(estr, e->Name, PCB_MAX_ELEMENTNAMES * sizeof(pcb_text_t)); - for (i = 0; i < PCB_MAX_ELEMENTNAMES; ++i) - estr[i].TextString = estr[i].TextString ? pcb_strdup(estr[i].TextString) : NULL; - pcb_element_remove(e); - } - } + int type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, PCB_TYPE_SUBC, &ptr1, &ptr2, &ptr3); if (type == PCB_TYPE_SUBC) { orig_subc = (pcb_subc_t *) ptr1; pcb_subc_remove(orig_subc); @@ -77,28 +63,7 @@ } if (pcb_buffer_copy_to_layout(PCB, pcb_tool_note.X, pcb_tool_note.Y)) pcb_board_set_changed_flag(pcb_true); - if (e) { - int type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, PCB_TYPE_ELEMENT | PCB_TYPE_SUBC, &ptr1, &ptr2, &ptr3); - if (type == PCB_TYPE_ELEMENT && ptr1) { - int i, save_n; - e = (pcb_element_t *) ptr1; - save_n = PCB_ELEMNAME_IDX_VISIBLE(); - - for (i = 0; i < PCB_MAX_ELEMENTNAMES; i++) { - if (i == save_n) - pcb_elem_name_invalidate_erase(e); - pcb_r_delete_entry(PCB->Data->name_tree[i], (pcb_box_t *) & (e->Name[i])); - memcpy(&(e->Name[i]), &(estr[i]), sizeof(pcb_text_t)); - e->Name[i].Element = e; - pcb_text_bbox(pcb_font(PCB, 0, 1), &(e->Name[i])); - pcb_r_insert_entry(PCB->Data->name_tree[i], (pcb_box_t *) & (e->Name[i])); - if (i == save_n) - pcb_elem_name_invalidate_draw(e); - } - } - } - if (orig_subc != NULL) { int type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, PCB_TYPE_SUBC, &ptr1, &ptr2, &ptr3); if (type == PCB_TYPE_SUBC && (ptr1 != NULL)) { Index: trunk/src/tool_line.c =================================================================== --- trunk/src/tool_line.c (revision 15581) +++ trunk/src/tool_line.c (revision 15582) @@ -73,7 +73,7 @@ break; } if (conf_core.editor.auto_drc) { - type = pcb_search_screen(pcb_crosshair.X, pcb_crosshair.Y, PCB_TYPE_PIN | PCB_TYPE_PAD | PCB_TYPE_VIA | PCB_TYPE_PSTK | PCB_TYPE_SUBC_PART, &ptr1, &ptr2, &ptr3); + type = pcb_search_screen(pcb_crosshair.X, pcb_crosshair.Y, PCB_TYPE_PSTK | PCB_TYPE_SUBC_PART, &ptr1, &ptr2, &ptr3); pcb_lookup_conn(pcb_crosshair.X, pcb_crosshair.Y, pcb_true, 1, PCB_FLAG_FOUND); } if (type == PCB_TYPE_PSTK) { @@ -81,26 +81,6 @@ pcb_crosshair.AttachedLine.Point1.X = pstk->x; pcb_crosshair.AttachedLine.Point1.Y = pstk->y; } - else if (type == PCB_TYPE_PIN || type == PCB_TYPE_VIA) { - pcb_crosshair.AttachedLine.Point1.X = pcb_crosshair.AttachedLine.Point2.X = ((pcb_pin_t *) ptr2)->X; - pcb_crosshair.AttachedLine.Point1.Y = pcb_crosshair.AttachedLine.Point2.Y = ((pcb_pin_t *) ptr2)->Y; - } - else if (type == PCB_TYPE_PAD) { - pcb_pad_t *pad = (pcb_pad_t *) ptr2; - double d1 = pcb_distance(pcb_crosshair.X, pcb_crosshair.Y, pad->Point1.X, pad->Point1.Y); - double d2 = pcb_distance(pcb_crosshair.X, pcb_crosshair.Y, pad->Point2.X, pad->Point2.Y); - double dm = pcb_distance(pcb_crosshair.X, pcb_crosshair.Y, (pad->Point1.X + pad->Point2.X) / 2, (pad->Point1.Y + pad->Point2.Y)/2); - if ((dm <= d1) && (dm <= d2)) { /* prefer to snap to the middle of a pin if that's the closest */ - pcb_crosshair.AttachedLine.Point1.X = pcb_crosshair.AttachedLine.Point2.X = pcb_crosshair.X; - pcb_crosshair.AttachedLine.Point1.Y = pcb_crosshair.AttachedLine.Point2.Y = pcb_crosshair.Y; - } - else if (d2 < d1) { /* else select the closest endpoint */ - pcb_crosshair.AttachedLine.Point1 = pcb_crosshair.AttachedLine.Point2 = pad->Point2; - } - else { - pcb_crosshair.AttachedLine.Point1 = pcb_crosshair.AttachedLine.Point2 = pad->Point1; - } - } else { pcb_crosshair.AttachedLine.Point1.X = pcb_crosshair.AttachedLine.Point2.X = pcb_crosshair.X; pcb_crosshair.AttachedLine.Point1.Y = pcb_crosshair.AttachedLine.Point2.Y = pcb_crosshair.Y; @@ -166,6 +146,7 @@ && (pcb_layer_flags_(CURRENT) & PCB_LYT_COPPER) && (pcb_layer_flags_(last_layer) & PCB_LYT_COPPER) && (!PCB->is_footprint) +#warning padstack TODO: rewrite this to pstk && (via = pcb_via_new(PCB->Data, pcb_crosshair.AttachedLine.Point1.X, pcb_crosshair.AttachedLine.Point1.Y, @@ -257,6 +238,7 @@ pcb_crosshair.AttachedLine.Point1.X, pcb_crosshair.AttachedLine.Point1.Y, conf_core.design.via_thickness / 2) == PCB_TYPE_NONE +#warning padstack TODO: replace this with pstk && (via = pcb_via_new(PCB->Data, pcb_crosshair.AttachedLine.Point1.X, Index: trunk/src/tool_lock.c =================================================================== --- trunk/src/tool_lock.c (revision 15581) +++ trunk/src/tool_lock.c (revision 15582) @@ -53,31 +53,8 @@ int type; type = pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, PCB_TYPEMASK_LOCK, &ptr1, &ptr2, &ptr3); - if (type == PCB_TYPE_ELEMENT) { - pcb_element_t *element = (pcb_element_t *) ptr2; - PCB_FLAG_TOGGLE(PCB_FLAG_LOCK, element); - PCB_PIN_LOOP(element); - { - PCB_FLAG_TOGGLE(PCB_FLAG_LOCK, pin); - PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, pin); - } - PCB_END_LOOP; - PCB_PAD_LOOP(element); - { - PCB_FLAG_TOGGLE(PCB_FLAG_LOCK, pad); - PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, pad); - } - PCB_END_LOOP; - PCB_FLAG_CLEAR(PCB_FLAG_SELECTED, element); - /* always re-draw it since I'm too lazy - * to tell if a selected flag changed - */ - pcb_elem_invalidate_draw(element); - pcb_draw(); - pcb_hid_actionl("Report", "Object", NULL); - } - else if (type == PCB_TYPE_SUBC) { + if (type == PCB_TYPE_SUBC) { pcb_subc_t *subc = (pcb_subc_t *)ptr2; pcb_flag_change(PCB, PCB_CHGFLG_TOGGLE, PCB_FLAG_LOCK, PCB_TYPE_SUBC, ptr1, ptr2, ptr3); Index: trunk/src/tool_move.c =================================================================== --- trunk/src/tool_move.c (revision 15581) +++ trunk/src/tool_move.c (revision 15582) @@ -55,7 +55,7 @@ pcb_search_screen(pcb_tool_note.X, pcb_tool_note.Y, types, &pcb_crosshair.AttachedObject.Ptr1, &pcb_crosshair.AttachedObject.Ptr2, &pcb_crosshair.AttachedObject.Ptr3); if (pcb_crosshair.AttachedObject.Type != PCB_TYPE_NONE) { - if (PCB_FLAG_TEST(PCB_FLAG_LOCK, (pcb_pin_t *) pcb_crosshair.AttachedObject.Ptr2)) { + if (PCB_FLAG_TEST(PCB_FLAG_LOCK, (pcb_any_obj_t *) pcb_crosshair.AttachedObject.Ptr2)) { pcb_message(PCB_MSG_WARNING, _("Sorry, the object is locked\n")); pcb_crosshair.AttachedObject.Type = PCB_TYPE_NONE; } Index: trunk/src/tool_thermal.c =================================================================== --- trunk/src/tool_thermal.c (revision 15581) +++ trunk/src/tool_thermal.c (revision 15582) @@ -44,21 +44,6 @@ #include "thermal.h" #include "tool.h" -static void tool_thermal_on_pinvia(int type, void *ptr1, void *ptr2, void *ptr3) -{ - if (pcb_gui->shift_is_pressed()) { - int tstyle = PCB_FLAG_THERM_GET(INDEXOFCURRENT, (pcb_pin_t *) ptr3); - tstyle++; - if (tstyle > 5) - tstyle = 1; - pcb_chg_obj_thermal(type, ptr1, ptr2, ptr3, tstyle, INDEXOFCURRENT); - } - else if (PCB_FLAG_THERM_GET(INDEXOFCURRENT, (pcb_pin_t *) ptr3)) - pcb_chg_obj_thermal(type, ptr1, ptr2, ptr3, 0, INDEXOFCURRENT); - else - pcb_chg_obj_thermal(type, ptr1, ptr2, ptr3, PCB->ThermStyle, INDEXOFCURRENT); -} - void pcb_tool_thermal_on_pstk(pcb_pstk_t *ps, unsigned long lid) { unsigned char *th, newth = 0; @@ -113,8 +98,6 @@ && !PCB_FLAG_TEST(PCB_FLAG_HOLE, (pcb_pin_t *) ptr3)) { if (type == PCB_TYPE_PSTK) pcb_tool_thermal_on_pstk((pcb_pstk_t *)ptr2, INDEXOFCURRENT); - else - tool_thermal_on_pinvia(type, ptr1, ptr2, ptr3); } }