Exemplo n.º 1
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;
        }
    }
}