00001 #ifndef FCAM_AUTOFOCUS_H
00002 #define FCAM_AUTOFOCUS_H
00003
00004 #include <vector>
00005 #include "Frame.h"
00006
00009
00010 namespace FCam {
00011
00012 class Lens;
00013
00018 class AutoFocus {
00019 public:
00022 AutoFocus(FCam::Lens *l);
00023
00025 void startSweep();
00026
00032 void update(FCam::Frame::Ptr f);
00033
00035 bool focused() {return state == FOCUSED;}
00036
00038 bool idle() {return state == FOCUSED || state == IDLE;}
00039
00040 private:
00041 Lens *lens;
00042
00043 struct Stats {
00044 float position;
00045 int sharpness;
00046 };
00047 std::vector<Stats> stats;
00048 enum {IDLE = 0, HOMING, SWEEPING, SETTING, FOCUSED} state;
00049 };
00050
00051 }
00052
00053 #endif