@dark-engine/platform-desktop
Version:
Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt
46 lines (45 loc) • 1.26 kB
JavaScript
import { QLabel, QMovie } from '@nodegui/nodegui';
import { component } from '@dark-engine/core';
import fetch from 'node-fetch';
import { qAnimatedImage } from '../factory';
import { detectisValidURL } from '../utils';
const AnimatedImage = component(props => qAnimatedImage(props), {
displayName: 'AnimatedImage',
});
class QDarkAnimatedImage extends 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();
}
}
async function createMoviewFromPath(src) {
const movie = new QMovie();
if (detectisValidURL(src)) {
const response = await fetch(src);
const buffer = Buffer.from(await response.arrayBuffer());
movie.loadFromData(buffer);
} else {
movie.setFileName(src);
}
return movie;
}
function createMovieFromBuffer(buffer) {
const movie = new QMovie();
movie.loadFromData(buffer);
return movie;
}
export { AnimatedImage, QDarkAnimatedImage };
//# sourceMappingURL=animated-image.js.map