本文整理汇总了C++中GNEEdge::getAdditionalChilds方法的典型用法代码示例。如果您正苦于以下问题:C++ GNEEdge::getAdditionalChilds方法的具体用法?C++ GNEEdge::getAdditionalChilds怎么用?C++ GNEEdge::getAdditionalChilds使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类GNEEdge
的用法示例。
在下文中一共展示了GNEEdge::getAdditionalChilds方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: switch
void
GNEFrame::ACHierarchy::showAttributeCarrierChilds(GNEAttributeCarrier *AC, FXTreeItem* itemParent) {
// Switch gl type of ac
switch (AC->getTag()) {
case SUMO_TAG_JUNCTION: {
// retrieve junction
GNEJunction* junction = myFrameParent->getViewNet()->getNet()->retrieveJunction(AC->getID(), false);
if(junction) {
// insert junction item
FXTreeItem* junctionItem = addACIntoList(AC, itemParent);
// insert edges
for (auto i : junction->getGNEEdges()) {
showAttributeCarrierChilds(i, junctionItem);
}
// insert crossings
for (auto i : junction->getGNECrossings()) {
showAttributeCarrierChilds(i, junctionItem);
}
}
break;
}
case SUMO_TAG_EDGE: {
// retrieve edge
GNEEdge* edge = myFrameParent->getViewNet()->getNet()->retrieveEdge(AC->getID(), false);
if(edge) {
// insert edge item
FXTreeItem* edgeItem = addACIntoList(AC, itemParent);
// insert lanes
for (int i = 0; i < (int)edge->getLanes().size(); i++) {
showAttributeCarrierChilds(edge->getLanes().at(i), edgeItem);
}
// insert additionals of edge
for (auto i : edge->getAdditionalChilds()) {
showAttributeCarrierChilds(i, edgeItem);
}
}
break;
}
case SUMO_TAG_LANE: {
// retrieve lane
GNELane* lane = myFrameParent->getViewNet()->getNet()->retrieveLane(AC->getID(), false);
if(lane) {
// insert lane item
FXTreeItem* laneItem = addACIntoList(AC, itemParent);
// insert additionals of lanes
for (auto i : lane->getAdditionalChilds()) {
showAttributeCarrierChilds(i, laneItem);
}
// insert incoming connections of lanes (by default isn't expanded)
if (lane->getGNEIncomingConnections().size() > 0) {
std::vector<GNEConnection*> incomingLaneConnections = lane->getGNEIncomingConnections();
FXTreeItem* incomingConnections = myTreelist->insertItem(0, laneItem, "Incomings", incomingLaneConnections.front()->getIcon(), lane->getGNEIncomingConnections().front()->getIcon());
myTreeItemsConnections.insert(incomingConnections);
incomingConnections->setExpanded(false);
// insert incoming connections
for (auto i : incomingLaneConnections) {
showAttributeCarrierChilds(i, incomingConnections);
}
}
// insert outcoming connections of lanes (by default isn't expanded)
if (lane->getGNEOutcomingConnections().size() > 0) {
std::vector<GNEConnection*> outcomingLaneConnections = lane->getGNEOutcomingConnections();
FXTreeItem* outgoingConnections = myTreelist->insertItem(0, laneItem, "Outcomings", outcomingLaneConnections.front()->getIcon(), lane->getGNEOutcomingConnections().front()->getIcon());
myTreeItemsConnections.insert(outgoingConnections);
outgoingConnections->setExpanded(false);
// insert outcoming connections
for (auto i : outcomingLaneConnections) {
showAttributeCarrierChilds(i, outgoingConnections);
}
}
}
break;
}
case SUMO_TAG_POI:
case SUMO_TAG_POLY:
case SUMO_TAG_CROSSING:
case SUMO_TAG_CONNECTION: {
// insert connection item
addACIntoList(AC, itemParent);
break;
}
default: {
// check if is an additional
if(GNEAttributeCarrier::getTagProperties(AC->getTag()).isAdditional()) {
// retrieve additional
GNEAdditional *additional = myFrameParent->getViewNet()->getNet()->retrieveAdditional(AC->getTag(), AC->getID(), false);
if(additional) {
// insert additional item
FXTreeItem* additionalItem = addACIntoList(AC, itemParent);
// insert additionals childs
for (auto i : additional->getAdditionalChilds()) {
showAttributeCarrierChilds(i, additionalItem);
}
}
}
break;
}
}
}
示例2: 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
//.........这里部分代码省略.........