Go to the documentation of this file.00001 #ifndef FCAM_LENS_H
00002 #define FCAM_LENS_H
00003
00006
00007 #include "Device.h"
00008 #include "Action.h"
00009
00010 namespace FCam {
00011
00014 class Lens : public Device {
00015 public:
00016
00044 virtual void setFocus(float, float speed = -1) = 0;
00045
00047 virtual float getFocus() const = 0;
00048
00050 virtual float farFocus() const = 0;
00051
00053 virtual float nearFocus() const = 0;
00054
00056 virtual bool focusChanging() const = 0;
00057
00060 virtual int focusLatency() const = 0;
00061
00063 virtual float minFocusSpeed() const = 0;
00064
00066 virtual float maxFocusSpeed() const = 0;
00068
00079 virtual void setZoom(float, float speed = -1) = 0;
00080
00082 virtual float getZoom() const = 0;
00083
00085 virtual float minZoom() const = 0;
00086
00088 virtual float maxZoom() const = 0;
00089
00091 virtual bool zoomChanging() const = 0;
00092
00095 virtual int zoomLatency() const = 0;
00096
00098 virtual float minZoomSpeed() const = 0;
00099
00101 virtual float maxZoomSpeed() const = 0;
00102
00118 virtual void setAperture(float, float speed = -1) = 0;
00119
00121 virtual float getAperture() const = 0;
00122
00126 virtual float wideAperture(float zoom) const = 0;
00127
00131 virtual float narrowAperture(float zoom) const = 0;
00132
00134 virtual bool apertureChanging() const = 0;
00135
00137 virtual int apertureLatency() const = 0;
00138
00142 virtual float minApertureSpeed() const = 0;
00143
00147 virtual float maxApertureSpeed() const = 0;
00149
00152 class FocusAction : public CopyableAction<FocusAction> {
00153 public:
00155 FocusAction(Lens *);
00156
00160 FocusAction(Lens *, int, float);
00161
00166 FocusAction(Lens *, int, float, float);
00167
00169 float focus;
00170
00172 float speed;
00173
00174 void doAction();
00175 private:
00176 Lens *lens;
00177 };
00178
00181 class ZoomAction : public CopyableAction<ZoomAction> {
00183 ZoomAction(Lens *);
00184
00188 ZoomAction(Lens *, int, float);
00189
00194 ZoomAction(Lens *, int, float, float);
00195
00197 float zoom;
00198
00200 float speed;
00201
00202 void doAction();
00203 private:
00204 Lens *lens;
00205 };
00206
00209 class ApertureAction : public CopyableAction<ApertureAction> {
00211 ApertureAction(Lens *);
00212
00216 ApertureAction(Lens *, int, float);
00217
00222 ApertureAction(Lens *, int, float, float);
00223
00225 float aperture;
00226
00228 float speed;
00229
00230 void doAction();
00231 private:
00232 Lens *lens;
00233 };
00234
00238 virtual void tagFrame(Frame) = 0;
00239
00258 struct Tags {
00259
00261 Tags(Frame);
00262
00263 float focus;
00264 float focusSpeed;
00265 float initialFocus;
00266 float finalFocus;
00267
00268 float zoom;
00269 float zoomSpeed;
00270 float initialZoom;
00271 float finalZoom;
00272
00273 float aperture;
00274 float apertureSpeed;
00275 float initialAperture;
00276 float finalAperture;
00277 };
00278 };
00279
00280 }
00281
00282 #endif
00283