Commit a7c5b29c authored by GoshaZotov's avatar GoshaZotov

change calculate and drawing 3d pie charts

parent e287cb0b
...@@ -7182,7 +7182,7 @@ drawPieChart.prototype = ...@@ -7182,7 +7182,7 @@ drawPieChart.prototype =
} }
}, },
_drawPie3D: function () _drawPie3D_Slow: function ()
{ {
var numCache = this._getFirstRealNumCache(); var numCache = this._getFirstRealNumCache();
var props = this.cChartSpace.getParentObjects(); var props = this.cChartSpace.getParentObjects();
...@@ -7224,7 +7224,7 @@ drawPieChart.prototype = ...@@ -7224,7 +7224,7 @@ drawPieChart.prototype =
}, },
_reCalculatePie3D: function () _reCalculatePie3D_Slow: function ()
{ {
var trueWidth = this.chartProp.trueWidth; var trueWidth = this.chartProp.trueWidth;
var trueHeight = this.chartProp.trueHeight; var trueHeight = this.chartProp.trueHeight;
...@@ -7326,7 +7326,7 @@ drawPieChart.prototype = ...@@ -7326,7 +7326,7 @@ drawPieChart.prototype =
return path; return path;
}, },
_calculateSegment3D: function (angle, radius, xCenter, yCenter, depth, i) _calculateSegment3D_Slow: function (angle, radius, xCenter, yCenter, depth, i)
{ {
if(isNaN(angle)) if(isNaN(angle))
return null; return null;
...@@ -7396,7 +7396,7 @@ drawPieChart.prototype = ...@@ -7396,7 +7396,7 @@ drawPieChart.prototype =
return path; return path;
}, },
_calculateArc3D : function(radius, stAng, swAng, xCenter, yCenter, depth, seriaNum) _calculateArc3D_Slow : function(radius, stAng, swAng, xCenter, yCenter, depth, seriaNum)
{ {
var radius1 = this.properties3d.radius1; var radius1 = this.properties3d.radius1;
var radius2 = this.properties3d.radius2; var radius2 = this.properties3d.radius2;
...@@ -7548,7 +7548,7 @@ drawPieChart.prototype = ...@@ -7548,7 +7548,7 @@ drawPieChart.prototype =
cosNewAngle = - 1; cosNewAngle = - 1;
var res; var res;
if(swAng > Math.PI) if(Math.abs(swAng) > Math.PI)
res = 2*Math.PI - Math.acos(cosNewAngle); res = 2*Math.PI - Math.acos(cosNewAngle);
else else
res = Math.acos(cosNewAngle); res = Math.acos(cosNewAngle);
...@@ -8035,15 +8035,23 @@ drawPieChart.prototype = ...@@ -8035,15 +8035,23 @@ drawPieChart.prototype =
return; return;
var path; var path;
if(this.cChartDrawer.nDimensionCount === 3 && this.paths.series[this.paths.series.length - 1][val]) if(this.cChartDrawer.nDimensionCount === 3)
{ {
path = this.paths.series[this.paths.series.length - 1][val].ArrPathCommand; if(this.paths.series[val][ser] && this.paths.series[val][ser].upPath)
{
path = this.paths.series[val][ser].upPath.ArrPathCommand;
}
} }
else else
{ {
path = this.paths.series[val].ArrPathCommand; path = this.paths.series[val].ArrPathCommand;
} }
if(!path)
{
return;
}
var getEllipseRadius = function(radius1, radius2, alpha) var getEllipseRadius = function(radius1, radius2, alpha)
{ {
var a = radius1 * radius2; var a = radius1 * radius2;
...@@ -8182,129 +8190,120 @@ drawPieChart.prototype = ...@@ -8182,129 +8190,120 @@ drawPieChart.prototype =
//****fast calulate and drawing //****fast calulate and drawing(for switch on slow drawing: change name function _Slow)
_reCalculatePie3D: function ()
_drawPie3DNew: function ()
{ {
var trueWidth = this.chartProp.trueWidth;
var trueHeight = this.chartProp.trueHeight;
var numCache = this._getFirstRealNumCache(); var numCache = this._getFirstRealNumCache();
var brush, pen, val; var sumData = this.cChartDrawer._getSumArray(numCache, true);
var path;
for (var i = 0,len = numCache.length; i < len; i++) {
val = numCache[i];
brush = val.brush;
pen = val.pen;
path = this.paths.series[i];
if(path) var radius = Math.min(trueHeight, trueWidth)/2;
{ var radius = Math.min(trueHeight, trueWidth) / 2;
for(var j = path.length - 1; j >= 0; j--) if(radius < 0)
{
if(path[j] && path[j].frontPath)
{ {
var props = this.cChartSpace.getParentObjects(); radius = 0;
var duplicateBrush = brush.createDuplicate(); }
var cColorMod = new AscFormat.CColorMod;
cColorMod.val = 35000; var xCenter = this.chartProp.chartGutter._left + trueWidth/2;
cColorMod.name = "shade"; var yCenter = this.chartProp.chartGutter._top + trueHeight/2;
if(duplicateBrush.fill.color) var startAngle = this.cChartDrawer.processor3D.angleOy ? this.cChartDrawer.processor3D.angleOy : 0;
duplicateBrush.fill.color.Mods.addMod(cColorMod); var startAngle3D = startAngle !== 0 && startAngle !== undefined ? this._changeAngle(radius, Math.PI/2, startAngle, xCenter, yCenter, this.properties3d) : 0;
duplicateBrush.calculate(props.theme, props.slide, props.layout, props.master, new AscFormat.CUniColor().RGBA); this.angleFor3D = Math.PI/2 - startAngle3D;
var upPen = AscFormat.CreatePenFromParams(brush, undefined, undefined, undefined, undefined, 0); startAngle = startAngle + Math.PI / 2;
var frontPen = AscFormat.CreatePenFromParams(duplicateBrush, undefined, undefined, undefined, undefined, 0); //this.angleFor3D = this.angleFor3D + Math.PI / 2;
//pen.setFill(duplicateBrush); for (var i = numCache.length - 1; i >= 0; i--)
//if(!(i === numCache.length - 1 && j === path.length - 1)) {
this.cChartDrawer.drawPath(path[j].frontPath, frontPen, duplicateBrush); var val = numCache[i].val;
var partOfSum = numCache[i].val / sumData;
var swapAngle = Math.abs((parseFloat(partOfSum)) * (Math.PI * 2));
if(!this.paths.series)
this.paths.series = [];
if(sumData === 0)//TODO стоит пересмотреть
{
this.paths.series[i] = this._calculateEmptySegment(radius, xCenter, yCenter);
} }
//if(path[j] && path[j].upPath) else
//this.cChartDrawer.drawPath(path[j].upPath, upPen, brush); {
this.paths.series[i] = this._calculateSegment3D(startAngle, swapAngle, radius, xCenter, yCenter);
} }
startAngle += swapAngle;
} }
},
_calculateArc3D : function(radius, stAng, swAng, xCenter, yCenter, bIsNotDrawFrontFace)
{
var properties = this.cChartDrawer.processor3D.calculatePropertiesForPieCharts();
var depth = properties.depth;
var radius1 = properties.radius1;
var radius2 = properties.radius2;
var pxToMm = this.chartProp.pxToMM;
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var t = this;
//FRONT FACES
} swAng = this._changeAngle(radius, stAng, swAng, xCenter, yCenter, properties);
for (var i = 0,len = numCache.length; i < len; i++) { stAng = this.angleFor3D;
val = numCache[i];
brush = val.brush;
pen = val.pen;
path = this.paths.series[i];
if(path) //корректируем центр
{ yCenter = yCenter - depth / 2;
for(var j = path.length - 1; j >= 0; j--)
{
if(path[j] && path[j].frontPath) var calculateInsideFaces = function(startAng, swapAng)
{ {
var props = this.cChartSpace.getParentObjects(); var endAng = startAng + swapAng;
var duplicateBrush = brush.createDuplicate(); var path = new Path();
var cColorMod = new AscFormat.CColorMod;
cColorMod.val = 35000; var gdLst = [];
cColorMod.name = "shade";
if(duplicateBrush.fill.color) path.pathH = pathH;
duplicateBrush.fill.color.Mods.addMod(cColorMod); path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
duplicateBrush.calculate(props.theme, props.slide, props.layout, props.master, new AscFormat.CUniColor().RGBA); var radiusSpec = (radius1 * radius2) / Math.sqrt(Math.pow(radius2, 2) * Math.pow((Math.cos(startAng)), 2) + Math.pow(radius1, 2) * Math.pow(Math.sin(startAng),2));
var upPen = AscFormat.CreatePenFromParams(brush, undefined, undefined, undefined, undefined, 0); var radiusSpec2 = (radius1 * radius2) / Math.sqrt(Math.pow(radius2, 2) * Math.pow((Math.cos(endAng)), 2) + Math.pow(radius1, 2) * Math.pow(Math.sin(endAng),2));
var frontPen = AscFormat.CreatePenFromParams(duplicateBrush, undefined, undefined, undefined, undefined, 0);
//pen.setFill(duplicateBrush);
//if(!(i === numCache.length - 1 && j === path.length - 1))
//this.cChartDrawer.drawPath(path[j].frontPath, frontPen, duplicateBrush);
}
if(path[j] && path[j].upPath)
this.cChartDrawer.drawPath(path[j].upPath, upPen, brush);
}
}
var x0 = (xCenter + radiusSpec*Math.cos(startAng));
var y0 = (yCenter - radiusSpec*Math.sin(startAng));
} var x1 = (xCenter + radiusSpec*Math.cos(startAng));
}, var y1 = ((yCenter + depth) - radiusSpec*Math.sin(startAng));
_reCalculatePie3DNew: function () var x2 = (xCenter + radiusSpec2*Math.cos(endAng));
{ var y2 = (yCenter - radiusSpec2*Math.sin(endAng));
var trueWidth = this.chartProp.trueWidth;
var trueHeight = this.chartProp.trueHeight;
var numCache = this._getFirstRealNumCache(); var x3 = (xCenter + radiusSpec2 * Math.cos(endAng));
var sumData = this.cChartDrawer._getSumArray(numCache, true); var y3 = ((yCenter + depth) - radiusSpec2 * Math.sin(endAng));
var radius = Math.min(trueHeight, trueWidth)/2; path.moveTo(xCenter /pxToMm * pathW, yCenter / pxToMm * pathH);
var xCenter = this.chartProp.chartGutter._left + trueWidth/2; path.lnTo(x0 /pxToMm * pathW, y0 / pxToMm * pathH);
var yCenter = this.chartProp.chartGutter._top + trueHeight/2; path.lnTo(x1 /pxToMm * pathW, y1 / pxToMm * pathH);
path.lnTo(xCenter / pxToMm * pathW, (yCenter + depth) / pxToMm * pathH);
this.tempAngle = Math.PI/2; path.moveTo(xCenter /pxToMm * pathW, yCenter / pxToMm * pathH);
this.angleFor3D = Math.PI/2; path.lnTo(x2 /pxToMm * pathW, y2 / pxToMm * pathH);
path.lnTo(x3 /pxToMm * pathW, y3 / pxToMm * pathH);
path.lnTo(xCenter / pxToMm * pathW, (yCenter + depth) / pxToMm * pathH);
//рисуем против часовой стрелки, поэтому цикл с конца path.recalculate(gdLst);
var angle;
for (var i = numCache.length - 1; i >= 0; i--) { return path;
angle = Math.abs((parseFloat(numCache[i].val / sumData)) * (Math.PI * 2));
if(!this.paths.series)
this.paths.series = [];
if(sumData === 0)//TODO стоит пересмотреть
this.paths.series[i] = this._calculateEmptySegment(radius, xCenter, yCenter);
else
this.paths.series[i] = this._calculateSegment3D(angle, radius, xCenter, yCenter);
}; };
},
_calculateArc3DNew : function(radius, stAng, swAng, xCenter, yCenter) var calculateFrontFace = function(startAng, swapAng)
{ {
var properties = this.cChartDrawer.processor3D.calculatePropertiesForPieCharts(); var endAng = startAng + swapAng;
var depth = properties.depth;
var radius1 = properties.radius1;
var radius2 = properties.radius2;
var pxToMm = this.chartProp.pxToMM;
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = []; var gdLst = [];
path.pathH = pathH; path.pathH = pathH;
...@@ -8312,12 +8311,94 @@ drawPieChart.prototype = ...@@ -8312,12 +8311,94 @@ drawPieChart.prototype =
gdLst["w"] = 1; gdLst["w"] = 1;
gdLst["h"] = 1; gdLst["h"] = 1;
swAng = this._changeAngle(radius, stAng, swAng, xCenter, yCenter, properties); var radiusSpec = (radius1 * radius2) / Math.sqrt(Math.pow(radius2, 2) * Math.pow((Math.cos(startAng)), 2) + Math.pow(radius1, 2) * Math.pow(Math.sin(startAng),2));
var radiusSpec2 = (radius1 * radius2) / Math.sqrt(Math.pow(radius2, 2) * Math.pow((Math.cos(endAng)), 2) + Math.pow(radius1, 2) * Math.pow(Math.sin(endAng),2));
stAng = this.angleFor3D; var x0 = (xCenter + radiusSpec*Math.cos(startAng));
var y0 = (yCenter - radiusSpec*Math.sin(startAng));
//корректируем центр var x1 = (xCenter + radiusSpec*Math.cos(startAng));
yCenter = yCenter - depth / 2; var y1 = ((yCenter + depth) - radiusSpec*Math.sin(startAng));
var x2 = (xCenter + radiusSpec2*Math.cos(endAng));
var y2 = (yCenter - radiusSpec2*Math.sin(endAng));
var x3 = (xCenter + radiusSpec2 * Math.cos(endAng));
var y3 = ((yCenter + depth) - radiusSpec2 * Math.sin(endAng));
path.moveTo(x0 /pxToMm * pathW, y0 / pxToMm * pathH);
path.arcTo(radius1 / pxToMm * pathW, radius2 / pxToMm * pathH, -1 * startAng*cToDeg, -1 * swapAng*cToDeg);
path.lnTo(x3 /pxToMm * pathW, y3 / pxToMm * pathH);
path.arcTo(radius1 / pxToMm * pathW, radius2 / pxToMm * pathH, -1 * startAng*cToDeg - 1 * swapAng*cToDeg, 1 * swapAng*cToDeg);
path.lnTo(x0 / pxToMm * pathW, y0 / pxToMm * pathH);
path.recalculate(gdLst);
return path;
}
//break front faces
var arrAngles = [];
var endAng = stAng + swAng;
arrAngles.push({angle: stAng});
if(stAng < -2*Math.PI && endAng > -2*Math.PI)
{
arrAngles.push({angle: -2*Math.PI});
}
/*if(stAng < -3/2*Math.PI && endAng > -3/2*Math.PI)
{
arrAngles.push({angle: -3/2*Math.PI});
}*/
if(stAng < -Math.PI && endAng > -Math.PI)
{
arrAngles.push({angle: -Math.PI});
}
/*if(stAng < -Math.PI/2 && endAng > -Math.PI/2)
{
arrAngles.push({angle: -Math.PI/2});
}*/
if(stAng < 0 && endAng > 0)
{
arrAngles.push({angle: 0});
}
/*if(stAng < Math.PI/2 && endAng > Math.PI/2)
{
arrAngles.push({angle: Math.PI/2});
}*/
if(stAng < Math.PI && endAng > Math.PI)
{
arrAngles.push({angle: Math.PI});
}
/*if(stAng < 3/2*Math.PI && endAng > 3/2*Math.PI)
{
arrAngles.push({angle: 3/2*Math.PI});
}*/
if(stAng < 2*Math.PI && endAng > 2*Math.PI)
{
arrAngles.push({angle: 2*Math.PI});
}
arrAngles.push({angle: endAng});
var frontPath = [];
for(var i = 1; i < arrAngles.length; i++)
{
var start = arrAngles[i - 1].angle;
var end = arrAngles[i].angle;
var swap = end - start;
if((start >= 0 && start >= Math.PI && start <= 2 * Math.PI) || (start < 0 && start >= -Math.PI && start <= 0))
{
frontPath.push(calculateFrontFace(start, swap));
}
}
//INSIDE FACES
var insidePath = [];
insidePath.push(calculateInsideFaces(stAng, swAng));
//UP FACE
var path = new Path();
var gdLst = [];
var radiusSpec = (radius1 * radius2) / Math.sqrt(Math.pow(radius2, 2) * Math.pow((Math.cos(stAng)), 2) + Math.pow(radius1, 2) * Math.pow(Math.sin(stAng),2)); var radiusSpec = (radius1 * radius2) / Math.sqrt(Math.pow(radius2, 2) * Math.pow((Math.cos(stAng)), 2) + Math.pow(radius1, 2) * Math.pow(Math.sin(stAng),2));
var radiusSpec2 = (radius1 * radius2) / Math.sqrt(Math.pow(radius2, 2) * Math.pow((Math.cos(stAng + swAng)), 2) + Math.pow(radius1, 2) * Math.pow(Math.sin(stAng + swAng),2)); var radiusSpec2 = (radius1 * radius2) / Math.sqrt(Math.pow(radius2, 2) * Math.pow((Math.cos(stAng + swAng)), 2) + Math.pow(radius1, 2) * Math.pow(Math.sin(stAng + swAng),2));
...@@ -8337,20 +8418,6 @@ drawPieChart.prototype = ...@@ -8337,20 +8418,6 @@ drawPieChart.prototype =
var x3 = (xCenter + radiusSpec2 * Math.cos(stAng + swAng)) * kFX; var x3 = (xCenter + radiusSpec2 * Math.cos(stAng + swAng)) * kFX;
var y3 = ((yCenter + depth) - radiusSpec2 * Math.sin(stAng + swAng)) * kFY; var y3 = ((yCenter + depth) - radiusSpec2 * Math.sin(stAng + swAng)) * kFY;
path.moveTo(x0 /pxToMm * pathW, y0 / pxToMm * pathH);
path.arcTo(radius1 / pxToMm * pathW, radius2 / pxToMm * pathH, -1 * stAng*cToDeg, -1 * swAng*cToDeg);
path.lnTo(x3 /pxToMm * pathW, y3 / pxToMm * pathH);
path.arcTo(radius1 / pxToMm * pathW, radius2 / pxToMm * pathH, -1 * stAng*cToDeg - 1 * swAng*cToDeg, 1 * swAng*cToDeg);
path.lnTo(x0 / pxToMm * pathW, y0 / pxToMm * pathH);
path.recalculate(gdLst);
var frontPath = path;
var path = new Path();
var gdLst = [];
path.pathH = pathH; path.pathH = pathH;
path.pathW = pathW; path.pathW = pathW;
gdLst["w"] = 1; gdLst["w"] = 1;
...@@ -8366,23 +8433,89 @@ drawPieChart.prototype = ...@@ -8366,23 +8433,89 @@ drawPieChart.prototype =
this.angleFor3D += swAng; this.angleFor3D += swAng;
return {frontPath: frontPath, upPath: upPath}; return {frontPath: frontPath, upPath: upPath, insidePath: insidePath};
}, },
_calculateSegment3DNew: function (angle, radius, xCenter, yCenter) _calculateSegment3D: function (startAngle, swapAngle, radius, xCenter, yCenter)
{
if(isNaN(swapAngle))
{ {
if(isNaN(angle))
return null; return null;
}
var startAngle = (this.tempAngle); var endAngle = startAngle + swapAngle;
var swapAngle = angle;
var endAngle = startAngle + angle;
if(radius < 0) if(radius < 0)
{
radius = 0; radius = 0;
}
var path = []; var path = [];
var arrAngles = [];
arrAngles.push({angle: startAngle});
/*if(startAngle < -2*Math.PI && endAngle > -2*Math.PI)
{
arrAngles.push({angle: -2*Math.PI});
}
if(startAngle < -3/2*Math.PI && endAngle > -3/2*Math.PI)
{
arrAngles.push({angle: -3/2*Math.PI});
}
if(startAngle < -Math.PI && endAngle > -Math.PI)
{
arrAngles.push({angle: -Math.PI});
}
if(startAngle < -Math.PI/2 && endAngle > -Math.PI/2)
{
arrAngles.push({angle: -Math.PI/2});
}
if(startAngle < 0 && endAngle > 0)
{
arrAngles.push({angle: 0});
}
if(startAngle < Math.PI/2 && endAngle > Math.PI/2)
{
arrAngles.push({angle: Math.PI/2});
}
if(startAngle < Math.PI && endAngle > Math.PI)
{
arrAngles.push({angle: Math.PI});
}
if(startAngle < 3/2*Math.PI && endAngle > 3/2*Math.PI)
{
arrAngles.push({angle: 3/2*Math.PI});
}
if(startAngle < 2*Math.PI && endAngle > 2*Math.PI)
{
arrAngles.push({angle: 2*Math.PI});
}*/
arrAngles.push({angle: endAngle});
for(var i = 1; i < arrAngles.length; i++)
{
var start = arrAngles[i - 1].angle;
var end = arrAngles[i].angle;
var swap = end - start;
var bIsNotDrawFrontFace;
/*if(start + swap/2 > Math.PI && start + swap/2 < 2*Math.PI)
{
bIsNotDrawFrontFace = true;
}*/
path.push(this._calculateArc3D(radius, start, swap, xCenter, yCenter, bIsNotDrawFrontFace));
}
//если сегмент проходит 180 или 360 градусов, разбиваем его на два, чтобы боковая грань рисовалась корректно //если сегмент проходит 180 или 360 градусов, разбиваем его на два, чтобы боковая грань рисовалась корректно
/*if(startAngle < 0 && endAngle > 0)
{
path.push(this._calculateArc3D(radius, startAngle, 0, xCenter, yCenter));
path.push(this._calculateArc3D(radius, 0, endAngle, xCenter, yCenter));
}
if(startAngle < Math.PI && endAngle > Math.PI) if(startAngle < Math.PI && endAngle > Math.PI)
{ {
path.push(this._calculateArc3D(radius, startAngle, Math.PI - startAngle, xCenter, yCenter)); path.push(this._calculateArc3D(radius, startAngle, Math.PI - startAngle, xCenter, yCenter));
...@@ -8393,13 +8526,153 @@ drawPieChart.prototype = ...@@ -8393,13 +8526,153 @@ drawPieChart.prototype =
path.push(this._calculateArc3D(radius, startAngle, 2*Math.PI - startAngle, xCenter, yCenter)); path.push(this._calculateArc3D(radius, startAngle, 2*Math.PI - startAngle, xCenter, yCenter));
path.push(this._calculateArc3D(radius, 2*Math.PI, endAngle - 2*Math.PI, xCenter, yCenter)); path.push(this._calculateArc3D(radius, 2*Math.PI, endAngle - 2*Math.PI, xCenter, yCenter));
} }
else if(startAngle < -Math.PI && endAngle > -Math.PI)
{
path.push(this._calculateArc3D(radius, startAngle, - Math.PI - startAngle, xCenter, yCenter));
path.push(this._calculateArc3D(radius, Math.PI, endAngle + Math.PI, xCenter, yCenter));
}
else if(startAngle < -2*Math.PI && endAngle > -2*Math.PI)
{
path.push(this._calculateArc3D(radius, startAngle, -2*Math.PI - startAngle, xCenter, yCenter));
path.push(this._calculateArc3D(radius, 2*Math.PI, endAngle + 2*Math.PI, xCenter, yCenter));
}
else else
{
path.push(this._calculateArc3D(radius, startAngle, swapAngle, xCenter, yCenter)); path.push(this._calculateArc3D(radius, startAngle, swapAngle, xCenter, yCenter));
}*/
return path;
},
this.tempAngle += angle; _drawPie3D: function ()
{
var numCache = this._getFirstRealNumCache();
var brush, pen, val;
var path;
return path; for (var i = 0,len = numCache.length; i < len; i++)
{
val = numCache[i];
brush = val.brush;
pen = val.pen;
path = this.paths.series[i];
if(path)
{
for(var j = path.length - 1; j >= 0; j--)
{
if(path[j] && path[j].insidePath)
{
var props = this.cChartSpace.getParentObjects();
var duplicateBrush = brush.createDuplicate();
var cColorMod = new AscFormat.CColorMod;
cColorMod.val = 35000;
cColorMod.name = "shade";
if(duplicateBrush.fill.color)
duplicateBrush.fill.color.Mods.addMod(cColorMod);
duplicateBrush.calculate(props.theme, props.slide, props.layout, props.master, new AscFormat.CUniColor().RGBA);
//var upPen = AscFormat.CreatePenFromParams(brush, undefined, undefined, undefined, undefined, 0);
var frontPen = AscFormat.CreatePenFromParams(duplicateBrush, undefined, undefined, undefined, undefined, 0);
//pen.setFill(duplicateBrush);
//if(!(i === numCache.length - 1 && j === path.length - 1))
for(var k = 0; k < path[j].insidePath.length;k++)
{
this.cChartDrawer.drawPath(path[j].insidePath[k], pen, duplicateBrush);
}
}
//if(path[j] && path[j].upPath)
//this.cChartDrawer.drawPath(path[j].upPath, upPen, brush);
}
}
}
for (var i = 0,len = numCache.length; i < len; i++)
{
val = numCache[i];
brush = val.brush;
pen = val.pen;
path = this.paths.series[i];
if(path)
{
for(var j = path.length - 1; j >= 0; j--)
{
if(path[j] && path[j].frontPath)
{
var props = this.cChartSpace.getParentObjects();
var duplicateBrush = brush.createDuplicate();
var cColorMod = new AscFormat.CColorMod;
cColorMod.val = 35000;
cColorMod.name = "shade";
if(duplicateBrush.fill.color)
duplicateBrush.fill.color.Mods.addMod(cColorMod);
duplicateBrush.calculate(props.theme, props.slide, props.layout, props.master, new AscFormat.CUniColor().RGBA);
//var upPen = AscFormat.CreatePenFromParams(brush, undefined, undefined, undefined, undefined, 0);
var frontPen = AscFormat.CreatePenFromParams(duplicateBrush, undefined, undefined, undefined, undefined, 0);
//pen.setFill(duplicateBrush);
//if(!(i === numCache.length - 1 && j === path.length - 1))
for(var k = 0; k < path[j].frontPath.length;k++)
{
this.cChartDrawer.drawPath(path[j].frontPath[k], frontPen, duplicateBrush);
}
}
//if(path[j] && path[j].upPath)
//this.cChartDrawer.drawPath(path[j].upPath, upPen, brush);
}
}
}
for (var i = 0,len = numCache.length; i < len; i++)
{
val = numCache[i];
brush = val.brush;
pen = val.pen;
path = this.paths.series[i];
if(path)
{
for(var j = path.length - 1; j >= 0; j--)
{
if(path[j] && path[j].upPath)
{
var props = this.cChartSpace.getParentObjects();
var duplicateBrush = brush.createDuplicate();
var cColorMod = new AscFormat.CColorMod;
cColorMod.val = 35000;
cColorMod.name = "shade";
if(duplicateBrush.fill.color)
duplicateBrush.fill.color.Mods.addMod(cColorMod);
duplicateBrush.calculate(props.theme, props.slide, props.layout, props.master, new AscFormat.CUniColor().RGBA);
//var upPen = AscFormat.CreatePenFromParams(brush, undefined, undefined, undefined, undefined, 0);
//var frontPen = AscFormat.CreatePenFromParams(duplicateBrush, undefined, undefined, undefined, undefined, 0);
if(null === pen)
{
pen = AscFormat.CreatePenFromParams(duplicateBrush, undefined, undefined, undefined, undefined, 0);
}
//pen.setFill(duplicateBrush);
//if(!(i === numCache.length - 1 && j === path.length - 1))
//this.cChartDrawer.drawPath(path[j].frontPath, frontPen, duplicateBrush);
this.cChartDrawer.drawPath(path[j].upPath, pen, brush);
}
}
}
}
} }
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment