bool GNELane::setMultiColor(const GUIColorer& c) const { const size_t activeScheme = c.getActive(); myShapeColors.clear(); switch (activeScheme) { case 9: // color by height at segment start for (PositionVector::const_iterator ii = getShape().begin(); ii != getShape().end() - 1; ++ii) { myShapeColors.push_back(c.getScheme().getColor(ii->z())); } return true; case 11: // color by inclination at segment start for (int ii = 1; ii < (int)getShape().size(); ++ii) { const SUMOReal inc = (getShape()[ii].z() - getShape()[ii - 1].z()) / MAX2(POSITION_EPS, getShape()[ii].distanceTo2D(getShape()[ii - 1])); myShapeColors.push_back(c.getScheme().getColor(inc)); } return true; default: return false; } }
bool GUIEdge::setMultiColor(const GUIColorer& c) const { const int activeScheme = c.getActive(); mySegmentColors.clear(); switch (activeScheme) { case 10: // alternating segments for (MESegment* segment = MSGlobals::gMesoNet->getSegmentForEdge(*this); segment != 0; segment = segment->getNextSegment()) { mySegmentColors.push_back(c.getScheme().getColor(segment->getIndex() % 2)); } //std::cout << getID() << " scheme=" << c.getScheme().getName() << " schemeCols=" << c.getScheme().getColors().size() << " thresh=" << toString(c.getScheme().getThresholds()) << " segmentColors=" << mySegmentColors.size() << " [0]=" << mySegmentColors[0] << " [1]=" << mySegmentColors[1] << "\n"; return true; case 11: // by segment jammed state for (MESegment* segment = MSGlobals::gMesoNet->getSegmentForEdge(*this); segment != 0; segment = segment->getNextSegment()) { mySegmentColors.push_back(c.getScheme().getColor(segment->free() ? 0 : 1)); } return true; case 12: // by segment occupancy for (MESegment* segment = MSGlobals::gMesoNet->getSegmentForEdge(*this); segment != 0; segment = segment->getNextSegment()) { mySegmentColors.push_back(c.getScheme().getColor(segment->getRelativeOccupancy())); } return true; case 13: // by segment speed for (MESegment* segment = MSGlobals::gMesoNet->getSegmentForEdge(*this); segment != 0; segment = segment->getNextSegment()) { mySegmentColors.push_back(c.getScheme().getColor(segment->getMeanSpeed())); } return true; case 14: // by segment flow for (MESegment* segment = MSGlobals::gMesoNet->getSegmentForEdge(*this); segment != 0; segment = segment->getNextSegment()) { mySegmentColors.push_back(c.getScheme().getColor(3600 * segment->getCarNumber() * segment->getMeanSpeed() / segment->getLength())); } return true; case 15: // by segment relative speed for (MESegment* segment = MSGlobals::gMesoNet->getSegmentForEdge(*this); segment != 0; segment = segment->getNextSegment()) { mySegmentColors.push_back(c.getScheme().getColor(segment->getMeanSpeed() / getAllowedSpeed())); } return true; default: return false; } }