101 lines
3.5 KiB
JavaScript
Generated
101 lines
3.5 KiB
JavaScript
Generated
/*
|
|
* 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();
|
|
}
|
|
|
|
})();
|