blob: ffb4114f170679bd303067a8582ad7df18ca54ed [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
(function () {
var _layersInfoMap = {};
var _recordContainer;
var CELL_MAX = 160;
if (window.Canteen) {
window.Canteen.globals.STACK_SIZE = 100000000;
}
window.printIncrementalOnFrame = function (chart, frameNumber, recordContainer) {
if (!_recordContainer) {
_recordContainer = recordContainer;
initContainer();
}
if (!chart) {
return;
}
var layers = chart.getZr().painter.getLayers();
for (var zlevel in layers) {
if (layers.hasOwnProperty(zlevel)) {
printIncremental(zlevel, layers[zlevel], frameNumber);
}
}
}
function initContainer() {
_recordContainer.innerHTML = [
'<div class="print-incremental-record-title">',
'In the "incremental layer", each frame: <br>',
'canvas instruction count (<span class="print-incremental-cmd-count">red number</span>) should be the same:',
'</div>'
].join('');
_recordContainer.className = 'print-incremental-record';
}
function printIncremental(zlevel, layer, frameNumber) {
var layerInfo = _layersInfoMap[zlevel];
if (!layerInfo) {
layerInfo = _layersInfoMap[zlevel] = {
recordLineCellCount: 0,
recordLineTitle: document.createElement('div'),
recordLineContainer: document.createElement('div')
};
var incrementalText = layer.incremental ? ' (incremental)' : '';
layerInfo.recordLineTitle.innerHTML = 'layer ' + zlevel + incrementalText + ': <br>';
layerInfo.recordLineContainer.className = 'print-incremental-record-line';
_recordContainer.appendChild(layerInfo.recordLineTitle);
_recordContainer.appendChild(layerInfo.recordLineContainer);
}
var canvas = layer.dom;
var ctx = canvas.getContext('2d');
var stackLength = getStackLength(ctx);
var thisStackLength = stackLength;
var cell;
if (layerInfo.recordLineCellCount > CELL_MAX) {
cell = layerInfo.recordLineContainer.firstChild;
}
else {
cell = document.createElement('span');
layerInfo.recordLineCellCount++;
}
cell.innerHTML = frameNumber + ':<span class="print-incremental-cmd-count">' + thisStackLength + '</span> ';
layerInfo.recordLineContainer.appendChild(cell);
clearStack(ctx);
}
function getStackLength(ctx) {
return ctx.stack().length;
}
function clearStack(ctx) {
window.printIncrementalLastStack = ctx.stack().slice();
ctx.clear();
}
})();