3
13693261870
2022-09-16 63ba114e70e380442fcbed4a5157ee52c9491216
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
/*
* 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();
    }
 
})();