public static MMAL_RECT_T GetZoom(this MMALCameraComponent camera) { MMAL_PARAMETER_INPUT_CROP_T crop = new MMAL_PARAMETER_INPUT_CROP_T(new MMAL_PARAMETER_HEADER_T(MMAL_PARAMETER_INPUT_CROP, Marshal.SizeOf <MMAL_PARAMETER_INPUT_CROP_T>()), new MMAL_RECT_T()); MMALCheck(MMALPort.mmal_port_parameter_get(camera.Control.Ptr, &crop.hdr), "Unable to get zoom"); return(crop.Rect); }
internal static void SetZoom(this MMALCameraComponent camera, Zoom rect) { if (rect.X > 1.0 || rect.Y > 1.0 || rect.Height > 1.0 || rect.Width > 1.0) { throw new PiCameraError("Invalid zoom settings. Value mustn't be greater than 1.0"); } MMAL_PARAMETER_INPUT_CROP_T crop = new MMAL_PARAMETER_INPUT_CROP_T(new MMAL_PARAMETER_HEADER_T(MMAL_PARAMETER_INPUT_CROP, Marshal.SizeOf <MMAL_PARAMETER_INPUT_CROP_T>()), new MMAL_RECT_T(Convert.ToInt32(65536 * rect.X), Convert.ToInt32(65536 * rect.Y), Convert.ToInt32(65536 * rect.Width), Convert.ToInt32(65536 * rect.Height))); MMALCheck(MMALPort.mmal_port_parameter_set(camera.Control.Ptr, &crop.hdr), "Unable to set zoom"); }