Commit ce49693e authored by Sergey.Luzyanin's avatar Sergey.Luzyanin Committed by Alexander.Trofimov

расчет маркеров для точечных и линейных диаграмм

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@53686 954022d7-b5bf-4e40-9824-e11837661b57
parent ccae34c1
...@@ -138,11 +138,12 @@ ...@@ -138,11 +138,12 @@
<script src="../Common/Drawings/TrackObjects/Spline.js"></script> <script src="../Common/Drawings/TrackObjects/Spline.js"></script>
<script src="../Common/Drawings/TrackObjects/MoveTracks.js"></script> <script src="../Common/Drawings/TrackObjects/MoveTracks.js"></script>
<script src="../Common/Drawings/Format/Constants.js"></script>
<script src="../Common/Drawings/Format/Format.js"></script>
<script src="../Common/Drawings/Format/ChartFormat.js"></script> <script src="../Common/Drawings/Format/ChartFormat.js"></script>
<script src="../Common/Drawings/Format/ChartSpace.js"></script> <script src="../Common/Drawings/Format/ChartSpace.js"></script>
<script src="../Common/Drawings/Format/Constants.js"></script>
<script src="../Common/Drawings/Format/CreateGeometry.js"></script> <script src="../Common/Drawings/Format/CreateGeometry.js"></script>
<script src="../Common/Drawings/Format/Format.js"></script>
<script src="../Common/Drawings/Format/Geometry.js"></script> <script src="../Common/Drawings/Format/Geometry.js"></script>
<script src="../Common/Drawings/Format/Path.js"></script> <script src="../Common/Drawings/Format/Path.js"></script>
<script src="../Common/Drawings/Format/GroupShape.js"></script> <script src="../Common/Drawings/Format/GroupShape.js"></script>
......
...@@ -529,6 +529,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS"; ...@@ -529,6 +529,7 @@ var ASC_DOCS_API_USE_EMBEDDED_FONTS = "@@ASC_DOCS_API_USE_EMBEDDED_FONTS";
g_oUndoRedoAutoFilters = new UndoRedoAutoFilters(wbModel); g_oUndoRedoAutoFilters = new UndoRedoAutoFilters(wbModel);
g_oUndoRedoGraphicObjects = new UndoRedoGraphicObjects(wbModel); g_oUndoRedoGraphicObjects = new UndoRedoGraphicObjects(wbModel);
g_oIdCounter.Set_Load(false); g_oIdCounter.Set_Load(false);
CHART_STYLE_MANAGER = new CChartStyleManager();
}, },
asc_getEditorPermissions : function(){ asc_getEditorPermissions : function(){
......
...@@ -187,16 +187,6 @@ function CreateUnfilFromRGB(r, g, b) ...@@ -187,16 +187,6 @@ function CreateUnfilFromRGB(r, g, b)
return ret; return ret;
} }
function CreateUnifillSolidFillSchemeColorByIndex(index)
{
var ret = new CUniFill();
ret.setFill(new CSolidFill());
ret.fill.setColor(new CUniColor());
ret.fill.color.setColor(new CSchemeColor());
ret.fill.color.color.setId(index);
return ret;
}
function CreateColorMapByIndex(index) function CreateColorMapByIndex(index)
...@@ -262,15 +252,15 @@ CChartSpace.prototype.recalculateBaseColors = function() ...@@ -262,15 +252,15 @@ CChartSpace.prototype.recalculateBaseColors = function()
{ {
History.TurnOff(); History.TurnOff();
} }
if ( this.style && (typeof(this.style) == 'number') )
if ( this.style && (typeof(this.style) == 'number') ) { {
if ( this.style % 8 === 0 ) if ( this.style % 8 === 0 )
this.baseColors = CreateColorMapByIndex(8); this.baseColors = CreateColorMapByIndex(8);
else
this.baseColors = CreateColorMapByIndex(this.style % 8);
}
else else
this.baseColors = CreateColorMapByIndex(2); this.baseColors = CreateColorMapByIndex(this.style % 8);
}
else
this.baseColors = CreateColorMapByIndex(2);
if(is_on) if(is_on)
{ {
...@@ -325,6 +315,27 @@ CChartSpace.prototype.getNeedColorCount = function() ...@@ -325,6 +315,27 @@ CChartSpace.prototype.getNeedColorCount = function()
} }
}; };
function getArrayFillsFromBase(arrBaseFills, needFillsCount)
{
var ret = [];
var count_base = arrBaseFills.length;
var need_create = parseInt(needFillsCount / count_base) + 1;
for (var i = 0; i < need_create; i++)
{
for (var j = 0; j < count_base; j++)
{
var percent = (-70 + 140 * ( (i + 1) / (need_create + 1) )) * 1000;
var color = CreateUniFillSolidFillWidthTintOrShade(arrBaseFills[j], 100000 - percent);
ret.push( color );
}
}
ret.splice(needFillsCount, ret.length - needFillsCount);
return ret;
}
CChartSpace.prototype.recalculateMarkers = function() CChartSpace.prototype.recalculateMarkers = function()
{ {
ExecuteNoHistory(function() ExecuteNoHistory(function()
...@@ -334,72 +345,84 @@ CChartSpace.prototype.recalculateMarkers = function() ...@@ -334,72 +345,84 @@ CChartSpace.prototype.recalculateMarkers = function()
|| this.chart.plotArea.chart instanceof CScatterChart) || this.chart.plotArea.chart instanceof CScatterChart)
&& this.chart.plotArea.chart.series) && this.chart.plotArea.chart.series)
{ {
var RGBA = {R: 0, G: 0, B: 0, A: 255}; var chart_style = CHART_STYLE_MANAGER.getStyleByIndex(this.style);
var need_colors = this.getNeedColorCount(); var effect_fill = chart_style.fill1;
var countBase = this.baseColors.length; var fill = chart_style.fill2;
var needCreate = parseInt(need_colors / countBase) + 1; var line = chart_style.line4;
var arrayColors = []; var masrker_default_size = chart_style.markerSize;
for (var i = 0; i < needCreate; i++) var default_marker = new CMarker();
default_marker.setSize(masrker_default_size);
var parent_objects = this.getParentObjects();
if(parent_objects.theme && parent_objects.theme.themeElements
&& parent_objects.theme.themeElements.fmtScheme
&& parent_objects.theme.themeElements.fmtScheme.lnStyleLst)
{ {
for (var j = 0; j < countBase; j++) default_marker.setSpPr(new CSpPr());
{ default_marker.spPr.setLn(new CLn());
var percent = (-70 + 140 * ((i + 1) / (needCreate + 1))) / 100.0; default_marker.spPr.ln.merge(parent_objects.theme.themeElements.fmtScheme.lnStyleLst[0]);
var color = CreateUniFillSolidFillWidthTintOrShade(this.baseColors[j], percent);
arrayColors.push( color );
}
} }
var b_vary_markers = this.chart.plotArea.chart instanceof CPieChart || (this.chart.plotArea.chart.varyColors && this.chart.plotArea.chart.series.length === 1); var RGBA = {R:0, G:0, B:0, A: 255};
var parents = this.getParentObjects(); if(this.chart.plotArea.chart.varyColors && this.chart.plotArea.chart.series.length === 1)
if(b_vary_markers)
{ {
var first_series = this.chart.plotArea.chart.series[0]; var ser = this.chart.plotArea.chart.series;
var pts; if(ser.val)
if(first_series.val)
{ {
pts = first_series.val.numRef.numCache.pts; pts = ser.val.numRef.numCache.pts;
} }
else if(first_series.yVal) else if(ser.yVal)
{ {
pts = first_series.yVal.numRef.numCache.pts; pts = ser.yVal.numRef.numCache.pts;
} }
else else
{ {
pts = []; pts = [];
} }
for(var j = 0; j < pts.length; ++j) var series_marker = ser.marker;
var brushes = getArrayFillsFromBase(fill, pts.length);
var pens_fills = getArrayFillsFromBase(line, pts.length);
var compiled_markers = [];
for(var i = 0; i < pts.length; ++i)
{ {
var compiled_marker = new CMarker(); var compiled_marker = new CMarker();
compiled_marker.setSize(7); compiled_marker.merge(default_marker);
if(!compiled_marker.spPr)
{
compiled_marker.setSpPr(new CSpPr());
}
compiled_marker.spPr.setFill(brushes[i]);
if(!compiled_marker.spPr.ln)
compiled_marker.spPr.setLn(new CLn());
compiled_marker.spPr.ln.setFill(pens_fills[i]);
compiled_marker.merge(ser.marker);
compiled_marker.setSymbol(GetTypeMarkerByIndex(j)); compiled_marker.setSymbol(GetTypeMarkerByIndex(j));
compiled_marker.setSpPr(new CSpPr()); if(Array.isArray(ser.dPt))
compiled_marker.spPr.setLn(new CLn());
var ln = compiled_marker.spPr.ln;
ln.setW(12700);
ln.setFill(arrayColors[j]);
compiled_marker.spPr.setFill(arrayColors[j]);
compiled_marker.merge(first_series.marker);
for(var k = 0; k < first_series.dPt.length; ++k)
{ {
if(first_series.dPt[k].idx === pts[j].idx) for(var j = 0; j < ser.dPt.length; ++j)
{ {
compiled_marker.merge(first_series.dPt[k]) if(ser.dPt[j].idx === pts[i].idx)
break; {
compiled_marker.merge(ser.dPt[j].marker);
break;
}
} }
} }
compiled_marker.brush = compiled_marker.spPr.Fill; pts[i].compiledMarker = compiled_marker;
compiled_marker.pen = compiled_marker.spPr.ln; pts[i].compiledMarker.pen = compiled_marker.spPr.ln;
compiled_marker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA); pts[i].compiledMarker.brush = compiled_marker.spPr.Fill;
compiled_marker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA); pts[i].compiledMarker.brush.calculate(parent_objects.theme, parent_objects.slide, parent_objects.layout, parent_objects.master, RGBA);
pts[j].compiledMarker = compiled_marker; pts[i].compiledMarker.pen.calculate(parent_objects.theme, parent_objects.slide, parent_objects.layout, parent_objects.master, RGBA);
} }
} }
else else
{ {
var series = this.chart.plotArea.chart.series; var series = this.chart.plotArea.chart.series;
var brushes = getArrayFillsFromBase(fill, series.length);
var pens_fills = getArrayFillsFromBase(line, series.length);
for(var i = 0; i < series.length; ++i) for(var i = 0; i < series.length; ++i)
{ {
var ser = series[i]; var ser = series[i];
var pts;
if(ser.val) if(ser.val)
{ {
pts = ser.val.numRef.numCache.pts; pts = ser.val.numRef.numCache.pts;
...@@ -415,31 +438,33 @@ CChartSpace.prototype.recalculateMarkers = function() ...@@ -415,31 +438,33 @@ CChartSpace.prototype.recalculateMarkers = function()
for(var j = 0; j < pts.length; ++j) for(var j = 0; j < pts.length; ++j)
{ {
var compiled_marker = new CMarker(); var compiled_marker = new CMarker();
compiled_marker.setSize(7); compiled_marker.merge(default_marker);
compiled_marker.setSymbol(GetTypeMarkerByIndex(i)); if(!compiled_marker.spPr)
compiled_marker.setSpPr(new CSpPr()); {
compiled_marker.spPr.setLn(new CLn()); compiled_marker.setSpPr(new CSpPr());
var ln = compiled_marker.spPr.ln; }
ln.setW(12700); compiled_marker.spPr.setFill(brushes[i]);
ln.setFill(arrayColors[i]); if(!compiled_marker.spPr)
compiled_marker.spPr.setFill(arrayColors[i]); compiled_marker.spPr.setLn(new CLn());
compiled_marker.spPr.ln.setFill(pens_fills[i]);
compiled_marker.merge(ser.marker); compiled_marker.merge(ser.marker);
compiled_marker.setSymbol(GetTypeMarkerByIndex(i));
if(Array.isArray(ser.dPt)) if(Array.isArray(ser.dPt))
{ {
for(var k = 0; k < ser.dPt.length; ++k) for(var k = 0; k < ser.dPt.length; ++k)
{ {
if(ser.dPt[k].idx === pts[j].idx) if(ser.dPt[k].idx === pts[j].idx)
{ {
compiled_marker.merge(ser.dPt[k]) compiled_marker.merge(ser.dPt[k].marker);
break; break;
} }
} }
} }
compiled_marker.brush = compiled_marker.spPr.Fill;
compiled_marker.pen = compiled_marker.spPr.ln;
compiled_marker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
compiled_marker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
pts[j].compiledMarker = compiled_marker; pts[j].compiledMarker = compiled_marker;
pts[j].compiledMarker.pen = compiled_marker.spPr.ln;
pts[j].compiledMarker.brush = compiled_marker.spPr.Fill;
pts[j].compiledMarker.brush.calculate(parent_objects.theme, parent_objects.slide, parent_objects.layout, parent_objects.master, RGBA);
pts[j].compiledMarker.pen.calculate(parent_objects.theme, parent_objects.slide, parent_objects.layout, parent_objects.master, RGBA);
} }
} }
} }
...@@ -467,8 +492,8 @@ CChartSpace.prototype.recalculateSeriesColors = function() ...@@ -467,8 +492,8 @@ CChartSpace.prototype.recalculateSeriesColors = function()
{ {
for (var j = 0; j < countBase; j++) for (var j = 0; j < countBase; j++)
{ {
var percent = (-70 + 140 * ( (i + 1) / (needCreate + 1) )) / 100.0; var percent = (-70 + 140 * ( (i + 1) / (needCreate + 1) )) * 1000;
var color = CreateUniFillSolidFillWidthTintOrShade(this.baseColors[j], percent); var color = CreateUniFillSolidFillWidthTintOrShade(this.baseColors[j], 100000 - percent);
arrayColors.push( color ); arrayColors.push( color );
} }
} }
...@@ -479,71 +504,6 @@ CChartSpace.prototype.recalculateSeriesColors = function() ...@@ -479,71 +504,6 @@ CChartSpace.prototype.recalculateSeriesColors = function()
var b_vary_colors = this.chart.plotArea.chart instanceof CPieChart || (this.chart.plotArea.chart.varyColors && this.chart.plotArea.chart.series.length === 1); var b_vary_colors = this.chart.plotArea.chart instanceof CPieChart || (this.chart.plotArea.chart.varyColors && this.chart.plotArea.chart.series.length === 1);
var parents = this.getParentObjects(); var parents = this.getParentObjects();
/*
if(b_vary_colors)
{
var first_series = this.chart.plotArea.chart.series[0];
var pts;
if(first_series.val)
{
pts = first_series.val.numRef.numCache.pts;
}
else if(first_series.yVal)
{
pts = first_series.yVal.numRef.numCache.pts;
}
else
{
pts = [];
}
if(first_series instanceof CLineSeries)
{
for(var j = 0; j < pts.length; ++j)
{
var compiled_ln = new CLn();
}
ser.pen = new CLn();
ser.pen.setFill(arrayColors[i]);
ser.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
}
else
{
}
for(var j = 0; j < pts.length; ++j)
{
var compiled_marker = new CMarker();
compiled_marker.setSize(7);
compiled_marker.setSymbol(GetTypeMarkerByIndex(j));
compiled_marker.setSpPr(new CSpPr());
compiled_marker.spPr.setLn(new CLn());
var ln = compiled_marker.spPr.ln;
ln.setW(12700);
ln.setFill(arrayColors[j]);
compiled_marker.spPr.setFill(arrayColors[j]);
compiled_marker.merge(first_series.marker);
for(var k = 0; k < first_series.dPt.length; ++k)
{
if(first_series.dPt[k].idx === pts[j].idx)
{
compiled_marker.merge(first_series.dPt[k])
break;
}
}
compiled_marker.brush = brush.spPr.Fill;
compiled_marker.pen = brush.spPr.ln;
compiled_marker.brush.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
compiled_marker.pen.calculate(parents.theme, parents.slide, parents.layout, parents.master, RGBA);
pts.compiledMarker = compiled_marker;
}
}
*/
for(var i = 0; i < series.length; ++i) for(var i = 0; i < series.length; ++i)
{ {
var ser = series[i]; var ser = series[i];
......
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