Beispiel #1
0
// Lost vars at line 1588 through condition folding
Boolean ChangeSelectedElementSide( void )
{
  int eax;
  int ebx;
  int esi;
  int edi;
  Boolean change;
  if ( PCB->PinOn == 0 || PCB->ElementOn == 0 || PCB->Data->ElementN + -1 == -1 )
  {
    *(int*)&change = 0;
  }
  *(int*)&change = 0;
  PCB->Data->ElementN = ( PCB->Data->ElementN * 300 ) + -300;
  while ( 1 )
  {
    element = element->net + esi;
    if ( ( ( element->Flags.f/*.1_1of4*/ & 64 ) & 255 ) == 0 )
    {
      n += -1;
      if ( n + -1 != -1 )
        continue;
    }
    else
    {
      n += -1;
      change |= ChangeElementSide( element, 0 );
      if ( n != -1 )
        continue;
    }
    return change;
  }
}
Beispiel #2
0
static void
replace_one_footprint_aux(ElementTypePtr old_element,
                          PadOrPinType* old1_pp, PadOrPinType* old2_pp,
                          ElementTypePtr copy_element,
                          PadOrPinType* copy1_pp, PadOrPinType* copy2_pp)
{
  Boolean two_points = (old2_pp && copy2_pp);
  Boolean reflect = IS_REFLECTED(copy_element, old_element);

  debug_log("Reflect?: %s\n", (reflect ? "yes" : "no"));
  if (reflect) {
    /* Change side of board */
    ChangeElementSide(copy_element, 0);
  }

  CheapPointType copy1_pt = pad_or_pin_center(copy1_pp);
  CheapPointType old1_pt = pad_or_pin_center(old1_pp);

  BYTE rot_steps = 0;
  if (two_points) {
    /* Calculate nearest rotation steps */
    CheapPointType copy2_pt = pad_or_pin_center(copy2_pp);
    CheapPointType old2_pt = pad_or_pin_center(old2_pp);
    rot_steps =
      calculate_rotation_steps(copy1_pt, copy2_pt, old1_pt, old2_pt);
  }
  if (rot_steps) {
    /* Rotate copy */
    RotateElementLowLevel(PCB->Data, copy_element, 0, 0, rot_steps);
    /* Recalculate since copy_element has changed. */
    copy1_pt = pad_or_pin_center(copy1_pp);
  }

  /* Calculate translation */
  LocationType dx = old1_pt.X - copy1_pt.X;
  LocationType dy = old1_pt.Y - copy1_pt.Y;
  /* Move element */
  MoveElementLowLevel(PCB->Data, copy_element, dx, dy);

  /* Transfer pad/pin text and names. */
  transfer_text(old_element, copy_element);
  transfer_names(old_element, copy_element);
  transfer_flags(old_element, copy_element);
  SetElementBoundingBox(PCB->Data, copy_element, &PCB->Font);

  AddObjectToCreateUndoList(ELEMENT_TYPE,
                            copy_element, copy_element, copy_element);
  /* Remove old element. */
  MoveObjectToRemoveUndoList(ELEMENT_TYPE,
                             old_element, old_element, old_element);
}