|
@@ -356,7 +356,7 @@ void RoadEditDialog::on_comboBox_Road_currentIndexChanged(int index)
|
|
|
|
|
|
double froad_xmin,froad_ymin,froad_xmax,froad_ymax;
|
|
|
ServiceXODRTool.GetRoadMaxMin(pRoad,froad_xmin,froad_ymin,froad_xmax,froad_ymax);
|
|
|
- roadviewitem * prvw = new roadviewitem(pRoad);
|
|
|
+// roadviewitem * prvw = new roadviewitem(pRoad);
|
|
|
|
|
|
int nfac;
|
|
|
int nkeep = 30;
|
|
@@ -383,10 +383,10 @@ void RoadEditDialog::on_comboBox_Road_currentIndexChanged(int index)
|
|
|
mfViewMoveX = 0 - froad_xmin - (froad_xmax - froad_xmin)/2.0;
|
|
|
mfViewMoveY = 0 + froad_ymin + (froad_ymax-froad_ymin)/2.0;
|
|
|
|
|
|
- prvw->setPos(mfViewMoveX,mfViewMoveY);
|
|
|
+// prvw->setPos(mfViewMoveX,mfViewMoveY);
|
|
|
// prvw->setPos((froad_xmax - froad_xmin)/2.0, (froad_ymax-froad_ymin)/2.0);
|
|
|
// mvectorroadview.push_back(prvw);
|
|
|
- prvw->setratio(1.0);
|
|
|
+ // prvw->setratio(1.0);
|
|
|
// scene->addItem(prvw);
|
|
|
|
|
|
mnSelGeo = -1;
|
|
@@ -401,190 +401,30 @@ void RoadEditDialog::on_comboBox_Road_currentIndexChanged(int index)
|
|
|
ui->comboBox_Geo->addItem(QString("Geo ")+QString::number(i));
|
|
|
}
|
|
|
|
|
|
- double flmw = 0.15;
|
|
|
|
|
|
RoadDigit xrd(mpCurRoad,0.1);
|
|
|
- std::vector<iv::RoadDigitUnit> * pvectorrdu = xrd.GetRDU();
|
|
|
- nsize = pvectorrdu->size();
|
|
|
|
|
|
- for(i=0;i<(nsize-1);i++)
|
|
|
+ std::vector<QGraphicsPathItem *> xvectorlanepath = xodrscenfunc::GetRoadLaneItem(&xrd);
|
|
|
+ int j;
|
|
|
+ int ncount = xvectorlanepath.size();
|
|
|
+ for(j=0;j<ncount;j++)
|
|
|
{
|
|
|
- std::vector<iv::LanePoint> xvepre = pvectorrdu->at(i).mvectorLanePoint;
|
|
|
- std::vector<iv::LanePoint> xvenxt = pvectorrdu->at(i+1).mvectorLanePoint;
|
|
|
- if((xvepre.size()<2)||(xvenxt.size()<2)||(xvenxt.size() != xvepre.size()))
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
- unsigned int k;
|
|
|
- for(k=0;k<(xvepre.size()-1);k++)
|
|
|
- {
|
|
|
- QPainterPath xpath;
|
|
|
- xpath.moveTo(xvepre.at(k).mfX,xvepre.at(k).mfY*(-1));
|
|
|
- xpath.lineTo(xvenxt.at(k).mfX,xvenxt.at(k).mfY*(-1));
|
|
|
- xpath.lineTo(xvenxt.at(k+1).mfX,xvenxt.at(k+1).mfY*(-1));
|
|
|
- xpath.lineTo(xvepre.at(k+1).mfX,xvepre.at(k+1).mfY*(-1));
|
|
|
- xpath.closeSubpath();
|
|
|
- QGraphicsPathItem * pitem = new QGraphicsPathItem;
|
|
|
- pitem->setPath(xpath);
|
|
|
- pitem->setPos(mfViewMoveX,mfViewMoveY);
|
|
|
- int nlanetype = xvepre.at(k).mnlanetype;
|
|
|
- if(xvepre.at(k).mnlane<=0)nlanetype = xvepre.at(k+1).mnlanetype;
|
|
|
- QColor brushcolor = Qt::darkGray;
|
|
|
- switch (nlanetype) {
|
|
|
- case 2:
|
|
|
- brushcolor = Qt::darkGray;
|
|
|
- break;
|
|
|
- case 8:
|
|
|
- brushcolor = Qt::red;
|
|
|
- break;
|
|
|
- case 9:
|
|
|
- brushcolor = QColor(0xB2,0xB2,0xD6);
|
|
|
- break;
|
|
|
- default:
|
|
|
- brushcolor = Qt::darkGreen;
|
|
|
- break;
|
|
|
- }
|
|
|
- pitem->setBrush(brushcolor);
|
|
|
- pitem->setPen(QPen(brushcolor,0.001));
|
|
|
- scene->addItem(pitem);
|
|
|
- mvectorviewitem.push_back(pitem);
|
|
|
- }
|
|
|
+ QGraphicsPathItem * pitem = xvectorlanepath[j];
|
|
|
+ pitem->setPos(mfViewMoveX,mfViewMoveY);
|
|
|
+ scene->addItem(pitem);
|
|
|
+ mvectorviewitem.push_back(pitem);
|
|
|
}
|
|
|
|
|
|
- for(i=0;i<(nsize-1);i++)
|
|
|
+ std::vector<QGraphicsPathItem *> xvectormarkpath = xodrscenfunc::GetRoadMarkItem(&xrd);
|
|
|
+ ncount = xvectormarkpath.size();
|
|
|
+ for(j=0;j<ncount;j++)
|
|
|
{
|
|
|
- std::vector<iv::LanePoint> xvepre = pvectorrdu->at(i).mvectorLanePoint;
|
|
|
- std::vector<iv::LanePoint> xvenxt = pvectorrdu->at(i+1).mvectorLanePoint;
|
|
|
- if(xvenxt.size() != xvepre.size())
|
|
|
- {
|
|
|
- continue;
|
|
|
- }
|
|
|
- unsigned int k;
|
|
|
- for(k=0;k<(xvepre.size());k++)
|
|
|
- {
|
|
|
- QPainterPath xpath;
|
|
|
- int ncolor = -3;
|
|
|
- int nmarktype = xvepre[k].mnlanemarktype;
|
|
|
- if(nmarktype >= 0)
|
|
|
- {
|
|
|
- if(nmarktype<2)
|
|
|
- {
|
|
|
- if((nmarktype == 0)||(IsDrawMark(xvepre[k].mS)))
|
|
|
- {
|
|
|
- xpath.moveTo(xvepre[k].mfX + 0.5*flmw * cos(xvenxt[k].mfhdg - M_PI/2.0),
|
|
|
- (xvepre[k].mfY+0.5*flmw * sin(xvenxt[k].mfhdg - M_PI/2.0))*(-1.0));
|
|
|
- xpath.lineTo(xvenxt[k].mfX+ 0.5*flmw * cos(xvepre[k].mfhdg - M_PI/2.0),
|
|
|
- (xvenxt[k].mfY+0.5*flmw * sin(xvepre[k].mfhdg - M_PI/2.0))*(-1.0));
|
|
|
- xpath.lineTo(xvenxt[k].mfX + 0.5*flmw * cos(xvenxt[k].mfhdg + M_PI/2.0),
|
|
|
- (xvenxt[k].mfY+0.5*flmw * sin(xvenxt[k].mfhdg + M_PI/2.0))*(-1.0));
|
|
|
- xpath.lineTo(xvepre[k].mfX+ 0.5*flmw * cos(xvepre[k].mfhdg + M_PI/2.0),
|
|
|
- (xvepre[k].mfY+0.5*flmw * sin(xvepre[k].mfhdg + M_PI/2.0))*(-1.0));
|
|
|
- xpath.closeSubpath();
|
|
|
- ncolor = xvepre[k].mnlanecolor;
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if((nmarktype == 2)||(nmarktype == 3)||(IsDrawMark(xvepre[k].mS)))
|
|
|
- {
|
|
|
- xpath.moveTo(xvepre[k].mfX + flmw * cos(xvenxt[k].mfhdg + M_PI/2.0),
|
|
|
- (xvepre[k].mfY+flmw * sin(xvenxt[k].mfhdg + M_PI/2.0))*(-1.0));
|
|
|
- xpath.lineTo(xvenxt[k].mfX+ flmw * cos(xvepre[k].mfhdg + M_PI/2.0),
|
|
|
- (xvenxt[k].mfY+flmw * sin(xvepre[k].mfhdg + M_PI/2.0))*(-1.0));
|
|
|
-
|
|
|
- xpath.lineTo(xvenxt[k].mfX + 2*flmw * cos(xvenxt[k].mfhdg + M_PI/2.0),
|
|
|
- (xvenxt[k].mfY+2*flmw * sin(xvenxt[k].mfhdg + M_PI/2.0))*(-1.0));
|
|
|
- xpath.lineTo(xvepre[k].mfX+ 2*flmw * cos(xvepre[k].mfhdg + M_PI/2.0),
|
|
|
- (xvepre[k].mfY+2*flmw * sin(xvepre[k].mfhdg + M_PI/2.0))*(-1.0));
|
|
|
- xpath.closeSubpath();
|
|
|
- ncolor = xvepre[k].mnlanecolor;
|
|
|
- }
|
|
|
- if((nmarktype == 2)||(nmarktype == 4)||(IsDrawMark(xvepre[k].mS)))
|
|
|
- {
|
|
|
- xpath.moveTo(xvepre[k].mfX + flmw * cos(xvenxt[k].mfhdg - M_PI/2.0),
|
|
|
- (xvepre[k].mfY+flmw * sin(xvenxt[k].mfhdg - M_PI/2.0))*(-1.0));
|
|
|
- xpath.lineTo(xvenxt[k].mfX+ flmw * cos(xvepre[k].mfhdg - M_PI/2.0),
|
|
|
- (xvenxt[k].mfY+flmw * sin(xvepre[k].mfhdg - M_PI/2.0))*(-1.0));
|
|
|
-
|
|
|
- xpath.lineTo(xvenxt[k].mfX + 2*flmw * cos(xvenxt[k].mfhdg - M_PI/2.0),
|
|
|
- (xvenxt[k].mfY+2*flmw * sin(xvenxt[k].mfhdg - M_PI/2.0))*(-1.0));
|
|
|
- xpath.lineTo(xvepre[k].mfX+ 2*flmw * cos(xvepre[k].mfhdg - M_PI/2.0),
|
|
|
- (xvepre[k].mfY+2*flmw * sin(xvepre[k].mfhdg - M_PI/2.0))*(-1.0));
|
|
|
- xpath.closeSubpath();
|
|
|
- ncolor = xvepre[k].mnlanecolor;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if(ncolor != -3)
|
|
|
- {
|
|
|
- QGraphicsPathItem * pitem = new QGraphicsPathItem;
|
|
|
- pitem->setPath(xpath);
|
|
|
- QColor brushcolor;
|
|
|
- switch (ncolor) {
|
|
|
- case 0:
|
|
|
- brushcolor = Qt::white;
|
|
|
- break;
|
|
|
- case 1:
|
|
|
- brushcolor = Qt::blue;
|
|
|
- break;
|
|
|
- case 2:
|
|
|
- brushcolor = Qt::green;
|
|
|
- break;
|
|
|
- case 3:
|
|
|
- brushcolor = Qt::red;
|
|
|
- break;
|
|
|
- case 4:
|
|
|
- brushcolor = Qt::white;
|
|
|
- break;
|
|
|
- case 5:
|
|
|
- brushcolor = Qt::yellow;
|
|
|
- break;
|
|
|
- case 6:
|
|
|
- brushcolor = Qt::yellow; //orange use yellow replace
|
|
|
- break;
|
|
|
- default:
|
|
|
- brushcolor = Qt::white;
|
|
|
- break;
|
|
|
- }
|
|
|
- pitem->setBrush(brushcolor);
|
|
|
- pitem->setPen(QPen(brushcolor,0.001));
|
|
|
- pitem->setPos(mfViewMoveX,mfViewMoveY);
|
|
|
- scene->addItem(pitem);
|
|
|
- mvectorviewitem.push_back(pitem);
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-// }
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
+ QGraphicsPathItem * pitem = xvectormarkpath[j];
|
|
|
+ pitem->setPos(mfViewMoveX,mfViewMoveY);
|
|
|
+ scene->addItem(pitem);
|
|
|
+ mvectorviewitem.push_back(pitem);
|
|
|
}
|
|
|
|
|
|
-// for(i=0;i<(nsize-1);i++)
|
|
|
-// {
|
|
|
-// QPainterPath xpath;
|
|
|
-// std::vector<iv::LanePoint> * pvectorLP1 = &pvectorrdu->at(i).mvectorLanePoint;
|
|
|
-// std::vector<iv::LanePoint> * pvectorLP2 = &pvectorrdu->at(i+1).mvectorLanePoint;
|
|
|
-// xpath.moveTo(pvectorLP1->at(0).mfX,pvectorLP1->at(0).mfY*(-1));
|
|
|
-// xpath.lineTo(pvectorLP2->at(0).mfX,pvectorLP2->at(0).mfY*(-1));
|
|
|
-// xpath.lineTo(pvectorLP2->at(pvectorLP2->size()-1).mfX,pvectorLP2->at(pvectorLP2->size()-1).mfY*(-1));
|
|
|
-// xpath.lineTo(pvectorLP1->at(pvectorLP1->size()-1).mfX,pvectorLP1->at(pvectorLP1->size()-1).mfY*(-1));
|
|
|
-// xpath.closeSubpath();
|
|
|
-// QGraphicsPathItem * pitem = new QGraphicsPathItem;
|
|
|
-// pitem->setPath(xpath);
|
|
|
-// pitem->setPos(mfViewMoveX,mfViewMoveY);
|
|
|
-// pitem->setBrush(Qt::darkGray);
|
|
|
-// pitem->setPen(QPen(Qt::darkGray,0.001));
|
|
|
-// scene->addItem(pitem);
|
|
|
-// mvectorviewitem.push_back(pitem);
|
|
|
-// }
|
|
|
-
|
|
|
update();
|
|
|
}
|
|
|
|