| /* | |
| * 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(); | |
| } | |
| })(); |