本文整理汇总了C++中GNEEdge::deleteGeometryPoint方法的典型用法代码示例。如果您正苦于以下问题:C++ GNEEdge::deleteGeometryPoint方法的具体用法?C++ GNEEdge::deleteGeometryPoint怎么用?C++ GNEEdge::deleteGeometryPoint使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GNEEdge
的用法示例。
在下文中一共展示了GNEEdge::deleteGeometryPoint方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
void
GNEDeleteFrame::removeAttributeCarrier(GNEAttributeCarrier* ac, bool ignoreOptions) {
// obtain clicked position
Position clickedPosition = myViewNet->getPositionInformation();
if (myDeleteOptions->deleteOnlyGeometryPoints() && !ignoreOptions) {
// check type of of GL object
switch (ac->getTag()) {
case SUMO_TAG_EDGE: {
GNEEdge* edge = dynamic_cast<GNEEdge*>(ac);
assert(edge);
if (edge->getVertexIndex(clickedPosition, false) != -1) {
edge->deleteGeometryPoint(clickedPosition);
}
break;
}
case SUMO_TAG_POLY: {
GNEPoly* polygon = dynamic_cast<GNEPoly*>(ac);
assert(polygon);
if (polygon->getVertexIndex(clickedPosition, false) != -1) {
polygon->deleteGeometryPoint(clickedPosition);
}
break;
}
default: {
break;
}
}
} else {
// check type of of GL object
switch (ac->getTag()) {
case SUMO_TAG_JUNCTION: {
GNEJunction* junction = dynamic_cast<GNEJunction*>(ac);
assert(junction);
// obtain number of additionals of junction's childs
int numberOfAdditionals = 0;
for (auto i : junction->getGNEEdges()) {
numberOfAdditionals += (int)i->getAdditionalChilds().size();
for (auto j : i->getLanes()) {
UNUSED_PARAMETER(j);
numberOfAdditionals += (int)i->getAdditionalChilds().size();
}
}
// Check if junction can be deleted
if (myDeleteOptions->forceDeleteAdditionals() || ignoreOptions) {
myViewNet->getNet()->deleteJunction(junction, myViewNet->getUndoList());
} else {
if (numberOfAdditionals > 0) {
// write warning if netedit is running in testing mode
if (OptionsCont::getOptions().getBool("gui-testing-debug")) {
WRITE_WARNING("Opening FXMessageBox 'Force deletion needed'");
}
std::string plural = numberOfAdditionals > 1 ? "s" : "";
// Open warning DialogBox
FXMessageBox::warning(getViewNet()->getApp(), MBOX_OK, ("Problem deleting " + toString(junction->getTag())).c_str(), "%s",
(toString(junction->getTag()) + " '" + junction->getID() + "' cannot be deleted because owns " +
toString(numberOfAdditionals) + " additional child" + plural + ".\n Check 'Force deletion of additionals' to force deletion.").c_str());
// write warning if netedit is running in testing mode
if (OptionsCont::getOptions().getBool("gui-testing-debug")) {
WRITE_WARNING("Closed FXMessageBox 'Force deletion needed' with 'OK'");
}
} else {
myViewNet->getNet()->deleteJunction(junction, myViewNet->getUndoList());
}
}
break;
}
case SUMO_TAG_EDGE: {
GNEEdge* edge = dynamic_cast<GNEEdge*>(ac);
assert(edge);
// check if click was over a geometry point or over a shape's edge
if (edge->getVertexIndex(clickedPosition, false) != -1) {
edge->deleteGeometryPoint(clickedPosition);
} else {
int numberOfAdditionalChilds = (int)edge->getAdditionalChilds().size();
int numberOfAdditionalParents = (int)edge->getAdditionalParents().size();
// Iterate over lanes and obtain total number of additional childs
for (auto i : edge->getLanes()) {
numberOfAdditionalChilds += (int)i->getAdditionalChilds().size();
}
// Check if edge can be deleted
if (myDeleteOptions->forceDeleteAdditionals() || ignoreOptions) {
// when deleting a single edge, keep all unaffected connections as they were
myViewNet->getNet()->deleteEdge(edge, myViewNet->getUndoList(), false);
} else {
if (numberOfAdditionalChilds > 0) {
// write warning if netedit is running in testing mode
if (OptionsCont::getOptions().getBool("gui-testing-debug")) {
WRITE_WARNING("Opening FXMessageBox 'Force deletion needed'");
}
std::string plural = numberOfAdditionalChilds > 1 ? "s" : "";
// Open warning DialogBox
FXMessageBox::warning(getViewNet()->getApp(), MBOX_OK, ("Problem deleting " + toString(edge->getTag())).c_str(), "%s",
(toString(edge->getTag()) + " '" + edge->getID() + "' cannot be deleted because owns " +
toString(numberOfAdditionalChilds) + " additional" + plural + ".\n Check 'Force deletion of additionals' to force deletion.").c_str());
// write warning if netedit is running in testing mode
if (OptionsCont::getOptions().getBool("gui-testing-debug")) {
WRITE_WARNING("Closed FXMessageBox 'Force deletion needed' with 'OK'");
}
} else if (numberOfAdditionalParents > 0) {
// write warning if netedit is running in testing mode
//.........这里部分代码省略.........