Commit 9301b0ae authored by Igor.Zotov's avatar Igor.Zotov Committed by Alexander.Trofimov

точность отрисовки линий

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@53668 954022d7-b5bf-4e40-9824-e11837661b57
parent db72934e
...@@ -85,6 +85,10 @@ CChartsDrawer.prototype = ...@@ -85,6 +85,10 @@ CChartsDrawer.prototype =
_calculateProperties: function(chartProp) _calculateProperties: function(chartProp)
{ {
this.calcProp.pxToMM = 1/chartProp.convertPixToMM(1); this.calcProp.pxToMM = 1/chartProp.convertPixToMM(1);
this.calcProp.pathH = 1000000000;
this.calcProp.pathW = 1000000000;
var typeChart = chartProp.chart.plotArea.chart.getObjectType(); var typeChart = chartProp.chart.plotArea.chart.getObjectType();
switch ( typeChart ) switch ( typeChart )
...@@ -419,6 +423,7 @@ CChartsDrawer.prototype = ...@@ -419,6 +423,7 @@ CChartsDrawer.prototype =
var min = 0; var min = 0;
var minY = 0; var minY = 0;
var maxY = 0; var maxY = 0;
var newArr;
var series = chart.chart.plotArea.chart.series; var series = chart.chart.plotArea.chart.series;
if(series && series.length != 0 && this.calcProp.type != 'Scatter')// NumCache if(series && series.length != 0 && this.calcProp.type != 'Scatter')// NumCache
...@@ -2137,14 +2142,24 @@ drawBarChart.prototype = ...@@ -2137,14 +2142,24 @@ drawBarChart.prototype =
_calculateRect : function(x, y, w, h) _calculateRect : function(x, y, w, h)
{ {
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
path.moveTo(x/pxToMm, y/pxToMm); path.moveTo(x / pxToMm * pathW, y / pxToMm * pathH);
path.lnTo(x/pxToMm, (y - h)/pxToMm); path.lnTo(x / pxToMm * pathW, (y - h) / pxToMm * pathH);
path.lnTo((x + w)/pxToMm, (y - h)/pxToMm); path.lnTo((x + w) / pxToMm * pathW, (y - h) / pxToMm * pathH);
path.lnTo((x + w)/pxToMm, y/pxToMm); path.lnTo((x + w) / pxToMm * pathW, y / pxToMm * pathH);
path.lnTo(x/pxToMm, y/pxToMm); path.lnTo(x / pxToMm * pathW, y / pxToMm * pathH);
path.recalculate([]); path.recalculate(gdLst);
return path; return path;
}, },
...@@ -2290,10 +2305,20 @@ drawLineChart.prototype = ...@@ -2290,10 +2305,20 @@ drawLineChart.prototype =
_calculateLine : function(x, y, x1, y1) _calculateLine : function(x, y, x1, y1)
{ {
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
path.moveTo(x/pxToMm, y/pxToMm); path.moveTo(x / pxToMm * pathW, y / pxToMm * pathH);
path.lnTo(x1/pxToMm, y1/pxToMm); path.lnTo(x1 / pxToMm * pathW, y1 / pxToMm * pathH);
path.recalculate([]); path.recalculate(gdLst);
return path; return path;
}, },
...@@ -2456,13 +2481,23 @@ drawAreaChart.prototype = ...@@ -2456,13 +2481,23 @@ drawAreaChart.prototype =
_calculateLine : function(x, y, x1, y1) _calculateLine : function(x, y, x1, y1)
{ {
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
path.moveTo(x/pxToMm, y/pxToMm); path.moveTo(x / pxToMm * pathW, y / pxToMm * pathH);
path.lnTo(x1/pxToMm, y1/pxToMm); path.lnTo(x1 / pxToMm * pathW, y1 / pxToMm * pathH);
path.lnTo(x1/pxToMm, this.chartProp.nullPositionOX/pxToMm); path.lnTo(x1 / pxToMm * pathW, this.chartProp.nullPositionOX / pxToMm * pathH);
path.lnTo(x/pxToMm, this.chartProp.nullPositionOX/pxToMm); path.lnTo(x / pxToMm * pathW, this.chartProp.nullPositionOX / pxToMm * pathH);
path.lnTo(x/pxToMm, y/pxToMm); path.lnTo(x / pxToMm * pathW, y / pxToMm * pathH);
path.recalculate([]); path.recalculate(gdLst);
return path; return path;
}, },
...@@ -2637,14 +2672,23 @@ drawHBarChart.prototype = ...@@ -2637,14 +2672,23 @@ drawHBarChart.prototype =
{ {
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
path.moveTo(x/pxToMm, y/pxToMm); path.moveTo(x / pxToMm * pathW, y / pxToMm * pathH);
path.lnTo(x/pxToMm, (y - h)/pxToMm); path.lnTo(x / pxToMm * pathW, (y - h) / pxToMm * pathH);
path.lnTo((x + w)/pxToMm, (y - h)/pxToMm); path.lnTo((x + w) / pxToMm * pathW, (y - h) / pxToMm * pathH);
path.lnTo((x + w)/pxToMm, y/pxToMm); path.lnTo((x + w) / pxToMm * pathW, y / pxToMm * pathH);
path.lnTo(x/pxToMm, y/pxToMm); path.lnTo(x / pxToMm * pathW, y / pxToMm * pathH);
path.recalculate([]); path.recalculate(gdLst);
return path; return path;
}, },
...@@ -2663,8 +2707,6 @@ drawHBarChart.prototype = ...@@ -2663,8 +2707,6 @@ drawHBarChart.prototype =
//*****PIE CHART***** //*****PIE CHART*****
function drawPieChart() function drawPieChart()
{ {
this.pathH = 1000000000;
this.pathW = 1000000000;
this.tempAngle = null; this.tempAngle = null;
this.paths = {}; this.paths = {};
} }
...@@ -2742,22 +2784,26 @@ drawPieChart.prototype = ...@@ -2742,22 +2784,26 @@ drawPieChart.prototype =
_calculateArc : function(radius, stAng, swAng, xCenter, yCenter) _calculateArc : function(radius, stAng, swAng, xCenter, yCenter)
{ {
var path = new Path(); var path = new Path();
path.pathH = this.pathH;
path.pathW = this.pathW; var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
var x0 = xCenter + radius*Math.cos(stAng); var x0 = xCenter + radius*Math.cos(stAng);
var y0 = yCenter - radius*Math.sin(stAng); var y0 = yCenter - radius*Math.sin(stAng);
path.moveTo(xCenter/pxToMm*this.pathW, yCenter/pxToMm*this.pathH); path.moveTo(xCenter /pxToMm * pathW, yCenter / pxToMm * pathH);
path.lnTo(x0/pxToMm*this.pathW, y0/pxToMm*this.pathH); path.lnTo(x0 / pxToMm * pathW, y0 / pxToMm * pathH);
path.arcTo(radius/pxToMm*this.pathW, radius/pxToMm*this.pathH, -1*stAng*cToDeg, -1*swAng*cToDeg); path.arcTo(radius / pxToMm * pathW, radius / pxToMm * pathH, -1 * stAng*cToDeg, -1 * swAng*cToDeg);
path.lnTo(xCenter/pxToMm*this.pathW, yCenter/pxToMm*this.pathH); path.lnTo(xCenter / pxToMm * pathW, yCenter / pxToMm * pathH);
gdLst = [];
gdLst["w"] = 1;
gdLst["h"] = 1;
path.recalculate(gdLst); path.recalculate(gdLst);
return path; return path;
}, },
...@@ -2918,18 +2964,38 @@ drawScatterChart.prototype = ...@@ -2918,18 +2964,38 @@ drawScatterChart.prototype =
_calculateLine: function(x, y, x1, y1) _calculateLine: function(x, y, x1, y1)
{ {
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
path.moveTo(x/pxToMm, y/pxToMm); path.moveTo(x / pxToMm * pathH, y / pxToMm * pathW);
path.lnTo(x1/pxToMm, y1/pxToMm); path.lnTo(x1 / pxToMm * pathH, y1 / pxToMm * pathW);
path.recalculate([]); path.recalculate(gdLst);
return path; return path;
}, },
_calculatePoint: function(x, y, size, symbol) _calculatePoint: function(x, y, size, symbol)
{ {
size = size / 0.76;
var halfSize = size/2; var halfSize = size/2;
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
var framePaths = null; var framePaths = null;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
...@@ -2942,77 +3008,77 @@ drawScatterChart.prototype = ...@@ -2942,77 +3008,77 @@ drawScatterChart.prototype =
{ {
case SYMBOL_DASH: case SYMBOL_DASH:
{ {
path.moveTo((x - halfSize) / pxToMm, y / pxToMm); path.moveTo((x - halfSize) / pxToMm * pathW, y / pxToMm * pathW);
path.lnTo((x + halfSize) / pxToMm, y / pxToMm); path.lnTo((x + halfSize) / pxToMm * pathW, y / pxToMm * pathW);
break; break;
} }
case SYMBOL_DOT: case SYMBOL_DOT:
{ {
path.moveTo((x - halfSize / 2) / pxToMm, y / pxToMm); path.moveTo((x - halfSize / 2) / pxToMm * pathW, y / pxToMm * pathW);
path.lnTo((x + halfSize / 2) / pxToMm, y / pxToMm); path.lnTo((x + halfSize / 2) / pxToMm * pathW, y / pxToMm * pathW);
break; break;
} }
case SYMBOL_PLUS: case SYMBOL_PLUS:
{ {
path.moveTo(x / pxToMm, (y + halfSize) / pxToMm); path.moveTo(x / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo(x / pxToMm, (y - halfSize) / pxToMm); path.lnTo(x / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
path.moveTo((x - halfSize) / pxToMm, y / pxToMm); path.moveTo((x - halfSize) / pxToMm * pathW, y / pxToMm * pathW);
path.lnTo((x + halfSize) / pxToMm, y / pxToMm); path.lnTo((x + halfSize) / pxToMm * pathW, y / pxToMm * pathW);
break; break;
} }
case SYMBOL_CIRCLE: case SYMBOL_CIRCLE:
{ {
path.arcTo(halfSize / pxToMm, halfSize / pxToMm, 0, Math.PI * 2); path.arcTo(halfSize / pxToMm * pathW, halfSize / pxToMm * pathW, 0, Math.PI * 2);
break; break;
} }
case SYMBOL_STAR: case SYMBOL_STAR:
{ {
path.moveTo((x - halfSize) / pxToMm, (y + halfSize) / pxToMm); path.moveTo((x - halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo((x + halfSize) / pxToMm, (y - halfSize) / pxToMm); path.lnTo((x + halfSize) / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
path.moveTo((x + halfSize) / pxToMm, (y + halfSize) / pxToMm); path.moveTo((x + halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo((x - halfSize) / pxToMm, (y - halfSize) / pxToMm); path.lnTo((x - halfSize) / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
path.moveTo(x / pxToMm, (y + halfSize) / pxToMm); path.moveTo(x / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo(x / pxToMm, (y - halfSize) / pxToMm); path.lnTo(x / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
break; break;
} }
case SYMBOL_X: case SYMBOL_X:
{ {
path.moveTo((x - halfSize) / pxToMm, (y + halfSize) / pxToMm); path.moveTo((x - halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo((x + halfSize) / pxToMm, (y - halfSize) / pxToMm); path.lnTo((x + halfSize) / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
path.moveTo((x + halfSize) / pxToMm, (y + halfSize) / pxToMm); path.moveTo((x + halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo((x - halfSize) / pxToMm, (y - halfSize) / pxToMm); path.lnTo((x - halfSize) / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
break; break;
} }
case SYMBOL_TRIANGLE: case SYMBOL_TRIANGLE:
{ {
path.moveTo((x - halfSize * (Math.sqrt(3)/2)) / pxToMm, (y + halfSize * 0.5) / pxToMm); path.moveTo((x - halfSize * (Math.sqrt(3)/2)) / pxToMm * pathW, (y + halfSize * 0.5) / pxToMm * pathW);
path.lnTo(x / pxToMm, (y - halfSize) / pxToMm); path.lnTo(x / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
path.lnTo((x + halfSize * (Math.sqrt(3)/2)) / pxToMm, (y + halfSize * 0.5) / pxToMm); path.lnTo((x + halfSize * (Math.sqrt(3)/2)) / pxToMm * pathW, (y + halfSize * 0.5) / pxToMm * pathW);
path.lnTo((x - halfSize * Math.sqrt(3)/2) / pxToMm, (y + halfSize * 0.5) / pxToMm); path.lnTo((x - halfSize * Math.sqrt(3)/2) / pxToMm * pathW, (y + halfSize * 0.5) / pxToMm * pathW);
break; break;
} }
case SYMBOL_SQUARE: case SYMBOL_SQUARE:
{ {
path.moveTo((x - halfSize) / pxToMm, (y + halfSize) / pxToMm); path.moveTo((x - halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo((x - halfSize) / pxToMm, (y - halfSize) / pxToMm); path.lnTo((x - halfSize) / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
path.lnTo((x + halfSize) / pxToMm, (y - halfSize) / pxToMm); path.lnTo((x + halfSize) / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
path.lnTo((x + halfSize) / pxToMm, (y + halfSize) / pxToMm); path.lnTo((x + halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo((x - halfSize) / pxToMm, (y + halfSize) / pxToMm); path.lnTo((x - halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
} }
case SYMBOL_DIAMOND: case SYMBOL_DIAMOND:
{ {
path.moveTo((x - halfSize) / pxToMm, y / pxToMm); path.moveTo((x - halfSize) / pxToMm * pathW, y / pxToMm * pathW);
path.lnTo(x / pxToMm, (y - halfSize) / pxToMm); path.lnTo(x / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
path.lnTo((x + halfSize) / pxToMm, y / pxToMm); path.lnTo((x + halfSize) / pxToMm * pathW, y / pxToMm * pathW);
path.lnTo(x / pxToMm, (y + halfSize) / pxToMm); path.lnTo(x / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
path.lnTo((x - halfSize) / pxToMm, y / pxToMm); path.lnTo((x - halfSize) / pxToMm * pathW, y / pxToMm * pathW);
break; break;
} }
} }
...@@ -3020,16 +3086,16 @@ drawScatterChart.prototype = ...@@ -3020,16 +3086,16 @@ drawScatterChart.prototype =
if(symbol == "Plus" || symbol == "Star" || symbol == "X") if(symbol == "Plus" || symbol == "Star" || symbol == "X")
{ {
framePaths = new Path(); framePaths = new Path();
framePaths.moveTo((x - halfSize) / pxToMm, (y + halfSize) / pxToMm); framePaths.moveTo((x - halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
framePaths.lnTo((x - halfSize) / pxToMm, (y - halfSize) / pxToMm); framePaths.lnTo((x - halfSize) / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
framePaths.lnTo((x + halfSize) / pxToMm, (y - halfSize) / pxToMm); framePaths.lnTo((x + halfSize) / pxToMm * pathW, (y - halfSize) / pxToMm * pathW);
framePaths.lnTo((x + halfSize) / pxToMm, (y + halfSize) / pxToMm); framePaths.lnTo((x + halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
framePaths.lnTo((x - halfSize) / pxToMm, (y + halfSize) / pxToMm); framePaths.lnTo((x - halfSize) / pxToMm * pathW, (y + halfSize) / pxToMm * pathW);
} }
path.recalculate([]); path.recalculate(gdLst);
if(framePaths) if(framePaths)
framePaths.recalculate([]); framePaths.recalculate(gdLst);
result = {framePaths: framePaths, path: path}; result = {framePaths: framePaths, path: path};
return result; return result;
...@@ -3111,11 +3177,21 @@ gridChart.prototype = ...@@ -3111,11 +3177,21 @@ gridChart.prototype =
_calculateLine: function(x, y, x1, y1) _calculateLine: function(x, y, x1, y1)
{ {
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
path.stroke = true; path.stroke = true;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
path.moveTo(x/pxToMm, y/pxToMm); path.moveTo(x / pxToMm * pathW, y / pxToMm * pathH);
path.lnTo(x1/pxToMm, y1/pxToMm); path.lnTo(x1 / pxToMm * pathW, y1 / pxToMm * pathH);
path.recalculate([]); path.recalculate(gdLst);
return path; return path;
}, },
...@@ -3186,15 +3262,25 @@ areaChart.prototype = ...@@ -3186,15 +3262,25 @@ areaChart.prototype =
_calculateArea: function() _calculateArea: function()
{ {
var path = new Path(); var path = new Path();
var pathH = this.chartProp.pathH;
var pathW = this.chartProp.pathW;
var gdLst = [];
path.pathH = pathH;
path.pathW = pathW;
gdLst["w"] = 1;
gdLst["h"] = 1;
var pxToMm = this.chartProp.pxToMM; var pxToMm = this.chartProp.pxToMM;
path.moveTo(0, 0); path.moveTo(0, 0);
path.lnTo(0/pxToMm, this.chartProp.heightCanvas/pxToMm); path.lnTo(0 / pxToMm * pathW, this.chartProp.heightCanvas / pxToMm * pathH);
path.lnTo(this.chartProp.widthCanvas/pxToMm, this.chartProp.heightCanvas/pxToMm); path.lnTo(this.chartProp.widthCanvas / pxToMm * pathW, this.chartProp.heightCanvas / pxToMm * pathH);
path.lnTo(this.chartProp.widthCanvas/pxToMm, 0/pxToMm); path.lnTo(this.chartProp.widthCanvas / pxToMm * pathW, 0 / pxToMm * pathH);
path.lnTo(0, 0); path.lnTo(0, 0);
path.recalculate([]); path.recalculate(gdLst);
this.paths = path; this.paths = path;
}, },
......
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