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