/// <summary> /// Set the relative ROI (Region Of Interest) area as a decimal fraction based on the video source. /// It can be regarded as zooming operation because the specified video area will be rendered to fit to the display. /// </summary> /// <param name="scaleRectangle">The containing the ROI area information.</param> /// <remarks> /// This function requires the ratio of the each coordinate and size to the video resolution size /// to guarantee of showing the same area for the dynamic resolution video content. /// This function have to be called after setting <see cref="Display"/> /// </remarks> /// <exception cref="ObjectDisposedException">The player has already been disposed of.</exception> /// <exception cref="InvalidOperationException"> /// Operation failed; internal error. /// -or-<br/> /// The <see cref="PlayerDisplayType"/> is not set to <see cref="PlayerDisplayType.Overlay"/>. /// </exception> /// <exception cref="ArgumentOutOfRangeException"> /// <paramref name="scaleRectangle.ScaleX"/> is less than 0.0 or greater than 1.0.<br/> /// -or-<br/> /// <paramref name="scaleRectangle.ScaleY"/> is less than 0.0 or greater than 1.0.<br/> /// -or-<br/> /// <paramref name="scaleRectangle.ScaleWidth"/> is less than or equal to 0.0 or greater than 1.0.<br/> /// -or-<br/> /// <paramref name="scaleRectangle.ScaleHeight"/> is less than or equal to 0.0 or greater than 1.0. /// </exception> /// <seealso cref="ScaleRectangle"/> /// <seealso cref="Display"/> /// <seealso cref="StreamInfo.GetVideoProperties"/> /// <seealso cref="GetVideoRoi"/> /// <since_tizen> 5 </since_tizen> public void SetVideoRoi(ScaleRectangle scaleRectangle) { ValidateNotDisposed(); if (scaleRectangle.ScaleX < 0 || scaleRectangle.ScaleX > 1) { throw new ArgumentOutOfRangeException(nameof(scaleRectangle.ScaleX), scaleRectangle.ScaleX, "Valid range is 0 to 1.0"); } if (scaleRectangle.ScaleY < 0 || scaleRectangle.ScaleY > 1) { throw new ArgumentOutOfRangeException(nameof(scaleRectangle.ScaleY), scaleRectangle.ScaleY, "Valid range is 0 to 1.0"); } if (scaleRectangle.ScaleWidth <= 0 || scaleRectangle.ScaleWidth > 1) { throw new ArgumentOutOfRangeException(nameof(scaleRectangle.ScaleWidth), scaleRectangle.ScaleWidth, "Valid range is 0 to 1.0 (except 0.0)"); } if (scaleRectangle.ScaleHeight <= 0 || scaleRectangle.ScaleHeight > 1) { throw new ArgumentOutOfRangeException(nameof(scaleRectangle.ScaleHeight), scaleRectangle.ScaleHeight, "Valid range is 0 to 1.0 (except 0.0)"); } NativePlayer.SetVideoRoi(Handle, scaleRectangle.ScaleX, scaleRectangle.ScaleY, scaleRectangle.ScaleWidth, scaleRectangle.ScaleHeight).ThrowIfFailed(this, "Failed to set the video roi area."); }