using UnityEngine;
using System;
namespace LightGlue.Unity.Config
{
///
/// 图像传输配置参数
/// 根据协议说明_V1.0_20250303定义
///
[System.Serializable]
public class ImageTransmissionConfig
{
[Header("图像参数")]
[Tooltip("图片分辨率选择(硬件分辨率枚举:QQVGA/QVGA/VGA/SVGA/XGA/HD/SXGA/UXGA)")]
public ImageResolution resolution = ImageResolution.QVGA_320x240;
[Tooltip("图片质量 (0-60,硬件直接使用该值,十进制输入,内部按十六进制发送)")]
[Range(0, 60)]
public int quality = 20;
[Header("传输参数")]
[Tooltip("上报时间间隔 (毫秒)")]
[Min(0)]
public int reportIntervalMs = 10;
[Tooltip("开启图片传输开关")]
public bool enableImageTransmission = true;
///
/// 获取分辨率的宽度
///
public int GetWidth()
{
return resolution switch
{
ImageResolution.QQVGA_160x120 => 160,
ImageResolution.QVGA_320x240 => 320,
ImageResolution.VGA_640x480 => 640,
ImageResolution.SVGA_800x600 => 800,
ImageResolution.XGA_1024x768 => 1024,
ImageResolution.HD_1280x720 => 1280,
ImageResolution.SXGA_1280x1024 => 1280,
ImageResolution.UXGA_1600x1200 => 1600,
_ => 640
};
}
///
/// 获取分辨率的高度
///
public int GetHeight()
{
return resolution switch
{
ImageResolution.QQVGA_160x120 => 120,
ImageResolution.QVGA_320x240 => 240,
ImageResolution.VGA_640x480 => 480,
ImageResolution.SVGA_800x600 => 600,
ImageResolution.XGA_1024x768 => 768,
ImageResolution.HD_1280x720 => 720,
ImageResolution.SXGA_1280x1024 => 1024,
ImageResolution.UXGA_1600x1200 => 1200,
_ => 480
};
}
///
/// 获取分辨率字符串 (格式: "宽度x高度")
///
public string GetResolutionString()
{
return $"{GetWidth()}x{GetHeight()}";
}
///
/// 转换为硬件协议分辨率枚举值(十六进制)
/// 硬件分辨率枚举:
/// 1-QQVGA: 160X120
/// 6-QVGA: 320X240
/// 10-VGA: 640X480
/// 11-SVGA: 800X600
/// 12-XGA: 1024X768
/// 13-HD: 1280x720
/// 14-SXGA: 1280X1024
/// 15-UXGA: 1600X1200
///
public byte GetHardwareResolutionCode()
{
// 映射Unity分辨率到硬件分辨率枚举值
return resolution switch
{
ImageResolution.QQVGA_160x120 => 0x01, // 1-QQVGA: 160X120
ImageResolution.QVGA_320x240 => 0x06, // 6-QVGA: 320X240
ImageResolution.VGA_640x480 => 0x0A, // 10-VGA: 640X480
ImageResolution.SVGA_800x600 => 0x0B, // 11-SVGA: 800X600
ImageResolution.XGA_1024x768 => 0x0C, // 12-XGA: 1024X768
ImageResolution.HD_1280x720 => 0x0D, // 13-HD:1280x720
ImageResolution.SXGA_1280x1024 => 0x0E, // 14-SXGA: 1280X1024
ImageResolution.UXGA_1600x1200 => 0x0F, // 15-UXGA: 1600X1200
_ => 0x0A // 默认VGA
};
}
///
/// 将质量值(0-100)转换为硬件清晰度值(0-63,十六进制)
/// 硬件质量范围:0-63
///
public byte GetHardwareQuality()
{
// UI中直接使用0-63,与硬件保持一致
return (byte)Mathf.Clamp(quality, 0, 63);
}
}
///
/// 图片分辨率选项(与硬件分辨率枚举一一对应)
/// 1-QQVGA: 160X120
/// 6-QVGA: 320X240
/// 10-VGA:640X480
/// 11-SVGA: 800X600
/// 12-XGA: 1024X768
/// 13-HD:1280x720
/// 14-SXGA: 1280X1024
/// 15-UXGA: 1600X1200
///
public enum ImageResolution
{
QQVGA_160x120 = 0,
QVGA_320x240 = 1,
VGA_640x480 = 2,
SVGA_800x600 = 3,
XGA_1024x768 = 4,
HD_1280x720 = 5,
SXGA_1280x1024 = 6,
UXGA_1600x1200 = 7
}
}