1fb726d48Sopenharmony_ci/* 2fb726d48Sopenharmony_ci * Copyright (C) 2022 Huawei Device Co., Ltd. 3fb726d48Sopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"); 4fb726d48Sopenharmony_ci * you may not use this file except in compliance with the License. 5fb726d48Sopenharmony_ci * You may obtain a copy of the License at 6fb726d48Sopenharmony_ci * 7fb726d48Sopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 8fb726d48Sopenharmony_ci * 9fb726d48Sopenharmony_ci * Unless required by applicable law or agreed to in writing, software 10fb726d48Sopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 11fb726d48Sopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12fb726d48Sopenharmony_ci * See the License for the specific language governing permissions and 13fb726d48Sopenharmony_ci * limitations under the License. 14fb726d48Sopenharmony_ci */ 15fb726d48Sopenharmony_ci 16fb726d48Sopenharmony_ciimport { BaseStruct } from './BaseStruct'; 17fb726d48Sopenharmony_ci 18fb726d48Sopenharmony_ciexport class HeapStruct extends BaseStruct { 19fb726d48Sopenharmony_ci static hoverHeapStruct: HeapStruct | undefined; 20fb726d48Sopenharmony_ci startTime: number | undefined; 21fb726d48Sopenharmony_ci endTime: number | undefined; 22fb726d48Sopenharmony_ci dur: number | undefined; 23fb726d48Sopenharmony_ci eventType: string | undefined; 24fb726d48Sopenharmony_ci heapsize: number | undefined; 25fb726d48Sopenharmony_ci density: number | undefined; 26fb726d48Sopenharmony_ci maxHeapSize: number = 0; 27fb726d48Sopenharmony_ci minHeapSize: number = 0; 28fb726d48Sopenharmony_ci 29fb726d48Sopenharmony_ci static draw(heapCtx: CanvasRenderingContext2D, heapData: HeapStruct): void { 30fb726d48Sopenharmony_ci if (heapData.frame) { 31fb726d48Sopenharmony_ci let width = heapData.frame.width || 0; 32fb726d48Sopenharmony_ci heapCtx.fillStyle = '#2db3aa'; 33fb726d48Sopenharmony_ci heapCtx.strokeStyle = '#2db3aa'; 34fb726d48Sopenharmony_ci if (heapData.startTime === HeapStruct.hoverHeapStruct?.startTime) { 35fb726d48Sopenharmony_ci heapCtx.lineWidth = 1; 36fb726d48Sopenharmony_ci heapCtx.globalAlpha = 0.6; 37fb726d48Sopenharmony_ci let drawHeight: number = Math.ceil( 38fb726d48Sopenharmony_ci ((heapData.heapsize || 0) * (heapData.frame.height || 0)) / heapData.maxHeapSize 39fb726d48Sopenharmony_ci ); 40fb726d48Sopenharmony_ci heapCtx.fillRect(heapData.frame.x, heapData.frame.y + heapData.frame.height - drawHeight, width, drawHeight); 41fb726d48Sopenharmony_ci heapCtx.beginPath(); 42fb726d48Sopenharmony_ci heapCtx.arc(heapData.frame.x, heapData.frame.y + heapData.frame.height - drawHeight, 3, 0, 2 * Math.PI, true); 43fb726d48Sopenharmony_ci heapCtx.fill(); 44fb726d48Sopenharmony_ci heapCtx.globalAlpha = 1.0; 45fb726d48Sopenharmony_ci heapCtx.stroke(); 46fb726d48Sopenharmony_ci heapCtx.beginPath(); 47fb726d48Sopenharmony_ci heapCtx.moveTo(heapData.frame.x + 3, heapData.frame.y + heapData.frame.height - drawHeight); 48fb726d48Sopenharmony_ci heapCtx.lineWidth = 3; 49fb726d48Sopenharmony_ci heapCtx.lineTo(heapData.frame.x + width, heapData.frame.y + heapData.frame.height - drawHeight); 50fb726d48Sopenharmony_ci heapCtx.stroke(); 51fb726d48Sopenharmony_ci } else { 52fb726d48Sopenharmony_ci heapCtx.globalAlpha = 0.6; 53fb726d48Sopenharmony_ci heapCtx.lineWidth = 1; 54fb726d48Sopenharmony_ci let drawHeight: number = Math.ceil( 55fb726d48Sopenharmony_ci ((heapData.heapsize || 0) * (heapData.frame.height || 0)) / heapData.maxHeapSize 56fb726d48Sopenharmony_ci ); 57fb726d48Sopenharmony_ci heapCtx.fillRect(heapData.frame.x, heapData.frame.y + heapData.frame.height - drawHeight, width, drawHeight); 58fb726d48Sopenharmony_ci } 59fb726d48Sopenharmony_ci } 60fb726d48Sopenharmony_ci heapCtx.globalAlpha = 1.0; 61fb726d48Sopenharmony_ci heapCtx.lineWidth = 1; 62fb726d48Sopenharmony_ci } 63fb726d48Sopenharmony_ci} 64