using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace LB_SmartVisionCameraSDK.PHM6000
{
///
/// LBPointZ数据结构
///
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct LBPointZ
{
///
/// Z坐标值
///
public float z;
}
///
/// LBPointXZ数据结构
///
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct LBPointXZ
{
///
/// X坐标值
///
public float x;
///
/// Z坐标值
///
public float z;
}
///
/// LBPointXYZ数据结构
///
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct LBPointXYZ
{
///
/// X坐标值
///
public float x;
///
/// Y坐标值
///
public float y;
///
/// Z坐标值
///
public float z;
}
///
/// LBPointXYZBGR数据结构
///
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct LBPointXYZBGR
{
///
/// X坐标值
///
public float x;
///
/// Y坐标值
///
public float y;
///
/// Z坐标值
///
public float z;
///
/// 蓝色分量
///
public byte b;
///
/// 绿色分量
///
public byte g;
///
/// 红色分量
///
public byte r;
}
///
/// LBPointXYZBGRA数据结构
///
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct LBPointXYZBGRA
{
///
/// X坐标值
///
public float x;
///
/// Y坐标值
///
public float y;
///
/// Z坐标值
///
public float z;
///
/// 蓝色分量
///
public byte b;
///
/// 绿色分量
///
public byte g;
///
/// 红色分量
///
public byte r;
///
/// 透明度
///
public byte alpha;
}
///
/// LBPointBGRA数据结构
///
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct LBPointBGRA
{
///
/// 蓝色分量
///
public byte b;
///
/// 绿色分量
///
public byte g;
///
/// 红色分量
///
public byte r;
///
/// 透明度
///
public byte alpha;
}
///
/// LBPointZA数据结构
///
[StructLayout(LayoutKind.Sequential, Pack = 1)]
public struct LBPointZA
{
///
/// Z坐标值
///
public float z;
///
/// 保留1
///
public byte reserve1;
///
/// 保留2
///
public byte reserve2;
///
/// 保留3
///
public byte reserve3;
///
/// 透明度
///
public byte alpha;
}
///
/// BITMAPINFOHEADER数据结构
///
[StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFOHEADER
{
///
/// 指定结构所需的字节数。 此值不包括颜色表的大小或颜色掩码的大小(如果它们追加到结构的末尾)。
///
public uint biSize;
///
/// 指定位图的宽度(以像素为单位)
///
public int biWidth;
///
/// 指定位图的高度(以像素为单位)。
///
public int biHeight;
///
/// 指定目标设备的平面数。 此值必须设置为 1。
///
public ushort biPlanes;
///
/// 指定每像素 (bpp) 位数。 对于未压缩格式,此值是每像素的平均位数。 对于压缩格式,此值是解码图像后未压缩图像的隐含位深度。
///
public ushort biBitCount;
///
/// 对于压缩视频和 YUV 格式,此成员是 FOURCC 代码,以小端顺序指定为 DWORD 。
///
public uint biCompression;
///
/// 指定图像的大小(以字节为单位)。 对于未压缩的 RGB 位图,可以将其设置为 0。
///
public uint biSizeImage;
///
/// 指定位图的目标设备的水平分辨率(以像素/米为单位)。
///
public int biXPelsPerMeter;
///
/// 指定位图的目标设备的垂直分辨率(以每米像素为单位)。
///
public int biYPelsPerMeter;
///
/// 指定位图实际使用的颜色表中的颜色索引数。
///
public uint biClrUsed;
///
/// 指定被认为对显示位图很重要的颜色索引数。
///
public uint biClrImportant;
}
///
/// RGBQUAD数据结构
///
[StructLayout(LayoutKind.Sequential)]
public struct RGBQUAD
{
///
/// 蓝色的强度。
///
public byte rgbBlue;
///
/// 绿色的颜色强度。
///
public byte rgbGreen;
///
/// 红色的强度。
///
public byte rgbRed;
///
/// 此成员为保留成员,必须为零。
///
public byte rgbReserved;
}
// 正确实现 BITMAPINFO 结构体
///
/// BITMAPINFO数据结构体
///
[StructLayout(LayoutKind.Sequential)]
public struct BITMAPINFO
{
///
/// 一个 BITMAPINFOHEADER 结构,其中包含有关颜色格式维度的信息。
///
public BITMAPINFOHEADER bmiHeader;
// 使用 InlineArray 特性处理可变长度颜色表
///
/// RGBQUAD 数组。 构成颜色表的数组的元素。
///
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
public RGBQUAD[] bmiColors;
}
}