Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
const kappa = 0.5522848;
const ox = (w / 2) * kappa; // control point offset horizontal
const oy = (h / 2) * kappa; // control point offset vertical
const xe = x + w; // x-end
const ye = y + h; // y-end
const xm = x + (w / 2); // x-middle
const ym = y + (h / 2); // y-middle
context.moveTo(x, ym);
context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);
context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);
context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);
context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);
context.closePath();
}
else if (data.type === SHAPES.RREC)
{
const rx = shape.x;
const ry = shape.y;
const width = shape.width;
const height = shape.height;
let radius = shape.radius;
const maxRadius = Math.min(width, height) / 2 | 0;
radius = radius > maxRadius ? maxRadius : radius;
context.moveTo(rx, ry + radius);
context.lineTo(rx, ry + height - radius);
context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height);
context.lineTo(rx + width - radius, ry + height);
context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius);
webGL.lastIndex++;
}
if (data.type === SHAPES.POLY)
{
buildPoly(data, webGLData, webGLDataNativeLines);
}
if (data.type === SHAPES.RECT)
{
buildRectangle(data, webGLData, webGLDataNativeLines);
}
else if (data.type === SHAPES.CIRC || data.type === SHAPES.ELIP)
{
buildCircle(data, webGLData, webGLDataNativeLines);
}
else if (data.type === SHAPES.RREC)
{
buildRoundedRectangle(data, webGLData, webGLDataNativeLines);
}
webGL.lastIndex++;
}
// this.renderer.geometry.bindVao(null);
// upload all the dirty data...
for (let i = 0; i < webGL.data.length; i++)
{
webGLData = webGL.data[i];
if (webGLData.dirty)
{
const kappa = 0.5522848;
const ox = (w / 2) * kappa; // control point offset horizontal
const oy = (h / 2) * kappa; // control point offset vertical
const xe = x + w; // x-end
const ye = y + h; // y-end
const xm = x + (w / 2); // x-middle
const ym = y + (h / 2); // y-middle
context.moveTo(x, ym);
context.bezierCurveTo(x, ym - oy, xm - ox, y, xm, y);
context.bezierCurveTo(xm + ox, y, xe, ym - oy, xe, ym);
context.bezierCurveTo(xe, ym + oy, xm + ox, ye, xm, ye);
context.bezierCurveTo(xm - ox, ye, x, ym + oy, x, ym);
context.closePath();
}
else if (data.type === SHAPES.RREC)
{
const rx = shape.x;
const ry = shape.y;
const width = shape.width;
const height = shape.height;
let radius = shape.radius;
const maxRadius = Math.min(width, height) / 2 | 0;
radius = radius > maxRadius ? maxRadius : radius;
context.moveTo(rx, ry + radius);
context.lineTo(rx, ry + height - radius);
context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height);
context.lineTo(rx + width - radius, ry + height);
context.quadraticCurveTo(rx + width, ry + height, rx + width, ry + height - radius);
{
lineWidth = lineWidth * Math.max(0, alignment);
}
}
if (curMatrix !== nextMatrix)
{
if (!sequenceBounds.isEmpty())
{
bounds.addBoundsMatrix(sequenceBounds, curMatrix);
sequenceBounds.clear();
}
curMatrix = nextMatrix;
}
if (type === SHAPES.RECT || type === SHAPES.RREC)
{
sequenceBounds.addFramePad(shape.x, shape.y, shape.x + shape.width, shape.y + shape.height,
lineWidth, lineWidth);
}
else if (type === SHAPES.CIRC)
{
sequenceBounds.addFramePad(shape.x, shape.y, shape.x, shape.y,
shape.radius + lineWidth, shape.radius + lineWidth);
}
else if (type === SHAPES.ELIP)
{
sequenceBounds.addFramePad(shape.x, shape.y, shape.x, shape.y,
shape.width + lineWidth, shape.height + lineWidth);
}
else
{
{
let shape = 0;
let x = 0;
let y = 0;
let w = 0;
let h = 0;
for (let i = 0; i < this.graphicsData.length; i++)
{
const data = this.graphicsData[i];
const type = data.type;
const lineWidth = data.lineWidth;
shape = data.shape;
if (type === SHAPES.RECT || type === SHAPES.RREC)
{
x = shape.x - (lineWidth / 2);
y = shape.y - (lineWidth / 2);
w = shape.width + lineWidth;
h = shape.height + lineWidth;
minX = x < minX ? x : minX;
maxX = x + w > maxX ? x + w : maxX;
minY = y < minY ? y : minY;
maxY = y + h > maxY ? y + h : maxY;
}
else if (type === SHAPES.CIRC)
{
x = shape.x;
y = shape.y;
export * from './BatchPart';
import { SHAPES } from '@pixi/math';
/**
* Map of fill commands for each shape type.
*
* @memberof PIXI.graphicsUtils
* @member {Object}
*/
export const FILL_COMMANDS = {
[SHAPES.POLY]: buildPoly,
[SHAPES.CIRC]: buildCircle,
[SHAPES.ELIP]: buildCircle,
[SHAPES.RECT]: buildRectangle,
[SHAPES.RREC]: buildRoundedRectangle,
};
/**
* Batch pool, stores unused batches for preventing allocations.
*
* @memberof PIXI.graphicsUtils
* @type {Array}
*/
export const BATCH_POOL = [];
/**
* Draw call pool, stores unused draw calls for preventing allocations.
*
* @memberof PIXI.graphicsUtils
* @type {Array}
*/
context.closePath();
if (fillStyle.visible)
{
context.globalAlpha = fillStyle.alpha * worldAlpha;
context.fillStyle = `#${(`00000${(fillColor | 0).toString(16)}`).substr(-6)}`;
context.fill();
}
if (lineStyle.visible)
{
context.globalAlpha = lineStyle.alpha * worldAlpha;
context.strokeStyle = `#${(`00000${(lineColor | 0).toString(16)}`).substr(-6)}`;
context.stroke();
}
}
else if (data.type === SHAPES.RREC)
{
const rx = shape.x;
const ry = shape.y;
const width = shape.width;
const height = shape.height;
let radius = shape.radius;
const maxRadius = Math.min(width, height) / 2 | 0;
radius = radius > maxRadius ? maxRadius : radius;
context.beginPath();
context.moveTo(rx, ry + radius);
context.lineTo(rx, ry + height - radius);
context.quadraticCurveTo(rx, ry + height, rx + radius, ry + height);
context.lineTo(rx + width - radius, ry + height);