GUIVehicle::Colorer Class Reference

#include <GUIVehicle.h>

Inheritance diagram for GUIVehicle::Colorer:

GUIColorer< GUIVehicle >

Detailed Description

Definition at line 186 of file GUIVehicle.h.


Public Member Functions

 Colorer ()
void fill (FXComboBox &cb)
 Fills the given combobox with the names of available colorings.
const size_t getActive () const
SUMOReal getColorValue (const GUIVehicle &vehicle) const
 Sets the color using a value from the given instance of T.
GUIColorSchemegetScheme ()
GUIColorSchemegetSchemeByName (std::string name)
bool operator== (const GUIColorer &c) const
void save (OutputDevice &dev) const
void setActive (size_t scheme)
bool setFunctionalColor (const GUIVehicle &vehicle) const
 Sets the color using a function call for the given instance of T.
void setGlColor (const GUIVehicle &i) const
 Sets the color using a value from the given instance of T.

Protected Attributes

size_t myActiveScheme
std::vector< GUIColorSchememySchemes

Constructor & Destructor Documentation

GUIVehicle::Colorer::Colorer (  ) 

Definition at line 964 of file GUIVehicle.cpp.

References GUIColorer< GUIVehicle >::mySchemes, and SUMOReal.

00964                            {
00965     mySchemes.push_back(GUIColorScheme("uniform", RGBColor(1,1,0), "", true));
00966     mySchemes.push_back(GUIColorScheme("given/assigned vehicle color", RGBColor(1,1,0), "", true));
00967     mySchemes.push_back(GUIColorScheme("given/assigned type color", RGBColor(1,1,0), "", true));
00968     mySchemes.push_back(GUIColorScheme("given/assigned route color", RGBColor(1,1,0), "", true));
00969     mySchemes.push_back(GUIColorScheme("depart position as HSV", RGBColor(1,1,0), "", true));
00970     mySchemes.push_back(GUIColorScheme("arrival position as HSV", RGBColor(1,1,0), "", true));
00971     mySchemes.push_back(GUIColorScheme("direction/distance as HSV", RGBColor(1,1,0), "", true));
00972     mySchemes.push_back(GUIColorScheme("by speed", RGBColor(1,0,0)));
00973     mySchemes.back().addColor(RGBColor(0,0,1), (SUMOReal)(150.0/3.6));
00974     mySchemes.push_back(GUIColorScheme("by waiting time", RGBColor(0,0,1)));
00975     mySchemes.back().addColor(RGBColor(1,0,0), (SUMOReal)(5*60));
00976     mySchemes.push_back(GUIColorScheme("by time since last lanechange", RGBColor(1,1,1)));
00977     mySchemes.back().addColor(RGBColor(.5,.5,.5), (SUMOReal)(5*60));
00978     mySchemes.push_back(GUIColorScheme("by max speed", RGBColor(1,0,0)));
00979     mySchemes.back().addColor(RGBColor(0,0,1), (SUMOReal)(150.0/3.6));
00980     // ... emissions ...
00981     mySchemes.push_back(GUIColorScheme("by CO2 emissions (HBEFA)", RGBColor(0,1,0)));
00982     mySchemes.back().addColor(RGBColor(1,0,0), (SUMOReal)5.);
00983     mySchemes.push_back(GUIColorScheme("by CO emissions (HBEFA)", RGBColor(0,1,0)));
00984     mySchemes.back().addColor(RGBColor(1,0,0), (SUMOReal)0.05);
00985     mySchemes.push_back(GUIColorScheme("by PMx emissions (HBEFA)", RGBColor(0,1,0)));
00986     mySchemes.back().addColor(RGBColor(1,0,0), (SUMOReal).005);
00987     mySchemes.push_back(GUIColorScheme("by NOx emissions (HBEFA)", RGBColor(0,1,0)));
00988     mySchemes.back().addColor(RGBColor(1,0,0), (SUMOReal).125);
00989     mySchemes.push_back(GUIColorScheme("by HC emissions (HBEFA)", RGBColor(0,1,0)));
00990     mySchemes.back().addColor(RGBColor(1,0,0), (SUMOReal).02);
00991     mySchemes.push_back(GUIColorScheme("by fuel consumption (HBEFA)", RGBColor(0,1,0)));
00992     mySchemes.back().addColor(RGBColor(1,0,0), (SUMOReal).005);
00993     mySchemes.push_back(GUIColorScheme("by noise emissions (Harmonoise)", RGBColor(0,1,0)));
00994     mySchemes.back().addColor(RGBColor(1,0,0), (SUMOReal)100.);
00995     mySchemes.push_back(GUIColorScheme("by reroute number", RGBColor(1,0,0)));
00996     mySchemes.back().addColor(RGBColor(1,1,0), (SUMOReal)1.);
00997     mySchemes.back().addColor(RGBColor(1,1,1), (SUMOReal)10.);
00998 }


Member Function Documentation

void GUIColorer< GUIVehicle >::fill ( FXComboBox &  cb  )  [inline, inherited]

