@visactor/vrender-kits
Version:
```typescript import { xxx } from '@visactor/vrender-kits'; ```
59 lines (53 loc) • 3.79 kB
JavaScript
;
var __decorate = this && this.__decorate || function(decorators, target, key, desc) {
var d, c = arguments.length, r = c < 3 ? target : null === desc ? desc = Object.getOwnPropertyDescriptor(target, key) : desc;
if ("object" == typeof Reflect && "function" == typeof Reflect.decorate) r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) (d = decorators[i]) && (r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r);
return c > 3 && r && Object.defineProperty(target, key, r), r;
}, __metadata = this && this.__metadata || function(k, v) {
if ("object" == typeof Reflect && "function" == typeof Reflect.metadata) return Reflect.metadata(k, v);
}, __param = this && this.__param || function(paramIndex, decorator) {
return function(target, key) {
decorator(target, key, paramIndex);
};
};
Object.defineProperty(exports, "__esModule", {
value: !0
}), exports.DefaultCanvasTextPicker = void 0;
const vrender_core_1 = require("@visactor/vrender-core"), base_3d_picker_1 = require("../common/base-3d-picker");
let DefaultCanvasTextPicker = class extends base_3d_picker_1.Base3dPicker {
constructor(canvasRenderer) {
super(), this.canvasRenderer = canvasRenderer, this.type = "text", this.numberType = vrender_core_1.TEXT_NUMBER_TYPE;
}
contains(text, point, params) {
const {pickContext: pickContext} = null != params ? params : {};
if (!pickContext) return !1;
const bounds = text.AABBBounds;
if (!pickContext.camera) return !!bounds.containsPoint(point);
pickContext.highPerformanceSave();
const textAttribute = text.getGraphicTheme(), {keepDirIn3d: keepDirIn3d = textAttribute.keepDirIn3d} = text.attribute, computed3dMatrix = !keepDirIn3d, data = this.transform(text, textAttribute, pickContext, computed3dMatrix), {x: x, y: y, z: z, lastModelMatrix: lastModelMatrix} = data;
this.canvasRenderer.z = z;
let pickPoint = point;
if (pickContext.camera) {
pickPoint = point.clone();
const globalMatrix = text.parent.globalTransMatrix;
pickPoint.x = globalMatrix.a * point.x + globalMatrix.c * point.y + globalMatrix.e,
pickPoint.y = globalMatrix.b * point.x + globalMatrix.d * point.y + globalMatrix.f;
}
let picked = !1;
return this.canvasRenderer.drawShape(text, pickContext, x, y, {}, null, ((context, symbolAttribute, themeAttribute) => {
if (picked) return !0;
const {fontSize: fontSize = textAttribute.fontSize, textBaseline: textBaseline = textAttribute.textBaseline, textAlign: textAlign = textAttribute.textAlign} = text.attribute, bounds = text.AABBBounds, height = bounds.height(), width = bounds.width(), offsetY = (0,
vrender_core_1.textLayoutOffsetY)(textBaseline, height, fontSize), offsetX = (0,
vrender_core_1.textDrawOffsetX)(textAlign, width);
return context.rect(offsetX + x, offsetY + y, width, height, z), picked = context.isPointInPath(pickPoint.x, pickPoint.y),
picked;
}), ((context, symbolAttribute, themeAttribute) => picked)), this.canvasRenderer.z = 0,
pickContext.modelMatrix !== lastModelMatrix && vrender_core_1.mat4Allocate.free(pickContext.modelMatrix),
pickContext.modelMatrix = lastModelMatrix, pickContext.highPerformanceRestore(),
picked;
}
};
DefaultCanvasTextPicker = __decorate([ (0, vrender_core_1.injectable)(), __param(0, (0,
vrender_core_1.inject)(vrender_core_1.TextRender)), __metadata("design:paramtypes", [ Object ]) ], DefaultCanvasTextPicker),
exports.DefaultCanvasTextPicker = DefaultCanvasTextPicker;
//# sourceMappingURL=text-picker.js.map