From 7d8050d1387069c126684390d082dbe796ac92a2 Mon Sep 17 00:00:00 2001 From: Haesu Gwon Date: Wed, 5 Jul 2017 13:08:36 +0900 Subject: [PATCH] [Camera] Add parameter type and range check logic Change-Id: Ib697cefae7c0f3ef1141491c7d4df9b25d988864 Signed-off-by: Haesu Gwon --- src/Tizen.Multimedia.Camera/Camera/Camera.cs | 13 +++++++----- .../Camera/CameraDisplaySettings.cs | 3 +++ .../Camera/CameraSettings.cs | 23 ++++++++++++++++++++++ .../Interop/Interop.Camera.cs | 2 +- 4 files changed, 35 insertions(+), 6 deletions(-) mode change 100644 => 100755 src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs diff --git a/src/Tizen.Multimedia.Camera/Camera/Camera.cs b/src/Tizen.Multimedia.Camera/Camera/Camera.cs index ac50a24..0485c87 100755 --- a/src/Tizen.Multimedia.Camera/Camera/Camera.cs +++ b/src/Tizen.Multimedia.Camera/Camera/Camera.cs @@ -52,7 +52,7 @@ namespace Tizen.Multimedia /// The camera device to access public Camera(CameraDevice device) { - CameraErrorFactory.ThrowIfError(Native.Create((int)device, out _handle), + CameraErrorFactory.ThrowIfError(Native.Create(device, out _handle), "Failed to create camera instance"); Feature = new CameraFeatures(this); @@ -414,6 +414,7 @@ namespace Tizen.Multimedia { return _display; } + set { ValidateState(CameraState.Created); @@ -438,8 +439,7 @@ namespace Tizen.Multimedia CameraError IDisplayable.ApplyEvasDisplay(DisplayType type, ElmSharp.EvasObject evasObject) { Debug.Assert(_disposed == false); - - Debug.Assert(Enum.IsDefined(typeof(DisplayType), type)); + ValidationUtil.ValidateEnum(typeof(DisplayType), type, nameof(type)); return CameraDisplay.SetTarget(GetHandle(), type, evasObject); } @@ -550,7 +550,7 @@ namespace Tizen.Multimedia /// If display reuse is set using /// before stopping the preview, the display will be reused and last frame on the display /// can be kept even though camera device is changed. - /// The camera must be in the or state. + /// The camera must be in the . /// /// In case of invalid parameters. /// In case of any invalid operations. @@ -558,7 +558,8 @@ namespace Tizen.Multimedia /// The camera already has been disposed. public void ChangeDevice(CameraDevice device) { - ValidateState(CameraState.Created, CameraState.Preview); + ValidateState(CameraState.Created); + ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device)); CameraErrorFactory.ThrowIfError(Native.ChangeDevice(_handle, (int)device), "Failed to change the camera device"); @@ -576,6 +577,7 @@ namespace Tizen.Multimedia public CameraDeviceState GetDeviceState(CameraDevice device) { int val = 0; + ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device)); CameraErrorFactory.ThrowIfError(Native.GetDeviceState(device, out val), "Failed to get the camera device state."); @@ -595,6 +597,7 @@ namespace Tizen.Multimedia public static CameraFlashState GetFlashState(CameraDevice device) { CameraFlashState val = CameraFlashState.NotUsed; + ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device)); CameraErrorFactory.ThrowIfError(Native.GetFlashState(device, out val), "Failed to get camera flash state"); diff --git a/src/Tizen.Multimedia.Camera/Camera/CameraDisplaySettings.cs b/src/Tizen.Multimedia.Camera/Camera/CameraDisplaySettings.cs index 6f5ab4f..8149f55 100755 --- a/src/Tizen.Multimedia.Camera/Camera/CameraDisplaySettings.cs +++ b/src/Tizen.Multimedia.Camera/Camera/CameraDisplaySettings.cs @@ -52,6 +52,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraDisplayMode), value); CameraErrorFactory.ThrowIfError(Native.SetMode(_camera.GetHandle(), value), "Failed to set camera display mode."); } @@ -102,6 +103,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraRotation), value); CameraErrorFactory.ThrowIfError(Native.SetRotation(_camera.GetHandle(), value), "Failed to set display rotation."); } @@ -127,6 +129,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraFlip), value); CameraErrorFactory.ThrowIfError(Native.SetFlip(_camera.GetHandle(), value), "Failed to set display flip."); } diff --git a/src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs b/src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs index ceb9b90..8feaa6f 100755 --- a/src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs +++ b/src/Tizen.Multimedia.Camera/Camera/CameraSettings.cs @@ -132,6 +132,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraAutoFocusMode), value); CameraErrorFactory.ThrowIfError(Native.SetAutoFocusMode(_camera.GetHandle(), value), "Failed to set camera autofocus mode."); } @@ -301,6 +302,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraExposureMode), value); CameraErrorFactory.ThrowIfError(Native.SetExposureMode(_camera.GetHandle(), value), "Failed to set camera exposure mode."); } @@ -396,6 +398,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraWhiteBalance), value); CameraErrorFactory.ThrowIfError(Native.SetWhitebalance(_camera.GetHandle(), value), "Failed to set camera whitebalance."); } @@ -421,6 +424,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraIsoLevel), value); CameraErrorFactory.ThrowIfError(Native.SetIso(_camera.GetHandle(), value), "Failed to set camera Iso level."); } @@ -446,6 +450,11 @@ namespace Tizen.Multimedia set { + if (value < 1 || value > 100) + { + throw new ArgumentException("Valid value is from 1(lowest quality) to 100(highest quality)"); + } + CameraErrorFactory.ThrowIfError(Native.SetImageQuality(_camera.GetHandle(), value), "Failed to set image quality."); } @@ -472,6 +481,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraFps), value); CameraErrorFactory.ThrowIfError(Native.SetPreviewFps(_camera.GetHandle(), value), "Failed to set preview fps."); } @@ -547,6 +557,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraPixelFormat), value); CameraErrorFactory.ThrowIfError(SetPreviewPixelFormat(_camera.GetHandle(), value), "Failed to set preview format."); } @@ -601,6 +612,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraPixelFormat), value); CameraErrorFactory.ThrowIfError(SetCaptureFormat(_camera.GetHandle(), value), "Failed to set capture format."); } @@ -681,6 +693,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraTheaterMode), value); CameraErrorFactory.ThrowIfError(Native.SetTheaterMode(_camera.GetHandle(), value), "Failed to set camera theater mode."); } @@ -706,6 +719,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraEffectMode), value); CameraErrorFactory.ThrowIfError(Native.SetEffect(_camera.GetHandle(), value), "Failed to set camera effect."); } @@ -731,6 +745,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraSceneMode), value); CameraErrorFactory.ThrowIfError(Native.SetSceneMode(_camera.GetHandle(), value), "Failed to set camera scene mode."); } @@ -756,6 +771,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraFlashMode), value); CameraErrorFactory.ThrowIfError(Native.SetFlashMode(_camera.GetHandle(), value), "Failed to set camera flash mode."); } @@ -799,6 +815,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraRotation), value); CameraErrorFactory.ThrowIfError(Native.SetStreamRotation(_camera.GetHandle(), value), "Failed to set camera stream rotation."); } @@ -824,6 +841,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraFlip), value); CameraErrorFactory.ThrowIfError(Native.SetFlip(_camera.GetHandle(), value), "Failed to set camera flip."); } @@ -854,6 +872,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraHdrMode), value); CameraErrorFactory.ThrowIfError(Native.SetHdrMode(_camera.GetHandle(), value), "Failed to set camera hdr mode."); } @@ -942,6 +961,7 @@ namespace Tizen.Multimedia { set { + ValidationUtil.ValidateEnum(typeof(CameraPtzType), value); CameraErrorFactory.ThrowIfError(Native.SetPtzType(_camera.GetHandle(), (int)value), "Failed to set camera ptz type."); } @@ -957,6 +977,7 @@ namespace Tizen.Multimedia /// The camera already has been disposed. public void SetPan(CameraPtzMoveType type, int panStep) { + ValidationUtil.ValidateEnum(typeof(CameraPtzMoveType), type, nameof(type)); CameraErrorFactory.ThrowIfError(Native.SetPan(_camera.GetHandle(), type, panStep), "Failed to set the camera pan type."); } @@ -987,6 +1008,7 @@ namespace Tizen.Multimedia /// The camera already has been disposed. public void SetTilt(CameraPtzMoveType type, int tiltStep) { + ValidationUtil.ValidateEnum(typeof(CameraPtzMoveType), type, nameof(type)); CameraErrorFactory.ThrowIfError(Native.SetTilt(_camera.GetHandle(), type, tiltStep), "Failed to set the camera tilt type\t."); } @@ -1191,6 +1213,7 @@ namespace Tizen.Multimedia set { + ValidationUtil.ValidateEnum(typeof(CameraTagOrientation), value); CameraErrorFactory.ThrowIfError(Native.SetTagOrientation(_camera.GetHandle(), value), "Failed to set camera tag orientation."); } diff --git a/src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs b/src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs old mode 100644 new mode 100755 index acee380..3262afe --- a/src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs +++ b/src/Tizen.Multimedia.Camera/Interop/Interop.Camera.cs @@ -56,7 +56,7 @@ internal static partial class Interop internal delegate void DeviceStateChangedCallback(CameraDevice device, CameraDeviceState state, IntPtr userData); [DllImport(Libraries.Camera, EntryPoint = "camera_create")] - internal static extern CameraError Create(int device, out IntPtr handle); + internal static extern CameraError Create(CameraDevice device, out IntPtr handle); [DllImport(Libraries.Camera, EntryPoint = "camera_change_device")] internal static extern CameraError ChangeDevice(IntPtr handle, int device); -- 2.7.4