Go to the documentation of this file.00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 
00038 
00039 
00040 
00041 
00042 
00043 
00044 
00045 
00046 
00047 
00048 
00049 
00050 
00051 
00052 
00053 
00054 
00055 #include <modeFactory.h>
00056 #include <staticMode.h>
00057 #include <flashMode.h>
00058 #include <breathMode.h>
00059 #include <breathColorMode.h>
00060 #include <fadeColorMode.h>
00061 
00062 
00063 ModeFactory::ModeFactory()
00064 {
00065 }
00066 ModeFactory::~ModeFactory()
00067 {
00068 }
00069 
00070 Mode* ModeFactory::create(cob_light::LightMode requestMode)
00071 {
00072         Mode* mode = NULL;
00073         color::rgba color;
00074         color.r = requestMode.color.r;
00075         color.g = requestMode.color.g;
00076         color.b = requestMode.color.b;
00077         color.a = requestMode.color.a;
00078 
00079         switch(requestMode.mode)
00080         {
00081                 case cob_light::LightMode::STATIC:
00082                         mode = new StaticMode(color, requestMode.priority, requestMode.frequency,\
00083                                 requestMode.pulses, requestMode.timeout);
00084                 break;
00085 
00086                 case cob_light::LightMode::FLASH:
00087                         mode = new FlashMode(color, requestMode.priority, requestMode.frequency,\
00088                                 requestMode.pulses, requestMode.timeout);
00089                 break;
00090 
00091                 case cob_light::LightMode::BREATH:
00092                         mode = new BreathMode(color, requestMode.priority, requestMode.frequency,\
00093                                 requestMode.pulses, requestMode.timeout);
00094                 break;
00095 
00096                 case cob_light::LightMode::BREATH_COLOR:
00097                         mode = new BreathColorMode(color, requestMode.priority, requestMode.frequency,\
00098                                 requestMode.pulses, requestMode.timeout);
00099                 break;
00100 
00101                 case cob_light::LightMode::FADE_COLOR:
00102                         mode = new FadeColorMode(color, requestMode.priority, requestMode.frequency,\
00103                                 requestMode.pulses, requestMode.timeout);
00104                 break;
00105 
00106                 default:
00107                         mode = NULL;
00108         }
00109 
00110         return mode;
00111 }
00112 
00113 Mode* ModeFactory::create(std::string requestMode, color::rgba color)
00114 {
00115         Mode* mode = NULL;
00116 
00117         if(requestMode == "Static" || requestMode == "static" || requestMode == "STATIC")
00118         {
00119                         mode = new StaticMode(color);
00120         }
00121         else if(requestMode == "Flash" || requestMode == "flash" || requestMode == "FLASH")
00122         {
00123                         mode = new FlashMode(color);
00124         }
00125         else if(requestMode == "Breath" || requestMode == "breath" || requestMode == "BREATH")
00126         {
00127                         mode = new BreathMode(color);
00128         }
00129         else if(requestMode == "BreathColor" || requestMode == "BreathColor" || requestMode == "BreathColor" ||
00130                 requestMode == "Breath_Color" || requestMode == "breath_color" || requestMode == "BREATH_COLOR")
00131         {
00132                         mode = new BreathColorMode(color);
00133         }
00134         else if(requestMode == "FadeColor" || requestMode == "fadecolor" || requestMode == "FADECOLOR" ||
00135                 requestMode == "Fade_Color" || requestMode == "fade_color" || requestMode == "FADE_COLOR")
00136         {
00137                         mode = new FadeColorMode(color);
00138         }
00139         else
00140         {
00141                 mode = NULL;
00142         }
00143 
00144         return mode;
00145 }
00146 
00147 int ModeFactory::type(Mode *mode)
00148 {
00149         int ret;
00150         if (mode == NULL)
00151                 ret = cob_light::LightMode::NONE;
00152         else if(dynamic_cast<StaticMode*>(mode) != NULL)
00153                 ret = cob_light::LightMode::STATIC;
00154         else if(dynamic_cast<FlashMode*>(mode) != NULL)
00155                 ret = cob_light::LightMode::FLASH;
00156         else if(dynamic_cast<BreathMode*>(mode) != NULL)
00157                 ret = cob_light::LightMode::BREATH;
00158         else if(dynamic_cast<BreathColorMode*>(mode) != NULL)
00159                 ret = cob_light::LightMode::BREATH_COLOR;
00160         else if(dynamic_cast<FadeColorMode*>(mode) != NULL)
00161                 ret = cob_light::LightMode::FADE_COLOR;
00162         else
00163                 ret = cob_light::LightMode::NONE;
00164 
00165         return ret;
00166 }