00001 #ifndef FCAM_FLASH_H 00002 #define FCAM_FLASH_H 00003 00004 #include "Action.h" 00005 #include "Device.h" 00006 00010 namespace FCam { 00011 00012 class Action; 00013 00015 class Flash : public Device { 00016 public: 00017 ~Flash(); 00018 00020 virtual int minDuration() = 0; 00021 00023 virtual int maxDuration() = 0; 00024 00026 virtual float minBrightness() = 0; 00027 00029 virtual float maxBrightness() = 0; 00030 00033 virtual void fire(float brightness, int duration) = 0; 00034 00037 virtual int fireLatency() = 0; 00038 00041 virtual float getBrightness(Time t) = 0; 00042 00046 virtual void tagFrame(Frame) = 0; 00047 00049 class FireAction : public CopyableAction<FireAction> { 00050 public: 00052 FireAction(Flash *f); 00053 00057 FireAction(Flash *f, int time); 00058 00063 FireAction(Flash *f, int time, float brightness, int duration); 00064 00067 float brightness; 00068 00070 int duration; 00071 00072 void doAction(); 00073 00075 Flash *getFlash() {return flash;} 00076 private: 00077 00078 Flash *flash; 00079 }; 00080 00083 class Tags { 00084 public: 00086 Tags(Frame); 00087 00089 float brightness; 00090 00094 int start; 00095 00098 int duration; 00099 00104 int peak; 00105 }; 00106 }; 00107 00108 } 00109 00110 #endif