Fills the given combobox with the names of available colorings.

Definition at line 77 of file GUIColorer.h.

References GUIColorer< T >::myActiveScheme, and GUIColorer< T >::mySchemes.

00077                               {
00078         typename std::vector<GUIColorScheme>::iterator i;
00079         for (i=mySchemes.begin(); i!=mySchemes.end(); ++i) {
00080             cb.appendItem((*i).getName().c_str());
00081         }
00082         cb.setCurrentItem((FXint)myActiveScheme);
00083     }

const size_t GUIColorer< GUIVehicle >::getActive (  )  const [inline, inherited]

Definition at line 91 of file GUIColorer.h.

References GUIColorer< T >::myActiveScheme.

00091                                    {
00092         return myActiveScheme;
00093     }

SUMOReal GUIVehicle::Colorer::getColorValue ( const GUIVehicle i  )  const [virtual]

Sets the color using a value from the given instance of T.

Implements GUIColorer< GUIVehicle >.

Definition at line 1051 of file GUIVehicle.cpp.

References MSCORN::CORN_VEH_NUMBERROUTE, MSVehicle::getCORNIntValue(), MSVehicle::getHarmonoise_NoiseEmissions(), MSVehicle::getHBEFA_CO2Emissions(), MSVehicle::getHBEFA_COEmissions(), MSVehicle::getHBEFA_FuelConsumption(), MSVehicle::getHBEFA_HCEmissions(), MSVehicle::getHBEFA_NOxEmissions(), MSVehicle::getHBEFA_PMxEmissions(), GUIVehicle::getLastLaneChangeOffset(), MSVehicle::getMaxSpeed(), MSVehicle::getSpeed(), MSVehicle::getWaitingSeconds(), MSVehicle::hasCORNIntValue(), and GUIColorer< GUIVehicle >::myActiveScheme.

01051                                                                 {
01052     switch (myActiveScheme) {
01053     case 7:
01054         return vehicle.getSpeed();
01055     case 8:
01056         return vehicle.getWaitingSeconds();
01057     case 9:
01058         return vehicle.getLastLaneChangeOffset();
01059     case 10:
01060         return vehicle.getMaxSpeed();
01061     case 11:
01062         return vehicle.getHBEFA_CO2Emissions();
01063     case 12:
01064         return vehicle.getHBEFA_COEmissions();
01065     case 13:
01066         return vehicle.getHBEFA_PMxEmissions();
01067     case 14:
01068         return vehicle.getHBEFA_NOxEmissions();
01069     case 15:
01070         return vehicle.getHBEFA_HCEmissions();
01071     case 16:
01072         return vehicle.getHBEFA_FuelConsumption();
01073     case 17:
01074         return vehicle.getHarmonoise_NoiseEmissions();
01075     case 18:
01076         if (!vehicle.hasCORNIntValue(MSCORN::CORN_VEH_NUMBERROUTE)) {
01077             return -1;
01078         }
01079         return vehicle.getCORNIntValue(MSCORN::CORN_VEH_NUMBERROUTE);
01080     }
01081     return 0;
01082 }

GUIColorScheme& GUIColorer< GUIVehicle >::getScheme (  )  [inline, inherited]

Definition at line 95 of file GUIColorer.h.

References GUIColorer< T >::myActiveScheme, and GUIColorer< T >::mySchemes.

00095                                 {
00096         return mySchemes[myActiveScheme];
00097     }

GUIColorScheme* GUIColorer< GUIVehicle >::getSchemeByName ( std::string  name  )  [inline, inherited]

Definition at line 99 of file GUIColorer.h.

References GUIColorer< T >::mySchemes.

00099                                                     {
00100         typename std::vector<GUIColorScheme>::iterator i;
00101         for (i=mySchemes.begin(); i!=mySchemes.end(); ++i) {
00102             if ((*i).getName() == name) {
00103                 return &(*i);
00104             }
00105         }
00106         return 0;
00107     }

bool GUIColorer< GUIVehicle >::operator== ( const GUIColorer< GUIVehicle > &  c  )  const [inline, inherited]

Definition at line 116 of file GUIColorer.h.

References GUIColorer< T >::myActiveScheme, and GUIColorer< T >::mySchemes.

00116                                                {
00117         return myActiveScheme == c.myActiveScheme && mySchemes == c.mySchemes;
00118     }

void GUIColorer< GUIVehicle >::save ( OutputDevice dev  )  const [inline, inherited]

Definition at line 109 of file GUIColorer.h.

References GUIColorer< T >::mySchemes.

00109                                        {
00110         typename std::vector<GUIColorScheme>::const_iterator i = mySchemes.begin();
00111         for (; i!=mySchemes.end(); ++i) {
00112             i->save(dev);
00113         }
00114     }

void GUIColorer< GUIVehicle >::setActive ( size_t  scheme  )  [inline, inherited]

Definition at line 85 of file GUIColorer.h.

References GUIColorer< T >::myActiveScheme, and GUIColorer< T >::mySchemes.

