kfb-view 3.3.5 → 3.3.6
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/lib/kfb-view.cjs.js +1 -1
- package/lib/kfb-view.cjs.js.LICENSE.txt +10 -0
- package/lib/kfb-view.es.js +1 -1
- package/lib/kfb-view.es.js.LICENSE.txt +10 -0
- package/lib/kfb-view.umd.js +1 -1
- package/lib/kfb-view.umd.js.LICENSE.txt +10 -0
- package/package.json +4 -3
- package/src/components/board/index.js +6 -5
- package/src/components/common/common.js +6 -7
- package/src/components/shape/index.js +13 -12
- package/src/components/tailoring/index.js +3 -6
- package/src/const/event.js +2 -0
- package/src/model/label.model.js +2 -4
- package/src/plugin/zrender/zrender.js +17727 -0
- package/src/plugin/zrender/zrender.min.js +1 -0
- package/src/tool/Image.js +7 -26
- package/src/view.js +35 -24
package/src/tool/Image.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import {Brush} from './Brush';
|
|
2
|
-
import {
|
|
2
|
+
import {pointsToRegion} from '../util/calculate';
|
|
3
3
|
import {EventEmitter} from '../util/event-emitter';
|
|
4
4
|
|
|
5
5
|
const et = new EventEmitter();
|
|
@@ -22,41 +22,22 @@ class Image extends Brush {
|
|
|
22
22
|
* @param {number} points[].x - 绘制的点x坐标
|
|
23
23
|
* @param {number} points[].y - 绘制的点y坐标
|
|
24
24
|
* @param {number=} scale
|
|
25
|
-
* @param {number=} angle
|
|
26
25
|
*/
|
|
27
|
-
draw(points, scale = 1
|
|
28
|
-
|
|
29
|
-
points = getRectPoints(points);
|
|
30
|
-
}
|
|
31
|
-
const width = getDistance(points[1], points[0]);
|
|
32
|
-
const height = getDistance(points[2], points[0]);
|
|
33
|
-
const region = {
|
|
34
|
-
...points[0],
|
|
35
|
-
width,
|
|
36
|
-
height,
|
|
37
|
-
};
|
|
26
|
+
draw(points, scale = 1) {
|
|
27
|
+
const region = pointsToRegion(points);
|
|
38
28
|
if (this.options.imgLoadSuccess) {
|
|
39
|
-
this.drawImage(this.options.img, region
|
|
29
|
+
this.drawImage(this.options.img, region);
|
|
40
30
|
} else if (this.options.img) {
|
|
41
31
|
const img = this.options.img;
|
|
42
32
|
et.$once('load', () => {
|
|
43
|
-
this.drawImage(img, region
|
|
33
|
+
this.drawImage(img, region);
|
|
44
34
|
}, true, img);
|
|
45
35
|
}
|
|
46
36
|
}
|
|
47
37
|
|
|
48
|
-
drawImage(img, region
|
|
38
|
+
drawImage(img, region) {
|
|
49
39
|
const ctx = this.canvas.getContext('2d');
|
|
50
|
-
ctx.
|
|
51
|
-
ctx.save();
|
|
52
|
-
ctx.translate(region.x, region.y);
|
|
53
|
-
if (angle < 0) {
|
|
54
|
-
angle += 360;
|
|
55
|
-
}
|
|
56
|
-
const _rotation = angle % 360;
|
|
57
|
-
ctx.rotate(_rotation * Math.PI / 180);
|
|
58
|
-
ctx.drawImage(img, 0, 0, region.width, region.height);
|
|
59
|
-
ctx.restore();
|
|
40
|
+
ctx.drawImage(img, region.x, region.y, region.width, region.height);
|
|
60
41
|
}
|
|
61
42
|
}
|
|
62
43
|
|
package/src/view.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import openSeadragon from './plugin/openseadragon/openseadragon';
|
|
2
|
+
import * as zr from './plugin/zrender/zrender';
|
|
2
3
|
import './util/canvas';
|
|
3
4
|
import {EventEmitter} from './util/event-emitter';
|
|
4
5
|
import {$, dataType, deepClone} from './util';
|
|
5
|
-
import {pointsToRegion
|
|
6
|
+
import {pointsToRegion} from './util/calculate';
|
|
6
7
|
import * as COMPONENTS from './const/component';
|
|
7
8
|
import * as EVENTS from './const/event';
|
|
8
9
|
import * as Components from './components';
|
|
@@ -113,6 +114,9 @@ export default class KfbView extends EventEmitter {
|
|
|
113
114
|
width,
|
|
114
115
|
height,
|
|
115
116
|
};
|
|
117
|
+
// 必须初始化 openSeaDragon navigator
|
|
118
|
+
// 根据配置 启用不同模块功能: 标注模式,阅片模式,辅助工具集
|
|
119
|
+
// 阅片模式 支持轻量级标注
|
|
116
120
|
this.mitt = {
|
|
117
121
|
$on: this.$on,
|
|
118
122
|
$emit: this.$emit,
|
|
@@ -126,6 +130,9 @@ export default class KfbView extends EventEmitter {
|
|
|
126
130
|
initEvent(this);
|
|
127
131
|
this.initLabelList(config.labelList || []);
|
|
128
132
|
this.resizeViewContainer(this.$options);
|
|
133
|
+
if (config.showZrender) {
|
|
134
|
+
initZrender(this);
|
|
135
|
+
}
|
|
129
136
|
}
|
|
130
137
|
|
|
131
138
|
/**
|
|
@@ -133,17 +140,11 @@ export default class KfbView extends EventEmitter {
|
|
|
133
140
|
* @param {Array} list
|
|
134
141
|
*/
|
|
135
142
|
initLabelList(list) {
|
|
136
|
-
this.labelList = list.map((item) => {
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
return new LabelModel({
|
|
142
|
-
...item,
|
|
143
|
-
region: item.region || pointsToRegion(item.points),
|
|
144
|
-
__data__: deepClone(item),
|
|
145
|
-
});
|
|
146
|
-
});
|
|
143
|
+
this.labelList = list.map((item) => new LabelModel({
|
|
144
|
+
...item,
|
|
145
|
+
region: item.region || pointsToRegion(item.points),
|
|
146
|
+
__data__: deepClone(item),
|
|
147
|
+
}));
|
|
147
148
|
this.board?.setLabelList?.(this.labelList);
|
|
148
149
|
this.shape?.setLabelList?.(this.labelList);
|
|
149
150
|
this.area?.setLabelList?.(this.labelList);
|
|
@@ -151,17 +152,11 @@ export default class KfbView extends EventEmitter {
|
|
|
151
152
|
|
|
152
153
|
appendLabelList(list) {
|
|
153
154
|
this.labelList = [
|
|
154
|
-
...this.labelList, ...list.map((item) => {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
return new LabelModel({
|
|
160
|
-
...item,
|
|
161
|
-
region: item.region || pointsToRegion(item.points),
|
|
162
|
-
__data__: deepClone(item),
|
|
163
|
-
});
|
|
164
|
-
})];
|
|
155
|
+
...this.labelList, ...list.map((item) => new LabelModel({
|
|
156
|
+
...item,
|
|
157
|
+
region: item.region || pointsToRegion(item.points),
|
|
158
|
+
__data__: deepClone(item),
|
|
159
|
+
}))];
|
|
165
160
|
this.board?.setLabelList?.(this.labelList);
|
|
166
161
|
this.shape?.setLabelList?.(this.labelList);
|
|
167
162
|
this.area?.setLabelList?.(this.labelList);
|
|
@@ -289,6 +284,23 @@ function initNavigator(kv) {
|
|
|
289
284
|
}
|
|
290
285
|
}
|
|
291
286
|
|
|
287
|
+
// zrender的重绘 要在openSeaDragon触发渲染时间中去实时执行
|
|
288
|
+
function initZrender(kv) {
|
|
289
|
+
const element = document.createElement('div');
|
|
290
|
+
element.setAttribute('id', 'openseadragon-zrender');
|
|
291
|
+
element.style.cssText += 'position:absolute;bottom: 0;left:0;width:100%;height:100%;z-index:0';
|
|
292
|
+
kv.viewer.canvas.appendChild(element);
|
|
293
|
+
kv.zViewer = zr.init(element, {renderer: 'canvas'});
|
|
294
|
+
kv.zApi = zr;
|
|
295
|
+
kv.openSeadragon = openSeadragon;
|
|
296
|
+
kv.viewer.addHandler('open', () => {
|
|
297
|
+
kv.$emit(EVENTS.EVENT_INIT_COMPLETE);
|
|
298
|
+
});
|
|
299
|
+
kv.viewer.addHandler('update-viewport', ()=>{
|
|
300
|
+
kv.$emit(EVENTS.EVENT_UPDATE_ZRENDER);
|
|
301
|
+
});
|
|
302
|
+
}
|
|
303
|
+
|
|
292
304
|
function createCanvas(kv) {
|
|
293
305
|
const config = kv.$options;
|
|
294
306
|
const canvas = document.createElement('canvas');
|
|
@@ -527,7 +539,6 @@ KfbView.marks = {};
|
|
|
527
539
|
MARKS.forEach((key) => {
|
|
528
540
|
KfbView.marks[key.toLocaleUpperCase()] = key;
|
|
529
541
|
});
|
|
530
|
-
|
|
531
542
|
KfbView.events = {
|
|
532
543
|
...EVENTS,
|
|
533
544
|
};
|