void PathView::addWaypoints(const QList<Waypoint> &waypoints) { qreal scale = mapScale(_zoom); for (int i = 0; i < waypoints.count(); i++) { const Waypoint &w = waypoints.at(i); WaypointItem *wi = new WaypointItem(w); wi->setScale(1.0/scale); wi->setZValue(1); wi->showLabel(_showWaypointLabels); wi->setVisible(_showWaypoints); _scene->addItem(wi); if (_wr.isNull()) { if (_wp.isNull()) _wp = wi->coordinates(); else _wr = qrectf(_wp, wi->coordinates()); } else unite(_wr, wi->coordinates()); _waypoints.append(wi); } if (_poi) addPOI(_poi->points(waypoints)); _zoom = scale2zoom(contentsScale()); }
void PCLoaderXML::myStartElement(int element, const SUMOSAXAttributes& attrs) { if (element != SUMO_TAG_POI && element != SUMO_TAG_POLY) { return; } bool ok = true; // get the id, report an error if not given or empty... std::string id = attrs.get<std::string>(SUMO_ATTR_ID, 0, ok); std::string type = attrs.getOpt<std::string>(SUMO_ATTR_TYPE, id.c_str(), ok, myOptions.getString("type")); if (!ok) { return; } // patch the values bool discard = myOptions.getBool("discard"); if (myTypeMap.has(type)) { const PCTypeMap::TypeDef& def = myTypeMap.get(type); discard = def.discard; setDefaults(def.prefix, def.color, def.layer, def.allowFill); } else { setDefaults(myOptions.getString("prefix"), RGBColor::parseColor(myOptions.getString("color")), myOptions.getFloat("layer"), myOptions.getBool("fill")); } if (!discard) { if (element == SUMO_TAG_POI) { addPOI(attrs, myOptions.isInStringVector("prune.keep-list", id), true); } if (element == SUMO_TAG_POLY) { addPoly(attrs, myOptions.isInStringVector("prune.keep-list", id), true); } } }
PathItem *PathView::addRoute(const Route &route) { if (route.isNull()) { _palette.nextColor(); return 0; } RouteItem *ri = new RouteItem(route); _routes.append(ri); _rr |= ri->path().boundingRect(); _zoom = scale2zoom(contentsScale()); ri->setScale(1.0/mapScale(_zoom)); ri->setColor(_palette.nextColor()); ri->setWidth(_routeWidth); ri->setStyle(_routeStyle); ri->setVisible(_showRoutes); ri->showWaypoints(_showRouteWaypoints); ri->showWaypointLabels(_showWaypointLabels); _scene->addItem(ri); if (_poi) addPOI(_poi->points(ri)); return ri; }
void PathView::updatePOI() { QHash<Waypoint, WaypointItem*>::const_iterator it; for (it = _pois.constBegin(); it != _pois.constEnd(); it++) { _scene->removeItem(it.value()); delete it.value(); } _pois.clear(); if (!_poi) return; for (int i = 0; i < _tracks.size(); i++) addPOI(_poi->points(_tracks.at(i))); for (int i = 0; i < _routes.size(); i++) addPOI(_poi->points(_routes.at(i))); addPOI(_poi->points(_waypoints)); updatePOIVisibility(); }
void ShapeHandler::myStartElement(int element, const SUMOSAXAttributes& attrs) { try { switch (element) { case SUMO_TAG_POLY: addPoly(attrs); break; case SUMO_TAG_POI: addPOI(attrs); break; default: break; } } catch (InvalidArgument& e) { WRITE_ERROR(e.what()); } }
PathItem *PathView::addTrack(const Track &track) { if (track.isNull()) { _palette.nextColor(); return 0; } TrackItem *ti = new TrackItem(track); _tracks.append(ti); _tr |= ti->path().boundingRect(); _zoom = scale2zoom(contentsScale()); ti->setScale(1.0/mapScale(_zoom)); ti->setColor(_palette.nextColor()); ti->setWidth(_trackWidth); ti->setStyle(_trackStyle); ti->setVisible(_showTracks); _scene->addItem(ti); if (_poi) addPOI(_poi->points(ti)); return ti; }
void NLHandler::myStartElement(int element, const SUMOSAXAttributes& attrs) { try { switch (element) { case SUMO_TAG_EDGE: beginEdgeParsing(attrs); break; case SUMO_TAG_LANE: addLane(attrs); break; case SUMO_TAG_POLY: addPoly(attrs); break; case SUMO_TAG_POI: addPOI(attrs); break; case SUMO_TAG_JUNCTION: openJunction(attrs); initJunctionLogic(attrs); break; case SUMO_TAG_PHASE: addPhase(attrs); break; case SUMO_TAG_CONNECTION: addConnection(attrs); break; case SUMO_TAG_TLLOGIC: initTrafficLightLogic(attrs); break; case SUMO_TAG_REQUEST: addRequest(attrs); break; case SUMO_TAG_WAUT: openWAUT(attrs); break; case SUMO_TAG_WAUT_SWITCH: addWAUTSwitch(attrs); break; case SUMO_TAG_WAUT_JUNCTION: addWAUTJunction(attrs); break; case SUMO_TAG_E1DETECTOR: case SUMO_TAG_INDUCTION_LOOP: addE1Detector(attrs); break; case SUMO_TAG_E2DETECTOR: case SUMO_TAG_LANE_AREA_DETECTOR: addE2Detector(attrs); break; case SUMO_TAG_E3DETECTOR: case SUMO_TAG_ENTRY_EXIT_DETECTOR: beginE3Detector(attrs); break; case SUMO_TAG_DET_ENTRY: addE3Entry(attrs); break; case SUMO_TAG_DET_EXIT: addE3Exit(attrs); break; case SUMO_TAG_INSTANT_INDUCTION_LOOP: addInstantE1Detector(attrs); break; case SUMO_TAG_VSS: myTriggerBuilder.parseAndBuildLaneSpeedTrigger(myNet, attrs, getFileName()); break; case SUMO_TAG_CALIBRATOR: myTriggerBuilder.parseAndBuildCalibrator(myNet, attrs, getFileName()); break; case SUMO_TAG_REROUTER: myTriggerBuilder.parseAndBuildRerouter(myNet, attrs, getFileName()); break; case SUMO_TAG_BUS_STOP: myTriggerBuilder.parseAndBuildBusStop(myNet, attrs); break; case SUMO_TAG_VTYPEPROBE: addVTypeProbeDetector(attrs); break; case SUMO_TAG_ROUTEPROBE: addRouteProbeDetector(attrs); break; case SUMO_TAG_MEANDATA_EDGE: addEdgeLaneMeanData(attrs, SUMO_TAG_MEANDATA_EDGE); break; case SUMO_TAG_MEANDATA_LANE: addEdgeLaneMeanData(attrs, SUMO_TAG_MEANDATA_LANE); break; case SUMO_TAG_TIMEDEVENT: myActionBuilder.addAction(attrs, getFileName()); break; case SUMO_TAG_VAPORIZER: myTriggerBuilder.buildVaporizer(attrs); break; case SUMO_TAG_LOCATION: setLocation(attrs); break; case SUMO_TAG_TAZ: addDistrict(attrs); break; case SUMO_TAG_TAZSOURCE: addDistrictEdge(attrs, true); break; case SUMO_TAG_TAZSINK: addDistrictEdge(attrs, false); break; default: break; } } catch (InvalidArgument& e) { WRITE_ERROR(e.what()); } MSRouteHandler::myStartElement(element, attrs); if (element == SUMO_TAG_PARAM) { addParam(attrs); } }