Esempio n. 1
0
void CCflycap_get_camera_property_info(CCflycap *ccntxt,
				       int property_number,
				       CameraPropertyInfo *info) {
  CHECK_CC(ccntxt);
  FlyCapture2::Camera *cam = (FlyCapture2::Camera *)ccntxt->inherited.cam;

  if (info==NULL) {
    CAM_IFACE_THROW_ERROR("no info argument specified (NULL argument)");
  }

  if ((property_number<0) || (property_number>=NUM_CAM_PROPS)) {
    BACKEND_GLOBAL(cam_iface_error) = CAM_IFACE_GENERIC_ERROR;
    CAM_IFACE_ERROR_FORMAT("property invalid");
  }

  FlyCapture2::Property prop;
  FlyCapture2::PropertyInfo propinfo;

  prop.type = propno2prop(property_number);
  propinfo.type = prop.type;

  switch(prop.type) {
  case FlyCapture2::BRIGHTNESS: info->name = "brightness"; break;
  case FlyCapture2::AUTO_EXPOSURE: info->name = "auto exposure"; break;
  case FlyCapture2::SHARPNESS: info->name = "sharpness"; break;
  case FlyCapture2::WHITE_BALANCE: info->name = "white balance"; break;
  case FlyCapture2::HUE: info->name = "hue"; break;
  case FlyCapture2::SATURATION: info->name = "saturation"; break;
  case FlyCapture2::GAMMA: info->name = "gamma"; break;
  case FlyCapture2::IRIS: info->name = "iris"; break;
  case FlyCapture2::FOCUS: info->name = "focus"; break;
  case FlyCapture2::ZOOM: info->name = "zoom"; break;
  case FlyCapture2::PAN: info->name = "pan"; break;
  case FlyCapture2::TILT: info->name = "tilt"; break;
  case FlyCapture2::SHUTTER: info->name = "shutter"; break;
  case FlyCapture2::GAIN: info->name = "gain"; break;
  case FlyCapture2::TRIGGER_MODE: info->name = "trigger mode"; break;
  case FlyCapture2::TRIGGER_DELAY: info->name = "trigger delay"; break;
  case FlyCapture2::FRAME_RATE: info->name = "frame rate"; break;
  case FlyCapture2::TEMPERATURE: info->name = "temperature"; break;
  }

  FlyCapture2::Error error = cam->GetProperty( &prop );
  if (error.GetType()==FlyCapture2::PGRERROR_PROPERTY_FAILED) {
    info->is_present = 0;
    return;
  }
  CIPGRCHK(error);

  CIPGRCHK(cam->GetPropertyInfo( &propinfo ));

  info->is_present = prop.present;

  info->min_value = propinfo.min;
  info->max_value = propinfo.max;

  info->has_auto_mode = propinfo.autoSupported;
  info->has_manual_mode = propinfo.manualSupported;

  info->is_scaled_quantity = 0;

  info->original_value = 0; // XXX FIXME

  info->available = prop.present;
  info->readout_capable = propinfo.readOutSupported;
  info->on_off_capable = propinfo.onOffSupported;

  info->absolute_capable = propinfo.absValSupported;
  info->absolute_control_mode = 0;
  info->absolute_min_value = propinfo.absMin;
  info->absolute_max_value = propinfo.absMax;

  return;
}