00085                                   {
00086         if (scheme < mySchemes.size()) {
00087             myActiveScheme = scheme;
00088         }
00089     }

bool GUIVehicle::Colorer::setFunctionalColor ( const GUIVehicle i  )  const [virtual]

Sets the color using a function call for the given instance of T.

Reimplemented from GUIColorer< GUIVehicle >.

Definition at line 1002 of file GUIVehicle.cpp.

References RGBColor::blue(), Position2D::distanceTo(), RGBColor::fromHSV(), Boundary::getCenter(), MSRoute::getEdges(), MSNet::getInstance(), MSVehicle::getRoute(), RGBColor::green(), GUIColorer< GUIVehicle >::myActiveScheme, PI, RGBColor::red(), GUIVehicle::setOwnDefinedColor(), GUIVehicle::setOwnRouteColor(), GUIVehicle::setOwnTypeColor(), SUMOReal, Position2D::x(), Boundary::xmax(), Boundary::xmin(), Position2D::y(), Boundary::ymax(), and Boundary::ymin().

01002                                                                      {
01003     switch (myActiveScheme) {
01004     case 1:
01005         vehicle.setOwnDefinedColor();
01006         return true;
01007     case 2:
01008         vehicle.setOwnTypeColor();
01009         return true;
01010     case 3:
01011         vehicle.setOwnRouteColor();
01012         return true;
01013     case 4: {
01014         Position2D p = vehicle.getRoute().getEdges()[0]->getLanes()[0]->getShape()[0];
01015         const Boundary &b = ((GUINet*) MSNet::getInstance())->getBoundary();
01016         Position2D center = b.getCenter();
01017         SUMOReal hue = 180. + atan2(center.x()-p.x(), center.y()-p.y()) * 180. / PI;
01018         SUMOReal sat = p.distanceTo(center) / center.distanceTo(Position2D(b.xmin(), b.ymin()));
01019         RGBColor c = RGBColor::fromHSV(hue, sat, 1.);
01020         glColor3d(c.red(), c.green(), c.blue());
01021         return true;
01022     }
01023     case 5: {
01024         Position2D p = vehicle.getRoute().getEdges().back()->getLanes()[0]->getShape()[-1];
01025         const Boundary &b = ((GUINet*) MSNet::getInstance())->getBoundary();
01026         Position2D center = b.getCenter();
01027         SUMOReal hue = 180. + atan2(center.x()-p.x(), center.y()-p.y()) * 180. / PI;
01028         SUMOReal sat = p.distanceTo(center) / center.distanceTo(Position2D(b.xmin(), b.ymin()));
01029         RGBColor c = RGBColor::fromHSV(hue, sat, 1.);
01030         glColor3d(c.red(), c.green(), c.blue());
01031         return true;
01032     }
01033     case 6: {
01034         Position2D pb = vehicle.getRoute().getEdges()[0]->getLanes()[0]->getShape()[0];
01035         Position2D pe = vehicle.getRoute().getEdges().back()->getLanes()[0]->getShape()[-1];
01036         const Boundary &b = ((GUINet*) MSNet::getInstance())->getBoundary();
01037         SUMOReal hue = 180. + atan2(pb.x()-pe.x(), pb.y()-pe.y()) * 180. / PI;
01038         Position2D minp(b.xmin(), b.ymin());
01039         Position2D maxp(b.xmax(), b.ymax());
01040         SUMOReal sat = pb.distanceTo(pe) / minp.distanceTo(maxp);
01041         RGBColor c = RGBColor::fromHSV(hue, sat, 1.);
01042         glColor3d(c.red(), c.green(), c.blue());
01043         return true;
01044     }
01045     }
01046     return false;
01047 }

void GUIColorer< GUIVehicle >::setGlColor ( const GUIVehicle i  )  const [inline, inherited]

Sets the color using a value from the given instance of T.

Definition at line 69 of file GUIColorer.h.

References RGBColor::blue(), GUIColorer< T >::getColorValue(), RGBColor::green(), GUIColorer< T >::myActiveScheme, GUIColorer< T >::mySchemes, RGBColor::red(), and GUIColorer< T >::setFunctionalColor().

00069                                       {
00070         if (!setFunctionalColor(i)) {
00071             const RGBColor& c = mySchemes[myActiveScheme].getColor(getColorValue(i));
00072             glColor3d(c.red(), c.green(), c.blue());
00073         }
00074     }


Field Documentation

size_t GUIColorer< GUIVehicle >::myActiveScheme [protected, inherited]

Definition at line 121 of file GUIColorer.h.

Referenced by getColorValue(), and setFunctionalColor().

std::vector<GUIColorScheme> GUIColorer< GUIVehicle >::mySchemes [protected, inherited]

Definition at line 122 of file GUIColorer.h.

Referenced by Colorer().


The documentation for this class was generated from the following files:

Generated on Wed May 5 00:06:46 2010 for Sumo - Simulation of Urban MObility by  doxygen 1.5.6