openfl
Version:
A fast, productive library for 2D cross-platform development.
1,381 lines (1,367 loc) • 51.4 kB
JavaScript
// Class: openfl.display._internal.CanvasGraphics
var $global = typeof window != "undefined" ? window : typeof global != "undefined" ? global : typeof self != "undefined" ? self : this
$global.Object.defineProperty(exports, "__esModule", {value: true});
var __map_reserved = {};
// Imports
var $hxClasses = require("./../../../hxClasses_stub").default;
var $hxEnums = require("./../../../hxEnums_stub").default;
var $import = require("./../../../import_stub").default;
function openfl_display__$internal_DrawCommandBuffer() {return require("./../../../openfl/display/_internal/DrawCommandBuffer");}
function lime__$internal_graphics_ImageCanvasUtil() {return require("./../../../lime/_internal/graphics/ImageCanvasUtil");}
function openfl_geom_Matrix() {return require("./../../../openfl/geom/Matrix");}
function openfl_geom_Point() {return require("./../../../openfl/geom/Point");}
function Std() {return require("./../../../Std");}
function _$UInt_UInt_$Impl_$() {return require("./../../../_UInt/UInt_Impl_");}
function openfl_display__$internal_DrawCommandReader() {return require("./../../../openfl/display/_internal/DrawCommandReader");}
function openfl_display__$internal_DrawCommandType() {return require("./../../../openfl/display/_internal/DrawCommandType");}
function openfl__$Vector_Vector_$Impl_$() {return require("./../../../openfl/_Vector/Vector_Impl_");}
function StringTools() {return require("./../../../StringTools");}
function openfl_geom_Rectangle() {return require("./../../../openfl/geom/Rectangle");}
function openfl_display_BitmapData() {return require("./../../../openfl/display/BitmapData");}
// Constructor
var CanvasGraphics = function(){}
// Meta
CanvasGraphics.__name__ = "openfl.display._internal.CanvasGraphics";
CanvasGraphics.__isInterface__ = false;
CanvasGraphics.prototype = {
};
CanvasGraphics.prototype.__class__ = CanvasGraphics.prototype.constructor = $hxClasses["openfl.display._internal.CanvasGraphics"] = CanvasGraphics;
// Init
{
CanvasGraphics.hitTestCanvas = typeof(window) != "undefined" ? window.document.createElement("canvas") : null;
CanvasGraphics.hitTestContext = typeof(window) != "undefined" ? CanvasGraphics.hitTestCanvas.getContext("2d") : null;
};
// Statics
CanvasGraphics.closePath = function(strokeBefore) {
if(strokeBefore == null) {
strokeBefore = false;
}
if(CanvasGraphics.context.strokeStyle == null) {
return;
}
if(!strokeBefore) {
CanvasGraphics.context.closePath();
}
CanvasGraphics.context.stroke();
if(strokeBefore) {
CanvasGraphics.context.closePath();
}
CanvasGraphics.context.beginPath();
}
CanvasGraphics.createBitmapFill = function(bitmap,bitmapRepeat,smooth) {
(lime__$internal_graphics_ImageCanvasUtil().default).convertToCanvas(bitmap.image);
CanvasGraphics.setSmoothing(smooth);
return CanvasGraphics.context.createPattern(bitmap.image.get_src(),bitmapRepeat ? "repeat" : "no-repeat");
}
CanvasGraphics.createGradientPattern = function(type,colors,alphas,ratios,matrix,spreadMethod,interpolationMethod,focalPointRatio) {
var gradientFill = null;
var point = null;
var point2 = null;
var releaseMatrix = false;
var ratio = 0.0;
if(matrix == null) {
matrix = (openfl_geom_Matrix().default).__pool.get();
matrix.identity();
releaseMatrix = true;
}
switch(type) {
case "linear":
if(spreadMethod == "pad") {
gradientFill = CanvasGraphics.context.createLinearGradient(-819.2,0,819.2,0);
CanvasGraphics.pendingMatrix = matrix.clone();
CanvasGraphics.inversePendingMatrix = matrix.clone();
CanvasGraphics.inversePendingMatrix.invert();
var _g = 0;
var _g1 = colors.length;
while(_g < _g1) {
var i = _g++;
ratio = ratios[i] / 255;
if(ratio < 0) {
ratio = 0;
} else if(ratio > 1) {
ratio = 1;
}
gradientFill.addColorStop(ratio,CanvasGraphics.getRGBA(colors[i],alphas[i]));
}
if(point != null) {
(openfl_geom_Point().default).__pool.release(point);
}
if(point2 != null) {
(openfl_geom_Point().default).__pool.release(point2);
}
if(releaseMatrix) {
(openfl_geom_Matrix().default).__pool.release(matrix);
}
return gradientFill;
}
var gradientScale = spreadMethod == "pad" ? 1.0 : 25.0;
var dx = 0.5 * (gradientScale - 1.0) * 1638.4;
var canvas = window.document.createElement("canvas");
var context2 = canvas.getContext("2d");
var dimensions = CanvasGraphics.getDimensions(matrix);
canvas.width = CanvasGraphics.context.canvas.width;
canvas.height = CanvasGraphics.context.canvas.height;
gradientFill = CanvasGraphics.context.createLinearGradient(-819.2 - dx,0,819.2 + dx,0);
if(spreadMethod == "reflect") {
var t = 0;
var step = 0.04;
var a;
while(t < 1) {
var _g2 = 0;
var _g11 = colors.length;
while(_g2 < _g11) {
var i1 = _g2++;
ratio = ratios[i1] / 255;
ratio = t + ratio * step;
if(ratio < 0) {
ratio = 0;
} else if(ratio > 1) {
ratio = 1;
}
gradientFill.addColorStop(ratio,CanvasGraphics.getRGBA(colors[i1],alphas[i1]));
}
t += step;
a = colors.length - 1;
while(a >= 0) {
ratio = ratios[a] / 255;
ratio = t + (1.0 - ratio) * step;
if(ratio < 0) {
ratio = 0;
} else if(ratio > 1) {
ratio = 1;
}
gradientFill.addColorStop(ratio,CanvasGraphics.getRGBA(colors[a],alphas[a]));
--a;
}
t += step;
}
} else if(spreadMethod == "repeat") {
var t1 = 0;
var step1 = 0.04;
var a1;
while(t1 < 1) {
var _g3 = 0;
var _g12 = colors.length;
while(_g3 < _g12) {
var i2 = _g3++;
ratio = ratios[i2] / 255;
ratio = t1 + ratio * step1;
if(ratio < 0) {
ratio = 0;
} else if(ratio > 1) {
ratio = 0.999;
}
gradientFill.addColorStop(ratio,CanvasGraphics.getRGBA(colors[i2],alphas[i2]));
}
ratio = t1 + 0.001;
if(ratio < 0) {
ratio = 0;
} else if(ratio > 1) {
ratio = 1;
}
gradientFill.addColorStop(ratio - 0.001,CanvasGraphics.getRGBA(colors[colors.length - 1],alphas[alphas.length - 1]));
gradientFill.addColorStop(ratio,CanvasGraphics.getRGBA(colors[0],alphas[0]));
t1 += step1;
}
}
CanvasGraphics.pendingMatrix = new (openfl_geom_Matrix().default)();
CanvasGraphics.pendingMatrix.tx = matrix.tx - dimensions.width / 2;
CanvasGraphics.pendingMatrix.ty = matrix.ty - dimensions.height / 2;
CanvasGraphics.inversePendingMatrix = CanvasGraphics.pendingMatrix.clone();
CanvasGraphics.inversePendingMatrix.invert();
var path = new Path2D();
path.rect(0,0,canvas.width,canvas.height);
path.closePath();
var gradientMatrix = new DOMMatrix([matrix.a,matrix.b,matrix.c,matrix.d,matrix.tx,matrix.ty]);
var inverseMatrix = gradientMatrix.inverse();
var untransformedPath = new Path2D();
untransformedPath.addPath(path,inverseMatrix);
context2.fillStyle = gradientFill;
context2.setTransform(gradientMatrix);
context2.fill(untransformedPath);
return CanvasGraphics.context.createPattern(canvas,"no-repeat");
case "radial":
var radius = 819.2;
focalPointRatio = focalPointRatio > 1.0 ? 1.0 : focalPointRatio < -1.0 ? -1.0 : focalPointRatio;
gradientFill = CanvasGraphics.context.createRadialGradient(radius * focalPointRatio,0,0,0,0,radius);
CanvasGraphics.pendingMatrix = matrix.clone();
CanvasGraphics.inversePendingMatrix = matrix.clone();
CanvasGraphics.inversePendingMatrix.invert();
var _g4 = 0;
var _g13 = colors.length;
while(_g4 < _g13) {
var i3 = _g4++;
ratio = ratios[i3] / 255;
if(ratio < 0) {
ratio = 0;
} else if(ratio > 1) {
ratio = 1;
}
gradientFill.addColorStop(ratio,CanvasGraphics.getRGBA(colors[i3],alphas[i3]));
}
if(point != null) {
(openfl_geom_Point().default).__pool.release(point);
}
if(point2 != null) {
(openfl_geom_Point().default).__pool.release(point2);
}
if(releaseMatrix) {
(openfl_geom_Matrix().default).__pool.release(matrix);
}
return gradientFill;
}
}
CanvasGraphics.getRGBA = function(color,alpha) {
var r = (color & 16711680) >>> 16;
var g = (color & 65280) >>> 8;
var b = color & 255;
return "rgba(" + (Std().default).string(r == null ? null : (_$UInt_UInt_$Impl_$().default).toFloat(r)) + ", " + (Std().default).string(g == null ? null : (_$UInt_UInt_$Impl_$().default).toFloat(g)) + ", " + (Std().default).string(b == null ? null : (_$UInt_UInt_$Impl_$().default).toFloat(b)) + ", " + alpha + ")";
}
CanvasGraphics.getDimensions = function(matrix) {
var angle = Math.atan2(matrix.c,matrix.a);
var cos = Math.cos(angle);
var w = matrix.a / cos * 1638.4;
var h = matrix.d / cos * 1638.4;
if(w == 0 && h == 0) {
h = 819.2;
w = h;
}
return { width : w, height : h};
}
CanvasGraphics.createTempPatternCanvas = function(bitmap,repeat,width,height) {
var canvas = window.document.createElement("canvas");
var context = canvas.getContext("2d");
canvas.width = width;
canvas.height = height;
var tmp = bitmap.image.get_src();
context.fillStyle = context.createPattern(tmp,repeat ? "repeat" : "no-repeat");
context.beginPath();
context.moveTo(0,0);
context.lineTo(0,height);
context.lineTo(width,height);
context.lineTo(width,0);
context.lineTo(0,0);
context.closePath();
if(!CanvasGraphics.hitTesting) {
context.fill(CanvasGraphics.windingRule);
}
return canvas;
}
CanvasGraphics.drawRoundRect = function(x,y,width,height,ellipseWidth,ellipseHeight) {
if(ellipseHeight == null) {
ellipseHeight = ellipseWidth;
}
ellipseWidth *= 0.5;
ellipseHeight *= 0.5;
if(ellipseWidth > width / 2) {
ellipseWidth = width / 2;
}
if(ellipseHeight > height / 2) {
ellipseHeight = height / 2;
}
var xe = x + width;
var ye = y + height;
var cx1 = -ellipseWidth + ellipseWidth * 0.70710678118654752440084436210485;
var cx2 = -ellipseWidth + ellipseWidth * 0.4142135623730950488016887242097;
var cy1 = -ellipseHeight + ellipseHeight * 0.70710678118654752440084436210485;
var cy2 = -ellipseHeight + ellipseHeight * 0.4142135623730950488016887242097;
CanvasGraphics.context.moveTo(xe,ye - ellipseHeight);
CanvasGraphics.context.quadraticCurveTo(xe,ye + cy2,xe + cx1,ye + cy1);
CanvasGraphics.context.quadraticCurveTo(xe + cx2,ye,xe - ellipseWidth,ye);
CanvasGraphics.context.lineTo(x + ellipseWidth,ye);
CanvasGraphics.context.quadraticCurveTo(x - cx2,ye,x - cx1,ye + cy1);
CanvasGraphics.context.quadraticCurveTo(x,ye + cy2,x,ye - ellipseHeight);
CanvasGraphics.context.lineTo(x,y + ellipseHeight);
CanvasGraphics.context.quadraticCurveTo(x,y - cy2,x - cx1,y - cy1);
CanvasGraphics.context.quadraticCurveTo(x - cx2,y,x + ellipseWidth,y);
CanvasGraphics.context.lineTo(xe - ellipseWidth,y);
CanvasGraphics.context.quadraticCurveTo(xe + cx2,y,xe + cx1,y - cy1);
CanvasGraphics.context.quadraticCurveTo(xe,y - cy2,xe,y + ellipseHeight);
CanvasGraphics.context.lineTo(xe,ye - ellipseHeight);
}
CanvasGraphics.endFill = function() {
CanvasGraphics.context.beginPath();
CanvasGraphics.playCommands(CanvasGraphics.fillCommands,false);
CanvasGraphics.fillCommands.clear();
}
CanvasGraphics.endStroke = function() {
CanvasGraphics.context.beginPath();
CanvasGraphics.playCommands(CanvasGraphics.strokeCommands,true);
CanvasGraphics.context.closePath();
CanvasGraphics.strokeCommands.clear();
}
CanvasGraphics.hitTest = function(graphics,x,y) {
CanvasGraphics.bounds = graphics.__bounds;
CanvasGraphics.graphics = graphics;
if(graphics.__commands.get_length() == 0 || CanvasGraphics.bounds == null || CanvasGraphics.bounds.width <= 0 || CanvasGraphics.bounds.height <= 0) {
CanvasGraphics.graphics = null;
return false;
} else {
CanvasGraphics.hitTesting = true;
var transform = graphics.__renderTransform;
var px = transform.__transformX(x,y);
var py = transform.__transformY(x,y);
x = px;
y = py;
x -= transform.__transformX(CanvasGraphics.bounds.x,CanvasGraphics.bounds.y);
y -= transform.__transformY(CanvasGraphics.bounds.x,CanvasGraphics.bounds.y);
var cacheCanvas = graphics.__canvas;
var cacheContext = graphics.__context;
graphics.__canvas = CanvasGraphics.hitTestCanvas;
graphics.__context = CanvasGraphics.hitTestContext;
CanvasGraphics.context = graphics.__context;
CanvasGraphics.context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx,transform.ty);
CanvasGraphics.fillCommands.clear();
CanvasGraphics.strokeCommands.clear();
CanvasGraphics.hasFill = false;
CanvasGraphics.hasStroke = false;
CanvasGraphics.bitmapFill = null;
CanvasGraphics.bitmapRepeat = false;
CanvasGraphics.windingRule = "evenodd";
var data = new (openfl_display__$internal_DrawCommandReader().default)(graphics.__commands);
var _g = 0;
var _g1 = graphics.__commands.types;
while(_g < _g1.length) {
var type = _g1[_g];
++_g;
switch(type._hx_index) {
case 0:case 1:case 2:case 3:
CanvasGraphics.endFill();
if(CanvasGraphics.hasFill && CanvasGraphics.context.isPointInPath(x,y,CanvasGraphics.windingRule)) {
data.destroy();
graphics.__canvas = cacheCanvas;
graphics.__context = cacheContext;
CanvasGraphics.graphics = null;
return true;
}
CanvasGraphics.endStroke();
if(CanvasGraphics.hasStroke && CanvasGraphics.context.isPointInStroke(x,y)) {
data.destroy();
graphics.__canvas = cacheCanvas;
graphics.__context = cacheContext;
CanvasGraphics.graphics = null;
return true;
}
if(type == (openfl_display__$internal_DrawCommandType().default).BEGIN_BITMAP_FILL) {
var c = data.readBeginBitmapFill();
CanvasGraphics.fillCommands.beginBitmapFill(c.obj(0),c.obj(1),c.bool(0),c.bool(1));
CanvasGraphics.strokeCommands.beginBitmapFill(c.obj(0),c.obj(1),c.bool(0),c.bool(1));
} else if(type == (openfl_display__$internal_DrawCommandType().default).BEGIN_GRADIENT_FILL) {
var c1 = data.readBeginGradientFill();
CanvasGraphics.fillCommands.beginGradientFill(c1.obj(0),c1.iArr(0),c1.fArr(0),c1.iArr(1),c1.obj(1),c1.obj(2),c1.obj(3),c1.float(0));
CanvasGraphics.strokeCommands.beginGradientFill(c1.obj(0),c1.iArr(0),c1.fArr(0),c1.iArr(1),c1.obj(1),c1.obj(2),c1.obj(3),c1.float(0));
} else if(type == (openfl_display__$internal_DrawCommandType().default).BEGIN_SHADER_FILL) {
var c2 = data.readBeginShaderFill();
CanvasGraphics.fillCommands.beginShaderFill(c2.obj(0));
CanvasGraphics.strokeCommands.beginShaderFill(c2.obj(0));
} else {
var c3 = data.readBeginFill();
CanvasGraphics.fillCommands.beginFill(c3.int(0),1);
CanvasGraphics.strokeCommands.beginFill(c3.int(0),1);
}
break;
case 4:
var c4 = data.readCubicCurveTo();
CanvasGraphics.fillCommands.cubicCurveTo(c4.float(0),c4.float(1),c4.float(2),c4.float(3),c4.float(4),c4.float(5));
CanvasGraphics.strokeCommands.cubicCurveTo(c4.float(0),c4.float(1),c4.float(2),c4.float(3),c4.float(4),c4.float(5));
break;
case 5:
var c5 = data.readCurveTo();
CanvasGraphics.fillCommands.curveTo(c5.float(0),c5.float(1),c5.float(2),c5.float(3));
CanvasGraphics.strokeCommands.curveTo(c5.float(0),c5.float(1),c5.float(2),c5.float(3));
break;
case 6:
var c6 = data.readDrawCircle();
CanvasGraphics.fillCommands.drawCircle(c6.float(0),c6.float(1),c6.float(2));
CanvasGraphics.strokeCommands.drawCircle(c6.float(0),c6.float(1),c6.float(2));
break;
case 7:
var c7 = data.readDrawEllipse();
CanvasGraphics.fillCommands.drawEllipse(c7.float(0),c7.float(1),c7.float(2),c7.float(3));
CanvasGraphics.strokeCommands.drawEllipse(c7.float(0),c7.float(1),c7.float(2),c7.float(3));
break;
case 9:
var c8 = data.readDrawRect();
CanvasGraphics.fillCommands.drawRect(c8.float(0),c8.float(1),c8.float(2),c8.float(3));
CanvasGraphics.strokeCommands.drawRect(c8.float(0),c8.float(1),c8.float(2),c8.float(3));
break;
case 10:
var c9 = data.readDrawRoundRect();
CanvasGraphics.fillCommands.drawRoundRect(c9.float(0),c9.float(1),c9.float(2),c9.float(3),c9.float(4),c9.obj(0));
CanvasGraphics.strokeCommands.drawRoundRect(c9.float(0),c9.float(1),c9.float(2),c9.float(3),c9.float(4),c9.obj(0));
break;
case 13:
data.readEndFill();
CanvasGraphics.endFill();
if(CanvasGraphics.hasFill && CanvasGraphics.context.isPointInPath(x,y,CanvasGraphics.windingRule)) {
data.destroy();
graphics.__canvas = cacheCanvas;
graphics.__context = cacheContext;
CanvasGraphics.graphics = null;
return true;
}
CanvasGraphics.endStroke();
if(CanvasGraphics.hasStroke && CanvasGraphics.context.isPointInStroke(x,y)) {
data.destroy();
graphics.__canvas = cacheCanvas;
graphics.__context = cacheContext;
CanvasGraphics.graphics = null;
return true;
}
CanvasGraphics.hasFill = false;
CanvasGraphics.bitmapFill = null;
break;
case 14:
var c10 = data.readLineBitmapStyle();
CanvasGraphics.strokeCommands.lineBitmapStyle(c10.obj(0),c10.obj(1),c10.bool(0),c10.bool(1));
break;
case 15:
var c11 = data.readLineGradientStyle();
CanvasGraphics.strokeCommands.lineGradientStyle(c11.obj(0),c11.iArr(0),c11.fArr(0),c11.iArr(1),c11.obj(1),c11.obj(2),c11.obj(3),c11.float(0));
break;
case 16:
CanvasGraphics.endStroke();
if(CanvasGraphics.hasStroke && CanvasGraphics.context.isPointInStroke(x,y)) {
data.destroy();
graphics.__canvas = cacheCanvas;
graphics.__context = cacheContext;
CanvasGraphics.graphics = null;
return true;
}
var c12 = data.readLineStyle();
CanvasGraphics.strokeCommands.lineStyle(c12.obj(0),c12.int(0),1,c12.bool(0),c12.obj(1),c12.obj(2),c12.obj(3),c12.float(1));
break;
case 17:
var c13 = data.readLineTo();
CanvasGraphics.fillCommands.lineTo(c13.float(0),c13.float(1));
CanvasGraphics.strokeCommands.lineTo(c13.float(0),c13.float(1));
break;
case 18:
var c14 = data.readMoveTo();
CanvasGraphics.fillCommands.moveTo(c14.float(0),c14.float(1));
CanvasGraphics.strokeCommands.moveTo(c14.float(0),c14.float(1));
break;
case 21:
CanvasGraphics.windingRule = "evenodd";
break;
case 22:
CanvasGraphics.windingRule = "nonzero";
break;
default:
data.skip(type);
}
}
var hitTest = false;
if(CanvasGraphics.fillCommands.get_length() > 0) {
CanvasGraphics.endFill();
}
if(CanvasGraphics.hasFill && CanvasGraphics.context.isPointInPath(x,y,CanvasGraphics.windingRule)) {
hitTest = true;
}
if(CanvasGraphics.strokeCommands.get_length() > 0) {
CanvasGraphics.endStroke();
}
if(CanvasGraphics.hasStroke && CanvasGraphics.context.isPointInStroke(x,y)) {
hitTest = true;
}
data.destroy();
graphics.__canvas = cacheCanvas;
graphics.__context = cacheContext;
CanvasGraphics.graphics = null;
return hitTest;
}
}
CanvasGraphics.isCCW = function(x1,y1,x2,y2,x3,y3) {
return (x2 - x1) * (y3 - y1) - (y2 - y1) * (x3 - x1) < 0;
}
CanvasGraphics.normalizeUVT = function(uvt,skipT) {
if(skipT == null) {
skipT = false;
}
var max = -Infinity;
var tmp = -Infinity;
var len = uvt.get_length();
var _g = 1;
var _g1 = len + 1;
while(_g < _g1) {
var t = _g++;
if(skipT && t % 3 == 0) {
continue;
}
tmp = uvt[t - 1];
if(max < tmp) {
max = tmp;
}
}
if(!skipT) {
return { max : max, uvt : uvt};
}
var result = (openfl__$Vector_Vector_$Impl_$().default)._new();
var _g2 = 1;
var _g3 = len + 1;
while(_g2 < _g3) {
var t1 = _g2++;
if(skipT && t1 % 3 == 0) {
continue;
}
(openfl__$Vector_Vector_$Impl_$().default).push(result,uvt[t1 - 1]);
}
return { max : max, uvt : result};
}
CanvasGraphics.playCommands = function(commands,stroke) {
if(stroke == null) {
stroke = false;
}
CanvasGraphics.bounds = CanvasGraphics.graphics.__bounds;
var offsetX = CanvasGraphics.bounds.x;
var offsetY = CanvasGraphics.bounds.y;
var positionX = 0.0;
var positionY = 0.0;
var closeGap = false;
var startX = 0.0;
var startY = 0.0;
var setStart = false;
CanvasGraphics.windingRule = "evenodd";
CanvasGraphics.setSmoothing(true);
var hasPath = false;
var data = new (openfl_display__$internal_DrawCommandReader().default)(commands);
var x;
var y;
var width;
var height;
var kappa = 0.5522848;
var ox;
var oy;
var xe;
var ye;
var xm;
var ym;
var r;
var g;
var b;
var optimizationUsed;
var canOptimizeMatrix;
var st;
var sr;
var sb;
var sl;
var stl = null;
var sbr = null;
var _g = 0;
var _g1 = commands.types;
_hx_loop1: while(_g < _g1.length) {
var type = _g1[_g];
++_g;
switch(type._hx_index) {
case 0:
var c = data.readBeginBitmapFill();
CanvasGraphics.bitmapFill = c.obj(0);
if(c.obj(0).readable) {
var tmp = c.obj(0);
var tmp1 = c.bool(0);
var tmp2 = c.bool(1);
CanvasGraphics.context.fillStyle = CanvasGraphics.createBitmapFill(tmp,tmp1,tmp2);
} else {
var tmp3 = (StringTools().default).hex(0,6);
CanvasGraphics.context.fillStyle = "#" + tmp3;
}
CanvasGraphics.hasFill = true;
if(c.obj(1) != null) {
CanvasGraphics.pendingMatrix = c.obj(1);
CanvasGraphics.inversePendingMatrix = c.obj(1).clone();
CanvasGraphics.inversePendingMatrix.invert();
} else {
CanvasGraphics.pendingMatrix = null;
CanvasGraphics.inversePendingMatrix = null;
}
break;
case 1:
var c1 = data.readBeginFill();
if(c1.float(0) < 0.005) {
CanvasGraphics.hasFill = false;
} else {
if(c1.float(0) == 1) {
var tmp4 = (StringTools().default).hex(c1.int(0) & 16777215,6);
CanvasGraphics.context.fillStyle = "#" + tmp4;
} else {
r = (c1.int(0) & 16711680) >>> 16;
g = (c1.int(0) & 65280) >>> 8;
b = c1.int(0) & 255;
var tmp5 = "rgba(" + r + ", " + g + ", " + b + ", " + c1.float(0);
CanvasGraphics.context.fillStyle = tmp5 + ")";
}
CanvasGraphics.bitmapFill = null;
CanvasGraphics.setSmoothing(true);
CanvasGraphics.hasFill = true;
}
break;
case 2:
var c2 = data.readBeginGradientFill();
var tmp6 = c2.obj(0);
var tmp7 = c2.iArr(0);
var tmp8 = c2.fArr(0);
var tmp9 = c2.iArr(1);
var tmp10 = c2.obj(1);
var tmp11 = c2.obj(2);
var tmp12 = c2.obj(3);
CanvasGraphics.context.fillStyle = CanvasGraphics.createGradientPattern(tmp6,tmp7,tmp8,tmp9,tmp10,tmp11,tmp12,c2.float(0));
CanvasGraphics.bitmapFill = null;
CanvasGraphics.setSmoothing(true);
CanvasGraphics.hasFill = true;
break;
case 3:
var c3 = data.readBeginShaderFill();
var shaderBuffer = c3.obj(0);
if(shaderBuffer.inputCount > 0) {
CanvasGraphics.bitmapFill = shaderBuffer.inputs[0];
if(CanvasGraphics.bitmapFill.readable) {
CanvasGraphics.context.fillStyle = CanvasGraphics.createBitmapFill(CanvasGraphics.bitmapFill,shaderBuffer.inputWrap[0] != "clamp",shaderBuffer.inputFilter[0] != "nearest");
} else {
var tmp13 = (StringTools().default).hex(0,6);
CanvasGraphics.context.fillStyle = "#" + tmp13;
}
CanvasGraphics.hasFill = true;
CanvasGraphics.pendingMatrix = null;
CanvasGraphics.inversePendingMatrix = null;
}
break;
case 4:
var c4 = data.readCubicCurveTo();
hasPath = true;
CanvasGraphics.context.bezierCurveTo(c4.float(0) - offsetX,c4.float(1) - offsetY,c4.float(2) - offsetX,c4.float(3) - offsetY,c4.float(4) - offsetX,c4.float(5) - offsetY);
positionX = c4.float(4);
positionY = c4.float(5);
break;
case 5:
var c5 = data.readCurveTo();
hasPath = true;
CanvasGraphics.context.quadraticCurveTo(c5.float(0) - offsetX,c5.float(1) - offsetY,c5.float(2) - offsetX,c5.float(3) - offsetY);
positionX = c5.float(2);
positionY = c5.float(3);
break;
case 6:
var c6 = data.readDrawCircle();
hasPath = true;
CanvasGraphics.context.moveTo(c6.float(0) - offsetX + c6.float(2),c6.float(1) - offsetY);
CanvasGraphics.context.arc(c6.float(0) - offsetX,c6.float(1) - offsetY,c6.float(2),0,Math.PI * 2,true);
break;
case 7:
var c7 = data.readDrawEllipse();
hasPath = true;
x = c7.float(0);
y = c7.float(1);
width = c7.float(2);
height = c7.float(3);
x -= offsetX;
y -= offsetY;
ox = width / 2 * kappa;
oy = height / 2 * kappa;
xe = x + width;
ye = y + height;
xm = x + width / 2;
ym = y + height / 2;
CanvasGraphics.context.moveTo(x,ym);
CanvasGraphics.context.bezierCurveTo(x,ym - oy,xm - ox,y,xm,y);
CanvasGraphics.context.bezierCurveTo(xm + ox,y,xe,ym - oy,xe,ym);
CanvasGraphics.context.bezierCurveTo(xe,ym + oy,xm + ox,ye,xm,ye);
CanvasGraphics.context.bezierCurveTo(xm - ox,ye,x,ym + oy,x,ym);
break;
case 8:
var c8 = data.readDrawQuads();
var rects = c8.obj(0);
var indices = c8.obj(1);
var transforms = c8.obj(2);
var hasIndices = indices != null;
var transformABCD = false;
var transformXY = false;
var length = hasIndices ? indices.get_length() : Math.floor(rects.get_length() / 4);
if(length == 0) {
return;
}
if(transforms != null) {
if(transforms.get_length() >= length * 6) {
transformABCD = true;
transformXY = true;
} else if(transforms.get_length() >= length * 4) {
transformABCD = true;
} else if(transforms.get_length() >= length * 2) {
transformXY = true;
}
}
var tileRect = (openfl_geom_Rectangle().default).__pool.get();
var tileTransform = (openfl_geom_Matrix().default).__pool.get();
var transform = CanvasGraphics.graphics.__renderTransform;
var alpha = CanvasGraphics.worldAlpha;
var ri;
var ti;
CanvasGraphics.context.save();
var _g2 = 0;
var _g11 = length;
while(_g2 < _g11) {
var i = _g2++;
ri = hasIndices ? indices[i] * 4 : i * 4;
if(ri < 0) {
continue;
}
tileRect.setTo(rects[ri],rects[ri + 1],rects[ri + 2],rects[ri + 3]);
if(tileRect.width <= 0 || tileRect.height <= 0) {
continue;
}
if(transformABCD && transformXY) {
ti = i * 6;
tileTransform.setTo(transforms[ti],transforms[ti + 1],transforms[ti + 2],transforms[ti + 3],transforms[ti + 4],transforms[ti + 5]);
} else if(transformABCD) {
ti = i * 4;
tileTransform.setTo(transforms[ti],transforms[ti + 1],transforms[ti + 2],transforms[ti + 3],tileRect.x,tileRect.y);
} else if(transformXY) {
ti = i * 2;
tileTransform.tx = transforms[ti];
tileTransform.ty = transforms[ti + 1];
} else {
tileTransform.tx = tileRect.x;
tileTransform.ty = tileRect.y;
}
tileTransform.tx += positionX - offsetX;
tileTransform.ty += positionY - offsetY;
tileTransform.concat(transform);
CanvasGraphics.context.setTransform(tileTransform.a,tileTransform.b,tileTransform.c,tileTransform.d,tileTransform.tx,tileTransform.ty);
if(CanvasGraphics.bitmapFill != null && CanvasGraphics.bitmapFill.readable) {
CanvasGraphics.context.drawImage(CanvasGraphics.bitmapFill.image.get_src(),tileRect.x,tileRect.y,tileRect.width,tileRect.height,0,0,tileRect.width,tileRect.height);
} else {
CanvasGraphics.context.fillRect(0,0,tileRect.width,tileRect.height);
}
}
(openfl_geom_Rectangle().default).__pool.release(tileRect);
(openfl_geom_Matrix().default).__pool.release(tileTransform);
CanvasGraphics.context.restore();
break;
case 9:
var c9 = data.readDrawRect();
optimizationUsed = false;
if(CanvasGraphics.bitmapFill != null && CanvasGraphics.bitmapFill.readable && !CanvasGraphics.hitTesting) {
st = 0;
sr = 0;
sb = 0;
sl = 0;
canOptimizeMatrix = true;
if(CanvasGraphics.pendingMatrix != null) {
if(CanvasGraphics.pendingMatrix.b != 0 || CanvasGraphics.pendingMatrix.c != 0) {
canOptimizeMatrix = false;
} else {
if(stl == null) {
stl = (openfl_geom_Point().default).__pool.get();
}
if(sbr == null) {
sbr = (openfl_geom_Point().default).__pool.get();
}
stl.setTo(c9.float(0),c9.float(1));
CanvasGraphics.inversePendingMatrix.__transformPoint(stl);
sbr.setTo(c9.float(0) + c9.float(2),c9.float(1) + c9.float(3));
CanvasGraphics.inversePendingMatrix.__transformPoint(sbr);
st = stl.y;
sl = stl.x;
sb = sbr.y;
sr = sbr.x;
}
} else {
st = c9.float(1);
sl = c9.float(0);
sb = c9.float(1) + c9.float(3);
sr = c9.float(0) + c9.float(2);
}
if(canOptimizeMatrix && st >= 0 && sl >= 0 && sr <= CanvasGraphics.bitmapFill.width && sb <= CanvasGraphics.bitmapFill.height) {
optimizationUsed = true;
if(!CanvasGraphics.hitTesting) {
CanvasGraphics.context.drawImage(CanvasGraphics.bitmapFill.image.get_src(),sl,st,sr - sl,sb - st,c9.float(0) - offsetX,c9.float(1) - offsetY,c9.float(2),c9.float(3));
}
}
}
if(!optimizationUsed) {
hasPath = true;
CanvasGraphics.context.rect(c9.float(0) - offsetX,c9.float(1) - offsetY,c9.float(2),c9.float(3));
}
break;
case 10:
var c10 = data.readDrawRoundRect();
hasPath = true;
CanvasGraphics.drawRoundRect(c10.float(0) - offsetX,c10.float(1) - offsetY,c10.float(2),c10.float(3),c10.float(4),c10.obj(0));
break;
case 12:
var c11 = data.readDrawTriangles();
var v = c11.obj(0);
var ind = c11.obj(1);
var uvt = c11.obj(2);
var pattern = null;
var colorFill = CanvasGraphics.bitmapFill == null;
if(colorFill && uvt != null) {
break _hx_loop1;
}
if(!colorFill) {
if(uvt == null) {
uvt = (openfl__$Vector_Vector_$Impl_$().default)._new();
var _g3 = 0;
var _g12 = (Std().default).int(v.get_length() / 2);
while(_g3 < _g12) {
var i1 = _g3++;
(openfl__$Vector_Vector_$Impl_$().default).push(uvt,v[i1 * 2] - offsetX / CanvasGraphics.bitmapFill.width);
(openfl__$Vector_Vector_$Impl_$().default).push(uvt,v[i1 * 2 + 1] - offsetY / CanvasGraphics.bitmapFill.height);
}
}
var skipT = uvt.get_length() != v.get_length();
var normalizedUVT = CanvasGraphics.normalizeUVT(uvt,skipT);
var maxUVT = normalizedUVT.max;
uvt = normalizedUVT.uvt;
if(maxUVT > 1) {
pattern = CanvasGraphics.createTempPatternCanvas(CanvasGraphics.bitmapFill,CanvasGraphics.bitmapRepeat,(Std().default).int(CanvasGraphics.bounds.width),(Std().default).int(CanvasGraphics.bounds.height));
} else {
pattern = CanvasGraphics.createTempPatternCanvas(CanvasGraphics.bitmapFill,CanvasGraphics.bitmapRepeat,CanvasGraphics.bitmapFill.width,CanvasGraphics.bitmapFill.height);
}
}
var i2 = 0;
var l = ind.get_length();
var a_;
var b_;
var c_;
var iax;
var iay;
var ibx;
var iby;
var icx;
var icy;
var x1;
var y1;
var x2;
var y2;
var x3;
var y3;
var uvx1;
var uvy1;
var uvx2;
var uvy2;
var uvx3;
var uvy3;
var denom;
var t1;
var t2;
var t3;
var t4;
var dx;
var dy;
while(i2 < l) {
a_ = i2;
b_ = i2 + 1;
c_ = i2 + 2;
iax = ind[a_] * 2;
iay = ind[a_] * 2 + 1;
ibx = ind[b_] * 2;
iby = ind[b_] * 2 + 1;
icx = ind[c_] * 2;
icy = ind[c_] * 2 + 1;
x1 = v[iax] - offsetX;
y1 = v[iay] - offsetY;
x2 = v[ibx] - offsetX;
y2 = v[iby] - offsetY;
x3 = v[icx] - offsetX;
y3 = v[icy] - offsetY;
switch(c11.obj(3)) {
case "negative":
if(CanvasGraphics.isCCW(x1,y1,x2,y2,x3,y3)) {
i2 += 3;
continue;
}
break;
case "positive":
if(!CanvasGraphics.isCCW(x1,y1,x2,y2,x3,y3)) {
i2 += 3;
continue;
}
break;
default:
}
if(colorFill) {
CanvasGraphics.context.beginPath();
CanvasGraphics.context.moveTo(x1,y1);
CanvasGraphics.context.lineTo(x2,y2);
CanvasGraphics.context.lineTo(x3,y3);
CanvasGraphics.context.closePath();
if(!CanvasGraphics.hitTesting) {
CanvasGraphics.context.fill(CanvasGraphics.windingRule);
}
i2 += 3;
continue;
}
uvx1 = uvt[iax] * pattern.width;
uvx2 = uvt[ibx] * pattern.width;
uvx3 = uvt[icx] * pattern.width;
uvy1 = uvt[iay] * pattern.height;
uvy2 = uvt[iby] * pattern.height;
uvy3 = uvt[icy] * pattern.height;
denom = uvx1 * (uvy3 - uvy2) - uvx2 * uvy3 + uvx3 * uvy2 + (uvx2 - uvx3) * uvy1;
if(denom == 0) {
i2 += 3;
CanvasGraphics.context.restore();
continue;
}
CanvasGraphics.context.save();
CanvasGraphics.context.beginPath();
CanvasGraphics.context.moveTo(x1,y1);
CanvasGraphics.context.lineTo(x2,y2);
CanvasGraphics.context.lineTo(x3,y3);
CanvasGraphics.context.closePath();
CanvasGraphics.context.clip();
t1 = -(uvy1 * (x3 - x2) - uvy2 * x3 + uvy3 * x2 + (uvy2 - uvy3) * x1) / denom;
t2 = (uvy2 * y3 + uvy1 * (y2 - y3) - uvy3 * y2 + (uvy3 - uvy2) * y1) / denom;
t3 = (uvx1 * (x3 - x2) - uvx2 * x3 + uvx3 * x2 + (uvx2 - uvx3) * x1) / denom;
t4 = -(uvx2 * y3 + uvx1 * (y2 - y3) - uvx3 * y2 + (uvx3 - uvx2) * y1) / denom;
dx = (uvx1 * (uvy3 * x2 - uvy2 * x3) + uvy1 * (uvx2 * x3 - uvx3 * x2) + (uvx3 * uvy2 - uvx2 * uvy3) * x1) / denom;
dy = (uvx1 * (uvy3 * y2 - uvy2 * y3) + uvy1 * (uvx2 * y3 - uvx3 * y2) + (uvx3 * uvy2 - uvx2 * uvy3) * y1) / denom;
CanvasGraphics.context.transform(t1,t2,t3,t4,dx,dy);
CanvasGraphics.context.drawImage(pattern,0,0,pattern.width,pattern.height);
CanvasGraphics.context.restore();
i2 += 3;
}
break;
case 14:
var c12 = data.readLineBitmapStyle();
if(stroke && CanvasGraphics.hasStroke) {
CanvasGraphics.closePath(true);
}
CanvasGraphics.context.moveTo(positionX - offsetX,positionY - offsetY);
if(c12.obj(0).readable) {
var tmp14 = c12.obj(0);
var tmp15 = c12.bool(0);
CanvasGraphics.context.strokeStyle = CanvasGraphics.createBitmapFill(tmp14,tmp15,c12.bool(1));
} else {
var tmp16 = (StringTools().default).hex(0,6);
CanvasGraphics.context.strokeStyle = "#" + tmp16;
}
CanvasGraphics.hasStroke = true;
break;
case 15:
var c13 = data.readLineGradientStyle();
if(stroke && CanvasGraphics.hasStroke) {
CanvasGraphics.closePath(true);
}
CanvasGraphics.context.moveTo(positionX - offsetX,positionY - offsetY);
var tmp17 = c13.obj(0);
var tmp18 = c13.iArr(0);
var tmp19 = c13.fArr(0);
var tmp20 = c13.iArr(1);
var tmp21 = c13.obj(1);
var tmp22 = c13.obj(2);
var tmp23 = c13.obj(3);
CanvasGraphics.context.strokeStyle = CanvasGraphics.createGradientPattern(tmp17,tmp18,tmp19,tmp20,tmp21,tmp22,tmp23,c13.float(0));
CanvasGraphics.setSmoothing(true);
CanvasGraphics.hasStroke = true;
break;
case 16:
var c14 = data.readLineStyle();
if(stroke && CanvasGraphics.hasStroke) {
CanvasGraphics.closePath(true);
}
CanvasGraphics.context.moveTo(positionX - offsetX,positionY - offsetY);
if(c14.obj(0) == null) {
CanvasGraphics.hasStroke = false;
} else {
var tmp24 = c14.obj(0) > 0 ? c14.obj(0) : 1;
CanvasGraphics.context.lineWidth = tmp24;
var tmp25 = c14.obj(3) == null ? "round" : (Std().default).string(c14.obj(3)).toLowerCase();
CanvasGraphics.context.lineJoin = tmp25;
var tmp26 = c14.obj(2) == null ? "round" : c14.obj(2) == "none" ? "butt" : (Std().default).string(c14.obj(2)).toLowerCase();
CanvasGraphics.context.lineCap = tmp26;
CanvasGraphics.context.miterLimit = c14.float(1);
if(c14.float(0) == 1) {
var tmp27 = (StringTools().default).hex(c14.int(0) & 16777215,6);
CanvasGraphics.context.strokeStyle = "#" + tmp27;
} else {
r = (c14.int(0) & 16711680) >>> 16;
g = (c14.int(0) & 65280) >>> 8;
b = c14.int(0) & 255;
var tmp28 = "rgba(" + r + ", " + g + ", " + b + ", " + c14.float(0);
CanvasGraphics.context.strokeStyle = tmp28 + ")";
}
CanvasGraphics.setSmoothing(true);
CanvasGraphics.hasStroke = true;
}
break;
case 17:
var c15 = data.readLineTo();
hasPath = true;
CanvasGraphics.context.lineTo(c15.float(0) - offsetX,c15.float(1) - offsetY);
positionX = c15.float(0);
positionY = c15.float(1);
if(positionX == startX && positionY == startY) {
closeGap = true;
}
break;
case 18:
var c16 = data.readMoveTo();
CanvasGraphics.context.moveTo(c16.float(0) - offsetX,c16.float(1) - offsetY);
positionX = c16.float(0);
positionY = c16.float(1);
if(setStart && c16.float(0) != startX && c16.float(1) != startY) {
closeGap = true;
}
startX = c16.float(0);
startY = c16.float(1);
setStart = true;
break;
case 21:
CanvasGraphics.windingRule = "evenodd";
break;
case 22:
CanvasGraphics.windingRule = "nonzero";
break;
default:
data.skip(type);
}
}
if(stl != null) {
(openfl_geom_Point().default).__pool.release(stl);
}
if(sbr != null) {
(openfl_geom_Point().default).__pool.release(sbr);
}
data.destroy();
if(hasPath) {
if(stroke && CanvasGraphics.hasStroke) {
if(CanvasGraphics.hasFill) {
if(positionX != startX || positionY != startY) {
CanvasGraphics.context.lineTo(startX - offsetX,startY - offsetY);
closeGap = true;
}
if(closeGap) {
CanvasGraphics.closePath(true);
}
} else if(closeGap && positionX == startX && positionY == startY) {
CanvasGraphics.closePath(true);
}
if(!CanvasGraphics.hitTesting) {
CanvasGraphics.context.stroke();
}
}
if(!stroke) {
if(CanvasGraphics.hasFill || CanvasGraphics.bitmapFill != null) {
CanvasGraphics.context.translate(-CanvasGraphics.bounds.x,-CanvasGraphics.bounds.y);
if(CanvasGraphics.pendingMatrix != null) {
CanvasGraphics.context.transform(CanvasGraphics.pendingMatrix.a,CanvasGraphics.pendingMatrix.b,CanvasGraphics.pendingMatrix.c,CanvasGraphics.pendingMatrix.d,CanvasGraphics.pendingMatrix.tx,CanvasGraphics.pendingMatrix.ty);
if(!CanvasGraphics.hitTesting) {
CanvasGraphics.context.fill(CanvasGraphics.windingRule);
}
CanvasGraphics.context.transform(CanvasGraphics.inversePendingMatrix.a,CanvasGraphics.inversePendingMatrix.b,CanvasGraphics.inversePendingMatrix.c,CanvasGraphics.inversePendingMatrix.d,CanvasGraphics.inversePendingMatrix.tx,CanvasGraphics.inversePendingMatrix.ty);
} else if(!CanvasGraphics.hitTesting) {
CanvasGraphics.context.fill(CanvasGraphics.windingRule);
}
CanvasGraphics.context.translate(CanvasGraphics.bounds.x,CanvasGraphics.bounds.y);
CanvasGraphics.context.closePath();
}
}
}
}
CanvasGraphics.render = function(graphics,renderer) {
var pixelRatio = renderer.__pixelRatio;
graphics.__update(renderer.__worldTransform,pixelRatio);
if(graphics.__softwareDirty) {
CanvasGraphics.hitTesting = false;
CanvasGraphics.graphics = graphics;
CanvasGraphics.allowSmoothing = renderer.__allowSmoothing;
CanvasGraphics.worldAlpha = renderer.__getAlpha(graphics.__owner.__worldAlpha);
CanvasGraphics.bounds = graphics.__bounds;
var width = graphics.__width;
var height = graphics.__height;
if(!graphics.__visible || graphics.__commands.get_length() == 0 || CanvasGraphics.bounds == null || width < 1 || height < 1) {
graphics.__canvas = null;
graphics.__context = null;
graphics.__bitmap = null;
} else {
if(graphics.__canvas == null) {
graphics.__canvas = window.document.createElement("canvas");
graphics.__context = graphics.__canvas.getContext("2d");
}
CanvasGraphics.context = graphics.__context;
var transform = graphics.__renderTransform;
var canvas = graphics.__canvas;
var scale = renderer.__pixelRatio;
var scaledWidth = (Std().default).int(width * scale);
var scaledHeight = (Std().default).int(height * scale);
renderer.__setBlendModeContext(CanvasGraphics.context,"normal");
if(renderer.__isDOM) {
if(canvas.width == scaledWidth && canvas.height == scaledHeight) {
CanvasGraphics.context.clearRect(0,0,scaledWidth,scaledHeight);
} else {
canvas.width = scaledWidth;
canvas.height = scaledHeight;
canvas.style.width = width + "px";
canvas.style.height = height + "px";
}
var transform1 = graphics.__renderTransform;
CanvasGraphics.context.setTransform(transform1.a * scale,transform1.b * scale,transform1.c * scale,transform1.d * scale,transform1.tx * scale,transform1.ty * scale);
} else {
if(canvas.width == scaledWidth && canvas.height == scaledHeight) {
CanvasGraphics.context.closePath();
CanvasGraphics.context.setTransform(1,0,0,1,0,0);
CanvasGraphics.context.clearRect(0,0,scaledWidth,scaledHeight);
} else {
canvas.width = width;
canvas.height = height;
}
CanvasGraphics.context.setTransform(transform.a,transform.b,transform.c,transform.d,transform.tx,transform.ty);
}
CanvasGraphics.fillCommands.clear();
CanvasGraphics.strokeCommands.clear();
CanvasGraphics.hasFill = false;
CanvasGraphics.hasStroke = false;
CanvasGraphics.bitmapFill = null;
CanvasGraphics.bitmapRepeat = false;
var hasLineStyle = false;
var initStrokeX = 0.0;
var initStrokeY = 0.0;
CanvasGraphics.windingRule = "evenodd";
var data = new (openfl_display__$internal_DrawCommandReader().default)(graphics.__commands);
var _g = 0;
var _g1 = graphics.__commands.types;
while(_g < _g1.length) {
var type = _g1[_g];
++_g;
switch(type._hx_index) {
case 0:case 1:case 2:case 3:
CanvasGraphics.endFill();
CanvasGraphics.endStroke();
if(type == (openfl_display__$internal_DrawCommandType().default).BEGIN_BITMAP_FILL) {
var c = data.readBeginBitmapFill();
CanvasGraphics.fillCommands.beginBitmapFill(c.obj(0),c.obj(1),c.bool(0),c.bool(1));
CanvasGraphics.strokeCommands.beginBitmapFill(c.obj(0),c.obj(1),c.bool(0),c.bool(1));
} else if(type == (openfl_display__$internal_DrawCommandType().default).BEGIN_GRADIENT_FILL) {
var c1 = data.readBeginGradientFill();
CanvasGraphics.fillCommands.beginGradientFill(c1.obj(0),c1.iArr(0),c1.fArr(0),c1.iArr(1),c1.obj(1),c1.obj(2),c1.obj(3),c1.float(0));
CanvasGraphics.strokeCommands.beginGradientFill(c1.obj(0),c1.iArr(0),c1.fArr(0),c1.iArr(1),c1.obj(1),c1.obj(2),c1.obj(3),c1.float(0));
} else if(type == (openfl_display__$internal_DrawCommandType().default).BEGIN_SHADER_FILL) {
var c2 = data.readBeginShaderFill();
CanvasGraphics.fillCommands.beginShaderFill(c2.obj(0));
CanvasGraphics.strokeCommands.beginShaderFill(c2.obj(0));
} else {
var c3 = data.readBeginFill();
CanvasGraphics.fillCommands.beginFill(c3.int(0),c3.float(0));
CanvasGraphics.strokeCommands.beginFill(c3.int(0),c3.float(0));
}
break;
case 4:
var c4 = data.readCubicCurveTo();
CanvasGraphics.fillCommands.cubicCurveTo(c4.float(0),c4.float(1),c4.float(2),c4.float(3),c4.float(4),c4.float(5));
if(hasLineStyle) {
CanvasGraphics.strokeCommands.cubicCurveTo(c4.float(0),c4.float(1),c4.float(2),c4.float(3),c4.float(4),c4.float(5));
} else {
initStrokeX = c4.float(4);
initStrokeY = c4.float(5);
}
break;
case 5:
var c5 = data.readCurveTo();
CanvasGraphics.fillCommands.curveTo(c5.float(0),c5.float(1),c5.float(2),c5.float(3));
if(hasLineStyle) {
CanvasGraphics.strokeCommands.curveTo(c5.float(0),c5.float(1),c5.float(2),c5.float(3));
} else {
initStrokeX = c5.float(2);
initStrokeY = c5.float(3);
}
break;
case 6:
var c6 = data.readDrawCircle();
CanvasGraphics.fillCommands.drawCircle(c6.float(0),c6.float(1),c6.float(2));
if(hasLineStyle) {
CanvasGraphics.strokeCommands.drawCircle(c6.float(0),c6.float(1),c6.float(2));
}
break;
case 7:
var c7 = data.readDrawEllipse();
CanvasGraphics.fillCommands.drawEllipse(c7.float(0),c7.float(1),c7.float(2),c7.float(3));
if(hasLineStyle) {
CanvasGraphics.strokeCommands.drawEllipse(c7.float(0),c7.float(1),c7.float(2),c7.float(3));
}
break;
case 8:
var c8 = data.readDrawQuads();
CanvasGraphics.fillCommands.drawQuads(c8.obj(0),c8.obj(1),c8.obj(2));
break;
case 9:
var c9 = data.readDrawRect();
CanvasGraphics.fillCommands.drawRect(c9.float(0),c9.float(1),c9.float(2),c9.float(3));
if(hasLineStyle) {
CanvasGraphics.strokeCommands.drawRect(c9.float(0),c9.float(1),c9.float(2),c9.float(3));
}
break;
case 10:
var c10 = data.readDrawRoundRect();
CanvasGraphics.fillCommands.drawRoundRect(c10.float(0),c10.float(1),c10.float(2),c10.float(3),c10.float(4),c10.obj(0));
if(hasLineStyle) {
CanvasGraphics.strokeCommands.drawRoundRect(c10.float(0),c10.float(1),c10.float(2),c10.float(3),c10.float(4),c10.obj(0));
}
break;
case 12:
var c11 = data.readDrawTriangles();
CanvasGraphics.fillCommands.drawTriangles(c11.obj(0),c11.obj(1),c11.obj(2),c11.obj(3));
break;
case 13:
data.readEndFill();
CanvasGraphics.endFill();
CanvasGraphics.endStroke();
CanvasGraphics.hasFill = false;
hasLineStyle = false;
CanvasGraphics.bitmapFill = null;
initStrokeX = 0;
initStrokeY = 0;
break;
case 14:
var c12 = data.readLineBitmapStyle();
if(!hasLineStyle && (initStrokeX != 0 || initStrokeY != 0)) {
CanvasGraphics.strokeCommands.moveTo(initStrokeX,initStrokeY);
initStrokeX = 0;
initStrokeY = 0;
}
hasLineStyle = true;
CanvasGraphics.strokeCommands.lineBitmapStyle(c12.obj(0),c12.obj(1),c12.bool(0),c12.bool(1));
break;
case 15:
var c13 = data.readLineGradientStyle();
if(!hasLineStyle && (initStrokeX != 0 || initStrokeY != 0)) {
CanvasGraphics.strokeCommands.moveTo(initStrokeX,initStrokeY);
initStrokeX = 0;
initStrokeY = 0;
}
hasLineStyle = true;
CanvasGraphics.strokeCommands.lineGradientStyle(c13.obj(0),c13.iArr(0),c13.fArr(0),c13.iArr(1),c13.obj(1),c13.obj(2),c13.obj(3),c13.float(0));
break;
case 16:
var c14 = data.readLineStyle();
if(!hasLineStyle && c14.obj(0) != null) {
if(initStrokeX != 0 || initStrokeY != 0) {
CanvasGraphics.strokeCommands.moveTo(initStrokeX,initStrokeY);
initStrokeX = 0;
initStrokeY = 0;
}
}
hasLineStyle = c14.obj(0) != null;
CanvasGraphics.strokeCommands.lineStyle(c14.obj(0),c14.int(0),c14.float(0),c14.bool(0),c14.obj(1),c14.obj(2),c14.obj(3),c14.float(1));
break;
case 17:
var c15 = data.readLineTo();
CanvasGraphics.fillCommands.lineTo(c15.float(0),c15.float(1));
if(hasLineStyle) {
CanvasGraphics.strokeCommands.lineTo(c15.float(0),c15.float(1));
} else {
initStrokeX = c15.float(0);
initStrokeY = c15.float(1);
}
break;
case 18:
var c16 = data.readMoveTo();
CanvasGraphics.fillCommands.moveTo(c16.float(0),c16.float(1));
if(hasLineStyle) {
CanvasGraphics.strokeCommands.moveTo(c16.float(0),c16.float(1));
} else {
initStrokeX = c16.float(0);
initStrokeY = c16.float(1);
}
break;
case 19:
var c17 = data.readOverrideBlendMode();
renderer.__setBlendModeContext(CanvasGraphics.context,c17.obj(0));
break;
case 21:
data.readWindingEvenOdd();
CanvasGraphics.fillCommands.windingEvenOdd();
CanvasGraphics.windingRule = "evenodd";
break;
case 22:
data.readWindingNonZero();
CanvasGraphics.fillCommands.windingNonZero();
CanvasGraphics.windingRule = "nonzero";
break;
default:
data.skip(type);
}
}
if(CanvasGraphics.fillCommands.get_length() > 0) {
CanvasGraphics.endFill();
}
if(CanvasGraphics.strokeCommands.get_length() > 0) {
CanvasGraphics.endStroke();
}
data.destroy();
graphics.__bitmap = (openfl_display_BitmapData().default).fromCanvas(graphics.__canvas);
}
graphics.__softwareDirty = false;
graphics.set___dirty(false);
CanvasGraphics.graphics = null;
}
}
CanvasGraphics.renderMask = function(graphics,renderer) {
if(graphics.__commands.get_length() != 0) {
CanvasGraphics.context = renderer.context;
var positionX = 0.0;
var positionY = 0.0;
var offsetX = 0;
var offsetY = 0;
var data = new (openfl_display__$internal_DrawCommandReader().default)(graphics.__commands);
var x;
var y;
var width;
var height;
var kappa = 0.5522848;
var ox;
var oy;
var xe;
var ye;
var xm;
var ym;
var _g = 0;
var _g1 = graphics.__commands.types;
while(_g < _g1.length) {
var type = _g1[_g];
++_g;
switch(type._hx_index) {
case 4:
var c = data.readCubicCurveTo();
CanvasGraphics.context.bezierCurveTo(c.float(0) - offsetX,c.float(1) - offsetY,c.float(2) - offsetX,c.float(3) - offsetY,c.float(4) - offsetX,c.float(5) - offsetY);
positionX = c.float(4);
positionY = c.float(5);
break;
case 5:
var c1 = data.readCurveTo();
CanvasGraphics.context.quadraticCurveTo(c1.float(0) - offsetX,c1.float(1) - offsetY,c1.float(2) - offsetX,c1.float(3) - offsetY);
positionX = c1.float(2);
positionY = c1.float(3);
break;
case 6:
var c2 = data.readDrawCircle();
CanvasGraphics.context.arc(c2.float(0) - offsetX,c2.float(1) - offsetY,c2.float(2),0,Math.PI * 2,true);
break;
case 7:
var c3 = data.readDrawEllipse();
x = c3.float(0);
y = c3.float(1);
width = c3.float(2);
height = c3.float(3);
x -= offsetX;
y -= offsetY;
ox = width / 2 * kappa;
oy = height / 2 * kappa;
xe = x + width;
ye = y + height;
xm = x + width / 2;
ym = y + height / 2;
CanvasGraphics.context.moveTo(x,ym);
CanvasGraphics.context.bezierCurveTo(x,ym - oy,xm - ox,y,xm,y);
CanvasGraphics.context.bezierCurveTo(xm + ox,y,xe,ym - oy,xe,ym);
CanvasGraphics.context.bezierCurveTo(xe,ym + oy,xm + ox,ye,xm,ye);
CanvasGraphics.context.bezierCurveTo(xm - ox,ye,x,ym + oy,x,ym);
break;
case 9:
var c4 = data.readDrawRect();
CanvasGraphics.context.beginPath();
CanvasGraphics.context.rect(c4.float(0) - offsetX,c4.float(1) - offsetY,c4.float(2),c4.float(3));
CanvasGraphics.context.closePath();
break;
case 10:
var c5 = data.readDrawRoundRect();
CanvasGraphics.drawRoundRect(c5.float(0) - offsetX,c5.float(1) - offsetY,c5.float(2),c5.float(3),c5.fl