void SMDItem::createItem(QGraphicsItemGroup* inOutItem, bool inIsMainNotGround) { auto main = new QGraphicsPolygonItem; QPolygonF poly; for (auto point : mComponent->rect().points) { poly << QPointF(point.x, - point.y); } poly << poly.first(); main->setPolygon(poly); QColor color = inIsMainNotGround ? gSettings().layerColor(mComponent->layer()) : gSettings().backgroundColor(); QBrush br(color); main->setBrush(br); QPen p(color); if (!inIsMainNotGround) { p.setColor(color); p.setWidthF(mComponent->groundPlaneDistance() * 2); p.setJoinStyle(Qt::MiterJoin); } main->setPen(p); inOutItem->addToGroup(main); }
int main( int _argc, char* _argv[] ) { try{ App Application(_argc, _argv); QCoreApplication::setOrganizationName("genome-tools"); QCoreApplication::setApplicationName(_APPNAME); gArgs().Init(QCoreApplication::arguments()); for(int j=1; j< _argc;j++) { QString s(_argv[j]); if(s.contains("pass")) for(int i=0;i<s.size();i++) _argv[j][i]='*'; } _logfile.setFileName(gArgs().getArgs("log").toString()); _logfile.open(QIODevice::WriteOnly|QIODevice::Append); #ifdef _WARDROBE_ gSettings().Init(gArgs().getArgs("wardrobe").toString()); #endif #if QT_VERSION >= 0x050000 qInstallMessageHandler(printMsgHandler); #else qInstallMsgHandler(printMsgHandler); #endif FSTM *machine = new FSTM(); QObject::connect(machine,SIGNAL(finished()),QCoreApplication::instance(),SLOT(quit())); QTimer::singleShot(0, machine, SLOT(start())); return Application.exec(); } catch(char *str) { cerr << "Error rised:"<<str << endl; } catch(exception &e ) { cerr << "Caught " << e.what( ) << endl; cerr << "Type " << typeid( e ).name( ) << endl; } catch(...) { } }
void BoardGrid::updateGrid() { for (auto mainLine : mMainLines) { this->removeFromGroup(mainLine); delete mainLine; } mMainLines.clear(); unsigned gridSize = static_cast<unsigned>(mBoard->gridSize()); unsigned numSubdivisions = gSettings().numGridSubdivisions(); const QPen& subLinePen(gSettings().gridSubPen()); const QPen& mainLinePen(gSettings().gridMainPen()); const QPointF origin(mBoard->origin().x / 1000, mBoard->origin().y / 1000); // vertical { unsigned i = 0; while(true) { i++; float currPos = origin.x() + i * gridSize; if (currPos >= mBoard->size().x) break; auto line = new QGraphicsLineItem(currPos, 0, currPos, mBoard->size().y); line->setPen((numSubdivisions == 0 || i % numSubdivisions != 0) ? subLinePen : mainLinePen); this->addToGroup(line); } i = 0; while(true) { i++; float currPos = origin.x() - i * gridSize; if (currPos <= 0) break; auto line = new QGraphicsLineItem(currPos, 0, currPos, mBoard->size().y); line->setPen((numSubdivisions == 0 || i % numSubdivisions != 0) ? subLinePen : mainLinePen); this->addToGroup(line); } } // horizontal { unsigned i = 0; while(true) { i++; float currPos = origin.y() + i * gridSize; if (currPos >= mBoard->size().y) break; auto line = new QGraphicsLineItem(0, currPos, mBoard->size().x, currPos); line->setPen((numSubdivisions == 0 || i % numSubdivisions != 0) ? subLinePen : mainLinePen); this->addToGroup(line); } i = 0; while(true) { i++; float currPos = origin.y() - i * gridSize; if (currPos <= 0) break; auto line = new QGraphicsLineItem(0, currPos, mBoard->size().x, currPos); line->setPen((numSubdivisions == 0 || i % numSubdivisions != 0) ? subLinePen : mainLinePen); this->addToGroup(line); } } // origin point if (mBoard->origin().x || mBoard->origin().y) { const QPen& originPen(gSettings().gridOriginPen()); // vertical { float currPos = mBoard->origin().x / 1000; if (currPos < mBoard->size().x) { auto line = new QGraphicsLineItem(currPos, 0, currPos, mBoard->size().y); line->setPen(originPen); this->addToGroup(line); } } // horizontal { double currPos = mBoard->origin().y / 1000; if (currPos < mBoard->size().y) { auto line = new QGraphicsLineItem(0, currPos, mBoard->size().x, currPos); line->setPen(originPen); this->addToGroup(line); } } } }
BoardScene::BoardScene(const SLFormat::Board* inBoard, QWidget* inParent) :QGraphicsScene(inParent), mBoard(inBoard) { this->setSceneRect(0, 0, mBoard->size().x, mBoard->size().y); // background const unsigned activeLayer = mBoard->activeLayer(); QBrush brush(gSettings().backgroundColor()); QPen pen(brush.color()); mBackground = this->addRect(this->sceneRect(), pen, brush); // ground planes (initially invisible) for (unsigned i = 0; i < SLFormat::Board::cNumberLayers; i++) { unsigned layer = gSettings().layerFromOrderNumber(i); if (mBoard->isGroundPlaneSupported(layer)) { QGraphicsItemGroup* plane = new QGraphicsItemGroup; mGroundPlanes[layer] = plane; addItem(plane); plane->setVisible(false); auto rect = new QGraphicsRectItem(this->sceneRect()); const QColor color = gSettings().groundPlaneLayerColor(layer); rect->setBrush(QBrush(color)); rect->setPen(QPen(color)); plane->addToGroup(rect); } else { mGroundPlanes[layer] = nullptr; } } // grid mGrid = new BoardGrid(mBoard); addItem(mGrid); // layers for (unsigned i = 0; i < SLFormat::Board::cNumberLayers; i++) { unsigned layer = gSettings().layerFromOrderNumber(i); mLayerGroups[layer] = new QGraphicsItemGroup; addItem(mLayerGroups[layer]); } mDrillHoles = new QGraphicsItemGroup; addItem(mDrillHoles); // components on layers for (auto comp : mBoard->components()) { ComponentItem* item = ComponentFactory::createItem(comp); if (item) { unsigned layer = comp->layer(); mLayerGroups[layer]->addToGroup(item->mainItem()); if (mBoard->isGroundPlaneSupported(layer)) { mGroundPlanes[layer]->addToGroup(item->groundPlaneItem()); } mDrillHoles->addToGroup(item->drillItem()); } } // show ground plane for active layer if (mBoard->isGroundPlaneEnabled(activeLayer)) { assert(mGroundPlanes[activeLayer]); mGroundPlanes[activeLayer]->setVisible(true); } }