import { EntityEidType, BasicInfoAtomType, Coord2DType, VisibleAtomType, EntityOutlinerAtomType, MinMaxType } from '../data-type';
/**
 * @interface MeshHeatMapAtomType
 * @param {Array<{point: Array<number>, value: number}>} pointData // 用于生成mesh的点数据数组
 * @param {Array<Coord2DType>} meshBoundary // 用于限制Mesh边界的多边形，至少三个点，为空时默认生成矩形范围的Mesh
 * @param {number} pointCoordZ // 点的高度值
 * @param {number} meshGridSpace // 网格单元大小，用于控制生成的Mesh密度，值越小密度越大越光滑，但是相应性能消耗较大
 * @param {MinMaxType} mappingValueRange // 点业务值有效范围，用于截取业务值，Range为空时默认不截取
 * @param {MinMaxType} mappingHeightRange // 点业务值映射的Mesh高度变化范围，范围越大Mesh起伏越大
 * @param {Array<string>} gradientSetting // 业务值映射颜色渐变设置，基于给定的颜色数组线性插值颜色，至少要有两个颜色
 * @param {number} opacity // 热力图茎体透明度，范围0-1
 */
export interface MeshHeatMapAtomType {
    pointData: Array<{
        point: Coord2DType;
        value: number;
    }>;
    meshBoundary: Array<Coord2DType>;
    pointCoordZ: number;
    meshGridSpace: number;
    mappingValueRange: MinMaxType;
    mappingHeightRange: MinMaxType;
    gradientSetting: Array<string>;
    opacity: number;
}
/**
 * @interface MeshHeatMapType
 * @extends EntityEidType,Partial<BasicInfoAtomType>,Partial<VisibleAtomType>,Partial<EntityOutlinerAtomType>
 * @param {Partial<MeshHeatMapAtomType>} meshHeatMapStyle (optional)
 */
export interface MeshHeatMapType extends EntityEidType, Partial<BasicInfoAtomType>, Partial<VisibleAtomType>, Partial<EntityOutlinerAtomType> {
    meshHeatMapStyle?: Partial<MeshHeatMapAtomType>;
}
/**
 * @interface IGenerate
 * @param {Partial<MeshHeatMapAtomType>} HeatMapEntityAtom (optional)
 * @param {Partial<BasicInfoAtomType>} BasicInfoAtom (optional)
 * @param {Partial<VisibleAtomType>} VisibleAtom (optional)
 * @param {Partial<EntityOutlinerAtomType>} EntityOutlinerAtom (optional)
 */
export interface IGenerate {
    MeshHeatMapAtom?: Partial<MeshHeatMapAtomType>;
    BasicInfoAtom?: Partial<BasicInfoAtomType>;
    VisibleAtom?: Partial<VisibleAtomType>;
    EntityOutlinerAtom?: Partial<EntityOutlinerAtomType>;
}
