示例#1
0
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;
}
示例#2
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;
        }
    }
}