File indexing completed on 2024-04-28 05:41:35
0001 /* 0002 This file is part of KCachegrind. 0003 0004 SPDX-FileCopyrightText: 2003-2016 Josef Weidendorfer <Josef.Weidendorfer@gmx.de> 0005 0006 SPDX-License-Identifier: GPL-2.0-only 0007 */ 0008 0009 /* 0010 * TracePart Graph 0011 */ 0012 0013 #ifndef PARTGRAPH_H 0014 #define PARTGRAPH_H 0015 0016 #include <QPixmap> 0017 0018 #include "treemap.h" 0019 #include "tracedata.h" 0020 0021 class PartAreaWidget: public TreeMapWidget 0022 { 0023 Q_OBJECT 0024 0025 public: 0026 // Visualization inside of trace parts 0027 enum VisualizationMode { NoVisualization, Partitioning, Inclusive }; 0028 0029 explicit PartAreaWidget(QWidget* parent=nullptr); 0030 0031 void setData(TraceData* d); 0032 void setEventType(EventType* ct); 0033 void setGroupType(ProfileContext::Type gt); 0034 void setVisualization(VisualizationMode); 0035 void setZoomFunction(bool zoomFunction); 0036 void setCallLevels(int callLevels); 0037 void setFunction(TraceFunction* f); 0038 0039 EventType* eventType() const { return _eventType; } 0040 ProfileContext::Type groupType() const { return _groupType; } 0041 TraceFunction* function() const { return _function; } 0042 VisualizationMode visualization() const { return _visualization; } 0043 bool zoomFunction() const { return _zoomFunction; } 0044 int callLevels() const { return _callLevels; } 0045 0046 QColor groupColor(TraceFunction*) const; 0047 QString tipString(TreeMapItem*) const override; 0048 0049 void changeHidden(const TracePartList& list); 0050 bool isHidden(TracePart*) const; 0051 0052 private: 0053 void refreshParts(); 0054 0055 TraceData* _data; 0056 EventType* _eventType; 0057 ProfileContext::Type _groupType; 0058 TraceFunction* _function; 0059 VisualizationMode _visualization; 0060 bool _zoomFunction; 0061 int _callLevels; 0062 0063 TracePartList _hiddenParts; 0064 }; 0065 0066 class BasePartItem: public TreeMapItem 0067 { 0068 public: 0069 BasePartItem(); 0070 0071 void setData(TraceData* d); 0072 0073 int rtti() const override { return 1; } 0074 double value() const override; 0075 QString text(int) const override; 0076 int borderWidth() const override { return 0; } 0077 TreeMapItemList* children() override; 0078 QColor backColor() const override; 0079 0080 private: 0081 TraceData* _data; 0082 }; 0083 0084 class PartItem: public TreeMapItem 0085 { 0086 public: 0087 explicit PartItem(TracePart* p); 0088 int rtti() const override { return 2; } 0089 TracePart* part() { return _p; } 0090 double value() const override; 0091 double sum() const override; 0092 int borderWidth() const override { return 0; } 0093 QString text(int) const override; 0094 QPixmap pixmap(int) const override; 0095 TreeMapItemList* children() override; 0096 QColor backColor() const override; 0097 0098 private: 0099 TracePart* _p; 0100 unsigned int _factor; 0101 }; 0102 0103 class SubPartItem: public TreeMapItem 0104 { 0105 public: 0106 explicit SubPartItem(ProfileCostArray*); 0107 int rtti() const override { return 3; } 0108 ProfileCostArray* partCostItem() { return _partCostItem; } 0109 double value() const override; 0110 double sum() const override; 0111 SplitMode splitMode() const override { return Vertical; } 0112 QString text(int) const override; 0113 QPixmap pixmap(int) const override; 0114 TreeMapItemList* children() override; 0115 QColor backColor() const override; 0116 0117 private: 0118 ProfileCostArray* _partCostItem; 0119 unsigned int _factor; 0120 }; 0121 0122 0123 #endif