import { ScreenBounds } from "../common/screen-bounds"; import { ScreenXY } from "../common/screen-xy"; /** * 符号基类 * @remarks * 如按现实世界来抽取对象基类,下述属性不应放在基类 * 但考虑到Canvas的上下文设定,才决定抽取到基类 */ export declare abstract class Symbol { /** * 线宽 */ lineWidth: number; stroke: boolean; /** * 描边样式 */ strokeStyle: string; strokeColor: string; strokeOpacity: number; fill: boolean; /** * 填充样式 */ fillStyle: string; fillColor: string; fillOpacity: number; get weight(): number; set weight(value: number); } /** * 点符号基类 */ export declare abstract class PointSymbol extends Symbol { /** * 绘制点(虚函数) * @param {CanvasRenderingContext2D} ctx - 绘图上下文 * @param {ScreenXY} screenXY - 屏幕坐标 */ abstract draw(ctx: CanvasRenderingContext2D, screenXY: ScreenXY): any; /** * 获取包络矩形 * @param {ScreenXY} screenXY - 屏幕坐标 */ abstract getScreenBounds(screenXY: ScreenXY): any; } /** * 线符号基类 */ export declare abstract class LineSymbol extends Symbol { lineWidth: number; /** * 绘制线(虚函数) * @param {CanvasRenderingContext2D} ctx - 绘图上下文 * @param {number[][]} screenXYs - 线对应坐标点的屏幕坐标集合 */ abstract draw(ctx: CanvasRenderingContext2D, screenXYs: ScreenXY[]): any; /** * 获取包络矩形 * @param {ScreenXY[]} screenXYs - 线对应坐标点的屏幕坐标集合 */ abstract getScreenBounds(screenXYs: ScreenXY[]): any; } /** * 面符号基类 * @remarks * aka 填充符号 */ export declare abstract class FillSymbol extends Symbol { /** * 绘制面(虚函数) * @param {CanvasRenderingContext2D} ctx - 绘图上下文 * @param {number[][][]} screenXYs - 面对应坐标点的屏幕坐标集合 */ abstract draw(ctx: CanvasRenderingContext2D, screenXYs: ScreenXY[][]): any; /** * 获取包络矩形 * @param {ScreenXY[][]} screenXYs - 面对应坐标点的屏幕坐标集合 */ abstract getScreenBounds(screenXYs: ScreenXY[][]): any; } /** * 简单圆点符号 * @remarks * 最常用的点符号 */ export declare class SimplePointSymbol extends PointSymbol { /** * 圆点半径,像素值 */ radius: number; /** * 绘制点 * @param {CanvasRenderingContext2D} ctx - 绘图上下文 * @param {number} screenX - 屏幕坐标X * @param {number} screenY - 屏幕坐标Y */ draw(ctx: CanvasRenderingContext2D, screenXY: ScreenXY): void; /** * 获取包络矩形 * @param {ScreenXY} screenXY - 屏幕坐标 */ getScreenBounds(screenXY: ScreenXY): ScreenBounds; } /** * 图标符号 * @remarks * 常用于POI兴趣点的渲染 */ export declare class SimpleMarkerSymbol extends PointSymbol { /** * 宽 */ width: number; /** * 高 */ height: number; /** * offset,坐标点对应图标的位置 * 例如,宽16px,高16px,offsetX为-8,offsetY为-8: * 该图标的中心点对应渲染点的坐标。 */ offsetX: number; /** * offset,坐标点对应图标的位置 * 例如,宽16px,高16px,offsetX为-8,offsetY为-8: * 该图标的中心点对应渲染点的坐标。 */ offsetY: number; /** * 图标位图 */ image: ImageBitmap | HTMLImageElement; /** * 图标url */ url: string; private _loaded; /** * 记录是否已完成异步图标加载 */ get loaded(): boolean; /** * 异步加载图标 * @return {Color} 生成随机色带 */ load(): Promise; /** * 绘制图标 * @remarks * 注意异步加载 * @param {CanvasRenderingContext2D} ctx - 绘图上下文 * @param {ScreenXY} screenXY - 屏幕坐标 */ draw(ctx: CanvasRenderingContext2D, screenXY: ScreenXY): void; /** * 获取包络矩形 * @param {ScreenXY} screenXY - 屏幕坐标 */ getScreenBounds(screenXY: ScreenXY): ScreenBounds; } /** * 简单线符号 * @remarks * 最常用的线符号 */ export declare class SimpleLineSymbol extends LineSymbol { /** * 绘制线 * @param {CanvasRenderingContext2D} ctx - 绘图上下文 * @param {ScreenXY[]} screenXYs - 线对应坐标点的屏幕坐标集合 */ draw(ctx: CanvasRenderingContext2D, screenXYs: ScreenXY[]): void; /** * 获取包络矩形 * @param {ScreenXY[]} screenXYs - 线对应坐标点的屏幕坐标集合 */ getScreenBounds(screenXYs: ScreenXY[]): ScreenBounds; } /** * 简单面符号 * @remarks * 最常用的面填充符号 */ export declare class SimpleFillSymbol extends FillSymbol { /** * 绘制面 * @remarks * 奇偶填充 * https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/fill * @param {CanvasRenderingContext2D} ctx - 绘图上下文 * @param {ScreenXY[][]} screenXYs - 面对应坐标点的屏幕坐标集合 */ draw(ctx: CanvasRenderingContext2D, screenXYs: ScreenXY[][]): void; /** * 获取包络矩形 * @param {ScreenXY[][]} screenXYs - 面对应坐标点的屏幕坐标集合 */ getScreenBounds(screenXYs: ScreenXY[][]): ScreenBounds; }