zkqh-canvas-select-one 2.32.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +288 -0
- package/lib/EventBus.d.ts +21 -0
- package/lib/canvas-select.esm.js +8 -0
- package/lib/canvas-select.esm.js.map +1 -0
- package/lib/canvas-select.min.js +8 -0
- package/lib/canvas-select.min.js.map +1 -0
- package/lib/index.d.ts +438 -0
- package/lib/shape/Brush.d.ts +9 -0
- package/lib/shape/Circle.d.ts +7 -0
- package/lib/shape/Dot.d.ts +5 -0
- package/lib/shape/Ellipse.d.ts +11 -0
- package/lib/shape/Eraser.d.ts +8 -0
- package/lib/shape/Grid.d.ts +12 -0
- package/lib/shape/Line.d.ts +6 -0
- package/lib/shape/Polygon.d.ts +6 -0
- package/lib/shape/Rect.d.ts +12 -0
- package/lib/shape/Shape.d.ts +42 -0
- package/lib/tools.d.ts +1 -0
- package/package.json +52 -0
package/lib/index.d.ts
ADDED
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
import Rect from "./shape/Rect";
|
|
2
|
+
import Polygon from "./shape/Polygon";
|
|
3
|
+
import Dot from "./shape/Dot";
|
|
4
|
+
import EventBus from "./EventBus";
|
|
5
|
+
import Line from "./shape/Line";
|
|
6
|
+
import Circle from "./shape/Circle";
|
|
7
|
+
import Grid from "./shape/Grid";
|
|
8
|
+
import Brush from "./shape/Brush";
|
|
9
|
+
import Eraser from "./shape/Eraser";
|
|
10
|
+
import Ellipse from "./shape/Ellipse";
|
|
11
|
+
export type Point = [number, number];
|
|
12
|
+
export type AllShape = Rect | Polygon | Dot | Line | Circle | Grid | Brush | Eraser | Ellipse;
|
|
13
|
+
declare enum Shape {
|
|
14
|
+
None = 0,
|
|
15
|
+
Rect = 1,
|
|
16
|
+
Polygon = 2,
|
|
17
|
+
Dot = 3,
|
|
18
|
+
Line = 4,
|
|
19
|
+
Circle = 5,
|
|
20
|
+
Grid = 6,
|
|
21
|
+
Brush = 7,
|
|
22
|
+
Eraser = 8,
|
|
23
|
+
Ellipse = 9
|
|
24
|
+
}
|
|
25
|
+
export default class CanvasSelect extends EventBus {
|
|
26
|
+
/** 当前版本 */
|
|
27
|
+
version: string;
|
|
28
|
+
/** 只读模式,画布不允许任何交互 */
|
|
29
|
+
lock: boolean;
|
|
30
|
+
/** 只读模式,仅支持查看 */
|
|
31
|
+
readonly: boolean;
|
|
32
|
+
/** 最小矩形宽度 */
|
|
33
|
+
MIN_WIDTH: number;
|
|
34
|
+
/** 最小矩形高度 */
|
|
35
|
+
MIN_HEIGHT: number;
|
|
36
|
+
/** 最小圆形半径 */
|
|
37
|
+
MIN_RADIUS: number;
|
|
38
|
+
/** 多边形最大点数 */
|
|
39
|
+
MAX_POLYGON_POINTS: number;
|
|
40
|
+
/** 边线颜色 */
|
|
41
|
+
strokeStyle: string;
|
|
42
|
+
/** 填充颜色 */
|
|
43
|
+
fillStyle: string;
|
|
44
|
+
/** 边线宽度 */
|
|
45
|
+
lineWidth: number;
|
|
46
|
+
/** 当前选中的标注边线颜色 */
|
|
47
|
+
activeStrokeStyle: string;
|
|
48
|
+
/** 当前选中的标注填充颜色 */
|
|
49
|
+
activeFillStyle: string;
|
|
50
|
+
/** 控制点边线颜色 */
|
|
51
|
+
ctrlStrokeStyle: string;
|
|
52
|
+
/** 控制点填充颜色 */
|
|
53
|
+
ctrlFillStyle: string;
|
|
54
|
+
/** 控制点半径 */
|
|
55
|
+
ctrlRadius: number;
|
|
56
|
+
/** 是否隐藏标签 */
|
|
57
|
+
hideLabel: boolean;
|
|
58
|
+
/** 标签背景填充颜色 */
|
|
59
|
+
labelFillStyle: string;
|
|
60
|
+
/** 标签字体 */
|
|
61
|
+
labelFont: string;
|
|
62
|
+
/** 标签文字颜色 */
|
|
63
|
+
textFillStyle: string;
|
|
64
|
+
/** 标签字符最大长度,超出使用省略号 */
|
|
65
|
+
labelMaxLen: number;
|
|
66
|
+
/** 画布宽度 */
|
|
67
|
+
WIDTH: number;
|
|
68
|
+
maxPolygonPoint: number;
|
|
69
|
+
/** 画布高度 */
|
|
70
|
+
HEIGHT: number;
|
|
71
|
+
/** XY十字坐标 */
|
|
72
|
+
crossX: Line;
|
|
73
|
+
crossY: Line;
|
|
74
|
+
crossStroke: string;
|
|
75
|
+
/** 开启十字辅助 */
|
|
76
|
+
showCross: boolean;
|
|
77
|
+
/** 开启矩形旋转控制点 */
|
|
78
|
+
showRotation: boolean;
|
|
79
|
+
canvas: HTMLCanvasElement | undefined;
|
|
80
|
+
ctx: CanvasRenderingContext2D | null | undefined;
|
|
81
|
+
/** 所有标注数据 */
|
|
82
|
+
dataset: AllShape[];
|
|
83
|
+
offScreen: HTMLCanvasElement | undefined;
|
|
84
|
+
offScreenCtx: CanvasRenderingContext2D | null | undefined;
|
|
85
|
+
magnifierCanvas: HTMLCanvasElement | undefined;
|
|
86
|
+
magnifierCtx: CanvasRenderingContext2D | undefined;
|
|
87
|
+
isMagnifierVisible: boolean;
|
|
88
|
+
magnifierPosition: Point | "auto";
|
|
89
|
+
/** 记录锚点距离 */
|
|
90
|
+
remmber: number[][];
|
|
91
|
+
/** 记录鼠标位置 */
|
|
92
|
+
mouse: Point;
|
|
93
|
+
/** 记录背景图鼠标位移 */
|
|
94
|
+
remmberOrigin: number[];
|
|
95
|
+
/** 0 不创建,1 矩形,2 多边形,3 点,4 折线,5 圆,6 网格 */
|
|
96
|
+
createType: Shape;
|
|
97
|
+
/** 控制点索引 */
|
|
98
|
+
ctrlIndex: number;
|
|
99
|
+
/** 背景图片 */
|
|
100
|
+
image: HTMLImageElement;
|
|
101
|
+
/** 图片原始宽度 */
|
|
102
|
+
IMAGE_ORIGIN_WIDTH: number;
|
|
103
|
+
/** 图片缩放宽度 */
|
|
104
|
+
IMAGE_WIDTH: number;
|
|
105
|
+
/** 图片原始高度 */
|
|
106
|
+
IMAGE_ORIGIN_HEIGHT: number;
|
|
107
|
+
/** 图片缩放高度 */
|
|
108
|
+
IMAGE_HEIGHT: number;
|
|
109
|
+
/** 原点x */
|
|
110
|
+
originX: number;
|
|
111
|
+
/** 原点y */
|
|
112
|
+
originY: number;
|
|
113
|
+
/** 缩放步长 */
|
|
114
|
+
scaleStep: number;
|
|
115
|
+
/** 滚动缩放 */
|
|
116
|
+
scrollZoom: boolean;
|
|
117
|
+
private timer;
|
|
118
|
+
/** 最小touch双击时间 */
|
|
119
|
+
dblTouch: number;
|
|
120
|
+
/** 记录touch双击开始时间 */
|
|
121
|
+
dblTouchStore: number;
|
|
122
|
+
/** 这个选项可以帮助浏览器进行内部优化 */
|
|
123
|
+
alpha: boolean;
|
|
124
|
+
/** 专注模式 */
|
|
125
|
+
focusMode: boolean;
|
|
126
|
+
/** 触控缩放时记录上一次两点距离 */
|
|
127
|
+
scaleTouchStore: number;
|
|
128
|
+
/** 当前是否为双指触控 */
|
|
129
|
+
isTouch2: boolean;
|
|
130
|
+
isMobile: boolean;
|
|
131
|
+
/** 向上展示label */
|
|
132
|
+
labelUp: boolean;
|
|
133
|
+
private isCtrlKey;
|
|
134
|
+
/** 自定义ctrl快捷键 KeyboardEvent.code */
|
|
135
|
+
ctrlCode: string;
|
|
136
|
+
/** 网格右键菜单 */
|
|
137
|
+
gridMenuEnable: boolean;
|
|
138
|
+
/** 网格选中背景填充颜色 */
|
|
139
|
+
gridSelectedFillStyle: string;
|
|
140
|
+
/** 画笔大小 */
|
|
141
|
+
brushSize: number;
|
|
142
|
+
/** 画笔颜色 */
|
|
143
|
+
brushStokeStyle: string;
|
|
144
|
+
/** 橡皮擦大小 */
|
|
145
|
+
eraserSize: number;
|
|
146
|
+
/** 标注坐标 (以背景图片左上角为原点) */
|
|
147
|
+
position: number[];
|
|
148
|
+
/**
|
|
149
|
+
* @param el Valid CSS selector string, or DOM
|
|
150
|
+
* @param src image src
|
|
151
|
+
*/
|
|
152
|
+
constructor(el: HTMLCanvasElement | string, src?: string | HTMLImageElement);
|
|
153
|
+
/** 当前当前选中的标注 */
|
|
154
|
+
get activeShape(): any;
|
|
155
|
+
/** 当前缩放比例 */
|
|
156
|
+
get scale(): number;
|
|
157
|
+
/** 图片最小边尺寸 */
|
|
158
|
+
get imageMin(): number;
|
|
159
|
+
/** 图片原始最大边尺寸 */
|
|
160
|
+
get imageOriginMax(): number;
|
|
161
|
+
/** 创建放大镜容器 */
|
|
162
|
+
createMagnifierCanvas(): void;
|
|
163
|
+
/** 创建放大镜 */
|
|
164
|
+
createMagnifier(x: number, y: number): void;
|
|
165
|
+
/** 更新放大镜 */
|
|
166
|
+
updateMagnifier(x: number, y: number): void;
|
|
167
|
+
/** 销毁放大镜 */
|
|
168
|
+
private destroyMagnifier;
|
|
169
|
+
getImageDataFromCanvas(canvas: HTMLCanvasElement, [x, y, width, height]: [number, number, number, number]): ImageData | undefined;
|
|
170
|
+
/** 合成事件 */
|
|
171
|
+
mergeEvent(e: TouchEvent | MouseEvent): {
|
|
172
|
+
mouseX: number;
|
|
173
|
+
mouseY: number;
|
|
174
|
+
mouseCX: number;
|
|
175
|
+
mouseCY: number;
|
|
176
|
+
altKey: boolean;
|
|
177
|
+
button: number;
|
|
178
|
+
buttons: number;
|
|
179
|
+
clientX: number;
|
|
180
|
+
clientY: number;
|
|
181
|
+
ctrlKey: boolean;
|
|
182
|
+
layerX: number;
|
|
183
|
+
layerY: number;
|
|
184
|
+
metaKey: boolean;
|
|
185
|
+
movementX: number;
|
|
186
|
+
movementY: number;
|
|
187
|
+
offsetX: number;
|
|
188
|
+
offsetY: number;
|
|
189
|
+
pageX: number;
|
|
190
|
+
pageY: number;
|
|
191
|
+
relatedTarget: EventTarget | null;
|
|
192
|
+
screenX: number;
|
|
193
|
+
screenY: number;
|
|
194
|
+
shiftKey: boolean;
|
|
195
|
+
x: number;
|
|
196
|
+
y: number;
|
|
197
|
+
getModifierState(keyArg: string): boolean;
|
|
198
|
+
initMouseEvent(typeArg: string, canBubbleArg: boolean, cancelableArg: boolean, viewArg: Window, detailArg: number, screenXArg: number, screenYArg: number, clientXArg: number, clientYArg: number, ctrlKeyArg: boolean, altKeyArg: boolean, shiftKeyArg: boolean, metaKeyArg: boolean, buttonArg: number, relatedTargetArg: EventTarget | null): void;
|
|
199
|
+
detail: number;
|
|
200
|
+
view: Window | null;
|
|
201
|
+
which: number;
|
|
202
|
+
initUIEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, detailArg?: number): void;
|
|
203
|
+
bubbles: boolean;
|
|
204
|
+
cancelBubble: boolean;
|
|
205
|
+
cancelable: boolean;
|
|
206
|
+
composed: boolean;
|
|
207
|
+
currentTarget: EventTarget | null;
|
|
208
|
+
defaultPrevented: boolean;
|
|
209
|
+
eventPhase: number;
|
|
210
|
+
isTrusted: boolean;
|
|
211
|
+
returnValue: boolean;
|
|
212
|
+
srcElement: EventTarget | null;
|
|
213
|
+
target: EventTarget | null;
|
|
214
|
+
timeStamp: DOMHighResTimeStamp;
|
|
215
|
+
type: string;
|
|
216
|
+
composedPath(): EventTarget[];
|
|
217
|
+
initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
|
|
218
|
+
preventDefault(): void;
|
|
219
|
+
stopImmediatePropagation(): void;
|
|
220
|
+
stopPropagation(): void;
|
|
221
|
+
NONE: 0;
|
|
222
|
+
CAPTURING_PHASE: 1;
|
|
223
|
+
AT_TARGET: 2;
|
|
224
|
+
BUBBLING_PHASE: 3;
|
|
225
|
+
} | {
|
|
226
|
+
mouseX: number;
|
|
227
|
+
mouseY: number;
|
|
228
|
+
mouseCX: number;
|
|
229
|
+
mouseCY: number;
|
|
230
|
+
altKey: boolean;
|
|
231
|
+
changedTouches: TouchList;
|
|
232
|
+
ctrlKey: boolean;
|
|
233
|
+
metaKey: boolean;
|
|
234
|
+
shiftKey: boolean;
|
|
235
|
+
targetTouches: TouchList;
|
|
236
|
+
touches: TouchList;
|
|
237
|
+
detail: number;
|
|
238
|
+
view: Window | null;
|
|
239
|
+
which: number;
|
|
240
|
+
initUIEvent(typeArg: string, bubblesArg?: boolean, cancelableArg?: boolean, viewArg?: Window | null, detailArg?: number): void;
|
|
241
|
+
bubbles: boolean;
|
|
242
|
+
cancelBubble: boolean;
|
|
243
|
+
cancelable: boolean;
|
|
244
|
+
composed: boolean;
|
|
245
|
+
currentTarget: EventTarget | null;
|
|
246
|
+
defaultPrevented: boolean;
|
|
247
|
+
eventPhase: number;
|
|
248
|
+
isTrusted: boolean;
|
|
249
|
+
returnValue: boolean;
|
|
250
|
+
srcElement: EventTarget | null;
|
|
251
|
+
target: EventTarget | null;
|
|
252
|
+
timeStamp: DOMHighResTimeStamp;
|
|
253
|
+
type: string;
|
|
254
|
+
composedPath(): EventTarget[];
|
|
255
|
+
initEvent(type: string, bubbles?: boolean, cancelable?: boolean): void;
|
|
256
|
+
preventDefault(): void;
|
|
257
|
+
stopImmediatePropagation(): void;
|
|
258
|
+
stopPropagation(): void;
|
|
259
|
+
NONE: 0;
|
|
260
|
+
CAPTURING_PHASE: 1;
|
|
261
|
+
AT_TARGET: 2;
|
|
262
|
+
BUBBLING_PHASE: 3;
|
|
263
|
+
};
|
|
264
|
+
private handleLoad;
|
|
265
|
+
private handleContextmenu;
|
|
266
|
+
private handleMousewheel;
|
|
267
|
+
private handleMouseDown;
|
|
268
|
+
private handleMouseMove;
|
|
269
|
+
private handleMouseUp;
|
|
270
|
+
private handleDblclick;
|
|
271
|
+
private handleKeydown;
|
|
272
|
+
private handleKeyup;
|
|
273
|
+
/** 初始化配置 */
|
|
274
|
+
initSetting(): void;
|
|
275
|
+
/** 初始化事件 */
|
|
276
|
+
initEvents(): void;
|
|
277
|
+
/**
|
|
278
|
+
* 添加/切换图片
|
|
279
|
+
* @param source 图片链接或图片对象
|
|
280
|
+
*/
|
|
281
|
+
setImage(source: string | HTMLImageElement): void;
|
|
282
|
+
/**
|
|
283
|
+
* 设置数据
|
|
284
|
+
* @param data Array
|
|
285
|
+
*/
|
|
286
|
+
setData(data: AllShape[]): void;
|
|
287
|
+
/**
|
|
288
|
+
* 判断是否在标注实例上
|
|
289
|
+
* @param mousePoint 点击位置
|
|
290
|
+
* @returns
|
|
291
|
+
*/
|
|
292
|
+
hitOnShape(mousePoint: Point): [number, AllShape];
|
|
293
|
+
/**
|
|
294
|
+
* 判断鼠标是否在背景图内部
|
|
295
|
+
* @param e MouseEvent
|
|
296
|
+
* @returns 布尔值
|
|
297
|
+
*/
|
|
298
|
+
isInBackground(e: MouseEvent | TouchEvent): boolean;
|
|
299
|
+
/**
|
|
300
|
+
* 判断是否在矩形内
|
|
301
|
+
* @param point 坐标
|
|
302
|
+
* @param coor 区域坐标
|
|
303
|
+
* @returns 布尔值
|
|
304
|
+
*/
|
|
305
|
+
isPointInRect(point: Point, coor: Point[]): boolean;
|
|
306
|
+
/**
|
|
307
|
+
* 判断是否在多边形内
|
|
308
|
+
* @param point 坐标
|
|
309
|
+
* @param coor 区域坐标
|
|
310
|
+
* @returns 布尔值
|
|
311
|
+
*/
|
|
312
|
+
isPointInPolygon(point: Point, coor: Point[]): boolean;
|
|
313
|
+
/**
|
|
314
|
+
* 判断是否在圆内
|
|
315
|
+
* @param point 坐标
|
|
316
|
+
* @param center 圆心
|
|
317
|
+
* @param r 半径
|
|
318
|
+
* @param needScale 是否为圆形点击检测
|
|
319
|
+
* @returns 布尔值
|
|
320
|
+
*/
|
|
321
|
+
isPointInCircle(point: Point, center: Point, r: number): boolean;
|
|
322
|
+
/**
|
|
323
|
+
* 判断是否在折线内
|
|
324
|
+
* @param point 坐标
|
|
325
|
+
* @param coor 区域坐标
|
|
326
|
+
* @returns 布尔值
|
|
327
|
+
*/
|
|
328
|
+
isPointInLine(point: Point, coor: Point[]): boolean;
|
|
329
|
+
/**
|
|
330
|
+
* 绘制矩形
|
|
331
|
+
* @param shape 标注实例
|
|
332
|
+
* @returns
|
|
333
|
+
*/
|
|
334
|
+
drawRect(shape: Rect, sub?: Record<string, any>): void;
|
|
335
|
+
/**
|
|
336
|
+
* 绘制多边形
|
|
337
|
+
* @param shape 标注实例
|
|
338
|
+
*/
|
|
339
|
+
drawPolygon(shape: Polygon): void;
|
|
340
|
+
/**
|
|
341
|
+
* 绘制点
|
|
342
|
+
* @param shape 标注实例
|
|
343
|
+
*/
|
|
344
|
+
drawDot(shape: Dot): void;
|
|
345
|
+
/**
|
|
346
|
+
* 绘制圆
|
|
347
|
+
* @param shape 标注实例
|
|
348
|
+
*/
|
|
349
|
+
drawCirle(shape: Circle): void;
|
|
350
|
+
/**
|
|
351
|
+
* 绘制椭圆
|
|
352
|
+
* @param shape 标注实例
|
|
353
|
+
*/
|
|
354
|
+
drawEllipse(shape: Ellipse): void;
|
|
355
|
+
/**
|
|
356
|
+
* 绘制折线
|
|
357
|
+
* @param shape 标注实例
|
|
358
|
+
*/
|
|
359
|
+
drawLine(shape: Line): void;
|
|
360
|
+
/**
|
|
361
|
+
* 绘制网格
|
|
362
|
+
* @param shape 标注实例
|
|
363
|
+
* @returns
|
|
364
|
+
*/
|
|
365
|
+
drawGrid(shape: Grid): void;
|
|
366
|
+
/**
|
|
367
|
+
* 绘制画笔路径
|
|
368
|
+
* @param shape 形状
|
|
369
|
+
*/
|
|
370
|
+
drawBrushPath(shape: Brush): void;
|
|
371
|
+
/**
|
|
372
|
+
* 绘制橡皮擦路径
|
|
373
|
+
* @param coor 折线坐标
|
|
374
|
+
* @param shape 形状
|
|
375
|
+
*/
|
|
376
|
+
drawEraserPath(shape: Eraser): void;
|
|
377
|
+
/** 清除画布 */
|
|
378
|
+
clearBrush(): void;
|
|
379
|
+
/**
|
|
380
|
+
* 绘制控制点
|
|
381
|
+
* @param point 坐标
|
|
382
|
+
*/
|
|
383
|
+
drawCtrl(point: Point, color?: string): void;
|
|
384
|
+
/**
|
|
385
|
+
* 绘制控制点列表
|
|
386
|
+
* @param shape 标注实例
|
|
387
|
+
*/
|
|
388
|
+
drawCtrlList(shape: Rect | Polygon | Line | Circle | Ellipse): void;
|
|
389
|
+
/**
|
|
390
|
+
* 绘制label
|
|
391
|
+
* @param point 位置
|
|
392
|
+
* @param label 文本
|
|
393
|
+
*/
|
|
394
|
+
drawLabel(point: Point, shape: AllShape): void;
|
|
395
|
+
/**
|
|
396
|
+
* 更新画布
|
|
397
|
+
*/
|
|
398
|
+
update(): void;
|
|
399
|
+
/**
|
|
400
|
+
* 通过索引删除指定形状
|
|
401
|
+
* @param index number
|
|
402
|
+
*/
|
|
403
|
+
deleteByIndex(index: number): void;
|
|
404
|
+
/**
|
|
405
|
+
* 通过uuid删除指定形状
|
|
406
|
+
* @param index string
|
|
407
|
+
*/
|
|
408
|
+
deleteByUuid(uuid: string): void;
|
|
409
|
+
/**
|
|
410
|
+
* 计算缩放步长
|
|
411
|
+
*/
|
|
412
|
+
calcStep(flag?: string): void;
|
|
413
|
+
/**
|
|
414
|
+
* 缩放
|
|
415
|
+
* @param type true放大5%,false缩小5%
|
|
416
|
+
* @param center 缩放中心 center|mouse
|
|
417
|
+
* @param pure 不绘制
|
|
418
|
+
*/
|
|
419
|
+
setScale(type: boolean, byMouse?: boolean, pure?: boolean): void;
|
|
420
|
+
/**
|
|
421
|
+
* 适配背景图
|
|
422
|
+
*/
|
|
423
|
+
fitZoom(): void;
|
|
424
|
+
/**
|
|
425
|
+
* 设置专注模式
|
|
426
|
+
* @param type {boolean}
|
|
427
|
+
*/
|
|
428
|
+
setFocusMode(type: boolean): void;
|
|
429
|
+
/**
|
|
430
|
+
* 销毁
|
|
431
|
+
*/
|
|
432
|
+
destroy(): void;
|
|
433
|
+
/**
|
|
434
|
+
* 重新设置画布大小
|
|
435
|
+
*/
|
|
436
|
+
resize(): void;
|
|
437
|
+
}
|
|
438
|
+
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import Shape from './Shape';
|
|
2
|
+
import { Point } from '../index';
|
|
3
|
+
export default class Brush extends Shape {
|
|
4
|
+
type: number;
|
|
5
|
+
coor: Point[];
|
|
6
|
+
brushSize: number | undefined;
|
|
7
|
+
brushStokeStyle: string | undefined;
|
|
8
|
+
constructor(data: any, index: number, base: any);
|
|
9
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Shape from "./Shape";
|
|
2
|
+
export default class Ellipse extends Shape {
|
|
3
|
+
type: number;
|
|
4
|
+
radiusX: number;
|
|
5
|
+
radiusY: number;
|
|
6
|
+
rotation: number;
|
|
7
|
+
constructor(item: any, index: number, base: any);
|
|
8
|
+
get ctrlsData(): any[][];
|
|
9
|
+
get boundingBox(): any[][];
|
|
10
|
+
isPointInEllipse(pointX: number, pointY: number): boolean;
|
|
11
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Shape from './Shape';
|
|
2
|
+
import Rect from './Rect';
|
|
3
|
+
export default class Grid extends Shape {
|
|
4
|
+
type: number;
|
|
5
|
+
row: number;
|
|
6
|
+
col: number;
|
|
7
|
+
selected: number[];
|
|
8
|
+
selectedFillStyle: string | undefined;
|
|
9
|
+
constructor(item: any, index: number, base: any);
|
|
10
|
+
get ctrlsData(): any[][];
|
|
11
|
+
get gridRects(): Rect[];
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import Shape from './Shape';
|
|
2
|
+
export default class Rect extends Shape {
|
|
3
|
+
type: number;
|
|
4
|
+
/** 旋转角度(弧度) */
|
|
5
|
+
rotation: number;
|
|
6
|
+
/** 是否显示旋转控制点 */
|
|
7
|
+
showRotation: boolean | undefined;
|
|
8
|
+
constructor(item: any, index: number, base: any);
|
|
9
|
+
get ctrlsData(): any[][];
|
|
10
|
+
/** 获取矩形的中心点 */
|
|
11
|
+
get center(): [number, number];
|
|
12
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
interface ShapeProp {
|
|
2
|
+
type: number;
|
|
3
|
+
[key: string]: any;
|
|
4
|
+
}
|
|
5
|
+
export default class Shape {
|
|
6
|
+
/** 标签 */
|
|
7
|
+
label: string;
|
|
8
|
+
/** 是否隐藏标签 */
|
|
9
|
+
hideLabel: boolean | undefined;
|
|
10
|
+
/** 坐标 */
|
|
11
|
+
coor: any[];
|
|
12
|
+
/** 边线颜色 */
|
|
13
|
+
strokeStyle: string | undefined;
|
|
14
|
+
/** 填充颜色 */
|
|
15
|
+
fillStyle: string | undefined;
|
|
16
|
+
/** 边线宽度 */
|
|
17
|
+
lineWidth: number | undefined;
|
|
18
|
+
/** 标签填充颜色 */
|
|
19
|
+
labelFillStyle: string | undefined;
|
|
20
|
+
/** 标签文字颜色 */
|
|
21
|
+
textFillStyle: string | undefined;
|
|
22
|
+
/** 标签文字字体 */
|
|
23
|
+
labelFont: string | undefined;
|
|
24
|
+
/** 标注类型 */
|
|
25
|
+
type: number | undefined;
|
|
26
|
+
/** 当前是否处于活动状态 */
|
|
27
|
+
active: boolean;
|
|
28
|
+
/** 当前是否处于创建状态 */
|
|
29
|
+
creating: boolean;
|
|
30
|
+
/** 当前是否处于拖拽状态 */
|
|
31
|
+
dragging: boolean;
|
|
32
|
+
/** 索引 */
|
|
33
|
+
index: number;
|
|
34
|
+
/** 唯一标识 */
|
|
35
|
+
uuid: string;
|
|
36
|
+
/** 向上展示label */
|
|
37
|
+
labelUp: boolean | undefined;
|
|
38
|
+
/** 隐藏标注 */
|
|
39
|
+
hide: boolean | undefined;
|
|
40
|
+
constructor(item: ShapeProp, index: number);
|
|
41
|
+
}
|
|
42
|
+
export {};
|
package/lib/tools.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function createUuid(): string;
|
package/package.json
ADDED
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "zkqh-canvas-select-one",
|
|
3
|
+
"version": "2.32.3",
|
|
4
|
+
"description": "一个用于图片标注的javascript库,基于canvas,简单轻量,支持矩形、多边形、点、折线、圆形、网格、画笔、橡皮擦",
|
|
5
|
+
"main": "lib/canvas-select.min.js",
|
|
6
|
+
"module": "lib/canvas-select.esm.js",
|
|
7
|
+
"types": "lib/index.d.ts",
|
|
8
|
+
"type": "module",
|
|
9
|
+
"scripts": {
|
|
10
|
+
"dev": "cross-env NODE_ENV=development rollup -c -w",
|
|
11
|
+
"build": "cross-env NODE_ENV=production rollup -c"
|
|
12
|
+
},
|
|
13
|
+
"files": [
|
|
14
|
+
"/lib"
|
|
15
|
+
],
|
|
16
|
+
"keywords": [
|
|
17
|
+
"canvas",
|
|
18
|
+
"marker",
|
|
19
|
+
"annotation",
|
|
20
|
+
"rect",
|
|
21
|
+
"polygon",
|
|
22
|
+
"dot",
|
|
23
|
+
"line",
|
|
24
|
+
"circle",
|
|
25
|
+
"grid",
|
|
26
|
+
"标注",
|
|
27
|
+
"矩形",
|
|
28
|
+
"多边形",
|
|
29
|
+
"点",
|
|
30
|
+
"折线",
|
|
31
|
+
"圆",
|
|
32
|
+
"网格",
|
|
33
|
+
"画笔",
|
|
34
|
+
"橡皮擦",
|
|
35
|
+
"电子围栏"
|
|
36
|
+
],
|
|
37
|
+
"author": "heylight",
|
|
38
|
+
"license": "MIT",
|
|
39
|
+
"devDependencies": {
|
|
40
|
+
"@rollup/plugin-babel": "^6.0.4",
|
|
41
|
+
"@rollup/plugin-json": "^6.1.0",
|
|
42
|
+
"@rollup/plugin-terser": "^0.4.4",
|
|
43
|
+
"@typescript-eslint/eslint-plugin": "^4.28.4",
|
|
44
|
+
"@typescript-eslint/parser": "^4.28.4",
|
|
45
|
+
"cross-env": "^7.0.3",
|
|
46
|
+
"rollup": "^4.29.1",
|
|
47
|
+
"rollup-plugin-livereload": "^2.0.5",
|
|
48
|
+
"rollup-plugin-serve": "^3.0.0",
|
|
49
|
+
"rollup-plugin-typescript2": "^0.36.0",
|
|
50
|
+
"tslib": "^2.8.1"
|
|
51
|
+
}
|
|
52
|
+
}
|