jmgraph 3.2.22 → 3.2.25
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/README.md +1 -0
- package/dist/jmgraph.core.min.js +1 -1
- package/dist/jmgraph.core.min.js.map +1 -1
- package/dist/jmgraph.js +631 -290
- package/dist/jmgraph.min.js +1 -1
- package/index.d.ts +842 -0
- package/index.js +5 -1
- package/package.json +2 -1
- package/src/core/jmGradient.js +4 -2
- package/src/core/jmGraph.js +0 -2
- package/src/lib/webgl/base.js +109 -90
- package/src/lib/webgl/gradient.js +99 -142
- package/src/lib/webgl/index.js +9 -10
- package/src/lib/webgl/path.js +294 -24
- package/src/shapes/jmHArc.js +2 -2
package/index.d.ts
ADDED
|
@@ -0,0 +1,842 @@
|
|
|
1
|
+
// Type definitions for jmgraph
|
|
2
|
+
// ========================
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* 基础坐标点
|
|
6
|
+
*/
|
|
7
|
+
export interface Point {
|
|
8
|
+
x: number;
|
|
9
|
+
y: number;
|
|
10
|
+
m?: boolean;
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* 边界对象
|
|
15
|
+
*/
|
|
16
|
+
export interface Bounds {
|
|
17
|
+
left: number;
|
|
18
|
+
top: number;
|
|
19
|
+
right: number;
|
|
20
|
+
bottom: number;
|
|
21
|
+
width: number;
|
|
22
|
+
height: number;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* 位置对象
|
|
27
|
+
*/
|
|
28
|
+
export interface Position {
|
|
29
|
+
left: number;
|
|
30
|
+
top: number;
|
|
31
|
+
width?: number;
|
|
32
|
+
height?: number;
|
|
33
|
+
right?: number;
|
|
34
|
+
bottom?: number;
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* 圆角配置(支持数字或四角独立配置)
|
|
39
|
+
*/
|
|
40
|
+
export type Radius = number | {
|
|
41
|
+
topLeft?: number;
|
|
42
|
+
topRight?: number;
|
|
43
|
+
bottomRight?: number;
|
|
44
|
+
bottomLeft?: number;
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
/**
|
|
48
|
+
* 规范化的圆角(四角独立)
|
|
49
|
+
*/
|
|
50
|
+
export interface NormalizedRadius {
|
|
51
|
+
topLeft: number;
|
|
52
|
+
topRight: number;
|
|
53
|
+
bottomRight: number;
|
|
54
|
+
bottomLeft: number;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 阴影样式
|
|
59
|
+
*/
|
|
60
|
+
export interface ShadowStyle {
|
|
61
|
+
x: number;
|
|
62
|
+
y: number;
|
|
63
|
+
blur: number;
|
|
64
|
+
color: string;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* 渐变色停止点
|
|
69
|
+
*/
|
|
70
|
+
export interface GradientStop {
|
|
71
|
+
offset: number;
|
|
72
|
+
color: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* 渐变配置(线性或放射)
|
|
77
|
+
*/
|
|
78
|
+
export interface GradientOptions {
|
|
79
|
+
type?: 'linear' | 'radial';
|
|
80
|
+
x1?: number | string;
|
|
81
|
+
y1?: number | string;
|
|
82
|
+
x2?: number | string;
|
|
83
|
+
y2?: number | string;
|
|
84
|
+
r1?: number | string;
|
|
85
|
+
r2?: number | string;
|
|
86
|
+
stops?: GradientStop[];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* 变换配置
|
|
91
|
+
*/
|
|
92
|
+
export interface TransformStyle {
|
|
93
|
+
scaleX?: number;
|
|
94
|
+
skewX?: number;
|
|
95
|
+
skewY?: number;
|
|
96
|
+
scaleY?: number;
|
|
97
|
+
offsetX?: number;
|
|
98
|
+
offsetY?: number;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* 旋转配置
|
|
103
|
+
*/
|
|
104
|
+
export interface RotationStyle {
|
|
105
|
+
angle: number;
|
|
106
|
+
x?: number | string;
|
|
107
|
+
y?: number | string;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* 控件样式
|
|
112
|
+
*/
|
|
113
|
+
export interface jmStyle {
|
|
114
|
+
fill?: string | jmGradient;
|
|
115
|
+
fillImage?: string;
|
|
116
|
+
fillStyle?: string;
|
|
117
|
+
stroke?: string;
|
|
118
|
+
strokeStyle?: string;
|
|
119
|
+
close?: boolean;
|
|
120
|
+
lineWidth?: number;
|
|
121
|
+
miterLimit?: number;
|
|
122
|
+
font?: string;
|
|
123
|
+
fontSize?: number;
|
|
124
|
+
fontFamily?: string;
|
|
125
|
+
opacity?: number;
|
|
126
|
+
globalAlpha?: number;
|
|
127
|
+
textAlign?: CanvasTextAlign;
|
|
128
|
+
textBaseline?: CanvasTextBaseline;
|
|
129
|
+
shadow?: string | ShadowStyle;
|
|
130
|
+
shadowBlur?: number;
|
|
131
|
+
shadowColor?: string;
|
|
132
|
+
shadowOffsetX?: number;
|
|
133
|
+
shadowOffsetY?: number;
|
|
134
|
+
lineJoin?: CanvasLineJoin;
|
|
135
|
+
lineCap?: CanvasLineCap;
|
|
136
|
+
lineDash?: number[] | string;
|
|
137
|
+
lineDashOffset?: number;
|
|
138
|
+
lineType?: 'solid' | 'dotted';
|
|
139
|
+
dashLength?: number;
|
|
140
|
+
filter?: string | jmFilter;
|
|
141
|
+
globalCompositeOperation?: GlobalCompositeOperation;
|
|
142
|
+
rotation?: RotationStyle;
|
|
143
|
+
translate?: { x: number | string; y: number | string };
|
|
144
|
+
transform?: number[] | TransformStyle;
|
|
145
|
+
clipPath?: jmControl;
|
|
146
|
+
mask?: jmControl;
|
|
147
|
+
cursor?: string;
|
|
148
|
+
close?: boolean;
|
|
149
|
+
zIndex?: number | string;
|
|
150
|
+
margin?: {
|
|
151
|
+
left?: number;
|
|
152
|
+
top?: number;
|
|
153
|
+
right?: number;
|
|
154
|
+
bottom?: number;
|
|
155
|
+
};
|
|
156
|
+
touchPadding?: number;
|
|
157
|
+
maxWidth?: number;
|
|
158
|
+
lineHeight?: number;
|
|
159
|
+
radius?: number;
|
|
160
|
+
borderRadius?: number;
|
|
161
|
+
lineJoin?: CanvasLineJoin;
|
|
162
|
+
lineCap?: CanvasLineCap;
|
|
163
|
+
color?: string;
|
|
164
|
+
image?: string;
|
|
165
|
+
[key: string]: any;
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* jmGraph 构造选项
|
|
170
|
+
*/
|
|
171
|
+
export interface jmGraphOptions {
|
|
172
|
+
width?: number;
|
|
173
|
+
height?: number;
|
|
174
|
+
mode?: '2d' | 'webgl';
|
|
175
|
+
autoRefresh?: boolean;
|
|
176
|
+
interactive?: boolean;
|
|
177
|
+
style?: jmStyle;
|
|
178
|
+
shapes?: Record<string, new (...args: any[]) => any>;
|
|
179
|
+
[key: string]: any;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* 控件构造参数
|
|
184
|
+
*/
|
|
185
|
+
export interface jmControlParams {
|
|
186
|
+
style?: jmStyle;
|
|
187
|
+
width?: number | string;
|
|
188
|
+
height?: number | string;
|
|
189
|
+
position?: Point;
|
|
190
|
+
center?: Point;
|
|
191
|
+
start?: Point;
|
|
192
|
+
end?: Point;
|
|
193
|
+
graph?: jmGraph;
|
|
194
|
+
zIndex?: number;
|
|
195
|
+
interactive?: boolean;
|
|
196
|
+
hitArea?: { x: number; y: number; width: number; height: number };
|
|
197
|
+
isRegular?: boolean;
|
|
198
|
+
needCut?: boolean;
|
|
199
|
+
points?: Point[];
|
|
200
|
+
mode?: string;
|
|
201
|
+
radius?: Radius;
|
|
202
|
+
[key: string]: any;
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
/**
|
|
206
|
+
* 路径构造参数
|
|
207
|
+
*/
|
|
208
|
+
export interface jmPathParams extends jmControlParams {
|
|
209
|
+
points?: Point[];
|
|
210
|
+
}
|
|
211
|
+
|
|
212
|
+
/**
|
|
213
|
+
* 事件参数
|
|
214
|
+
*/
|
|
215
|
+
export interface jmEventArgs {
|
|
216
|
+
position: Point & {
|
|
217
|
+
pageX: number;
|
|
218
|
+
pageY: number;
|
|
219
|
+
clientX: number;
|
|
220
|
+
clientY: number;
|
|
221
|
+
offsetX: number;
|
|
222
|
+
offsetY: number;
|
|
223
|
+
layerX: number;
|
|
224
|
+
layerY: number;
|
|
225
|
+
screenX: number;
|
|
226
|
+
screenY: number;
|
|
227
|
+
x: number;
|
|
228
|
+
y: number;
|
|
229
|
+
isTouch: boolean;
|
|
230
|
+
touches?: TouchList;
|
|
231
|
+
isWXMiniApp?: boolean;
|
|
232
|
+
};
|
|
233
|
+
button?: number;
|
|
234
|
+
keyCode?: number;
|
|
235
|
+
ctrlKey?: boolean;
|
|
236
|
+
cancel?: boolean;
|
|
237
|
+
event: Event;
|
|
238
|
+
srcElement?: Element;
|
|
239
|
+
target?: jmControl;
|
|
240
|
+
path?: jmControl[];
|
|
241
|
+
eventName?: string;
|
|
242
|
+
offsetX?: number;
|
|
243
|
+
offsetY?: number;
|
|
244
|
+
trans?: boolean;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* 事件属性变更参数
|
|
249
|
+
*/
|
|
250
|
+
export interface PropertyChangeArgs {
|
|
251
|
+
oldValue: any;
|
|
252
|
+
newValue: any;
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
/**
|
|
256
|
+
* 基础对象类
|
|
257
|
+
*/
|
|
258
|
+
export declare class jmObject {
|
|
259
|
+
id: number;
|
|
260
|
+
graph?: jmGraph;
|
|
261
|
+
|
|
262
|
+
constructor(g?: any);
|
|
263
|
+
|
|
264
|
+
is(type: string | (new (...args: any[]) => any)): boolean;
|
|
265
|
+
|
|
266
|
+
animate(handle: (...args: any[]) => boolean | void, millisec?: number, ...params: any[]): void;
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
/**
|
|
270
|
+
* 列表类,扩展自Array
|
|
271
|
+
*/
|
|
272
|
+
export declare class jmList<T = any> extends Array<T> {
|
|
273
|
+
option: Record<string, any>;
|
|
274
|
+
type: string;
|
|
275
|
+
|
|
276
|
+
constructor(items?: T[]);
|
|
277
|
+
|
|
278
|
+
add(obj: T | T[]): T | T[];
|
|
279
|
+
remove(obj: T): void;
|
|
280
|
+
removeAt(index: number): void;
|
|
281
|
+
contain(obj: T): boolean;
|
|
282
|
+
get(index: number | ((item: T, index: number) => boolean)): T | undefined;
|
|
283
|
+
each(cb: (index: number, item: T) => boolean | void, inverse?: boolean): void;
|
|
284
|
+
count(handler?: (item: T) => boolean): number;
|
|
285
|
+
clear(): void;
|
|
286
|
+
sort(compareFn?: (a: T, b: T) => number): number;
|
|
287
|
+
splice(start: number, deleteCount?: number, ...items: T[]): T[];
|
|
288
|
+
includes(searchElement: T, fromIndex?: number): boolean;
|
|
289
|
+
find(predicate: (value: T, index: number, obj: T[]) => boolean, thisArg?: any): T | undefined;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* 属性基类
|
|
294
|
+
*/
|
|
295
|
+
export declare class jmProperty extends jmObject {
|
|
296
|
+
constructor(params?: { mode?: string });
|
|
297
|
+
|
|
298
|
+
property(name: string): any;
|
|
299
|
+
property(name: string, value: any): any;
|
|
300
|
+
|
|
301
|
+
needUpdate: boolean;
|
|
302
|
+
graph: jmGraph;
|
|
303
|
+
mode: '2d' | 'webgl';
|
|
304
|
+
|
|
305
|
+
requestAnimationFrame(handler: FrameRequestCallback): number;
|
|
306
|
+
cancelAnimationFrame(handler: number): void;
|
|
307
|
+
|
|
308
|
+
on(name: string, handle: (...args: any[]) => any): void;
|
|
309
|
+
bind(name: string, handle: (...args: any[]) => any): void;
|
|
310
|
+
unbind(name: string, handle?: (...args: any[]) => any): void;
|
|
311
|
+
emit(name: string, ...args: any[]): this;
|
|
312
|
+
getEvent(name: string): jmList;
|
|
313
|
+
runEventHandle(name: string, args: any[]): boolean | undefined;
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
/**
|
|
317
|
+
* 控件基类
|
|
318
|
+
*/
|
|
319
|
+
export declare class jmControl extends jmProperty {
|
|
320
|
+
constructor(params?: jmControlParams, t?: string);
|
|
321
|
+
|
|
322
|
+
readonly type: string;
|
|
323
|
+
context: CanvasRenderingContext2D;
|
|
324
|
+
style: jmStyle;
|
|
325
|
+
visible: boolean;
|
|
326
|
+
interactive: boolean;
|
|
327
|
+
hitArea: { x: number; y: number; width: number; height: number } | null;
|
|
328
|
+
children: jmList<jmControl>;
|
|
329
|
+
width: number | string;
|
|
330
|
+
height: number | string;
|
|
331
|
+
zIndex: number;
|
|
332
|
+
parent: jmControl | null;
|
|
333
|
+
option: jmControlParams;
|
|
334
|
+
cursor: string;
|
|
335
|
+
focused?: boolean;
|
|
336
|
+
bounds: Bounds | null;
|
|
337
|
+
absoluteBounds: Bounds | null;
|
|
338
|
+
location: any;
|
|
339
|
+
points?: Point[];
|
|
340
|
+
destroyed?: boolean;
|
|
341
|
+
|
|
342
|
+
initializing(): void;
|
|
343
|
+
setStyle(style?: jmStyle): void;
|
|
344
|
+
|
|
345
|
+
getBounds(isReset?: boolean): Bounds;
|
|
346
|
+
getRotationBounds(rotation?: any, bounds?: Bounds | null): Bounds & { oldBounds?: Bounds };
|
|
347
|
+
getLocation(reset?: boolean): any;
|
|
348
|
+
getRotation(rotation?: any, bounds?: Bounds | null): { angle: number; x?: number; y?: number; bounds?: Bounds };
|
|
349
|
+
getTranslate(translate?: any, bounds?: Bounds | null): { x: number; y: number };
|
|
350
|
+
|
|
351
|
+
remove(): void;
|
|
352
|
+
offset(x: number, y: number, trans?: boolean, evt?: any): void;
|
|
353
|
+
|
|
354
|
+
getAbsoluteBounds(): Bounds;
|
|
355
|
+
toAbsolutePoint(point: Point): Point;
|
|
356
|
+
toLocalPosition(point: Point): Point | false;
|
|
357
|
+
|
|
358
|
+
beginDraw(): void;
|
|
359
|
+
endDraw(): void;
|
|
360
|
+
draw(): void;
|
|
361
|
+
paint(v?: boolean): void;
|
|
362
|
+
initPoints?(): Point[];
|
|
363
|
+
|
|
364
|
+
bind(name: string, handle: (...args: any[]) => any): void;
|
|
365
|
+
on(name: string, handle: (...args: any[]) => any): void;
|
|
366
|
+
unbind(name: string, handle?: (...args: any[]) => any): void;
|
|
367
|
+
emit(name: string, ...args: any[]): this;
|
|
368
|
+
getEvent(name: string): jmList;
|
|
369
|
+
runEventHandle(name: string, args: any[]): boolean | undefined;
|
|
370
|
+
|
|
371
|
+
checkPoint(p: Point, pad?: number): boolean;
|
|
372
|
+
raiseEvent(name: string, args: any): boolean | undefined;
|
|
373
|
+
runEventAndPopEvent(name: string, args: any): void;
|
|
374
|
+
clearEvents(name: string): void;
|
|
375
|
+
|
|
376
|
+
findParent(type: string | (new (...args: any[]) => any)): jmControl | null;
|
|
377
|
+
canMove(m: boolean, graph?: jmGraph): this;
|
|
378
|
+
}
|
|
379
|
+
|
|
380
|
+
/**
|
|
381
|
+
* 基础路径类
|
|
382
|
+
*/
|
|
383
|
+
export declare class jmPath extends jmControl {
|
|
384
|
+
constructor(params?: jmPathParams, t?: string);
|
|
385
|
+
|
|
386
|
+
points: Point[];
|
|
387
|
+
|
|
388
|
+
toSVG(): string;
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
/**
|
|
392
|
+
* 圆弧图形
|
|
393
|
+
*/
|
|
394
|
+
export declare class jmArc extends jmPath {
|
|
395
|
+
constructor(params?: jmControlParams & {
|
|
396
|
+
center?: Point;
|
|
397
|
+
radius?: number;
|
|
398
|
+
start?: number;
|
|
399
|
+
startAngle?: number;
|
|
400
|
+
end?: number;
|
|
401
|
+
endAngle?: number;
|
|
402
|
+
anticlockwise?: boolean;
|
|
403
|
+
isFan?: boolean;
|
|
404
|
+
}, t?: string);
|
|
405
|
+
|
|
406
|
+
center: Point;
|
|
407
|
+
radius: number;
|
|
408
|
+
startAngle: number;
|
|
409
|
+
endAngle: number;
|
|
410
|
+
anticlockwise: boolean;
|
|
411
|
+
isFan: boolean;
|
|
412
|
+
|
|
413
|
+
initPoints(): Point[];
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
/**
|
|
417
|
+
* 空心圆弧
|
|
418
|
+
*/
|
|
419
|
+
export declare class jmHArc extends jmArc {
|
|
420
|
+
constructor(params?: jmControlParams & {
|
|
421
|
+
minRadius?: number;
|
|
422
|
+
maxRadius?: number;
|
|
423
|
+
}, t?: string);
|
|
424
|
+
|
|
425
|
+
minRadius: number;
|
|
426
|
+
maxRadius: number;
|
|
427
|
+
}
|
|
428
|
+
|
|
429
|
+
/**
|
|
430
|
+
* 圆形
|
|
431
|
+
*/
|
|
432
|
+
export declare class jmCircle extends jmArc {
|
|
433
|
+
constructor(params?: jmControlParams & {
|
|
434
|
+
center?: Point;
|
|
435
|
+
radius?: number;
|
|
436
|
+
width?: number;
|
|
437
|
+
height?: number;
|
|
438
|
+
}, t?: string);
|
|
439
|
+
|
|
440
|
+
initPoints(): Point[];
|
|
441
|
+
draw(): void;
|
|
442
|
+
}
|
|
443
|
+
|
|
444
|
+
/**
|
|
445
|
+
* 椭圆
|
|
446
|
+
*/
|
|
447
|
+
export declare class jmEllipse extends jmArc {
|
|
448
|
+
constructor(params?: jmControlParams & {
|
|
449
|
+
center?: Point;
|
|
450
|
+
width?: number;
|
|
451
|
+
height?: number;
|
|
452
|
+
startAngle?: number;
|
|
453
|
+
endAngle?: number;
|
|
454
|
+
anticlockwise?: boolean;
|
|
455
|
+
}, t?: string);
|
|
456
|
+
|
|
457
|
+
initPoints(): Point[];
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
/**
|
|
461
|
+
* 直线
|
|
462
|
+
*/
|
|
463
|
+
export declare class jmLine extends jmPath {
|
|
464
|
+
constructor(params?: jmControlParams & {
|
|
465
|
+
start?: Point;
|
|
466
|
+
end?: Point;
|
|
467
|
+
lineType?: 'solid' | 'dotted';
|
|
468
|
+
dashLength?: number;
|
|
469
|
+
}, t?: string);
|
|
470
|
+
|
|
471
|
+
start: Point;
|
|
472
|
+
end: Point;
|
|
473
|
+
|
|
474
|
+
initPoints(): Point[];
|
|
475
|
+
}
|
|
476
|
+
|
|
477
|
+
/**
|
|
478
|
+
* 矩形
|
|
479
|
+
*/
|
|
480
|
+
export declare class jmRect extends jmPath {
|
|
481
|
+
constructor(params?: jmControlParams & {
|
|
482
|
+
radius?: Radius;
|
|
483
|
+
}, t?: string);
|
|
484
|
+
|
|
485
|
+
radius: Radius;
|
|
486
|
+
position: Point;
|
|
487
|
+
|
|
488
|
+
getNormalizedRadius(): NormalizedRadius;
|
|
489
|
+
hasRadius(): boolean;
|
|
490
|
+
getBounds(isReset?: boolean): Bounds;
|
|
491
|
+
initPoints(): Point[];
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
/**
|
|
495
|
+
* 箭头
|
|
496
|
+
*/
|
|
497
|
+
export declare class jmArrow extends jmPath {
|
|
498
|
+
constructor(params?: jmControlParams & {
|
|
499
|
+
start?: Point;
|
|
500
|
+
end?: Point;
|
|
501
|
+
angle?: number;
|
|
502
|
+
offsetX?: number;
|
|
503
|
+
offsetY?: number;
|
|
504
|
+
}, t?: string);
|
|
505
|
+
|
|
506
|
+
start: Point;
|
|
507
|
+
end: Point;
|
|
508
|
+
angle: number;
|
|
509
|
+
offsetX: number;
|
|
510
|
+
offsetY: number;
|
|
511
|
+
|
|
512
|
+
initPoints(): Point[];
|
|
513
|
+
}
|
|
514
|
+
|
|
515
|
+
/**
|
|
516
|
+
* 带箭头直线
|
|
517
|
+
*/
|
|
518
|
+
export declare class jmArrowLine extends jmLine {
|
|
519
|
+
constructor(params?: jmControlParams & {
|
|
520
|
+
start?: Point;
|
|
521
|
+
end?: Point;
|
|
522
|
+
}, t?: string);
|
|
523
|
+
|
|
524
|
+
arrow: jmArrow;
|
|
525
|
+
arrowVisible?: boolean;
|
|
526
|
+
|
|
527
|
+
initPoints(): Point[];
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
/**
|
|
531
|
+
* 贝塞尔曲线
|
|
532
|
+
*/
|
|
533
|
+
export declare class jmBezier extends jmPath {
|
|
534
|
+
constructor(params?: jmPathParams, t?: string);
|
|
535
|
+
|
|
536
|
+
cpoints: Point[];
|
|
537
|
+
|
|
538
|
+
initPoints(): Point[];
|
|
539
|
+
getPoint(ps: Point[], t: number): Point;
|
|
540
|
+
offset(x: number, y: number, trans?: boolean): void;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/**
|
|
544
|
+
* 棱形
|
|
545
|
+
*/
|
|
546
|
+
export declare class jmPrismatic extends jmPath {
|
|
547
|
+
constructor(params?: jmControlParams & {
|
|
548
|
+
center?: Point;
|
|
549
|
+
}, t?: string);
|
|
550
|
+
|
|
551
|
+
center: Point;
|
|
552
|
+
|
|
553
|
+
initPoints(): Point[];
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
/**
|
|
557
|
+
* 文字标签
|
|
558
|
+
*/
|
|
559
|
+
export declare class jmLabel extends jmControl {
|
|
560
|
+
constructor(params?: jmControlParams & {
|
|
561
|
+
text?: string;
|
|
562
|
+
value?: string;
|
|
563
|
+
center?: Point;
|
|
564
|
+
}, t?: string);
|
|
565
|
+
|
|
566
|
+
text: string;
|
|
567
|
+
center: Point | null;
|
|
568
|
+
position: Point;
|
|
569
|
+
|
|
570
|
+
getLocation(): any;
|
|
571
|
+
initPoints(): Point[];
|
|
572
|
+
testSize(): { width: number; height: number };
|
|
573
|
+
wrapText(text: string, maxWidth: number): string[];
|
|
574
|
+
draw(): void;
|
|
575
|
+
endDraw(): void;
|
|
576
|
+
}
|
|
577
|
+
|
|
578
|
+
/**
|
|
579
|
+
* 图片控件
|
|
580
|
+
*/
|
|
581
|
+
export declare class jmImage extends jmControl {
|
|
582
|
+
constructor(params?: jmControlParams & {
|
|
583
|
+
image?: string | HTMLImageElement;
|
|
584
|
+
sourcePosition?: Point;
|
|
585
|
+
sourceWidth?: number;
|
|
586
|
+
sourceHeight?: number;
|
|
587
|
+
fill?: string;
|
|
588
|
+
}, t?: string);
|
|
589
|
+
|
|
590
|
+
sourcePosition: Point;
|
|
591
|
+
sourceWidth: number;
|
|
592
|
+
sourceHeight: number;
|
|
593
|
+
image: string | HTMLImageElement;
|
|
594
|
+
}
|
|
595
|
+
|
|
596
|
+
/**
|
|
597
|
+
* 可缩放控件
|
|
598
|
+
*/
|
|
599
|
+
export declare class jmResize extends jmRect {
|
|
600
|
+
constructor(params?: jmControlParams & {
|
|
601
|
+
resizable?: boolean;
|
|
602
|
+
movable?: boolean;
|
|
603
|
+
rectSize?: number;
|
|
604
|
+
}, t?: string);
|
|
605
|
+
|
|
606
|
+
resizable: boolean;
|
|
607
|
+
movable: boolean;
|
|
608
|
+
rectSize: number;
|
|
609
|
+
}
|
|
610
|
+
|
|
611
|
+
/**
|
|
612
|
+
* 多边形
|
|
613
|
+
*/
|
|
614
|
+
export declare class jmPolygon extends jmPath {
|
|
615
|
+
constructor(params?: jmControlParams & {
|
|
616
|
+
sides?: number;
|
|
617
|
+
radius?: number;
|
|
618
|
+
center?: Point;
|
|
619
|
+
}, t?: string);
|
|
620
|
+
|
|
621
|
+
sides: number;
|
|
622
|
+
radius: number;
|
|
623
|
+
center: Point;
|
|
624
|
+
|
|
625
|
+
initPoints(): Point[];
|
|
626
|
+
}
|
|
627
|
+
|
|
628
|
+
/**
|
|
629
|
+
* 星形
|
|
630
|
+
*/
|
|
631
|
+
export declare class jmStar extends jmPath {
|
|
632
|
+
constructor(params?: jmControlParams & {
|
|
633
|
+
points?: number;
|
|
634
|
+
radius?: number;
|
|
635
|
+
innerRadius?: number;
|
|
636
|
+
center?: Point;
|
|
637
|
+
}, t?: string);
|
|
638
|
+
|
|
639
|
+
pointsCount: number;
|
|
640
|
+
radius: number;
|
|
641
|
+
innerRadius: number;
|
|
642
|
+
center: Point;
|
|
643
|
+
|
|
644
|
+
initPoints(): Point[];
|
|
645
|
+
}
|
|
646
|
+
|
|
647
|
+
/**
|
|
648
|
+
* 阴影对象
|
|
649
|
+
*/
|
|
650
|
+
export declare class jmShadow {
|
|
651
|
+
x: number;
|
|
652
|
+
y: number;
|
|
653
|
+
blur: number;
|
|
654
|
+
color: string;
|
|
655
|
+
|
|
656
|
+
constructor(x: number | string, y?: number, blur?: number, color?: string);
|
|
657
|
+
|
|
658
|
+
fromString(s: string): this;
|
|
659
|
+
toString(): string;
|
|
660
|
+
}
|
|
661
|
+
|
|
662
|
+
/**
|
|
663
|
+
* 渐变对象
|
|
664
|
+
*/
|
|
665
|
+
export declare class jmGradient {
|
|
666
|
+
type: 'linear' | 'radial';
|
|
667
|
+
x1?: number | string;
|
|
668
|
+
y1?: number | string;
|
|
669
|
+
x2?: number | string;
|
|
670
|
+
y2?: number | string;
|
|
671
|
+
r1?: number | string;
|
|
672
|
+
r2?: number | string;
|
|
673
|
+
stops: jmList<GradientStop>;
|
|
674
|
+
|
|
675
|
+
constructor(opt?: string | GradientOptions);
|
|
676
|
+
|
|
677
|
+
addStop(offset: number, color: string): void;
|
|
678
|
+
toGradient(control: jmControl): any;
|
|
679
|
+
fromString(s: string): void;
|
|
680
|
+
toString(): string;
|
|
681
|
+
}
|
|
682
|
+
|
|
683
|
+
/**
|
|
684
|
+
* CSS滤镜对象
|
|
685
|
+
*/
|
|
686
|
+
export declare class jmFilter {
|
|
687
|
+
filters: Array<{ name: string; value: number }>;
|
|
688
|
+
|
|
689
|
+
constructor(opt?: string | Record<string, number>);
|
|
690
|
+
|
|
691
|
+
addFilter(name: string, value: number | string): void;
|
|
692
|
+
fromString(s: string): void;
|
|
693
|
+
toString(): string;
|
|
694
|
+
toCanvasFilter(): string;
|
|
695
|
+
has(name: string): boolean;
|
|
696
|
+
get(name: string): number | undefined;
|
|
697
|
+
remove(name: string): void;
|
|
698
|
+
clear(): void;
|
|
699
|
+
}
|
|
700
|
+
|
|
701
|
+
/**
|
|
702
|
+
* 工具类
|
|
703
|
+
*/
|
|
704
|
+
export declare class jmUtils {
|
|
705
|
+
static clone(source: any, target?: any | boolean, deep?: boolean, copyHandler?: Function): any;
|
|
706
|
+
static bindEvent(target: any, name: string, fun: EventListener, opt?: any): { name: string; target: any; fun: EventListener };
|
|
707
|
+
static removeEvent(target: any, name: string, fun: EventListener): void;
|
|
708
|
+
static getElementPosition(el: Element): { top: number; left: number };
|
|
709
|
+
static getEventPosition(evt: any, scale?: Point): Point & {
|
|
710
|
+
pageX: number;
|
|
711
|
+
pageY: number;
|
|
712
|
+
clientX: number;
|
|
713
|
+
clientY: number;
|
|
714
|
+
offsetX: number;
|
|
715
|
+
offsetY: number;
|
|
716
|
+
layerX: number;
|
|
717
|
+
layerY: number;
|
|
718
|
+
screenX: number;
|
|
719
|
+
screenY: number;
|
|
720
|
+
isTouch: boolean;
|
|
721
|
+
touches?: TouchList;
|
|
722
|
+
isWXMiniApp?: boolean;
|
|
723
|
+
};
|
|
724
|
+
static isType(target: any, type: new (...args: any[]) => any): boolean;
|
|
725
|
+
static pointInPolygon(pt: Point, polygon: Point[], offset?: number): number;
|
|
726
|
+
static pointOnLine(pt: Point, p1: Point, p2: Point, offset: number): number;
|
|
727
|
+
static checkOutSide(parentBounds: Bounds, targetBounds: Bounds, offset: Point): { left: number; right: number; top: number; bottom: number };
|
|
728
|
+
static rotatePoints(p: Point[] | Point, rp: Point, r: number): Point[] | Point;
|
|
729
|
+
static trimStart(source: string, c?: string): string;
|
|
730
|
+
static trimEnd(source: string, c?: string): string;
|
|
731
|
+
static trim(source: string, c?: string): string;
|
|
732
|
+
static checkPercent(per: string): string | undefined;
|
|
733
|
+
static percentToNumber(per: string): number;
|
|
734
|
+
static hexToNumber(h: string): number;
|
|
735
|
+
static numberToHex(v: number): string;
|
|
736
|
+
static hexToRGBA(hex: string): string | { r: number; g: number; b: number; a: number };
|
|
737
|
+
static rgbToDecimal(color: { r: number; g: number; b: number; a: number }): { r: number; g: number; b: number; a: number };
|
|
738
|
+
static toColor(r: string | number | { r: number; g: number; b: number; a?: number }, g?: number, b?: number, a?: number): string;
|
|
739
|
+
static requestAnimationFrame(callback: FrameRequestCallback, win?: any): number;
|
|
740
|
+
static cancelAnimationFrame(handler: number, win?: any): void;
|
|
741
|
+
}
|
|
742
|
+
|
|
743
|
+
/**
|
|
744
|
+
* 事件处理器
|
|
745
|
+
*/
|
|
746
|
+
export declare class jmEvents {
|
|
747
|
+
container: jmGraph;
|
|
748
|
+
target: any;
|
|
749
|
+
|
|
750
|
+
constructor(container: jmGraph, target?: any);
|
|
751
|
+
|
|
752
|
+
touchStart(evt: any): boolean | undefined;
|
|
753
|
+
touchMove(evt: any): boolean | undefined;
|
|
754
|
+
touchEnd(evt: any): boolean | undefined;
|
|
755
|
+
touchCancel(evt: any): boolean | undefined;
|
|
756
|
+
tap(evt: any): boolean | undefined;
|
|
757
|
+
destroy(): void;
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
/**
|
|
761
|
+
* 已注册的图形类型映射
|
|
762
|
+
*/
|
|
763
|
+
export type ShapeTypes = {
|
|
764
|
+
'path': typeof jmPath;
|
|
765
|
+
'arc': typeof jmArc;
|
|
766
|
+
'arrow': typeof jmArrow;
|
|
767
|
+
'arrowline': typeof jmArrowLine;
|
|
768
|
+
'bezier': typeof jmBezier;
|
|
769
|
+
'circle': typeof jmCircle;
|
|
770
|
+
'harc': typeof jmHArc;
|
|
771
|
+
'line': typeof jmLine;
|
|
772
|
+
'prismatic': typeof jmPrismatic;
|
|
773
|
+
'rect': typeof jmRect;
|
|
774
|
+
'image': typeof jmImage;
|
|
775
|
+
'img': typeof jmImage;
|
|
776
|
+
'label': typeof jmLabel;
|
|
777
|
+
'resize': typeof jmResize;
|
|
778
|
+
'ellipse': typeof jmEllipse;
|
|
779
|
+
'polygon': typeof jmPolygon;
|
|
780
|
+
'star': typeof jmStar;
|
|
781
|
+
};
|
|
782
|
+
|
|
783
|
+
/**
|
|
784
|
+
* jmGraph 画图类库主类
|
|
785
|
+
*/
|
|
786
|
+
export declare class jmGraph extends jmControl {
|
|
787
|
+
constructor(canvas: HTMLElement | string, option?: jmGraphOptions | ((graph: jmGraph) => void), callback?: (graph: jmGraph) => void);
|
|
788
|
+
|
|
789
|
+
option: jmGraphOptions & Record<string, any>;
|
|
790
|
+
canvas: HTMLCanvasElement;
|
|
791
|
+
container: HTMLElement;
|
|
792
|
+
mode: '2d' | 'webgl';
|
|
793
|
+
scaleFactor: number;
|
|
794
|
+
translation: Point;
|
|
795
|
+
devicePixelRatio: number;
|
|
796
|
+
dprScaleSize: number;
|
|
797
|
+
isWXMiniApp?: boolean;
|
|
798
|
+
shapes: Record<string, new (...args: any[]) => any>;
|
|
799
|
+
eventHandler: jmEvents;
|
|
800
|
+
util: typeof jmUtils;
|
|
801
|
+
utils: typeof jmUtils;
|
|
802
|
+
normalSize?: { width: number; height: number };
|
|
803
|
+
scaleSize?: { x: number; y: number };
|
|
804
|
+
destroyed?: boolean;
|
|
805
|
+
|
|
806
|
+
static create(...args: ConstructorParameters<typeof jmGraph>): jmGraph;
|
|
807
|
+
|
|
808
|
+
resize(w?: number, h?: number): void;
|
|
809
|
+
getPosition(): Position;
|
|
810
|
+
registerShape(name: string, shape: new (...args: any[]) => any): void;
|
|
811
|
+
createShape<T extends jmControl = jmControl>(shape: string | (new (...args: any[]) => T), args?: any): T;
|
|
812
|
+
createShadow(x: number, y: number, blur: number, color: string): jmShadow;
|
|
813
|
+
createLinearGradient(x1: number, y1: number, x2: number, y2: number, stops?: GradientStop[]): jmGradient;
|
|
814
|
+
createRadialGradient(x1: number, y1: number, r1: number, x2: number, y2: number, r2: number, stops?: GradientStop[]): jmGradient;
|
|
815
|
+
refresh(): void;
|
|
816
|
+
redraw(w?: number, h?: number): void;
|
|
817
|
+
clear(w?: number, h?: number): void;
|
|
818
|
+
css(name: string, value?: string): string | undefined;
|
|
819
|
+
createPath(points: Point[], style?: jmStyle, option?: object): jmPath;
|
|
820
|
+
createLine(start: Point, end: Point, style?: jmStyle): jmLine;
|
|
821
|
+
zoomOut(): void;
|
|
822
|
+
zoomIn(): void;
|
|
823
|
+
zoomActual(): void;
|
|
824
|
+
scale(dx: number, dy: number): void;
|
|
825
|
+
setZoom(zoom: number, x?: number, y?: number): this;
|
|
826
|
+
pan(dx: number, dy: number): this;
|
|
827
|
+
resetTransform(): this;
|
|
828
|
+
toDataURL(): string;
|
|
829
|
+
exportToPNG(fileName?: string, format?: string, quality?: number): void;
|
|
830
|
+
exportToJPEG(fileName?: string, quality?: number): void;
|
|
831
|
+
exportToSVG(fileName?: string): void;
|
|
832
|
+
toSVG(): string;
|
|
833
|
+
autoRefresh(callback?: () => void): this;
|
|
834
|
+
destroy(): void;
|
|
835
|
+
}
|
|
836
|
+
|
|
837
|
+
/**
|
|
838
|
+
* 创建 jmGraph 实例的便捷函数
|
|
839
|
+
*/
|
|
840
|
+
export declare function create(...args: ConstructorParameters<typeof jmGraph>): jmGraph;
|
|
841
|
+
|
|
842
|
+
export default jmGraph;
|