@antv/s2
Version:
effective spreadsheet render core lib
34 lines • 1.39 kB
JavaScript
import { __awaiter } from "tslib";
import { Image as GImage } from '@antv/g';
import { CellClipBox, } from '../common/interface';
import { asyncDrawImage, calculateImageSize, } from '../utils/cell/customRenderer';
import { BaseRenderer } from './BaseRenderer';
// 图片渲染器
export class ImageRenderer extends BaseRenderer {
prepare(renderer, cell) {
return __awaiter(this, void 0, void 0, function* () {
const text = yield this.prepareText(renderer, cell);
return asyncDrawImage({
src: text,
fallback: renderer.fallback,
timeout: renderer.timeout,
mediaCache: BaseRenderer.mediaCache,
});
});
}
generateConfig(renderer, cell, element) {
const { y, height, width } = cell.getBBoxByType(CellClipBox.CONTENT_BOX);
const { width: calcWidth, height: calcHeight } = calculateImageSize(width, height, element.naturalWidth, element.naturalHeight);
const { x: calcX } = cell.getContentPosition({
contentWidth: calcWidth,
});
return {
style: Object.assign({ x: calcX, y, src: element, width: calcWidth, height: calcHeight }, renderer.config),
};
}
render(cell, config) {
cell.appendChild(new GImage(config));
}
destroy() { }
}
//# sourceMappingURL=ImageRenderer.js.map