Exemple #1
0
void Visual::makeWalls(map &mapp,int k)
{
    QGraphicsScene::clear();
    QBrush wall(QColor(255, 255, 255), QPixmap(":resource/images/wall.png"));
    QPen pen(Qt::NoPen);
    QBrush liftup  (QColor(255, 255, 255), QPixmap(":resource/images/Liftup.png"));
    QBrush liftdown(QColor(255, 255, 255), QPixmap(":resource/images/Liftdown.png"));
    for (int i = 0; i < mapp.len; i++)
        {
            for (int j = 0; j < mapp.wid; j++)
            {
                if (mapp.floor[i][j][k] == map::WALL)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, wall);
                    item->setData(0, map::WALL);
                }
                if (mapp.floor[i][j][k] == map::LIFT_UP)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, liftup);
                    item->setData(0, map::LIFT_UP);
                }
                if (mapp.floor[i][j][k] == map::LIFT_DOWN)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, liftdown);
                    item->setData(0, map::LIFT_DOWN);
                }
             }
         }
}
void CellScene::mousePressEvent(QGraphicsSceneMouseEvent * mouseEvent) {
	QGraphicsItem * item = itemAt(mouseEvent->scenePos());
	QGraphicsEllipseItem * item1;
	if (mouseEvent->button() == Qt::LeftButton)
		if (item)
			if (item->data(0) == "cellpoint" && item->data(1) == "") {
//				qDebug() << "marked";
				item1 = (QGraphicsEllipseItem*) item;
				item1->setPen(QPen(color, 3));
				item->setData(1, "marked");
				item->setData(2,struct_num);
				updatePointsNumbers();
				item->setData(4,0);

//				qDebug() <<item->data(2);
			}
	if (mouseEvent->button() == Qt::RightButton)
		if (item)
			if (item->data(1) == "marked") {
				item1 = (QGraphicsEllipseItem*) item;
				item1->setPen(QPen(Qt::blue, 2));
				item->setData(1, "");
				item->setData(2, "");
				item->setData(3,"");
				item->setData(4,"");
//				qDebug() <<item->data(2);
//				qDebug() << "unmarked";
			}
}
void ObjectsScene::addObject(int id, const Object& obj)
{
    const XY& p = obj.pos();
    const QPointF position(p.x, p.y);

    BaseType radius = obj.radius();

    QGraphicsItem* item = createItem(radius);
    item->setPos(position);
    item->setData(ObjectData::Id, id);
    item->setData(ObjectData::Radius, radius);

    m_objects.insert( std::make_pair(id, item) );
}
Exemple #4
0
//Рисуем карту. Где 1 - там земля, где 0 - ничего. Так как карта - одномерный массив, то переводим координаты в одномерные.
void MvScene::makeMap()
{
    int map[] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
                 0,0,1,1,1,1,1,0,0,0,0,1,1,0,0,
                 0,1,1,1,1,1,1,1,0,0,0,1,1,0,0,
                 0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,
                 0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,
                 0,1,1,0,0,0,1,1,1,1,1,1,1,1,1,
                 0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,
                 0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,
                 0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,
                 0,1,1,0,0,0,1,1,0,0,0,1,1,0,0,
                 0,1,1,0,0,1,1,1,0,0,0,1,1,0,0,
                 0,1,1,1,1,1,1,1,1,0,0,1,1,0,0,
                 0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,
                 0,0,0,0,0,0,0,1,1,1,1,0,1,1,1,
                 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
                 };
        QBrush brush(QColor(255, 255, 255), QPixmap("mapGrass.jpg"));
        QPen pen(Qt::NoPen);
        for (int x = 0; x < 15; x++){
            for(int y = 0; y < 15; y++){
                if(map[x+15*y] == 1){
                QGraphicsItem * item =
                        addRect(QRectF(50*x,50*y,50,50), pen, brush);
                item->setData(0,"Map");
                }
            }
        }
}
Exemple #5
0
void MapScene::addMark(qreal latitude, qreal longitude, QVariant data)
{
    //NOTE: Need to be refactored for use with marks
    QPixmap pixmap(20,20);
    pixmap.fill(Qt::transparent);
    QPoint center(pixmap.width()/2, pixmap.height()/2);

    QPainter painter;
    painter.begin(&pixmap);
    painter.setBrush(Qt::blue);
    painter.drawEllipse(center, pixmap.width()/2, pixmap.height()/2);
    painter.setBrush(Qt::black);
    painter.drawEllipse(center, pixmap.width()/10, pixmap.height()/10);
    painter.end();

    QGraphicsItem * mark = this->addPixmap(pixmap);
    QPointF mark_point = OSMCoordinatesConverter::GeoToTile(latitude, longitude, this->m_zoom);

    mark_point.setX(mark_point.x()*256.0);
    mark_point.setY(mark_point.y()*256.0);
    mark->setX(mark_point.x());
    mark->setY(mark_point.y());
    mark->setData(0,data);

    this->views()[0]->centerOn(mark_point);
}
void ObjectsScene::updateRadius(int id, BaseType r)
{
    auto obj = m_objects.find(id);
    assert(obj != m_objects.end());

    QGraphicsItem* item = createItem(r);
    item->setData(ObjectData::Id, id);
    item->setData(ObjectData::Radius, r);

    const QPointF pos = obj->second->pos();
    item->setPos(pos);

    // swap items
    removeItem(obj->second);
    delete obj->second;
    obj->second = item;
}
Exemple #7
0
void GraphicsScene::resetPositionHasChangedFlags()
{
  LOG4CPP_INFO_S ((*mainCat)) << "GraphicsScene::resetPositionHasChangedFlags";

  QList<QGraphicsItem*> itms = items ();
  QList<QGraphicsItem*>::const_iterator itr;
  for (itr = itms.begin (); itr != itms.end (); itr++) {

    QGraphicsItem *item = *itr;
    item->setData (DATA_KEY_POSITION_HAS_CHANGED, false);
  }
}
Exemple #8
0
//размещаем смайл на карте. для того, чтобы карта была сеткой, положение мыши округляем до ближайщего квадрата размером 50х50
void MvScene::placeSmile(float x, float y)
{
        QGraphicsItem *	smile = addPixmap(QPixmap("Smile.png"));
        div_t x1 = div(x,50);
        div_t y1 = div(y,50);
        smile->translate(x1.quot*50, y1.quot*50);
        if (itemCollidesWith(smile)->data(0)=="Map")
             smile->setData(0, "Smile");

        else{
            removeItem(smile);
        }
}
void ViewGraphics::dropEvent(QDropEvent *event){
    if (event->mimeData()->hasFormat("application/x-dnditemdata")) {
        QByteArray itemData = event->mimeData()->data("application/x-dnditemdata");
        QDataStream dataStream(&itemData, QIODevice::ReadOnly);
        QPixmap pixmap;
        QPoint offset;
        dataStream >> pixmap >> offset;
        QPoint pointAtual = event->pos() - offset;

        QGraphicsItem *pix = scene->addPixmap(pixmap);
        pix->setPos(pointAtual.x(), pointAtual.y());

        event->setDropAction(Qt::MoveAction);
        event->accept();

        /** Abrir tela de cadastro do pc / switch**/
        QString componentName = oController->getComponentName();
        if(QString::compare(componentName, QString("laComputer")) == 0) {
            pix->setData(1, QVariant("laComputer"));
            ComputerController *c = new ComputerController(this, pix);
            c->setController(oController);
            c->show();
        } else if (QString::compare(componentName, QString("laSwitch")) == 0) {
            if(oController->getSwitch() == NULL) {
                pix->setData(1, QVariant("laSwitch"));
                SwitchController *s = new SwitchController(this, pix);
                s->setController(oController);
                s->show();
            } else {
                oController->print(QString("Já existe um switch!"));
                SwitchController *s = new SwitchController(this, pix);
                s->hideItem();
            }
        }
        itensMove();
    } else {
Exemple #10
0
void GraphViewer::onValueEdited()
{
    bool ok=false;
    int newvalue = _valueEditor.text().toInt(&ok);
    if (ok)
    {

        if (qgraphicsitem_cast<QGraphicsSimpleTextItem*>(_editedItem))
        {
            QGraphicsSimpleTextItem* text = qgraphicsitem_cast<QGraphicsSimpleTextItem*>(_editedItem);
            text->setText(QString("%1").arg(newvalue));
            QGraphicsItem* parent = text->parentItem();
            if (parent)
            {
                parent->setData(KEY_EDGE_WEIGHT, newvalue);
            }
            _valueEditor.hide();
        }

    }
}
Exemple #11
0
// ////////////////////////////////////Draw BG image/////////////////////////////////////////////////
void LvlScene::DrawBG(int x, int y, int w, int h, int sctID,
                      QPixmap &srcimg, QPixmap &srcimg2, obj_BG &bgsetup)
{
    /* Old Algorith */
    //QPixmap BackImg;
    //QPainter * BGPaint;
    //QPixmap img;
    int si_attach, attach;

    /* New Algorith */
    QGraphicsItem * item;
    //QGraphicsRectItem * itemR=NULL;

    QColor FillColor; //Fill undrawed space with color

    long sctW,//Section Width
         sctH,//Section Height
         R1W, //Img Width  (Row1)
         R1H, //Img Height (Row1)
         R1Hc=0, //Crop height from bottom
         R1Ho=0, //Offset from top
         R2W, //Img Width  (Row2)
         R2H, //Img Height (Row2)
         R2Hc=0, //Crop height from bottom
         R2Ho=0, //Offset from top
         RectPlus=0,
         toY; //Placing position Y 0 - top

    sctW = (long)fabs(x-w);
    sctH = (long)fabs(y-h);

    WriteToLog(QtDebugMsg, "Draw BG -> Draw BG Image");

    attach = bgsetup.attached;

// ///////////////////SingleRow BG///////////////////////////
    if((bgsetup.type==0)&&(!bgsetup.editing_tiled))
    {
        WriteToLog(QtDebugMsg, "Draw BG -> Style: SingleRow BG");

        R1W = srcimg.width();
        R1H = srcimg.height();

        if(attach==0) // Get Pixel color (0 - bottom, 1 - top)
            FillColor = QColor( srcimg.toImage().pixel(0,0) ); // from top
        else
            FillColor = QColor( srcimg.toImage().pixel(0,(R1H-1)) ); //from bottom

        if(attach==0)
        {   // 0 - bottom
            toY = (sctH>R1H)? sctH-R1H : 0;
            R1Hc = ((R1H>sctH) ? R1H-sctH : 0); //Crop height from bottom
            R1Ho = R1Hc; //Offset from top
            RectPlus=0;
        }
        else
        {   // 1 - top
            toY = 0;
            R1Hc = ((R1H>sctH) ? R1H-sctH : 0); //Crop height from bottom
            R1Ho = 0; //Offset from top
            RectPlus=R1H;
        }

        // /////////////////////Draw row//////////////////

        item = addRect(0, 0, sctW, R1H-R1Hc, Qt::NoPen, QBrush(srcimg.copy(0, R1Ho, R1W, R1H-R1Hc)));
        item->setData(0, QString("BackGround%1").arg(sctID) );
        item->setPos(x, y+toY);
        item->setZValue(bgZ);

        if(R1H < sctH)
        {
            item = addRect(0, 0, sctW, sctH-R1H, Qt::NoPen, QBrush(FillColor));
            item->setData(0, QString("BackGround%1").arg(sctID) );
            item->setPos(x,y+RectPlus);
            item->setZValue(bgZ);
        }

    }
    else

// ///////////////////DoubleRow BG////////////////////////
        if((bgsetup.type==1)&&(!bgsetup.editing_tiled))
        {
            WriteToLog(QtDebugMsg, "Draw BG -> Style: DoubleRow BG");

            si_attach = bgsetup.second_attached; // Second image attach

            R1W = srcimg.width();
            R1H = srcimg.height();

            //Fill empty space
            if((!srcimg2.isNull()) && (si_attach==0))
                FillColor = QColor( srcimg2.toImage().pixel(0,0) );
            else
                FillColor = QColor( srcimg.toImage().pixel(0,0) );

            toY = (sctH>R1H)? sctH-R1H : 0;
            R1Hc = ((R1H>sctH) ? R1H-sctH : 0); //Crop height from bottom
            R1Ho = R1Hc; //Offset from top
            RectPlus=0;

            WriteToLog(QtDebugMsg, QString("Draw BG -> Draw first row, params: "));

            // /////////////////////Draw first row//////////////////
            item = addRect(0, 0, sctW, R1H-R1Hc, Qt::NoPen, QBrush(srcimg.copy(0, R1Ho, R1W, R1H-R1Hc)));
            item->setData(0, QString("BackGround%1").arg(sctID) );
            item->setPos(x, y+toY);
            item->setZValue(bgZ);
            // /////////////////////Draw first row//////////////////

            WriteToLog(QtDebugMsg, "Draw BG -> Draw second row");

            R2W = srcimg2.width();
            R2H = srcimg2.height();

            if(si_attach==0) // over first
            {
                toY = (sctH-R1H > R2H)? sctH-R2H-R1H : 0;
                R2Hc = ((R2H+R1H>sctH) ? R2H-(sctH-R1H) : 0); //Crop height from bottom
                R2Ho = R2Hc; //Offset from top
                RectPlus=R2H;
            }
            else if(si_attach==1) // bottom
            {
                toY = (sctH > R2H)? sctH-R2H : 0;
                R2Hc = ((R2H>sctH) ? R2H-sctH : 0); //Crop height from bottom
                R2Ho = R2Hc; //Offset from top
                RectPlus=0;
            }

            if((!srcimg2.isNull()) && ((sctH > R1H)||(si_attach==1)))
            {

                // /////////////////////Draw second row//////////////////
                item = addRect(0, 0, sctW, R2H-R2Hc, Qt::NoPen, QBrush( srcimg2.copy(0, R2Ho, R2W, R2H-R2Hc) ));
                item->setData(0, QString("BackGround%1").arg(sctID) );
                item->setPos(x, y+toY);
                item->setZValue(bgZ+0.0000000001);
                // /////////////////////Draw second row//////////////////

            } else if(srcimg2.isNull())
                WriteToLog(QtWarningMsg, "Draw BG -> second image is Null");


            if( R1H+RectPlus < sctH )
            {
                item = addRect(0, 0, sctW, sctH-R1H-RectPlus, Qt::NoPen, QBrush(FillColor));
                item->setData(0, QString("BackGround%1").arg(sctID) );
                item->setPos(x,y);
                item->setZValue(bgZ);
            }

        }
        else

// ///////////////////////////////Tiled BG///////////////////////////////
        {

            WriteToLog(QtDebugMsg, "Draw BG -> Style: Tiled");

            R1W = srcimg.width();
            R1H = srcimg.height();
            if(attach==0)
            {
                //Attached to Bottom
                RectPlus = sctH % R1H;

                toY = (sctH>R1H)? sctH-R1H : 0;

                //R1Hc = R1H-RectPlus; // Crop height from bottom/Offset from top

                item = addRect(0, 0, sctW, RectPlus, Qt::NoPen,
                               QBrush(srcimg.copy(0, R1H-RectPlus, R1W, RectPlus))
                              );
                item->setData(0, QString("BackGround%1").arg(sctID) );
                item->setPos(x,y);
                item->setZValue(bgZ);

                if(sctH >= R1H)
                {
                    item = addRect(0, 0, sctW, sctH-RectPlus, Qt::NoPen, QBrush(srcimg));
                    item->setData(0, "BackGround"+QString::number(sctID) );
                    item->setPos(x,y+RectPlus);
                    item->setZValue(bgZ);
                }

            }
            else
            {
                //Attached to Top
                item = addRect(0, 0, sctW, sctH, Qt::NoPen, QBrush(srcimg));
                item->setData(0, QString("BackGround%1").arg(sctID) );
                item->setPos(x,y);
                item->setZValue(bgZ);
            }
        }

    WriteToLog(QtDebugMsg, "acceptedID is "+QString::number(sctID)+" data is "+item->data(0).toString());

    WriteToLog(QtDebugMsg, "Draw BG -> Drawed");
}
Exemple #12
0
//  ////////////////////////////Drawing the inactive intersection space////////////////////////////////////
void LvlScene::drawSpace()
{
    const long padding = 400000;

    WriteToLog(QtDebugMsg, QString("Draw intersection space-> Find and remove current"));
    foreach(QGraphicsItem * spaceItem, items())
    {
        if(spaceItem->data(0).toString()=="Space")
        {
            removeItem(spaceItem);
            delete spaceItem;
            continue;
        }
        if(spaceItem->data(0).toString()=="SectionBorder")
        {
            removeItem(spaceItem);
            delete spaceItem;
            continue;
        }
    }

    QPolygon bigSpace;
    QGraphicsItem * item;
    QGraphicsItem * item2;
    QVector<QPoint > drawing;

    int i, j;
    long l, r, t, b;
    //x, y, h, w;

    WriteToLog(QtDebugMsg, QString("Draw intersection space-> Find minimal"));
    j=-1;
    do
    {
        j++;
        l = LvlData->sections[j].size_left;
        r = LvlData->sections[j].size_right;
        t = LvlData->sections[j].size_top;
        b = LvlData->sections[j].size_bottom;
    }
    while(
        ((LvlData->sections[j].size_left==0) &&
         (LvlData->sections[j].size_right==0) &&
         (LvlData->sections[j].size_top==0) &&
         (LvlData->sections[j].size_bottom==0)) && (j<LvlData->sections.size())
    );

    for(i=0; i<LvlData->sections.size(); i++)
    {

        if(
            (LvlData->sections[i].size_left==0) &&
            (LvlData->sections[i].size_right==0) &&
            (LvlData->sections[i].size_top==0) &&
            (LvlData->sections[i].size_bottom==0))
            continue;

        if(LvlData->sections[i].size_left < l)
            l = LvlData->sections[i].size_left;
        if(LvlData->sections[i].size_right > r)
            r = LvlData->sections[i].size_right;
        if(LvlData->sections[i].size_top < t)
            t = LvlData->sections[i].size_top;
        if(LvlData->sections[i].size_bottom > b)
            b = LvlData->sections[i].size_bottom;
    }

    WriteToLog(QtDebugMsg, QString("Draw intersection space-> Draw polygon"));

    drawing.clear();
    drawing.push_back(QPoint(l-padding, t-padding));
    drawing.push_back(QPoint(r+padding, t-padding));
    drawing.push_back(QPoint(r+padding, b+padding));
    drawing.push_back(QPoint(l-padding, b+padding));
    drawing.push_back(QPoint(l-padding, t+padding));

    bigSpace = QPolygon(drawing);


    l = LvlData->sections[LvlData->CurSection].size_left;
    r = LvlData->sections[LvlData->CurSection].size_right;
    t = LvlData->sections[LvlData->CurSection].size_top;
    b = LvlData->sections[LvlData->CurSection].size_bottom;


    WriteToLog(QtDebugMsg, QString("Draw intersection space-> Draw editing hole"));
    drawing.clear();
    drawing.push_back(QPoint(l-1, t-1));
    drawing.push_back(QPoint(r+1, t-1));
    drawing.push_back(QPoint(r+1, b+1));
    drawing.push_back(QPoint(l-1, b+1));
    drawing.push_back(QPoint(l-1, t-1));

    bigSpace = bigSpace.subtracted(QPolygon(drawing));

    WriteToLog(QtDebugMsg, QString("Draw intersection space-> add polygon to Item"));
    item = addPolygon(bigSpace, QPen(Qt::NoPen), QBrush(Qt::black));//Add inactive space
    item2 = addPolygon(QPolygon(drawing), QPen(Qt::red, 2));
    item->setZValue(spaceZ1);
    item2->setZValue(spaceZ2);
    item->setOpacity(qreal(0.4));
    item->setData(0, "Space");
    item2->setData(0, "SectionBorder");

}
Exemple #13
0
void Visual::paintplayer(map &mapp,int k)
{
    QPen pen(Qt::NoPen);
    QBrush bonus100(QColor(255, 255, 255), QPixmap(":resource/images/player11.png"));
    QBrush bonus200(QColor(255, 255, 255), QPixmap(":resource/images/player22.png"));
    QBrush bonus300(QColor(255, 255, 255), QPixmap(":resource/images/palyer33.png"));
    QBrush money100(QColor(255, 255, 255), QPixmap(":resource/images/Money100.png"));
    QBrush money500(QColor(255, 255, 255), QPixmap(":resource/images/Money500.png"));
    QBrush player1 (QColor(255, 255, 255), QPixmap(":resource/images/player1.png"));
    QBrush player2 (QColor(255, 255, 255), QPixmap(":resource/images/player2.png"));

        for (int i = 0; i < mapp.len; i++)
        {
            for (int j = 0; j < mapp.wid; j++)
            {
                //QGraphicsItem * item = QGraphicsScene.items(i*10,j*10,10,10);
                QList <QGraphicsItem*>item;
                  item=items(QRectF(i*10, j*10, 10, 10));
                if (item.size()>0 && item[0]->data(0) != map::WALL && item[0]->data(0) != map::LIFT_UP && item[0]->data(0) != map::LIFT_DOWN)
                 removeItem(item[0]);
                if (mapp.floor[i][j][k] == map::BONUS100)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, bonus100);
                    item->setData(0, map::BONUS100);
                }
                if (mapp.floor[i][j][k] == map::BONUS200)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, bonus200);
                    item->setData(0, map::BONUS200);
                }
                if (mapp.floor[i][j][k] == map::BONUS300)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, bonus300);
                    item->setData(0, map::BONUS300);
                }
                if (mapp.floor[i][j][k] == map::MONEY100)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, money100);
                    item->setData(0, map::MONEY100);
                }
                if (mapp.floor[i][j][k] == map::MONEY500)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, money500);
                    item->setData(0, map::MONEY500);
                }
                if (mapp.floor[i][j][k] == map::PLAYER1)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, player1);
                    item->setData(0, map::PLAYER1);
                }
                if (mapp.floor[i][j][k] == map::PLAYER2)
                {
                    QGraphicsItem * item =
                    addRect(QRectF(i*10, j*10, 10, 10), pen, player2);
                    item->setData(0, map::PLAYER2);
                }
            }
        }
}
Exemple #14
0
// refresh ui elements
//
void BSplineVisDialog::renderScene(QGraphicsScene& scene, bool isPrinter) {
    scene.clear();

    if (ui.showCheckerboard->isChecked()) {
        RGBAImageType::Pointer image = ImageContainer::CreateBitmap(m_SrcImage, ui.imageOpacity->value());
        QPixmap qPixmap = ImageContainer::CreatePixmap(image);
        scene.addPixmap(qPixmap)->setZValue(-10);
    }

    if (ui.showWarpedCheckerboard->isChecked()) {
        RGBAImageType::Pointer image = ImageContainer::CreateBitmap(m_DstImage, ui.imageOpacity->value());
        QPixmap qPixmap = ImageContainer::CreatePixmap(image);
        scene.addPixmap(qPixmap)->setZValue(-10);
    }

    if (ui.showWarpedSlice->isChecked()) {
        RGBAImageType::Pointer image = ImageContainer::CreateBitmap(m_WarpedSlice, ui.imageOpacity->value());
        QPixmap qPixmap = ImageContainer::CreatePixmap(image);
        scene.addPixmap(qPixmap)->setZValue(-10);

    }

    if (m_RefImage.IsNotNull()) {
        const int gridRes = ui.gridResolution->value();
        QPen blackPen = QPen(QColor::fromRgbF(0,0,0,0.5));
        blackPen.setWidthF(.1);
        QPen linePen(QColor::fromRgbF(.5,.5,.5,ui.imageOpacity->value() / 255.0));
        if (ui.showCoordinateGrid->isChecked()) {
            QGraphicsGridItem* originalGrid = new QGraphicsGridItem();
            if (isPrinter) {
                // can printer have alpha value?
                originalGrid->SetPen(blackPen);
            } else {
                originalGrid->SetPen(linePen);
            }
            originalGrid->SetResolution(gridRes);
            originalGrid->SetGrid(gX, gY);
            scene.addItem(originalGrid);
            ui.bspView->fitInView(originalGrid, Qt::KeepAspectRatio);
        }
        if (ui.showWarpedCoordinateGrid->isChecked()) {
            QGraphicsGridItem* warpedGrid = new QGraphicsGridItem();
            if (isPrinter) {
                // can printer have alpha value?
                if (!ui.showNoImage->isChecked()) {
                    blackPen.setColor(QColor::fromRgbF(1, 1, 0));
                    blackPen.setWidthF(0.2);
                }
                warpedGrid->SetPen(blackPen);
            } else {
                warpedGrid->SetPen(linePen);
            }
            warpedGrid->SetResolution(gridRes);
            warpedGrid->SetGrid(tX, tY);
            scene.addItem(warpedGrid);
            ui.bspView->fitInView(warpedGrid, Qt::KeepAspectRatio);
        }
    }


    if (ui.showDetJacobian->isChecked() && m_DetJacobian.IsNotNull()) {
        RGBAImageType::Pointer image = ImageContainer::CreateBitmap(m_DetJacobian);
        QPixmap qDetPixmap = ImageContainer::CreatePixmap(image);
        scene.addPixmap(qDetPixmap);
    }


    if (m_Field.IsNotNull() && ui.showDisplacementField->isChecked()) {
        FieldIteratorType iter(m_Field, m_Field->GetBufferedRegion());
        for (iter.GoToBegin(); !iter.IsAtEnd(); ++iter) {
            DisplacementFieldType::IndexType idx = iter.GetIndex();
            DisplacementFieldType::PointType point;
            m_Field->TransformIndexToPhysicalPoint(idx, point);
            VectorType v = iter.Get();
            if (v.GetNorm() < 1) {
                continue;
            }
            DisplacementFieldType::PointType point2;
            point2[0] = point[0] + v[0];
            point2[1] = point[1] + v[1];
            scene.addLine(point[0], point[1], point2[0], point2[1], QPen(Qt::yellow));
        }

    }



    if (ui.showWarpedLandmarks->isChecked()) {
        double sz = ui.landmarkSize->value();
        for (int i = 0; i < m_WarpedLandmarks.rows(); i++) {
            double x = m_WarpedLandmarks[i][0];
            double y = m_WarpedLandmarks[i][1];
            QGraphicsItem* p = scene.addRect(x - sz, y - sz, sz*2, sz*2, QPen(Qt::yellow), QBrush(Qt::yellow, Qt::SolidPattern));
        }
    }


    // drawing order is important for correct pick up
    // only show when showLandmarks is checked
    //
    if (ui.showLandmarks->isChecked()) {
        double sz = ui.landmarkSize->value();
        for (int i = 0; i < m_VectorList.size(); i++) {
            QRectF& xy = m_VectorList[i];
            QPen linePen(Qt::yellow);
            QPen sourcePen(Qt::red);
            QBrush sourceBrush(Qt::red, Qt::SolidPattern);
            QPen targetPen(Qt::blue);
            QBrush targetBrush(Qt::blue, Qt::SolidPattern);
            linePen.setWidthF(sz * .5);
            if (isPrinter) {
                linePen.setWidthF(sz);
                linePen.setColor(QColor::fromRgbF(0.3, 0.6, 0.3));
            }
            scene.addLine(xy.left(), xy.top(), xy.right(), xy.bottom(), linePen);
            QGraphicsItem* dx = scene.addEllipse(xy.left() - sz, xy.top() - sz, sz*2, sz*2, sourcePen, sourceBrush);
            QGraphicsItem* dy = scene.addEllipse(xy.right() - sz, xy.bottom() - sz, sz*2, sz*2, targetPen, targetBrush);

            dx->setData(1, i);
            dy->setData(2, i);
            
        }
    }


}
dmz::QtCanvasObjectGroup *
dmz::QtPluginCanvasObjectBasic::_create_item (
      ObjectStruct &os,
      QGraphicsItem *parent,
      const Config &ItemList,
      HashTableStringTemplate<String> &table) {

   QtCanvasObjectGroup *group (0);

   if (parent) {

      group = new QtCanvasObjectGroup (parent);

      QGraphicsItem *item (0);

      ConfigIterator it;
      Config cd;
      Float32 z (1.0);

      while (ItemList.get_next_config (it, cd)) {

         const String DataName (cd.get_name ().to_lower ());
         const String ItemName (config_to_string ("name", cd));
         const Boolean Isect (config_to_boolean ("isect", cd, True));

         if (DataName == "image") {

            item = _create_image_item (os, group, cd, table);

            if (Isect) {

               item->setData (QtCanvasObjectHandleIndex, (quint64)os.ObjHandle);
            }
         }
         else if (DataName == "text") {

            item =  _create_text_item (os, group, cd);

            if (Isect) {

               item->setData (QtCanvasObjectHandleIndex, (quint64)os.ObjHandle);
            }
         }
         else if (DataName == "group") {

            item = _create_item (os, group, cd, table);
         }

         if (item) {

            item->setFlag (QGraphicsItem::ItemIgnoresParentOpacity, true);
            item->setFlag (QGraphicsItem::ItemDoesntPropagateOpacityToChildren, true);

            item->setZValue (z++);

            if (ItemName) {

               String name (ItemName);
               name << "." << os.ObjHandle;

               item->setData (QtCanvasObjectNameIndex, name.get_buffer ());

               os.itemTable.store (ItemName, item);
            }
         }
      }
   }

   return group;
}
Exemple #16
0
void BoardFile::parse(const QString &contents, QGraphicsScene *scene)
{
#ifndef Q_OS_WIN
	const QStringList lines = contents.split("\n", QString::SkipEmptyParts);
#else
	const QStringList lines = contents.split("\r\n", QString::SkipEmptyParts);
#endif
	quint32 lineNum = 0;
	QPen pen;
	QBrush brush;
	qreal z = 0.0;
	double unitMult = 1.0;
	foreach(const QString &line, lines) {
		++lineNum;
		if(line.startsWith("#")) continue;
		QStringList parts = line.split(" ", QString::SkipEmptyParts);
		quint16 args = parts.size() - 1;
		if(parts[0] == "line") {
			if(args != 4) {
				error(lineNum, 4, args);
				continue;
			}
			QGraphicsItem *item = scene->addLine(parts[1].toDouble() * unitMult, parts[2].toDouble() * unitMult,
				parts[3].toDouble() * unitMult, parts[4].toDouble() * unitMult, pen);
			item->setData(0, BoardFile::Real);
			item->setZValue(z);
		} else if(parts[0] == "dec-line") {
			if(args != 4) {
				error(lineNum, 4, args);
				continue;
			}
			QGraphicsItem *item = scene->addLine(parts[1].toDouble() * unitMult, parts[2].toDouble() * unitMult,
				parts[3].toDouble() * unitMult, parts[4].toDouble() * unitMult, pen);
			item->setData(0, BoardFile::Fake);
			item->setZValue(z);
		} else if(parts[0] == "tape") {
			if(args != 4) {
				error(lineNum, 4, args);
				continue;
			}
			QGraphicsItem *item = scene->addLine(parts[1].toDouble() * unitMult, parts[2].toDouble() * unitMult,
				parts[3].toDouble() * unitMult, parts[4].toDouble() * unitMult, pen);
			item->setData(0, BoardFile::Tape);
			item->setZValue(z);
		} else if(parts[0] == "set-z") {
			if(args != 1) {
				error(lineNum, 1, args);
				continue;
			}
			z = parts[1].toDouble();
		} else if(parts[0] == "dec-rect") {
			if(args != 4) {
				error(lineNum, 4, args);
				continue;
			}
			QGraphicsItem *item = scene->addRect(parts[1].toDouble() * unitMult, parts[2].toDouble() * unitMult,
				parts[3].toDouble() * unitMult, parts[4].toDouble() * unitMult, pen, brush);
			item->setData(0, BoardFile::Fake);
			item->setZValue(z);
		} else if(parts[0] == "pen") {
			if(args != 2) {
				error(lineNum, 2, args);
				continue;
			}
			pen = QPen(QBrush(QColor(parts[1])), parts[2].toUInt());
		} else if(parts[0] == "brush") {
			if(args != 1) {
				error(lineNum, 1, args);
				continue;
			}
			brush = QBrush(QColor(parts[1]));
		} else if(parts[0] == "set-units") {
			if(args != 1) {
				error(lineNum, 1, args);
				continue;
			}
			if(parts[1] == "in") {
				unitMult = 2.54;
			} else if(parts[1] == "cm") {
				unitMult = 1.0;
			} else error(lineNum, parts[1]);
		} else error(lineNum, parts[0]);
	}
Exemple #17
0
//复制函
void QMultiCopy::MuCopyList(QGraphicsItem &pItem,int &CopyCount,QStringList NormKeyboardstr)
{

    QMessageBox msg(QMessageBox::Warning,PRO_FULL_NAME,tr(""),
                    0,this,Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
    msg.addButton(tr("确定"),QMessageBox::AcceptRole);

    QLibrary  lib("MultiCopy.dll");
    if (!lib.load())
    {
        msg.setText(tr("MultiCopy.dll未找到!"));
        msg.exec();
    }
    typedef Keyboard (*ADDPROC)( QStringList *,Keyboard ,int , int *, int *,int );
    ADDPROC muliticopy = NULL;
    muliticopy = (ADDPROC)lib.resolve("Multicpy");
    if (NULL == muliticopy)
    {
        msg.setText(tr("文件损坏请重新安装应用程序!"));
        msg.exec();
    }
    datalist = qVariantValue<QStringList>(pItem.data(GROUP_DATALIST_KEY));
    QStringList keyboardid=GetKeyboardID(pItem);
    QStringList lFactoryandModel;//存储厂家和型号
    for(int i=0;i<NormKeyboardstr.length();i++)
    {
        pwnd->StringToKeyboard(TempKeyboard,NormKeyboardstr.at(i));
        if(TempKeyboard.nConnectType==1)
        {
            if(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.size()>0)
            {
                lFactoryandModel.append(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.at(0).sDiviceType);//厂家
                lFactoryandModel.append(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.at(0).sDiviceModel);//型号
            }
            else//连接不存在
            {
                msg.setText(tr("该控件所使用的连接不存在或已被删除!"));
                msg.exec();
                return;
            }
        }
        else if(TempKeyboard.nConnectType==2)
        {
            if(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.size()>1)
            {
                lFactoryandModel.append(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.at(1).sDiviceType);//厂家
                lFactoryandModel.append(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.at(1).sDiviceModel);//型号
            }
            else//连接不存在
            {
                msg.setText(tr("该控件所使用的连接不存在或已被删除!"));
                msg.exec();
                return;
            }
        }
        else if(TempKeyboard.nConnectType==3)
        {
            if(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.size()>2)
            {
                lFactoryandModel.append(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.at(2).sDiviceType);//厂家
                lFactoryandModel.append(pwnd->m_pSamSysParame->m_qvcPlcCommunicate.at(2).sDiviceModel);//型号
            }
            else//连接不存在
            {
                msg.setText(tr("该控件所使用的连接不存在或已被删除!"));
                msg.exec();
                return;
            }

        }
        Keyboard Getkeyboard=muliticopy(&lFactoryandModel,TempKeyboard,ui->Increse_Interval->value(),&CopyCount,0,0);
        datalist.replace(keyboardid.at(i).toInt(),pwnd->KeyboardToString(Getkeyboard));
        if(NormKeyboardstr.length()-i>1)//为了防止复制一个控件的多个Keyboard值时,CopyCount不应该累加加的情况
        {
            CopyCount--;
        }
    }
    pItem.setData(GROUP_DATALIST_KEY,datalist);

    lib.unload();//释放dll文件
}
    void FenetrePrincipale::AfficherCarte() const
    {
        int xZero, yZero;
        int l = carteGraphicsScene->getLargeurUnite(), h = carteGraphicsScene->getHauteurUnite();

        QPen styloNoir;
        styloNoir.setWidth(2);
        styloNoir.setColor(QColor("black"));
        QPen styloBleu;
        styloBleu.setWidth(10);
        styloBleu.setColor(QColor("blue"));

        Carte* carte = JoueurSingleton::getInstance()->getCarte();

        for(int i=0; i<16; i++)
        {
            for(int j=0; j<16; j++)
            {
                xZero = j*l;
                yZero = i*h;


                if(carte->getCase(j, i) == CHEMIN_NORD)
                {
                    QPixmap butPixmap(QString(":/images/chemin_N.jpg"));
                    butPixmap = butPixmap.scaled(l, h);
                    QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                    //tmp->setScale(ScalePourUnite(butPixmap, l, h));
                    tmp->setPos(xZero, yZero);
                    tmp->setData(0, "CHEMIN_NORD");
                }
                else if(carte->getCase(j, i) ==  CHEMIN_SUD)
                {
                    QPixmap butPixmap(QString(":/images/chemin_S.jpg"));
                    butPixmap = butPixmap.scaled(l, h);
                    QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                    tmp->setPos(xZero, yZero);
                    tmp->setData(0, "CHEMIN_SUD");
                }
                else if(carte->getCase(j, i) == CHEMIN_OUEST)
                {
                    QPixmap butPixmap(QString(":/images/chemin_W.jpg"));
                    butPixmap = butPixmap.scaled(l, h);
                    QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                    tmp->setPos(xZero, yZero);
                    tmp->setData(0, "CHEMIN_OUEST");
                }
                else if(carte->getCase(j, i) ==  CHEMIN_EST)
                {
                    QPixmap butPixmap(QString(":/images/chemin_E.jpg"));
                    butPixmap = butPixmap.scaled(l, h);
                    QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                    tmp->setPos(xZero, yZero);
                    tmp->setData(0, "CHEMIN_EST");
                }
                else if(carte->getCase(j, i) == CHEMIN_NO)
                {
                    if(carte->getCase(j, i-1) == CHEMIN_NORD || carte->getCase(j, i-1) == CHEMIN_SUD)
                    {
                        QPixmap butPixmap(QString(":/images/chemin_SE.jpg"));
                        butPixmap = butPixmap.scaled(l, h);
                        QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                        tmp->setPos(xZero, yZero);
                        tmp->setData(0, "CHEMIN_NO");
                    }
                    else
                    {
                        QPixmap butPixmap(QString(":/images/chemin_NW.jpg"));
                        butPixmap = butPixmap.scaled(l, h);
                        QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                        tmp->setPos(xZero, yZero);
                        tmp->setData(0, "CHEMIN_NO");
                    }
                }
                else if(carte->getCase(j, i) == CHEMIN_SE)
                {
                    if(carte->getCase(j, i-1) == CHEMIN_NORD || carte->getCase(j, i-1) == CHEMIN_SUD)
                    {
                        QPixmap butPixmap(QString(":/images/chemin_SE.jpg"));
                        butPixmap = butPixmap.scaled(l, h);
                        QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                        tmp->setPos(xZero, yZero);
                        tmp->setData(0, "CHEMIN_SE");
                    }
                    else
                    {
                        QPixmap butPixmap(QString(":/images/chemin_NW.jpg"));
                        butPixmap = butPixmap.scaled(l, h);
                        QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                        tmp->setPos(xZero, yZero);
                        tmp->setData(0, "CHEMIN_SE");
                    }
                }
                else if(carte->getCase(j, i) == CHEMIN_NE)
                {
                    if(carte->getCase(j, i-1) == CHEMIN_NORD || carte->getCase(j, i-1) == CHEMIN_SUD)
                    {
                        QPixmap butPixmap(QString(":/images/chemin_SW.jpg"));
                        butPixmap = butPixmap.scaled(l, h);
                        QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                        tmp->setPos(xZero, yZero);
                        tmp->setData(0, "CHEMIN_NE");
                    }
                    else
                    {
                        QPixmap butPixmap(QString(":/images/chemin_NE.jpg"));
                        butPixmap = butPixmap.scaled(l, h);
                        QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                        tmp->setPos(xZero, yZero);
                        tmp->setData(0, "CHEMIN_NE");
                    }
                }
                else if(carte->getCase(j, i) == CHEMIN_SO)
                {
                    if(carte->getCase(j, i-1) == CHEMIN_NORD || carte->getCase(j, i-1) == CHEMIN_SUD)
                    {
                        QPixmap butPixmap(QString(":/images/chemin_SW.jpg"));
                        butPixmap = butPixmap.scaled(l, h);
                        QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                        tmp->setPos(xZero, yZero);
                        tmp->setData(0, "CHEMIN_SO");
                    }
                    else
                    {
                        QPixmap butPixmap(QString(":/images/chemin_NE.jpg"));
                        butPixmap = butPixmap.scaled(l, h);
                        QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                        tmp->setPos(xZero, yZero);
                        tmp->setData(0, "CHEMIN_SO");
                    }

                 }
                else if(carte->getCase(j, i) == BUT_ENNEMIS)
                {
                    QPixmap butPixmap(QString(":/images/but.png"));
                    butPixmap = butPixmap.scaled(l, h);
                    QGraphicsPixmapItem* tmp = carteGraphicsScene->addPixmap(butPixmap);
                    tmp->setPos(xZero, yZero);
                    tmp->setData(0, "BUT_ENNEMIS");
                }
                else if(carte->getCase(j, i) == DEPART_NORD || carte->getCase(j, i) == DEPART_SUD || carte->getCase(j, i) == DEPART_OUEST || carte->getCase(j, i) == DEPART_EST)
                {
                    QGraphicsItem* item = carteGraphicsScene->addRect(xZero, yZero, l, h, styloBleu, Qt::blue);
                    item->setData(0, "DEPART");
                }
                else if(carte->getCase(j, i) == BOUE)
                {
                    QGraphicsItem* item = carteGraphicsScene->addRect(xZero, yZero, l, h, QPen(Qt::darkGreen), Qt::darkGreen);
                    item->setData(0, "BOUE");
                }
                else
                {
                    QGraphicsItem* item = carteGraphicsScene->addRect(xZero, yZero, l, h, QPen(Qt::transparent));
                    item->setData(0, "LIBRE");
                }
            }
        }
    }
/*****************************************************************
 *函数名称:reDrawHisDataDisplay
 *函数功能:当历史数据收集器的长度发生变化的时候,点击确定按钮后重绘场景中的
 *                    历史数据显示器控件
 *edit by zqh
 *2011-9-27
 ****************************************************************/
void QHisdDataLoggerDialog::reDrawHisDataDisplay()
{
    int totalSceneNum = pwnd->pSceneSheet.size();
    QList<QGraphicsItem *> Items;
    QGraphicsItem *pItem = NULL;
    QGraphicsItem *pNewItem = NULL;
    int nID = 0;
    int  i = 0;
    int j = 0;
    int k = 0;
    int nsheet = pwnd->nActiveSheetIndex;
    int nOldNum = 0; //原历史数据收集器取样长度
    int nNewNum = pwnd->m_pSamSysParame->m_historyLogData.nSampleLen;//历史数据收集器取样长度
    QStringList *sList = new QStringList();
    QStringList slist;
    Items.clear();

    for(i = 0; i < totalSceneNum;i++)   //扫描所有页面
    {
        pwnd->nActiveSheetIndex = i;
        pwnd->pView->setScene(pwnd->pSceneSheet[i]);
        QPainterPath path;
        path.addRect(0,0,pwnd->pSceneSheet[i]->width(),pwnd->pSceneSheet[i]->height());
        pwnd->pSceneSheet[i]->setSelectionArea(path);
        Items = pwnd->pSceneSheet[i]->selectedItems();
        foreach(QGraphicsItem *item,Items)
            item->setSelected(false);

        for(j = 0; j < Items.size(); j++)   //扫描当前页面的所有控件
        {
            pItem = Items.at(j);//->topLevelItem();
            nID = pItem->data(GROUP_TYPE_KEY).toInt(); //取控件的Key号
            sList->clear();
            slist.clear();
            switch(nID)
            {
                case GROUP_TYPE_HISDATAALARM: //历史数据显示器
                    {
                        slist = pItem->data(GROUP_DATALIST_KEY).toStringList(); //取出每个item的所有数据
                        for(k = 0; k < slist.size();k++)
                            sList->append(slist.at(k));

                        nOldNum = sList->at(99).toInt(); //37
                      //  if(nNewNum != nOldNum)//长度没有改变的时候也要刷新 因为名称会改变
                        //Change by Dylan 2012-3-13
                        {
                            sList->replace(99,QString("%1").arg(nNewNum)); //37
                            int val = nNewNum - nOldNum;
                            if(val < 0) //配方数减少
                            {
                                for(k = 0; k < -val;k++)
                                    sList->removeLast();
                            }
                            else if(val > 0) //配方数增加
                            {
                                for(k = 0; k < val;k++)
                                    sList->append("1");
                            }
                            QDrawGraphics *pDraw = new QDrawGraphics;
                            pNewItem = pDraw->drawHistroyDataDisplayItem(sList);  //重绘配方显示器
                            pNewItem->setData(GROUP_TYPE_KEY,QVariant(GROUP_TYPE_HISDATAALARM));
                            pNewItem->setData(GROUP_DATALIST_KEY,*sList);
                            if(pDraw)
                            {
                                delete pDraw;
                                pDraw = NULL;
                            }
                            pwnd->OnDoubleClik(pItem,pNewItem);
                        } //end if
                    } //end case
                    break;
            } //end switch
        } //end second for
    } //end first for
     pwnd->nActiveSheetIndex = nsheet ; //reset active sheet page
     pwnd->pView->setScene(pwnd->pSceneSheet[nsheet]);
}