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 float getBrightness(Time t1, Time t2) = 0; 00047 00051 virtual void tagFrame(Frame *) = 0; 00052 00054 class FireAction : public CopyableAction<FireAction> { 00055 public: 00057 FireAction(Flash *f); 00058 00062 FireAction(Flash *f, int time); 00063 00068 FireAction(Flash *f, int time, float brightness, int duration); 00069 00072 float brightness; 00073 00075 int duration; 00076 00077 void doAction(); 00078 00080 Flash *getFlash() {return flash;} 00081 private: 00082 00083 Flash *flash; 00084 }; 00085 00087 class Tags : public Device::Tags { 00088 public: 00089 ~Tags(); 00090 00092 float talbots; 00093 00095 float lumens; 00096 00098 int peak; 00099 }; 00100 }; 00101 00102 } 00103 00104 #endif
1.5.6