@lightningjs/renderer
Version:
Lightning 3 Renderer
63 lines • 2.02 kB
JavaScript
/*
* If not stated otherwise in this file or this component's LICENSE file the
* following copyright and licenses apply:
*
* Copyright 2023 Comcast Cable Communications Management, LLC.
*
* Licensed under the Apache License, Version 2.0 (the License);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
import { assertTruthy } from '../../utils.js';
import {} from '../textures/Texture.js';
/**
* Tests if the given location is a SVG
* @param url
* @remarks
* This function is used to determine if the given image url is a SVG
* image
* @returns
*/
export function isSvgImage(url) {
return /\.(svg)(\?.*)?$/.test(url);
}
/**
* Loads a SVG image
* @param url
* @returns
*/
export const loadSvg = (url, width, height, sx, sy, sw, sh) => {
return new Promise((resolve, reject) => {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
assertTruthy(ctx);
ctx.imageSmoothingEnabled = true;
const img = new Image();
img.onload = () => {
const x = sx ?? 0;
const y = sy ?? 0;
const w = width || img.width;
const h = height || img.height;
canvas.width = w;
canvas.height = h;
ctx.drawImage(img, 0, 0, w, h);
resolve({
data: ctx.getImageData(x, y, sw ?? w, sh ?? h),
premultiplyAlpha: false,
});
};
img.onerror = (err) => {
reject(err);
};
img.src = url;
});
};
//# sourceMappingURL=textureSvg.js.map