@asoftwareworld/form-builder
Version:
ASW Form Builder helps you with rapid development and designed web forms which includes several controls. The key feature of Form Builder is to make your content attractive and effective. We can customize our control at run time and preview the same befor
79 lines • 12.8 kB
JavaScript
/**
* @license
* Copyright ASW (A Software World) All Rights Reserved.
*
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file
*/
export function resizeCanvas(canvas, width, height) {
const WIDTH_SOURCE = canvas.width;
const HEIGHT_SOURCE = canvas.height;
width = Math.round(width);
height = Math.round(height);
const RATIO_W = WIDTH_SOURCE / width;
const RATIO_H = HEIGHT_SOURCE / height;
const RATIO_W_HALF = Math.ceil(RATIO_W / 2);
const RATIO_H_HALF = Math.ceil(RATIO_H / 2);
const ctx = canvas.getContext('2d');
if (ctx) {
const img = ctx.getImageData(0, 0, WIDTH_SOURCE, HEIGHT_SOURCE);
const img2 = ctx.createImageData(width, height);
const data = img.data;
const data2 = img2.data;
for (let j = 0; j < height; j++) {
for (let i = 0; i < width; i++) {
const x2 = (i + j * width) * 4;
const CENTER_Y = j * RATIO_H;
let weight = 0;
let weights = 0;
let WEIGHTS_ALPHA = 0;
let GX_R = 0;
let GX_G = 0;
let GX_B = 0;
let GX_A = 0;
const XX_START = Math.floor(i * RATIO_W);
const YY_START = Math.floor(j * RATIO_H);
let XX_STOP = Math.ceil((i + 1) * RATIO_W);
let YY_STOP = Math.ceil((j + 1) * RATIO_H);
XX_STOP = Math.min(XX_STOP, WIDTH_SOURCE);
YY_STOP = Math.min(YY_STOP, HEIGHT_SOURCE);
for (let yy = YY_START; yy < YY_STOP; yy++) {
const dy = Math.abs(CENTER_Y - yy) / RATIO_H_HALF;
const CENTER_X = i * RATIO_W;
const w0 = dy * dy; // pre-calc part of w
for (let xx = XX_START; xx < XX_STOP; xx++) {
const dx = Math.abs(CENTER_X - xx) / RATIO_W_HALF;
const w = Math.sqrt(w0 + dx * dx);
if (w >= 1) {
// pixel too far
continue;
}
// hermite filter
weight = 2 * w * w * w - 3 * w * w + 1;
const POS_X = 4 * (xx + yy * WIDTH_SOURCE);
// alpha
GX_A += weight * data[POS_X + 3];
WEIGHTS_ALPHA += weight;
// colors
if (data[POS_X + 3] < 255) {
weight = weight * data[POS_X + 3] / 250;
}
GX_R += weight * data[POS_X];
GX_G += weight * data[POS_X + 1];
GX_B += weight * data[POS_X + 2];
weights += weight;
}
}
data2[x2] = GX_R / weights;
data2[x2 + 1] = GX_G / weights;
data2[x2 + 2] = GX_B / weights;
data2[x2 + 3] = GX_A / WEIGHTS_ALPHA;
}
}
canvas.width = width;
canvas.height = height;
// draw
ctx.putImageData(img2, 0, 0);
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2NvbXBvbmVudHMvaW1hZ2UtY3JvcC91dGlscy9yZXNpemUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsTUFBTSxVQUFVLFlBQVksQ0FBQyxNQUF5QixFQUFFLEtBQWEsRUFBRSxNQUFjO0lBQ2pGLE1BQU0sWUFBWSxHQUFHLE1BQU0sQ0FBQyxLQUFLLENBQUM7SUFDbEMsTUFBTSxhQUFhLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztJQUNwQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMxQixNQUFNLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUU1QixNQUFNLE9BQU8sR0FBRyxZQUFZLEdBQUcsS0FBSyxDQUFDO0lBQ3JDLE1BQU0sT0FBTyxHQUFHLGFBQWEsR0FBRyxNQUFNLENBQUM7SUFDdkMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDNUMsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFFNUMsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNwQyxJQUFJLEdBQUcsRUFBRSxDQUFDO1FBQ04sTUFBTSxHQUFHLEdBQUcsR0FBRyxDQUFDLFlBQVksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztRQUNoRSxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsZUFBZSxDQUFDLEtBQUssRUFBRSxNQUFNLENBQUMsQ0FBQztRQUNoRCxNQUFNLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDO1FBQ3RCLE1BQU0s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LElBQUksSUFBSSxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUMsR0FBRyxHQUFHLEVBQUUsQ0FBQzs0QkFDeEIsTUFBTSxHQUFHLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUcsQ0FBQzt3QkFDNUMsQ0FBQzt3QkFDRCxJQUFJLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQzt3QkFDN0IsSUFBSSxJQUFJLE1BQU0sR0FBRyxJQUFJLENBQUMsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDO3dCQUNqQyxJQUFJLElBQUksTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7d0JBQ2pDLE9BQU8sSUFBSSxNQUFNLENBQUM7b0JBQ3RCLENBQUM7Z0JBQ0wsQ0FBQztnQkFDRCxLQUFLLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxHQUFHLE9BQU8sQ0FBQztnQkFDM0IsS0FBSyxDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUMsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDO2dCQUMvQixLQUFLLENBQUMsRUFBRSxHQUFHLENBQUMsQ0FBQyxHQUFHLElBQUksR0FBRyxPQUFPLENBQUM7Z0JBQy9CLEtBQUssQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSSxHQUFHLGFBQWEsQ0FBQztZQUN6QyxDQUFDO1FBQ0wsQ0FBQztRQUdELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFDO1FBRXZCLE9BQU87UUFDUCxHQUFHLENBQUMsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUM7SUFDakMsQ0FBQztBQUNMLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcclxuICogQGxpY2Vuc2VcclxuICogQ29weXJpZ2h0IEFTVyAoQSBTb2Z0d2FyZSBXb3JsZCkgQWxsIFJpZ2h0cyBSZXNlcnZlZC5cclxuICpcclxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcclxuICogZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZVxyXG4gKi9cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiByZXNpemVDYW52YXMoY2FudmFzOiBIVE1MQ2FudmFzRWxlbWVudCwgd2lkdGg6IG51bWJlciwgaGVpZ2h0OiBudW1iZXIpOiB2b2lkIHtcclxuICAgIGNvbnN0IFdJRFRIX1NPVVJDRSA9IGNhbnZhcy53aWR0aDtcclxuICAgIGNvbnN0IEhFSUdIVF9TT1VSQ0UgPSBjYW52YXMuaGVpZ2h0O1xyXG4gICAgd2lkdGggPSBNYXRoLnJvdW5kKHdpZHRoKTtcclxuICAgIGhlaWdodCA9IE1hdGgucm91bmQoaGVpZ2h0KTtcclxuXHJcbiAgICBjb25zdCBSQVRJT19XID0gV0lEVEhfU09VUkNFIC8gd2lkdGg7XHJcbiAgICBjb25zdCBSQVRJT19IID0gSEVJR0hUX1NPVVJDRSAvIGhlaWdodDtcclxuICAgIGNvbnN0IFJBVElPX1dfSEFMRiA9IE1hdGguY2VpbChSQVRJT19XIC8gMik7XHJcbiAgICBjb25zdCBSQVRJT19IX0hBTEYgPSBNYXRoLmNlaWwoUkFUSU9fSCAvIDIpO1xyXG5cclxuICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xyXG4gICAgaWYgKGN0eCkge1xyXG4gICAgICAgIGNvbnN0IGltZyA9IGN0eC5nZXRJbWFnZURhdGEoMCwgMCwgV0lEVEhfU09VUkNFLCBIRUlHSFRfU09VUkNFKTtcclxuICAgICAgICBjb25zdCBpbWcyID0gY3R4LmNyZWF0ZUltYWdlRGF0YSh3aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgICBjb25zdCBkYXRhID0gaW1nLmRhdGE7XHJcbiAgICAgICAgY29uc3QgZGF0YTIgPSBpbWcyLmRhdGE7XHJcblxyXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgaGVpZ2h0OyBqKyspIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCB4MiA9IChpICsgaiAqIHdpZHRoKSAqIDQ7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBDRU5URVJfWSA9IGogKiBSQVRJT19IO1xyXG4gICAgICAgICAgICAgICAgbGV0IHdlaWdodCA9IDA7XHJcbiAgICAgICAgICAgICAgICBsZXQgd2VpZ2h0cyA9IDA7XHJcbiAgICAgICAgICAgICAgICBsZXQgV0VJR0hUU19BTFBIQSA9IDA7XHJcbiAgICAgICAgICAgICAgICBsZXQgR1hfUiA9IDA7XHJcbiAgICAgICAgICAgICAgICBsZXQgR1hfRyA9IDA7XHJcbiAgICAgICAgICAgICAgICBsZXQgR1hfQiA9IDA7XHJcbiAgICAgICAgICAgICAgICBsZXQgR1hfQSA9IDA7XHJcblxyXG4gICAgICAgICAgICAgICAgY29uc3QgWFhfU1RBUlQgPSBNYXRoLmZsb29yKGkgKiBSQVRJT19XKTtcclxuICAgICAgICAgICAgICAgIGNvbnN0IFlZX1NUQVJUID0gTWF0aC5mbG9vcihqICogUkFUSU9fSCk7XHJcbiAgICAgICAgICAgICAgICBsZXQgWFhfU1RPUCA9IE1hdGguY2VpbCgoaSArIDEpICogUkFUSU9fVyk7XHJcbiAgICAgICAgICAgICAgICBsZXQgWVlfU1RPUCA9IE1hdGguY2VpbCgoaiArIDEpICogUkFUSU9fSCk7XHJcbiAgICAgICAgICAgICAgICBYWF9TVE9QID0gTWF0aC5taW4oWFhfU1RPUCwgV0lEVEhfU09VUkNFKTtcclxuICAgICAgICAgICAgICAgIFlZX1NUT1AgPSBNYXRoLm1pbihZWV9TVE9QLCBIRUlHSFRfU09VUkNFKTtcclxuXHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCB5eSA9IFlZX1NUQVJUOyB5eSA8IFlZX1NUT1A7IHl5KyspIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBkeSA9IE1hdGguYWJzKENFTlRFUl9ZIC0geXkpIC8gUkFUSU9fSF9IQUxGO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IENFTlRFUl9YID0gaSAqIFJBVElPX1c7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgdzAgPSBkeSAqIGR5OyAvLyBwcmUtY2FsYyBwYXJ0IG9mIHdcclxuICAgICAgICAgICAgICAgICAgICBmb3IgKGxldCB4eCA9IFhYX1NUQVJUOyB4eCA8IFhYX1NUT1A7IHh4KyspIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZHggPSBNYXRoLmFicyhDRU5URVJfWCAtIHh4KSAvIFJBVElPX1dfSEFMRjtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdyA9IE1hdGguc3FydCh3MCArIGR4ICogZHgpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodyA+PSAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwaXhlbCB0b28gZmFyXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBoZXJtaXRlIGZpbHRlclxyXG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQgPSAyICogdyAqIHcgKiB3IC0gMyAqIHcgKiB3ICsgMTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgUE9TX1ggPSA0ICogKHh4ICsgeXkgKiBXSURUSF9TT1VSQ0UpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyBhbHBoYVxyXG4gICAgICAgICAgICAgICAgICAgICAgICBHWF9BICs9IHdlaWdodCAqIGRhdGFbUE9TX1ggKyAzXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgV0VJR0hUU19BTFBIQSArPSB3ZWlnaHQ7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbG9yc1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YVtQT1NfWCArIDNdIDwgMjU1KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHQgPSB3ZWlnaHQgKiBkYXRhW1BPU19YICsgM10gLyAyNTA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAgICAgR1hfUiArPSB3ZWlnaHQgKiBkYXRhW1BPU19YXTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgR1hfRyArPSB3ZWlnaHQgKiBkYXRhW1BPU19YICsgMV07XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIEdYX0IgKz0gd2VpZ2h0ICogZGF0YVtQT1NfWCArIDJdO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB3ZWlnaHRzICs9IHdlaWdodDtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBkYXRhMlt4Ml0gPSBHWF9SIC8gd2VpZ2h0cztcclxuICAgICAgICAgICAgICAgIGRhdGEyW3gyICsgMV0gPSBHWF9HIC8gd2VpZ2h0cztcclxuICAgICAgICAgICAgICAgIGRhdGEyW3gyICsgMl0gPSBHWF9CIC8gd2VpZ2h0cztcclxuICAgICAgICAgICAgICAgIGRhdGEyW3gyICsgM10gPSBHWF9BIC8gV0VJR0hUU19BTFBIQTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgIGNhbnZhcy53aWR0aCA9IHdpZHRoO1xyXG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XHJcblxyXG4gICAgICAgIC8vIGRyYXdcclxuICAgICAgICBjdHgucHV0SW1hZ2VEYXRhKGltZzIsIDAsIDApO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==