vislite 0.2.0 → 0.3.0-alpha.1
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/AUTHORS.txt +6 -6
- package/CHANGELOG +27 -1
- package/LICENSE +20 -20
- package/README.md +53 -53
- package/lib/Canvas/index.umd.js +87 -14
- package/lib/Canvas/index.umd.min.js +3 -3
- package/lib/Cardinal/index.umd.js +16 -5
- package/lib/Cardinal/index.umd.min.js +3 -3
- package/lib/Eoap/index.umd.js +2 -2
- package/lib/Eoap/index.umd.min.js +2 -2
- package/lib/Hermite/index.umd.js +2 -2
- package/lib/Hermite/index.umd.min.js +2 -2
- package/lib/Matrix4/index.umd.js +2 -2
- package/lib/Matrix4/index.umd.min.js +2 -2
- package/lib/Mercator/index.umd.js +2 -2
- package/lib/Mercator/index.umd.min.js +2 -2
- package/lib/OralCanvas/index.es.js +87 -14
- package/lib/OralCanvas/index.es.min.js +3 -3
- package/lib/OralWebGL/index.es.js +17 -6
- package/lib/OralWebGL/index.es.min.js +3 -3
- package/lib/SVG/index.umd.js +78 -62
- package/lib/SVG/index.umd.min.js +3 -3
- package/lib/WebGL/index.umd.js +15 -6
- package/lib/WebGL/index.umd.min.js +3 -3
- package/lib/animation/index.umd.js +2 -2
- package/lib/animation/index.umd.min.js +2 -2
- package/lib/getLoopColors/index.umd.js +2 -2
- package/lib/getLoopColors/index.umd.min.js +2 -2
- package/lib/index.umd.js +190 -81
- package/lib/index.umd.min.js +3 -3
- package/lib/rotate/index.umd.js +2 -2
- package/lib/rotate/index.umd.min.js +2 -2
- package/lib/ruler/index.umd.js +2 -2
- package/lib/ruler/index.umd.min.js +2 -2
- package/lib/viewHandler/index.umd.js +2 -2
- package/lib/viewHandler/index.umd.min.js +2 -2
- package/miniprogram/ui-canvas/index.json +4 -4
- package/miniprogram/ui-canvas/index.wxml +4 -4
- package/miniprogram/ui-canvas/index.wxss +5 -5
- package/package/Canvas/index.ts +1 -1
- package/package/Cardinal/index.ts +2 -2
- package/package/Eoap/index.ts +2 -2
- package/package/Hermite/index.ts +2 -2
- package/package/Matrix4/index.ts +2 -2
- package/package/OralCanvas/index.ts +1 -1
- package/package/OralWebGL/index.ts +1 -1
- package/package/SVG/index.ts +2 -2
- package/package/animation/index.ts +2 -2
- package/package/getLoopColors/index.ts +2 -2
- package/package/rotate/index.ts +2 -2
- package/package/ruler/index.ts +2 -2
- package/package.json +4 -4
- package/src/Matrix4/index.ts +76 -76
- package/src/Matrix4/move.ts +12 -12
- package/src/Matrix4/rotate.ts +15 -15
- package/src/Matrix4/scale.ts +11 -11
- package/src/Matrix4/transform.ts +64 -64
- package/src/animation.ts +99 -99
- package/src/common/canvas/arc.ts +50 -50
- package/src/common/canvas/config.ts +142 -61
- package/src/common/canvas/gradient.ts +29 -0
- package/src/common/canvas/index.ts +122 -82
- package/src/common/canvas/painter.ts +12 -0
- package/src/common/setStyle.ts +5 -5
- package/src/common/svg/config.ts +173 -128
- package/src/common/svg/index.ts +315 -266
- package/src/common/svg/tool.ts +43 -43
- package/src/common/webgl/doDraw.ts +13 -3
- package/src/common/webgl/getShader.ts +6 -0
- package/src/common/webgl/index.ts +4 -0
- package/src/getLoopColors.ts +42 -42
- package/src/interpolation/Cardinal.ts +109 -91
- package/src/interpolation/Hermite.ts +65 -65
- package/src/rotate.ts +7 -7
- package/src/ruler.ts +99 -99
- package/types/Canvas.d.ts +282 -221
- package/types/CanvasConfig.d.ts +3 -3
- package/types/Cardinal.d.ts +13 -13
- package/types/Gradient.d.ts +15 -0
- package/types/Hermite.d.ts +18 -18
- package/types/Matrix4.d.ts +42 -42
- package/types/Object3D.d.ts +7 -0
- package/types/SVG.d.ts +210 -210
- package/types/animation.d.ts +6 -6
- package/types/getLoopColors.d.ts +2 -2
- package/types/rotate.d.ts +2 -2
- package/types/ruler.d.ts +2 -2
- package/uni-app/ui-canvas.vue +22 -46
|
@@ -1,76 +1,157 @@
|
|
|
1
|
-
import arc from
|
|
2
|
-
import CanvasConfigType from
|
|
1
|
+
import arc from "./arc"
|
|
2
|
+
import CanvasConfigType from "../../../types/CanvasConfig"
|
|
3
3
|
|
|
4
4
|
// 文字统一设置方法
|
|
5
|
-
export let initText = function (
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
5
|
+
export let initText = function (
|
|
6
|
+
painter: CanvasRenderingContext2D,
|
|
7
|
+
config: CanvasConfigType,
|
|
8
|
+
x: number,
|
|
9
|
+
y: number,
|
|
10
|
+
deg: number
|
|
11
|
+
) {
|
|
12
|
+
painter.beginPath();
|
|
13
|
+
painter.translate(x, y);
|
|
14
|
+
painter.rotate(deg);
|
|
15
|
+
painter.font =
|
|
16
|
+
config.fontStyle +
|
|
17
|
+
" " +
|
|
18
|
+
config.fontWeight +
|
|
19
|
+
" " +
|
|
20
|
+
config.fontSize +
|
|
21
|
+
"px " +
|
|
22
|
+
config.fontFamily;
|
|
23
|
+
return painter
|
|
24
|
+
}
|
|
13
25
|
|
|
14
26
|
// 画弧统一设置方法
|
|
15
|
-
export let initArc = function (
|
|
27
|
+
export let initArc = function (
|
|
28
|
+
painter: CanvasRenderingContext2D,
|
|
29
|
+
config: CanvasConfigType,
|
|
30
|
+
cx: number,
|
|
31
|
+
cy: number,
|
|
32
|
+
r1: number,
|
|
33
|
+
r2: number,
|
|
34
|
+
beginDeg: number,
|
|
35
|
+
deg: number
|
|
36
|
+
) {
|
|
37
|
+
if (r1 > r2) {
|
|
38
|
+
let temp = r1
|
|
39
|
+
r1 = r2
|
|
40
|
+
r2 = temp
|
|
41
|
+
}
|
|
16
42
|
|
|
17
|
-
|
|
18
|
-
let temp = r1
|
|
19
|
-
r1 = r2
|
|
20
|
-
r2 = temp
|
|
21
|
-
}
|
|
43
|
+
beginDeg = beginDeg % (Math.PI * 2)
|
|
22
44
|
|
|
23
|
-
|
|
45
|
+
// 当|deg|>=2π的时候都认为是一个圆环
|
|
46
|
+
// 为什么不取2π比较,是怕部分浏览器浮点不精确
|
|
47
|
+
if (deg >= Math.PI * 1.999999 || deg <= -Math.PI * 1.999999) {
|
|
48
|
+
deg = Math.PI * 2
|
|
49
|
+
} else {
|
|
50
|
+
deg = deg % (Math.PI * 2)
|
|
51
|
+
}
|
|
24
52
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
53
|
+
arc(
|
|
54
|
+
beginDeg,
|
|
55
|
+
deg,
|
|
56
|
+
cx,
|
|
57
|
+
cy,
|
|
58
|
+
r1,
|
|
59
|
+
r2,
|
|
60
|
+
function (
|
|
61
|
+
beginA: number,
|
|
62
|
+
endA: number,
|
|
63
|
+
begInnerX: number,
|
|
64
|
+
begInnerY: number,
|
|
65
|
+
begOuterX: number,
|
|
66
|
+
begOuterY: number,
|
|
67
|
+
endInnerX: number,
|
|
68
|
+
endInnerY: number,
|
|
69
|
+
endOuterX: number,
|
|
70
|
+
endOuterY: number,
|
|
71
|
+
r: number
|
|
40
72
|
) {
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
73
|
+
if (r < 0) r = -r
|
|
74
|
+
painter.beginPath()
|
|
75
|
+
painter.moveTo(begInnerX, begInnerY)
|
|
76
|
+
painter.arc(
|
|
77
|
+
// (圆心x,圆心y,半径,开始角度,结束角度,true逆时针/false顺时针)
|
|
78
|
+
cx,
|
|
79
|
+
cy,
|
|
80
|
+
r1,
|
|
81
|
+
beginA,
|
|
82
|
+
endA,
|
|
83
|
+
false
|
|
84
|
+
)
|
|
85
|
+
// 结尾
|
|
86
|
+
if (config.arcEndCap == "round")
|
|
87
|
+
painter.arc(
|
|
88
|
+
(endInnerX + endOuterX) * 0.5,
|
|
89
|
+
(endInnerY + endOuterY) * 0.5,
|
|
90
|
+
r,
|
|
91
|
+
endA - Math.PI,
|
|
92
|
+
endA,
|
|
93
|
+
true
|
|
94
|
+
)
|
|
95
|
+
else if (config.arcEndCap == "-round")
|
|
44
96
|
painter.arc(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
97
|
+
(endInnerX + endOuterX) * 0.5,
|
|
98
|
+
(endInnerY + endOuterY) * 0.5,
|
|
99
|
+
r,
|
|
100
|
+
endA - Math.PI,
|
|
101
|
+
endA,
|
|
102
|
+
false
|
|
103
|
+
)
|
|
104
|
+
else painter.lineTo(endOuterX, endOuterY)
|
|
105
|
+
|
|
106
|
+
painter.arc(cx, cy, r2, endA, beginA, true)
|
|
107
|
+
// 开头
|
|
108
|
+
if (config.arcStartCap == "round")
|
|
109
|
+
painter.arc(
|
|
110
|
+
(begInnerX + begOuterX) * 0.5,
|
|
111
|
+
(begInnerY + begOuterY) * 0.5,
|
|
112
|
+
r,
|
|
113
|
+
beginA,
|
|
114
|
+
beginA - Math.PI,
|
|
115
|
+
true
|
|
116
|
+
)
|
|
117
|
+
else if (config.arcStartCap == "-round")
|
|
118
|
+
painter.arc(
|
|
119
|
+
(begInnerX + begOuterX) * 0.5,
|
|
120
|
+
(begInnerY + begOuterY) * 0.5,
|
|
121
|
+
r,
|
|
122
|
+
beginA,
|
|
123
|
+
beginA - Math.PI,
|
|
124
|
+
false
|
|
125
|
+
)
|
|
126
|
+
else painter.lineTo(begInnerX, begInnerY)
|
|
127
|
+
}
|
|
128
|
+
)
|
|
129
|
+
if (config.arcStartCap == "butt") painter.closePath()
|
|
130
|
+
return painter
|
|
61
131
|
}
|
|
62
132
|
|
|
63
133
|
// 画圆统一设置方法
|
|
64
|
-
export let initCircle = function (
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
134
|
+
export let initCircle = function (
|
|
135
|
+
painter: CanvasRenderingContext2D,
|
|
136
|
+
cx: number,
|
|
137
|
+
cy: number,
|
|
138
|
+
r: number
|
|
139
|
+
) {
|
|
140
|
+
painter.beginPath()
|
|
141
|
+
painter.moveTo(cx + r, cy)
|
|
142
|
+
painter.arc(cx, cy, r, 0, Math.PI * 2)
|
|
143
|
+
return painter
|
|
144
|
+
};
|
|
70
145
|
|
|
71
146
|
// 画矩形统一设置方法
|
|
72
|
-
export let initRect = function (
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
147
|
+
export let initRect = function (
|
|
148
|
+
painter: CanvasRenderingContext2D,
|
|
149
|
+
x: number,
|
|
150
|
+
y: number,
|
|
151
|
+
width: number,
|
|
152
|
+
height: number
|
|
153
|
+
) {
|
|
154
|
+
painter.beginPath()
|
|
155
|
+
painter.rect(x, y, width, height)
|
|
156
|
+
return painter
|
|
76
157
|
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
// 线性渐变
|
|
2
|
+
export let linearGradient = function (painter: CanvasRenderingContext2D, x0: number, y0: number, x1: number, y1: number) {
|
|
3
|
+
let gradient = painter.createLinearGradient(x0, y0, x1, y1)
|
|
4
|
+
let enhanceGradient = {
|
|
5
|
+
"value": function () {
|
|
6
|
+
return gradient
|
|
7
|
+
},
|
|
8
|
+
"setColor": function (stop: number, color: string) {
|
|
9
|
+
gradient.addColorStop(stop, color)
|
|
10
|
+
return enhanceGradient
|
|
11
|
+
}
|
|
12
|
+
};
|
|
13
|
+
return enhanceGradient
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
// 环形渐变
|
|
17
|
+
export let radialGradient = function (painter: CanvasRenderingContext2D, cx: number, cy: number, r: number) {
|
|
18
|
+
let gradient = painter.createRadialGradient(cx, cy, 0, cx, cy, r)
|
|
19
|
+
let enhanceGradient = {
|
|
20
|
+
"value": function () {
|
|
21
|
+
return gradient
|
|
22
|
+
},
|
|
23
|
+
"setColor": function (stop: number, color: string) {
|
|
24
|
+
gradient.addColorStop(stop, color)
|
|
25
|
+
return enhanceGradient
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return enhanceGradient
|
|
29
|
+
}
|
|
@@ -1,97 +1,137 @@
|
|
|
1
|
-
import CanvasConfigType from
|
|
2
|
-
import PainterRender from
|
|
3
|
-
import assemble from
|
|
1
|
+
import CanvasConfigType from "../../../types/CanvasConfig"
|
|
2
|
+
import PainterRender from "./painter"
|
|
3
|
+
import assemble from "../assemble"
|
|
4
|
+
import { linearGradient, radialGradient } from "./gradient"
|
|
4
5
|
|
|
5
6
|
// 属性名向下兼容
|
|
6
7
|
let oldAttrName = {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
"font-size": "fontSize",
|
|
9
|
+
"font-family": "fontFamily",
|
|
10
|
+
"font-weight": "fontWeight",
|
|
11
|
+
"font-style": "fontStyle",
|
|
12
|
+
"arc-start-cap": "arcStartCap",
|
|
13
|
+
"arc-end-cap": "arcEndCap",
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
class Canvas extends PainterRender {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
17
|
+
readonly name: string = "Canvas"
|
|
18
|
+
|
|
19
|
+
private __regionList = {} //区域映射表
|
|
20
|
+
private __regionAssemble = assemble(0, 255, 1, 3)
|
|
21
|
+
|
|
22
|
+
constructor(ViewCanvas: HTMLCanvasElement, RegionCanvas: HTMLCanvasElement) {
|
|
23
|
+
super(
|
|
24
|
+
ViewCanvas,
|
|
25
|
+
{},
|
|
26
|
+
new PainterRender(RegionCanvas, {
|
|
27
|
+
willReadFrequently: true,
|
|
28
|
+
})
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
this.setRegion("")
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
config(configs: CanvasConfigType) {
|
|
35
|
+
for (let key in configs) {
|
|
36
|
+
let _key = oldAttrName[key] || key
|
|
37
|
+
this.useConfig(_key, configs[key])
|
|
28
38
|
}
|
|
29
39
|
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
40
|
+
return this
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
// 设置当前绘制区域名称
|
|
44
|
+
setRegion(regionName: string | number) {
|
|
45
|
+
if (regionName) {
|
|
46
|
+
if (this.__regionList[regionName] == undefined) {
|
|
47
|
+
let tempColor = this.__regionAssemble()
|
|
48
|
+
this.__regionList[regionName] =
|
|
49
|
+
"rgb(" + tempColor[0] + "," + tempColor[1] + "," + tempColor[2] + ")"
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
this.__region.useConfig("fillStyle", this.__regionList[regionName]) &&
|
|
53
|
+
this.__region.useConfig("strokeStyle", this.__regionList[regionName])
|
|
54
|
+
} else {
|
|
55
|
+
this.__region.useConfig("fillStyle", "#000000") &&
|
|
56
|
+
this.__region.useConfig("strokeStyle", "#000000")
|
|
57
|
+
}
|
|
58
|
+
return this
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
// 获取当前事件触发的区域名称
|
|
62
|
+
getRegion(x: number, y: number): Promise<string> {
|
|
63
|
+
return new Promise((resolve, reject) => {
|
|
64
|
+
let imgData = this.__region.painter.getImageData(x - 0.5, y - 0.5, 1, 1)
|
|
65
|
+
|
|
66
|
+
// 获取点击点的颜色
|
|
67
|
+
let currentRGBA = imgData.data
|
|
68
|
+
|
|
69
|
+
let doit = () => {
|
|
70
|
+
// 查找当前点击的区域
|
|
71
|
+
for (let key in this.__regionList) {
|
|
72
|
+
if (
|
|
73
|
+
"rgb(" +
|
|
74
|
+
currentRGBA[0] +
|
|
75
|
+
"," +
|
|
76
|
+
currentRGBA[1] +
|
|
77
|
+
"," +
|
|
78
|
+
currentRGBA[2] +
|
|
79
|
+
")" ==
|
|
80
|
+
this.__regionList[key]
|
|
81
|
+
) {
|
|
82
|
+
resolve(key)
|
|
83
|
+
break
|
|
84
|
+
}
|
|
34
85
|
}
|
|
35
86
|
|
|
36
|
-
|
|
37
|
-
|
|
87
|
+
resolve("")
|
|
88
|
+
}
|
|
38
89
|
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
let tempColor = this.__regionAssemble()
|
|
44
|
-
this.__regionList[regionName] = "rgb(" + tempColor[0] + "," + tempColor[1] + "," + tempColor[2] + ")"
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
this.__region.useConfig("fillStyle", this.__regionList[regionName]) &&
|
|
48
|
-
this.__region.useConfig("strokeStyle", this.__regionList[regionName])
|
|
49
|
-
} else {
|
|
50
|
-
this.__region.useConfig("fillStyle", "#000000") &&
|
|
51
|
-
this.__region.useConfig("strokeStyle", "#000000")
|
|
52
|
-
}
|
|
53
|
-
return this
|
|
54
|
-
}
|
|
90
|
+
// 如果有值
|
|
91
|
+
if (currentRGBA) {
|
|
92
|
+
doit()
|
|
93
|
+
}
|
|
55
94
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
// 获取点击点的颜色
|
|
62
|
-
let currentRGBA = imgData.data
|
|
63
|
-
|
|
64
|
-
let doit = () => {
|
|
65
|
-
// 查找当前点击的区域
|
|
66
|
-
for (let key in this.__regionList) {
|
|
67
|
-
if ("rgb(" + currentRGBA[0] + "," + currentRGBA[1] + "," + currentRGBA[2] + ")" == this.__regionList[key]) {
|
|
68
|
-
resolve(key)
|
|
69
|
-
break
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
resolve("")
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// 如果有值
|
|
77
|
-
if (currentRGBA) {
|
|
78
|
-
doit()
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
// 否则就是在Promise中
|
|
82
|
-
else {
|
|
83
|
-
(imgData as any).then((data: Uint8ClampedArray) => {
|
|
84
|
-
currentRGBA = data
|
|
85
|
-
doit()
|
|
86
|
-
})
|
|
87
|
-
}
|
|
95
|
+
// 否则就是在Promise中
|
|
96
|
+
else {
|
|
97
|
+
(imgData as any).then((data: Uint8ClampedArray) => {
|
|
98
|
+
currentRGBA = data
|
|
99
|
+
doit()
|
|
88
100
|
})
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
101
|
+
}
|
|
102
|
+
})
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
// 获取原始画笔
|
|
106
|
+
getContext(isRegion = false) {
|
|
107
|
+
return isRegion ? this.__region.painter : this.painter
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 线性渐变
|
|
111
|
+
createLinearGradient(x0: number, y0: number, x1: number, y1: number) {
|
|
112
|
+
return linearGradient(this.painter, x0, y0, x1, y1)
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
// 环形渐变
|
|
116
|
+
createRadialGradient(cx: number, cy: number, r: number) {
|
|
117
|
+
return radialGradient(this.painter, cx, cy, r)
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
// 获取指定位置颜色
|
|
121
|
+
getColor(x: number, y: number) {
|
|
122
|
+
let currentRGBA = this.painter.getImageData(x - 0.5, y - 0.5, 1, 1).data
|
|
123
|
+
return (
|
|
124
|
+
"rgba(" +
|
|
125
|
+
currentRGBA[0] +
|
|
126
|
+
"," +
|
|
127
|
+
currentRGBA[1] +
|
|
128
|
+
"," +
|
|
129
|
+
currentRGBA[2] +
|
|
130
|
+
"," +
|
|
131
|
+
currentRGBA[3] +
|
|
132
|
+
")"
|
|
133
|
+
)
|
|
134
|
+
}
|
|
95
135
|
}
|
|
96
136
|
|
|
97
|
-
export default Canvas
|
|
137
|
+
export default Canvas
|
|
@@ -101,6 +101,12 @@ class Painter {
|
|
|
101
101
|
|
|
102
102
|
// 如果已经存在默认配置中,说明只需要缓存起来即可
|
|
103
103
|
else if (key in this.__specialConfig) {
|
|
104
|
+
|
|
105
|
+
// 文字非整数可能存在问题,修复一下
|
|
106
|
+
if (key == 'fontSize') {
|
|
107
|
+
value = Math.round(value)
|
|
108
|
+
}
|
|
109
|
+
|
|
104
110
|
this.__specialConfig[key] = value
|
|
105
111
|
}
|
|
106
112
|
|
|
@@ -251,6 +257,12 @@ class Painter {
|
|
|
251
257
|
this.painter.restore()
|
|
252
258
|
return this
|
|
253
259
|
}
|
|
260
|
+
clip() {
|
|
261
|
+
if (this.__region) this.__region.clip()
|
|
262
|
+
|
|
263
|
+
this.painter.clip()
|
|
264
|
+
return this
|
|
265
|
+
}
|
|
254
266
|
|
|
255
267
|
// 路径 - 贝塞尔曲线
|
|
256
268
|
quadraticCurveTo(cpx: number, cpy: number, x: number, y: number) {
|
package/src/common/setStyle.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
// 修改样式
|
|
2
|
-
export default function (el: HTMLElement | SVGElement, styles: any) {
|
|
3
|
-
for (let key in styles) {
|
|
4
|
-
el.style[key] = styles[key]
|
|
5
|
-
}
|
|
1
|
+
// 修改样式
|
|
2
|
+
export default function (el: HTMLElement | SVGElement, styles: any) {
|
|
3
|
+
for (let key in styles) {
|
|
4
|
+
el.style[key] = styles[key]
|
|
5
|
+
}
|
|
6
6
|
}
|