UNPKG

@dark-engine/platform-desktop

Version:

Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt

68 lines (67 loc) 2.07 kB
'use strict'; var __importDefault = (this && this.__importDefault) || function (mod) { return mod && mod.__esModule ? mod : { default: mod }; }; Object.defineProperty(exports, '__esModule', { value: true }); exports.QDarkImage = exports.Image = void 0; const nodegui_1 = require('@nodegui/nodegui'); const core_1 = require('@dark-engine/core'); const node_fetch_1 = __importDefault(require('node-fetch')); const factory_1 = require('../factory'); const utils_1 = require('../utils'); const Image = (0, core_1.component)(props => (0, factory_1.qImage)(props), { displayName: 'Image' }); exports.Image = Image; class QDarkImage extends nodegui_1.QLabel { aspectRatioMode = nodegui_1.AspectRatioMode.KeepAspectRatio; transformationMode = nodegui_1.TransformationMode.FastTransformation; constructor() { super(); this.setProperty('scaledContents', true); } async setSrc(value) { if (!value) return; try { this.setPixmap(this.scale(await createPixmapFromPath(value))); } catch (error) { console.warn(error); } } setBuffer(buffer) { this.setPixmap(createPixmapFromBuffer(buffer)); } setAspectRatioMode(mode) { this.aspectRatioMode = mode; this.fit(); } setTransformationMode(mode) { this.transformationMode = mode; this.fit(); } fit() { if (!this.pixmap()) return; this.setPixmap(this.scale(this.pixmap())); } scale(pixmap) { return pixmap.scaled(this.width(), this.height(), this.aspectRatioMode, this.transformationMode); } } exports.QDarkImage = QDarkImage; async function createPixmapFromPath(src) { const pixmap = new nodegui_1.QPixmap(); if ((0, utils_1.detectisValidURL)(src)) { const response = await (0, node_fetch_1.default)(src); const buffer = Buffer.from(await response.arrayBuffer()); pixmap.loadFromData(buffer); } else { pixmap.load(src); } return pixmap; } function createPixmapFromBuffer(buffer) { const pixmap = new nodegui_1.QPixmap(); pixmap.loadFromData(buffer); return pixmap; } //# sourceMappingURL=image.js.map