• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2022 Huawei Device Co., Ltd.
3 * Licensed under the Apache License, Version 2.0 (the "License");
4 * you may not use this file except in compliance with the License.
5 * You may obtain a copy of the License at
6 *
7 *     http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software
10 * distributed under the License is distributed on an "AS IS" BASIS,
11 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 * See the License for the specific language governing permissions and
13 * limitations under the License.
14 */
15
16import { BaseStruct } from './BaseStruct';
17import { ColorUtils } from '../component/trace/base/ColorUtils';
18
19export class ProcessMemStruct extends BaseStruct {
20  static hoverProcessMemStruct: ProcessMemStruct | undefined;
21  // trackId: number | undefined;
22  processName: string | undefined;
23  pid: number | undefined;
24  upid: number | undefined;
25  trackName: string | undefined;
26  type: string | undefined;
27  track_id: string | undefined;
28  value: number | undefined;
29  startTime: number | undefined;
30  duration: number | undefined;
31  maxValue: number | undefined;
32  delta: number | undefined;
33
34  static draw(processMemBeanStructCanvasCtx: CanvasRenderingContext2D, processMemBeanStructData: ProcessMemStruct) {
35    if (processMemBeanStructData.frame) {
36      let width = processMemBeanStructData.frame.width || 0;
37      if (processMemBeanStructData.startTime === ProcessMemStruct.hoverProcessMemStruct?.startTime) {
38        processMemBeanStructCanvasCtx.lineWidth = 1;
39        processMemBeanStructCanvasCtx.globalAlpha = 0.6;
40        let drawHeight: number = Math.floor(
41          ((processMemBeanStructData.value || 0) * (processMemBeanStructData.frame.height || 0) * 1.0) /
42            (processMemBeanStructData.maxValue || 0)
43        );
44        processMemBeanStructCanvasCtx.fillRect(
45          processMemBeanStructData.frame.x,
46          processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight,
47          width,
48          drawHeight
49        );
50        processMemBeanStructCanvasCtx.beginPath();
51        processMemBeanStructCanvasCtx.arc(
52          processMemBeanStructData.frame.x,
53          processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight,
54          3,
55          0,
56          2 * Math.PI,
57          true
58        );
59        processMemBeanStructCanvasCtx.fill();
60        processMemBeanStructCanvasCtx.globalAlpha = 1.0;
61        processMemBeanStructCanvasCtx.stroke();
62        processMemBeanStructCanvasCtx.beginPath();
63        processMemBeanStructCanvasCtx.moveTo(
64          processMemBeanStructData.frame.x + 3,
65          processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight
66        );
67        processMemBeanStructCanvasCtx.lineWidth = 3;
68        processMemBeanStructCanvasCtx.lineTo(
69          processMemBeanStructData.frame.x + width,
70          processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight
71        );
72        processMemBeanStructCanvasCtx.stroke();
73      } else {
74        processMemBeanStructCanvasCtx.fillStyle = ColorUtils.colorForTid(processMemBeanStructData.maxValue || 0);
75        processMemBeanStructCanvasCtx.strokeStyle = ColorUtils.colorForTid(processMemBeanStructData.maxValue || 0);
76        processMemBeanStructCanvasCtx.globalAlpha = 0.6;
77        processMemBeanStructCanvasCtx.lineWidth = 1;
78        let drawHeight: number =
79          ((processMemBeanStructData.value || 0) * (processMemBeanStructData.frame.height || 0) * 1.0) /
80          (processMemBeanStructData.maxValue || 1);
81        processMemBeanStructCanvasCtx.fillRect(
82          processMemBeanStructData.frame.x,
83          processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight,
84          width,
85          drawHeight
86        );
87      }
88    }
89    processMemBeanStructCanvasCtx.globalAlpha = 1.0;
90    processMemBeanStructCanvasCtx.lineWidth = 1;
91  }
92}
93