00001 /*************************************************************************** 00002 l1394_camera.h - description 00003 ------------------- 00004 begin : Fri Nov 24 2000 00005 copyright : (C) 2000-2004 by Michael Repplinger 00006 email : repplinger@cs.uni-sb.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef CAMERA_H 00019 #define CAMERA_H 00020 #include "l1394_cameraregister.h" 00021 #include "l1394_device.h" 00022 namespace L1394 00023 { 00024 #define RED 0 00025 #define BLUE 1 00026 00027 /*! \class Camera 00028 * \ingroup L1394_Device 00029 * \brief This class defines the interface for cameras. 00030 * 00031 * This class is base class for all cameras and defines functions for the most common 00032 * features. <BR> 00033 * To access a feature, you must call the corresponding function. Normally this 00034 * method returns a pointer to a so called L1394 Register object. The Register object 00035 * provides functions to define how to execute the feature. Class CameraRegister defines 00036 * the functions of the L1394 Register objects for cameras. 00037 * 00038 * Here is a little example to show the idea.<BR> 00039 * 00040 * \code 00041 * Session* session = GetSession(); 00042 * Camera* camera = session->findCamera(); 00043 * if (camera == NULL) 00044 * { 00045 * cout << "No camera found" << endl; 00046 * exit(0); 00047 * } 00048 * if (camera->zoom()->hasFeature()) //if the camera support zoom 00049 * camera->zoom()->setValue(camera->zoom()->getMinValue()); //set zoom value to the minimum value. 00050 * else 00051 * cout << " Feature not supported " << endl; 00052 * \endcode 00053 * For more information see the tutorial. 00054 * 00055 * @author Michael Repplinger 00056 */ 00057 00058 00059 class Camera : public Device 00060 { 00061 public: 00062 /*! \name Camera constructor 00063 * These functions creates the Camera objects 00064 */ 00065 //@{ 00066 Camera (Node* parent_node); 00067 /*! \fn ~Camera 00068 * \brief destructor 00069 */ 00070 virtual ~Camera(){}; 00071 00072 //@} 00073 virtual DeviceType getDeviceType() const { return _Camera;} 00074 /*! \name Camera Interface 00075 * This functions describe the interface of any camera. There are combinations 00076 * to create an illegal command. These commands are ignored. 00077 */ 00078 //@{ 00079 //! Access 'Brightness' feature register 00080 virtual const CameraRegister* brightness() =0; 00081 00082 //! Access 'Auto-Exposure' feature register 00083 virtual const CameraRegister* autoExposure() =0; 00084 00085 //! Access 'Sharpness' feature register 00086 virtual const CameraRegister* sharpness() =0; 00087 00088 //! Access 'White-Balance' feature register (change both RED and BLUE) 00089 virtual const CameraRegister* whiteBalance() =0; 00090 00091 //! Access 'White-Balance' feature register 1 = RED ,BLUE = 0 00092 virtual const CameraRegister* whiteBalance(int) =0; 00093 00094 //! Access 'Hue' feature register 00095 virtual const CameraRegister* hue() =0; 00096 00097 //! Access 'Saturation' feature register 00098 virtual const CameraRegister* saturation() =0; 00099 00100 //! Access 'Gamma' feature register 00101 virtual const CameraRegister* gamma() =0; 00102 00103 //! Access 'Shutter' feature register 00104 virtual const CameraRegister* shutter() =0; 00105 00106 //! Access 'Gain' feature register 00107 virtual const CameraRegister* gain() =0; 00108 00109 //! Access 'Iris' feature register 00110 virtual const CameraRegister* iris() =0; 00111 00112 //! Access 'Focus' feature register 00113 virtual const CameraRegister* focus() =0; 00114 00115 //! Access 'Temperature' feature register 00116 virtual const CameraRegister* temperature() =0; 00117 00118 //! Access 'Trigger' feature register 00119 virtual const CameraRegister* trigger() =0; 00120 00121 //! Access 'Zoom' feature register 00122 virtual const CameraRegister* zoom() =0; 00123 00124 //! Access 'Pan' feature register 00125 virtual const CameraRegister* pan() =0; 00126 00127 //! Access 'Tilt' feature register 00128 virtual const CameraRegister* tilt() =0; 00129 00130 //! Access 'Filter' feature register 00131 virtual const CameraRegister* filter() =0; 00132 //@} 00133 00134 }; 00135 } 00136 #endif