Пример #1
0
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);
}
Пример #2
0
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(...)
    {
    }
}
Пример #3
0
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);
            }
        }
    }
}
Пример #4
-4
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);
    }
}