@dark-engine/platform-desktop
Version:
Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt
55 lines (54 loc) • 1.68 kB
JavaScript
;
var __importDefault =
(this && this.__importDefault) ||
function (mod) {
return mod && mod.__esModule ? mod : { default: mod };
};
Object.defineProperty(exports, '__esModule', { value: true });
exports.QDarkAnimatedImage = exports.AnimatedImage = 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 AnimatedImage = (0, core_1.component)(props => (0, factory_1.qAnimatedImage)(props), {
displayName: 'AnimatedImage',
});
exports.AnimatedImage = AnimatedImage;
class QDarkAnimatedImage extends nodegui_1.QLabel {
constructor() {
super();
this.setProperty('scaledContents', true);
}
async setSrc(value) {
if (!value) return;
try {
this.setMovie(await createMoviewFromPath(value));
this.movie().start();
} catch (error) {
console.warn(error);
}
}
setBuffer(buffer) {
this.setMovie(createMovieFromBuffer(buffer));
this.movie().start();
}
}
exports.QDarkAnimatedImage = QDarkAnimatedImage;
async function createMoviewFromPath(src) {
const movie = new nodegui_1.QMovie();
if ((0, utils_1.detectisValidURL)(src)) {
const response = await (0, node_fetch_1.default)(src);
const buffer = Buffer.from(await response.arrayBuffer());
movie.loadFromData(buffer);
} else {
movie.setFileName(src);
}
return movie;
}
function createMovieFromBuffer(buffer) {
const movie = new nodegui_1.QMovie();
movie.loadFromData(buffer);
return movie;
}
//# sourceMappingURL=animated-image.js.map