void *ChangeViaSize( PinTypePtr Via ) { int eax; int ebx; int esi; BDimension value = Absolute; if ( value > 0x989680 || ( ( Via->Flags.f & 8 ) & 255 ) || value <= 1999 || value <= Via->DrillingHole + 399 || Via->Thickness == value ) { } AddObjectToSizeUndoList( 1, (void*)Via, (void*)Via, (void*)Via ); EraseVia( Via ); r_delete_entry( &PCB->Data->via_tree, (int)( &Via->BoundingBox ) ); RestoreToPolygon( &PCB->Data, 256, (void*)Via, (void*)Via ); if ( Via->Mask ) { AddObjectToMaskSizeUndoList( 1, (void*)Via, (void*)Via, (void*)Via ); Via->Mask = ( Via->Mask + value ) - Via->Thickness; } Via->Thickness = value; SetPinBoundingBox( Via ); r_insert_entry( &PCB->Data->via_tree, (int)( &Via->BoundingBox ), 0 ); ClearFromPolygon( &PCB->Data, 1, (void*)Via, (void*)Via ); DrawVia( Via, 0 ); return (void*)Via; }
void *ChangeViaClearSize( PinTypePtr Via ) { int eax; int ecx; int ebx; int esi; BDimension value = Absolute; if ( ( Via->Flags.f & 8192 ) == 0 ) { value = ( value <= 0x989680 ? 0x989680 : value ) < 0 ? value <= 0x989680 ? 10000000 : value : Via->Flags.f & 8192; if ( Delta < 0 ) value = value < ( PCB->Bloat * 2 ) ? value : Via->Flags.f & 8192; else if ( !1 ) value = value < ( PCB->Bloat * 2 ) ? value : ( PCB->Bloat + 1 ) * 2; if ( Via->Clearance != value ) { RestoreToPolygon( &PCB->Data, 1, (void*)Via, (void*)Via ); AddObjectToClearSizeUndoList( 1, (void*)Via, (void*)Via, (void*)Via ); EraseVia( Via ); r_delete_entry( &PCB->Data->via_tree, (int)( &Via->BoundingBox ) ); Via->Clearance = value; SetPinBoundingBox( Via ); r_insert_entry( &PCB->Data->via_tree, (int)( &Via->BoundingBox ), 0 ); ClearFromPolygon( &PCB->Data, 1, (void*)Via, (void*)Via ); DrawVia( Via, 0 ); Via->Element = 0; return (void*)Via; } } return 0; }
/* --------------------------------------------------------------------------- * removes a via */ static void * RemoveVia (PinTypePtr Via) { /* erase from screen and memory */ if (PCB->ViaOn) { EraseVia (Via); if (!Bulk) Draw (); } MoveObjectToRemoveUndoList (VIA_TYPE, Via, Via, Via); return NULL; }
/* --------------------------------------------------------------------------- * moves a via */ static void * MoveVia (PinTypePtr Via) { r_delete_entry (PCB->Data->via_tree, (BoxType *)Via); RestoreToPolygon (PCB->Data, VIA_TYPE, Via, Via); MOVE_VIA_LOWLEVEL (Via, DeltaX, DeltaY); if (PCB->ViaOn) EraseVia (Via); r_insert_entry (PCB->Data->via_tree, (BoxType *)Via, 0); ClearFromPolygon (PCB->Data, VIA_TYPE, Via, Via); if (PCB->ViaOn) { DrawVia (Via); Draw (); } return (Via); }
void *ChangeVia2ndSize( PinTypePtr Via ) { int eax; int ebx; int esi; BDimension value = Absolute; if ( value + -400 > 0x9894f0 || ( !( ( Via->Flags.f & 8 ) & 255 ) && Via->Thickness + -399 <= value ) || Via->DrillingHole == value ) { } AddObjectTo2ndSizeUndoList( 1, (void*)Via, (void*)Via, (void*)Via ); EraseVia( Via ); Via->DrillingHole = value; if ( ( Via->Flags.f/*.1_1of4*/ & 8 ) & 255 ) { RestoreToPolygon( &PCB->Data, 1, (void*)Via, (void*)Via ); AddObjectToSizeUndoList( 1, (void*)Via, (void*)Via, (void*)Via ); Via->Thickness = value; ClearFromPolygon( &PCB->Data, 1, (void*)Via, (void*)Via ); } DrawVia( Via, 0 ); return (void*)Via; }
Boolean ChangeHole( PinTypePtr Via ) { EraseVia( Via ); AddObjectToFlagUndoList( 1, (void*)Via, (void*)Via, (void*)Via ); Via->Flags.f ^= 8; if ( ( (unsigned char)( Via->Flags.f ^ 8 ) & 8 ) & 255 ) { RestoreToPolygon( &PCB->Data, 1, (void*)Via, (void*)Via ); AddObjectToSizeUndoList( 1, (void*)Via, (void*)Via, (void*)Via ); Via->Mask = Via->DrillingHole; Via->Thickness = Via->DrillingHole; ClearFromPolygon( &PCB->Data, 1, (void*)Via, (void*)Via ); } else { AddObjectTo2ndSizeUndoList( 1, (void*)Via, (void*)Via, (void*)Via ); Via->DrillingHole = Via->Thickness + -400; } DrawVia( Via, 0 ); Draw( ); return 1; }