• 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.js';
17import { ColorUtils } from '../component/trace/base/ColorUtils.js';
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) / (processMemBeanStructData.maxValue || 0)
42        );
43        processMemBeanStructCanvasCtx.fillRect(processMemBeanStructData.frame.x, processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight, width, drawHeight);
44        processMemBeanStructCanvasCtx.beginPath();
45        processMemBeanStructCanvasCtx.arc(processMemBeanStructData.frame.x, processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight, 3, 0, 2 * Math.PI, true);
46        processMemBeanStructCanvasCtx.fill();
47        processMemBeanStructCanvasCtx.globalAlpha = 1.0;
48        processMemBeanStructCanvasCtx.stroke();
49        processMemBeanStructCanvasCtx.beginPath();
50        processMemBeanStructCanvasCtx.moveTo(processMemBeanStructData.frame.x + 3, processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight);
51        processMemBeanStructCanvasCtx.lineWidth = 3;
52        processMemBeanStructCanvasCtx.lineTo(processMemBeanStructData.frame.x + width, processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight);
53        processMemBeanStructCanvasCtx.stroke();
54      } else {
55        processMemBeanStructCanvasCtx.fillStyle = ColorUtils.colorForTid(processMemBeanStructData.maxValue || 0);
56        processMemBeanStructCanvasCtx.strokeStyle = ColorUtils.colorForTid(processMemBeanStructData.maxValue || 0);
57        processMemBeanStructCanvasCtx.globalAlpha = 0.6;
58        processMemBeanStructCanvasCtx.lineWidth = 1;
59        let drawHeight: number = ((processMemBeanStructData.value || 0) * (processMemBeanStructData.frame.height || 0) * 1.0) / (processMemBeanStructData.maxValue || 1);
60        processMemBeanStructCanvasCtx.fillRect(processMemBeanStructData.frame.x, processMemBeanStructData.frame.y + processMemBeanStructData.frame.height - drawHeight, width, drawHeight);
61      }
62    }
63    processMemBeanStructCanvasCtx.globalAlpha = 1.0;
64    processMemBeanStructCanvasCtx.lineWidth = 1;
65  }
66}
67