/// Gets or sets the various camera settings.
/// </summary>
/// <since_tizen> 4 </since_tizen>
- public CameraSettings Settings { get; }
+ public CameraSettings Settings { get; internal set; }
/// <summary>
/// Gets the various camera capabilities.
/// </summary>
/// <since_tizen> 4 </since_tizen>
- public CameraCapabilities Capabilities { get; }
+ public CameraCapabilities Capabilities { get; internal set; }
/// <summary>
/// Get/set various camera display properties.
/// </summary>
/// <since_tizen> 3 </since_tizen>
- public CameraDisplaySettings DisplaySettings { get; }
+ public CameraDisplaySettings DisplaySettings { get; internal set; }
private Display _display;
using System;
using System.Collections.Generic;
+using System.ComponentModel;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
{
private IntPtr _handle = IntPtr.Zero;
private bool _disposed = false;
+ private bool _initialized = false;
private CameraState _state = CameraState.None;
/// <summary>
/// </summary>
/// <param name="device">The camera device to access.</param>
/// <exception cref="ArgumentException">Invalid CameraDevice type.</exception>
+ /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
/// <exception cref="NotSupportedException">The camera feature is not supported.</exception>
/// <since_tizen> 3 </since_tizen>
/// <feature> http://tizen.org/feature/camera </feature>
{
Native.Create(device, out _handle).ThrowIfFailed("Failed to create camera instance");
+ Initialize();
+ }
+
+ /// <summary>
+ /// Initializes a new instance of the <see cref="Camera"/> class with <see cref="CameraDeviceType"/>.
+ /// </summary>
+ /// <param name="device">The camera device to access.</param>
+ /// <param name="type">Indicates whether this is network camera or not.</param>
+ /// <exception cref="ArgumentException">Invalid CameraDevice or CameraDeviceType.</exception>
+ /// <exception cref="InvalidOperationException">In case of any invalid operations.</exception>
+ /// <exception cref="NotSupportedException">The camera feature is not supported.</exception>
+ /// <since_tizen> 9 </since_tizen>
+ /// <feature> http://tizen.org/feature/camera </feature>
+ [EditorBrowsable(EditorBrowsableState.Never)]
+ public Camera(CameraDevice device, CameraDeviceType type)
+ {
+ ValidationUtil.ValidateEnum(typeof(CameraDevice), device, nameof(device));
+ ValidationUtil.ValidateEnum(typeof(CameraDeviceType), type, nameof(type));
+
+ if (type == CameraDeviceType.BuiltIn)
+ {
+ Native.Create(device, out _handle).ThrowIfFailed("Failed to create camera instance");
+ }
+ else if (type == CameraDeviceType.Network)
+ {
+ Native.CreateNetworkCamera(device, out _handle).ThrowIfFailed("Failed to create network camera instance");
+ }
+ // USB camera doesn't support here.
+
+ Initialize();
+ }
+
+ private void Initialize()
+ {
+ if (_initialized)
+ {
+ throw new InvalidOperationException("It has already been initialized.");
+ }
+
Capabilities = new CameraCapabilities(this);
Settings = new CameraSettings(this);
DisplaySettings = new CameraDisplaySettings(this);
RegisterCallbacks();
SetState(CameraState.Created);
+
+ _initialized = true;
}
/// <summary>
}
#endregion Dispose support
- #region Check camera state
internal void ValidateState(params CameraState[] required)
{
ValidateNotDisposed();
{
_state = state;
}
- #endregion Check camera state
-
-
- #region Methods
/// <summary>
/// Changes the camera device.
/// </summary>
_faceDetectedCallback = null;
}
- #endregion Methods
}
}