Pin *Module::getPinByOffset(double offsetX, double offsetY) { for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); if (pin->getOffsetX() == offsetX && pin->getOffsetY() == offsetY) { return pin; } } return 0; }
void Module::updatePinsPosition() { if (notFlipped) { switch (rotation) { case 0: // N for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); pin->setX(xStart + pin->getOffsetX()); pin->setY(yStart + pin->getOffsetY()); } break; case 1: // W for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); pin->setX(xEnd - pin->getOffsetY()); pin->setY(yStart + pin->getOffsetX()); } break; case 2: // S for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); pin->setX(xEnd - pin->getOffsetX()); pin->setY(yEnd - pin->getOffsetY()); } break; case 3: // E for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); pin->setX(xStart + pin->getOffsetY()); pin->setY(yEnd - pin->getOffsetX()); } break; } } else { switch (rotation) { case 0: // FN for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); pin->setX(xEnd - pin->getOffsetX()); pin->setY(yStart + pin->getOffsetY()); } break; case 1: // FW for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); pin->setX(xStart + pin->getOffsetY()); pin->setY(yStart + pin->getOffsetX()); } break; case 2: // FS for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); pin->setX(xStart + pin->getOffsetX()); pin->setY(yEnd - pin->getOffsetY()); } break; case 3: // FE for (int i = 0; i < pins->size(); i++) { Pin *pin = pins->at(i); pin->setX(xEnd - pin->getOffsetY()); pin->setY(yEnd - pin->getOffsetX()); } break; } } }