You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
3.7 KiB
113 lines
3.7 KiB
// License: Apache 2.0. See LICENSE file in root directory.
|
|
// Copyright(c) 2017 Intel Corporation. All Rights Reserved.
|
|
|
|
namespace Intel.RealSense
|
|
{
|
|
using System;
|
|
using System.Diagnostics;
|
|
using System.Runtime.InteropServices;
|
|
|
|
[DebuggerDisplay("{Value}", Name = "{Key}")]
|
|
internal sealed class OptionInternal : IOption
|
|
{
|
|
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
private readonly IntPtr m_options;
|
|
|
|
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
private readonly Option option;
|
|
|
|
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
private readonly float min;
|
|
|
|
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
private readonly float max;
|
|
|
|
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
private readonly float step;
|
|
|
|
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
private readonly float @default;
|
|
|
|
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
|
|
private string description;
|
|
|
|
internal OptionInternal(IntPtr options, Option option)
|
|
{
|
|
m_options = options;
|
|
this.option = option;
|
|
|
|
object error;
|
|
NativeMethods.rs2_get_option_range(m_options, option, out min, out max, out step, out @default, out error);
|
|
}
|
|
|
|
/// <summary>Gets the option description</summary>
|
|
/// <value>human-readable option description</value>
|
|
public string Description
|
|
{
|
|
get
|
|
{
|
|
if (description == null)
|
|
{
|
|
object error;
|
|
var str = NativeMethods.rs2_get_option_description(m_options, option, out error);
|
|
description = Marshal.PtrToStringAnsi(str);
|
|
}
|
|
|
|
return description;
|
|
}
|
|
}
|
|
|
|
/// <summary>Gets or sets option value</summary>
|
|
/// <value>value of the option</value>
|
|
public float Value
|
|
{
|
|
get
|
|
{
|
|
object error;
|
|
return NativeMethods.rs2_get_option(m_options, option, out error);
|
|
}
|
|
|
|
set
|
|
{
|
|
object error;
|
|
NativeMethods.rs2_set_option(m_options, option, value, out error);
|
|
}
|
|
}
|
|
|
|
/// <summary>get option value description (in case specific option value hold special meaning)</summary>
|
|
/// <param name="value">value of the option</param>
|
|
/// <returns>human-readable description of a specific value of an option or null if no special meaning</returns>
|
|
public string GetValueDescription(float value)
|
|
{
|
|
object error;
|
|
var str = NativeMethods.rs2_get_option_value_description(m_options, option, value, out error);
|
|
return Marshal.PtrToStringAnsi(str);
|
|
}
|
|
|
|
public Option Key => option;
|
|
|
|
public float Min => min;
|
|
|
|
public float Max => max;
|
|
|
|
public float Step => step;
|
|
|
|
public float Default => @default;
|
|
|
|
/// <summary>Gets the option value description (in case specific option value hold special meaning)</summary>
|
|
/// <value>human-readable description of a specific value of an option or null if no special meaning</value>
|
|
public string ValueDescription => GetValueDescription(Value);
|
|
|
|
/// <summary>Gets a value indicating whether an option is read-only</summary>
|
|
/// <value><see langword="true"/> if option is read-only</value>
|
|
public bool ReadOnly
|
|
{
|
|
get
|
|
{
|
|
object error;
|
|
return NativeMethods.rs2_is_option_read_only(m_options, option, out error) != 0;
|
|
}
|
|
}
|
|
}
|
|
}
|