/** @module McGiWorldDraw*/ import McGiWorldDrawType from '../McGiWorldDrawType'; import MxDbEntity from '../MxDbEntity'; import MxDrawObject from '../MxDrawObject'; import { UnstableColor } from '../MxType'; /** * McGiWorldDraw 用于构建一个动态绘制回调对象的规范接口 * @abstract 是 {@link MxDbEntity.worldDraw }必须实现的抽象回调方法中的回调对象 通过回调对象完成一些动态绘制任务 * @example ```typescript * * ``` */ export default interface McGiWorldDraw { /** * 得到WorldDraw的绘制类型. * @returns McGiWorldDrawType * @example * ``` typescript * * ``` * */ getType(): McGiWorldDrawType; /** * 绘制一个Three.js对象 * @param ent Three.js对象 * @returns void * @example * ``` typescript * * ``` * */ drawEntity(ent: THREE.Object3D): void; /** * 返回动态绘制的控件对像 * @returns MxDrawObject * @example * ``` typescript * * ``` * */ getMxObject(): MxDrawObject; /** * 设置绘制颜色 * @param iColor 颜色值 * @returns * @example * ``` typescript * * ``` * */ setColor(iColor: UnstableColor): void; /** * 返回绘制颜色 * @returns * @example * ``` typescript * * ``` * */ getColor(): number; /** * 设置绘制的线宽 * @returns * @example * ``` typescript * * ``` * */ setLineWidth(iLineWidth: number): void; /** * 返回绘制的线宽 * @returns * @example * ``` typescript * * ``` * */ getLineWidth(): number; /** * 绘制直线 * @param pt1 第一个点 THREE.Vector3 * @param pt2 第二个点 * @returns * @example * ``` typescript * * ``` * */ drawLine(pt1: THREE.Vector3 | number, pt2: THREE.Vector3 | number, x2?: number, y2?: number): void; /** * 绘制连续的直线 * @param points 点数组 * @returns * @example * ``` typescript * * ``` * */ drawLines(points: THREE.Vector3[] | THREE.Vector2[]): void; /** * 根据几何数据绘制直线 * @param points 点数组 * @returns * @example * ``` typescript * * ``` * */ drawGeometryLines(geometry: THREE.Geometry): void; /** * 绘制圆 * @param cen 圆的中心点 THREE.Vector3 * @param dRadius 圆的半径 * @returns * @example * ``` typescript * * ``` * */ drawCircle(cen: THREE.Vector3, dRadius: number): void; /** * 绘文本 * @param sText 文本信息 * @param iSize 文字大小 * @param dAngle 角度 * @param pt 位置 * @returns * @example * ``` typescript * * ``` * */ drawText(sText: string, iSize: number, dAngle: number, pt: THREE.Vector3, width?: number, callGetFontStyle?: (iFontSize: number) => string): THREE.Sprite | null; /** * 设置DrawOrder,默认值为100. * @returns * @example * ``` typescript * * ``` * */ setRenderOrder(iRenderOrder: number): void; /** * 得到DrawOrder * @returns * @example * ``` typescript * * ``` * */ getRenderOrder(): number; /** * 设置宽度单位是屏幕像素,默认是屏幕像素,设置false,单位是Threejs坐标。 * @returns * @example * ``` typescript * * ``` * */ setLineWidthIsPixels(isPixels: boolean): void; /** * 得到宽度单位 * @returns * @example * ``` typescript * * ``` * */ getLineWidthIsPixels(): boolean; /** * 设置虚线显示数据。 * @returns * @example * ``` typescript * * ``` * */ setDash(dDashArray: number, dDashRatio: number): void; /** * 得到虚线显示数据。 * @returns * @example * ``` typescript * * ``` * */ getDash(): any; /** * 设置虚线显示 * @returns * @example * ``` typescript * * ``` * */ setDashLineDisplay(isDashLine: boolean): void; /** *是否虚线显示 * @returns * @example * ``` typescript * * ``` * */ isDashLineDisplay(): boolean; /** *绘制选择线。 * @returns * @example * ``` typescript * * ``` * */ drawSelectLine(pt1: THREE.Vector3 | number, pt2: THREE.Vector3 | number, x2?: number, y2?: number): void; /** * 设置变换矩阵 * @param */ setMatrix(matrix: THREE.Matrix4 | null): void; /** * 返回变换矩阵 * @param */ getMatrix(): THREE.Matrix4 | null; /** *设置透明度 * @returns * @example * ``` typescript * * ``` * */ setOpacity(opacity: number): void; /** *返回透明度 * @returns * @example * ``` typescript * * ``` * */ getOpacity(): number; /** *绘制纯色填充 * @returns * @example * ``` typescript * * ``` * */ drawSolid(points: THREE.Vector3[]): void; /** *把一个对象的绘图属性设置到当前绘图上下文 * @returns * @example * ``` typescript * * ``` * */ setupForEntity(ent: MxDbEntity): void; /** *设置drawEntity函数,绘制的three.js对象,附加一个扩展数据,方便在后续选择对象,得到该扩展数据.、 *只会对一次的drawEntity调用有效. * @returns * @example * ``` typescript * * ``` * */ setXData(xData: any): void; }