• Skip to content
  • Skip to link menu
KDE API Reference
  • KDE API Reference
  • kdesdk API Reference
  • KDE Home
  • Contact Us
 

kcachegrind

  • sources
  • kde-4.12
  • kdesdk
  • kcachegrind
  • libviews
callgraphview.h
Go to the documentation of this file.
1 /* This file is part of KCachegrind.
2  Copyright (C) 2003 Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
3 
4  KCachegrind is free software; you can redistribute it and/or
5  modify it under the terms of the GNU General Public
6  License as published by the Free Software Foundation, version 2.
7 
8  This program is distributed in the hope that it will be useful,
9  but WITHOUT ANY WARRANTY; without even the implied warranty of
10  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11  General Public License for more details.
12 
13  You should have received a copy of the GNU General Public License
14  along with this program; see the file COPYING. If not, write to
15  the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16  Boston, MA 02110-1301, USA.
17 */
18 
19 /*
20  * Callgraph View
21  */
22 
23 #ifndef CALLGRAPHVIEW_H
24 #define CALLGRAPHVIEW_H
25 
26 #include <qwidget.h>
27 #include <qmap.h>
28 #include <qtimer.h>
29 
30 #include <QGraphicsView>
31 #include <QGraphicsScene>
32 #include <QGraphicsRectItem>
33 #include <QGraphicsPolygonItem>
34 #include <QGraphicsPathItem>
35 #include <QPixmap>
36 #include <QFocusEvent>
37 #include <QPolygon>
38 #include <QList>
39 #include <QKeyEvent>
40 #include <QResizeEvent>
41 #include <QContextMenuEvent>
42 #include <QMouseEvent>
43 
44 #include "treemap.h" // for DrawParams
45 #include "tracedata.h"
46 #include "traceitemview.h"
47 
48 class QProcess;
49 class QTemporaryFile;
50 class QIODevice;
51 
52 class CanvasNode;
53 class CanvasEdge;
54 class GraphEdge;
55 class CallGraphView;
56 
57 
58 // temporary parts of call graph to be shown
59 class GraphNode
60 {
61 public:
62  GraphNode();
63 
64  TraceFunction* function() const
65  {
66  return _f;
67  }
68 
69  void setFunction(TraceFunction* f)
70  {
71  _f = f;
72  }
73 
74  CanvasNode* canvasNode() const
75  {
76  return _cn;
77  }
78 
79  void setCanvasNode(CanvasNode* cn)
80  {
81  _cn = cn;
82  }
83 
84  bool isVisible() const
85  {
86  return _visible;
87  }
88 
89  void setVisible(bool v)
90  {
91  _visible = v;
92  }
93 
94  void clearEdges();
95  void sortEdges();
96  void addCallee(GraphEdge*);
97  void addCaller(GraphEdge*);
98  void addUniqueCallee(GraphEdge*);
99  void addUniqueCaller(GraphEdge*);
100  void removeEdge(GraphEdge*);
101  double calleeCostSum();
102  double calleeCountSum();
103  double callerCostSum();
104  double callerCountSum();
105 
106  // keyboard navigation
107  TraceCall* visibleCaller();
108  TraceCall* visibleCallee();
109  void setCallee(GraphEdge*);
110  void setCaller(GraphEdge*);
111  TraceFunction* nextVisible();
112  TraceFunction* priorVisible();
113  TraceCall* nextVisibleCaller(GraphEdge* = 0);
114  TraceCall* nextVisibleCallee(GraphEdge* = 0);
115  TraceCall* priorVisibleCaller(GraphEdge* = 0);
116  TraceCall* priorVisibleCallee(GraphEdge* = 0);
117 
118  double self, incl;
119 
120 private:
121  TraceFunction* _f;
122  CanvasNode* _cn;
123  bool _visible;
124 
125  QList<GraphEdge*> callers, callees;
126 
127  // for keyboard navigation
128  int _lastCallerIndex, _lastCalleeIndex;
129  bool _lastFromCaller;
130 };
131 
132 
133 class GraphEdge
134 {
135 public:
136  GraphEdge();
137 
138  CanvasEdge* canvasEdge() const
139  {
140  return _ce;
141  }
142 
143  void setCanvasEdge(CanvasEdge* ce)
144  {
145  _ce = ce;
146  }
147 
148  TraceCall* call() const
149  {
150  return _c;
151  }
152 
153  void setCall(TraceCall* c)
154  {
155  _c = c;
156  }
157 
158  bool isVisible() const
159  {
160  return _visible;
161  }
162 
163  void setVisible(bool v)
164  {
165  _visible = v;
166  }
167 
168  GraphNode* fromNode() const
169  {
170  return _fromNode;
171  }
172 
173  GraphNode* toNode() const
174  {
175  return _toNode;
176  }
177 
178  TraceFunction* from() const
179  {
180  return _from;
181  }
182 
183  TraceFunction* to() const
184  {
185  return _to;
186  }
187 
188  // has special cases for collapsed edges
189  QString prettyName();
190 
191  void setCaller(TraceFunction* f)
192  {
193  _from = f;
194  }
195 
196  void setCallee(TraceFunction* f)
197  {
198  _to = f;
199  }
200 
201  void setCallerNode(GraphNode* n)
202  {
203  _fromNode = n;
204  }
205 
206  void setCalleeNode(GraphNode* n)
207  {
208  _toNode = n;
209  }
210 
211  // keyboard navigation
212  TraceFunction* visibleCaller();
213  TraceFunction* visibleCallee();
214  TraceCall* nextVisible();
215  TraceCall* priorVisible();
216 
217  double cost, count;
218 
219 private:
220  // we have a _c *and* _from/_to because for collapsed edges,
221  // only _to or _from will be unequal NULL
222  TraceCall* _c;
223  TraceFunction * _from, * _to;
224  GraphNode *_fromNode, *_toNode;
225  CanvasEdge* _ce;
226  bool _visible;
227  // for keyboard navigation: have we last reached this edge via a caller?
228  bool _lastFromCaller;
229 };
230 
231 
232 typedef QMap<TraceFunction*, GraphNode> GraphNodeMap;
233 typedef QMap<QPair<TraceFunction*, TraceFunction*>, GraphEdge> GraphEdgeMap;
234 
235 
236 /* Abstract Interface for graph options */
237 class GraphOptions
238 {
239 public:
240  enum Layout {TopDown, LeftRight, Circular};
241  virtual ~GraphOptions() {}
242  virtual double funcLimit() = 0;
243  virtual double callLimit() = 0;
244  virtual int maxCallerDepth() = 0;
245  virtual int maxCalleeDepth() = 0;
246  virtual bool showSkipped() = 0;
247  virtual bool expandCycles() = 0;
248  virtual bool clusterGroups() = 0;
249  virtual int detailLevel() = 0;
250  virtual Layout layout() = 0;
251 
252  static QString layoutString(Layout);
253  static Layout layout(QString);
254 };
255 
256 /* Graph Options Storage */
257 class StorableGraphOptions: public GraphOptions
258 {
259  public:
260  StorableGraphOptions();
261  virtual ~StorableGraphOptions(){}
262  // implementation of getters
263  virtual double funcLimit() { return _funcLimit; }
264  virtual double callLimit() { return _callLimit; }
265  virtual int maxCallerDepth() { return _maxCallerDepth; }
266  virtual int maxCalleeDepth() { return _maxCalleeDepth; }
267  virtual bool showSkipped() { return _showSkipped; }
268  virtual bool expandCycles() { return _expandCycles; }
269  virtual bool clusterGroups() { return _clusterGroups; }
270  virtual int detailLevel() { return _detailLevel; }
271  virtual Layout layout() { return _layout; }
272 
273  // setters
274  void setMaxCallerDepth(int d) { _maxCallerDepth = d; }
275  void setMaxCalleeDepth(int d) { _maxCalleeDepth = d; }
276  void setFuncLimit(double l) { _funcLimit = l; }
277  void setCallLimit(double l) { _callLimit = l; }
278  void setShowSkipped(bool b) { _showSkipped = b; }
279  void setExpandCycles(bool b) { _expandCycles = b; }
280  void setClusterGroups(bool b) { _clusterGroups = b; }
281  void setDetailLevel(int l) { _detailLevel = l; }
282  void setLayout(Layout l) { _layout = l; }
283 
284  protected:
285  double _funcLimit, _callLimit;
286  int _maxCallerDepth, _maxCalleeDepth;
287  bool _showSkipped, _expandCycles, _clusterGroups;
288  int _detailLevel;
289  Layout _layout;
290 };
291 
298 class GraphExporter : public StorableGraphOptions
299 {
300 public:
301  GraphExporter();
302  GraphExporter(TraceData*, TraceFunction*, EventType*,
303  ProfileContext::Type,
304  QString filename = QString());
305  virtual ~GraphExporter();
306 
307  void reset(TraceData*, CostItem*, EventType*,
308  ProfileContext::Type,
309  QString filename = QString());
310 
311  QString filename()
312  {
313  return _dotName;
314  }
315 
316  int edgeCount()
317  {
318  return _edgeMap.count();
319  }
320 
321  int nodeCount()
322  {
323  return _nodeMap.count();
324  }
325 
326  // Set the object from which to get graph options for creation.
327  // Default is this object itself (supply 0 for default)
328  void setGraphOptions(GraphOptions* go = 0);
329 
330  // Create a subgraph with given limits/maxDepths
331  void createGraph();
332 
333  // calls createGraph before dumping of not already created
334  void writeDot(QIODevice* = 0);
335 
336  // to map back to structures when parsing a layouted graph
337 
338  /* <toFunc> is a helper for node() and edge().
339  * Do not use the returned pointer directly, but only with
340  * node() or edge(), because it could be a dangling pointer.
341  */
342  TraceFunction* toFunc(QString);
343  GraphNode* node(TraceFunction*);
344  GraphEdge* edge(TraceFunction*, TraceFunction*);
345 
346  /* After CanvasEdges are attached to GraphEdges, we can
347  * sort the incoming and outgoing edges of all nodes
348  * regarding start/end points for keyboard navigation
349  */
350  void sortEdges();
351 
352 private:
353  void buildGraph(TraceFunction*, int, bool, double);
354 
355  QString _dotName;
356  CostItem* _item;
357  EventType* _eventType;
358  ProfileContext::Type _groupType;
359  QTemporaryFile* _tmpFile;
360  double _realFuncLimit, _realCallLimit;
361  int _maxDepth;
362  bool _graphCreated;
363 
364  GraphOptions* _go;
365 
366  // optional graph attributes
367  bool _useBox;
368 
369  // graph parts written to file
370  GraphNodeMap _nodeMap;
371  GraphEdgeMap _edgeMap;
372 };
373 
374 
378 class PanningView : public QGraphicsView
379 {
380  Q_OBJECT
381 
382 public:
383  PanningView(QWidget * parent = 0);
384 
385  void setZoomRect(const QRectF& r);
386 
387 signals:
388  void zoomRectMoved(qreal dx, qreal dy);
389  void zoomRectMoveFinished();
390 
391 protected:
392  void mousePressEvent(QMouseEvent*);
393  void mouseMoveEvent(QMouseEvent*);
394  void mouseReleaseEvent(QMouseEvent*);
395  void drawForeground(QPainter * p, const QRectF&);
396 
397  QRectF _zoomRect;
398  bool _movingZoomRect;
399  QPointF _lastPos;
400 };
401 
402 
403 /*
404  * Canvas Items:
405  * - CanvasNode (Rectangular Area)
406  * - CanvasEdge (Spline curve)
407  * - CanvasEdgeLabel (Label for edges)
408  * - CanvasEdgeArrow (Arrows at the end of the edge spline)
409  * - CanvasFrame (Grey background blending to show active node)
410  */
411 
412 enum {
413  CANVAS_NODE = 1122,
414  CANVAS_EDGE, CANVAS_EDGELABEL, CANVAS_EDGEARROW,
415  CANVAS_FRAME
416 };
417 
418 class CanvasNode : public QGraphicsRectItem, public StoredDrawParams
419 {
420 public:
421  CanvasNode(CallGraphView*, GraphNode*, int, int, int, int);
422 
423  void updateGroup();
424  void setSelected(bool);
425  void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
426 
427  GraphNode* node()
428  {
429  return _node;
430  }
431 
432  int type() const
433  {
434  return CANVAS_NODE;
435  }
436 
437 private:
438  GraphNode* _node;
439  CallGraphView* _view;
440 };
441 
442 
443 class CanvasEdgeLabel : public QGraphicsRectItem, public StoredDrawParams
444 {
445 public:
446  CanvasEdgeLabel(CallGraphView*, CanvasEdge*, int, int, int, int);
447 
448  void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
449 
450  CanvasEdge* canvasEdge()
451  {
452  return _ce;
453  }
454 
455  int type() const
456  {
457  return CANVAS_EDGELABEL;
458  }
459 
460  double percentage() const
461  {
462  return _percentage;
463  }
464 
465 private:
466  CanvasEdge* _ce;
467  CallGraphView* _view;
468 
469  double _percentage;
470 };
471 
472 
473 class CanvasEdgeArrow : public QGraphicsPolygonItem
474 {
475 public:
476  CanvasEdgeArrow(CanvasEdge*);
477 
478  void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
479 
480  CanvasEdge* canvasEdge()
481  {
482  return _ce;
483  }
484 
485  int type() const
486  {
487  return CANVAS_EDGEARROW;
488  }
489 
490 private:
491  CanvasEdge* _ce;
492 };
493 
494 
495 class CanvasEdge : public QGraphicsPathItem
496 {
497 public:
498  CanvasEdge(GraphEdge*);
499 
500  void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
501 
502  void setSelected(bool);
503 
504  CanvasEdgeLabel* label()
505  {
506  return _label;
507  }
508 
509  void setLabel(CanvasEdgeLabel* l);
510 
511  CanvasEdgeArrow* arrow()
512  {
513  return _arrow;
514  }
515 
516  void setArrow(CanvasEdgeArrow* a);
517 
518  const QPolygon& controlPoints() const
519  {
520  return _points;
521  }
522 
523  void setControlPoints(const QPolygon& a);
524 
525  GraphEdge* edge()
526  {
527  return _edge;
528  }
529 
530  int type() const
531  {
532  return CANVAS_EDGE;
533  }
534 
535 private:
536  GraphEdge* _edge;
537  CanvasEdgeLabel* _label;
538  CanvasEdgeArrow* _arrow;
539  QPolygon _points;
540 
541  double _thickness;
542 };
543 
544 
545 class CanvasFrame : public QGraphicsRectItem
546 {
547 public:
548  CanvasFrame(CanvasNode*);
549 
550  int type() const
551  {
552  return CANVAS_FRAME;
553  }
554 
555  bool hit(const QPoint&) const
556  {
557  return false;
558  }
559 
560  void paint(QPainter*, const QStyleOptionGraphicsItem*, QWidget*);
561 
562 private:
563  static QPixmap* _p;
564 };
565 
566 
567 class CallGraphTip;
568 
574 class CallGraphView : public QGraphicsView, public TraceItemView,
575  public StorableGraphOptions
576 {
577  Q_OBJECT
578 
579 public:
580  enum ZoomPosition {TopLeft, TopRight, BottomLeft, BottomRight, Auto, Hide};
581 
582  explicit CallGraphView(TraceItemView* parentView, QWidget* parent=0,
583  const char* name = 0);
584  ~CallGraphView();
585 
586  void restoreOptions(const QString& prefix, const QString& postfix);
587  void saveOptions(const QString& prefix, const QString& postfix);
588 
589  QWidget* widget()
590  {
591  return this;
592  }
593 
594  QString whatsThis() const;
595 
596  ZoomPosition zoomPos() const
597  {
598  return _zoomPosition;
599  }
600 
601  static ZoomPosition zoomPos(QString);
602  static QString zoomPosString(ZoomPosition);
603 
604 public slots:
605  void zoomRectMoved(qreal, qreal);
606  void zoomRectMoveFinished();
607 
608  void showRenderWarning();
609  void showRenderError(QString);
610  void stopRendering();
611  void readDotOutput();
612  void dotError();
613  void dotExited();
614 
615  // context menu trigger handlers
616  void callerDepthTriggered(QAction*);
617  void calleeDepthTriggered(QAction*);
618  void nodeLimitTriggered(QAction*);
619  void callLimitTriggered(QAction*);
620  void zoomPosTriggered(QAction*);
621  void layoutTriggered(QAction*);
622 
623 protected:
624  void resizeEvent(QResizeEvent*);
625  void mousePressEvent(QMouseEvent*);
626  void mouseMoveEvent(QMouseEvent*);
627  void mouseReleaseEvent(QMouseEvent*);
628  void mouseDoubleClickEvent(QMouseEvent*);
629  void contextMenuEvent(QContextMenuEvent*);
630  void keyPressEvent(QKeyEvent*);
631  void focusInEvent(QFocusEvent*);
632  void focusOutEvent(QFocusEvent*);
633  void scrollContentsBy(int dx, int dy);
634 
635 private:
636  void updateSizes(QSize s = QSize(0,0));
637  CostItem* canShow(CostItem*);
638  void doUpdate(int, bool);
639  void refresh();
640  void makeFrame(CanvasNode*, bool active);
641  void clear();
642  void showText(QString);
643 
644  // context menu builders
645  QAction* addCallerDepthAction(QMenu*,QString,int);
646  QMenu* addCallerDepthMenu(QMenu*);
647  QAction* addCalleeDepthAction(QMenu*,QString,int);
648  QMenu* addCalleeDepthMenu(QMenu*);
649  QAction* addNodeLimitAction(QMenu*,QString,double);
650  QMenu* addNodeLimitMenu(QMenu*);
651  QAction* addCallLimitAction(QMenu*,QString,double);
652  QMenu* addCallLimitMenu(QMenu*);
653  QAction* addZoomPosAction(QMenu*,QString,ZoomPosition);
654  QMenu* addZoomPosMenu(QMenu*);
655  QAction* addLayoutAction(QMenu*,QString,Layout);
656  QMenu* addLayoutMenu(QMenu*);
657 
658  QGraphicsScene *_scene;
659  int _xMargin, _yMargin;
660  PanningView *_panningView;
661  double _panningZoom;
662 
663  CallGraphTip* _tip;
664 
665  bool _isMoving;
666  QPoint _lastPos;
667 
668  GraphExporter _exporter;
669 
670  GraphNode* _selectedNode;
671  GraphEdge* _selectedEdge;
672 
673  // widget options
674  ZoomPosition _zoomPosition, _lastAutoPosition;
675 
676  // background rendering
677  QProcess* _renderProcess;
678  QString _renderProcessCmdLine;
679  QTimer _renderTimer;
680  GraphNode* _prevSelectedNode;
681  QPoint _prevSelectedPos;
682  QString _unparsedOutput;
683 };
684 
685 
686 #endif
StorableGraphOptions::setLayout
void setLayout(Layout l)
Definition: callgraphview.h:282
CanvasEdgeArrow::type
int type() const
Definition: callgraphview.h:485
GraphOptions::detailLevel
virtual int detailLevel()=0
GraphOptions::layout
virtual Layout layout()=0
PanningView
A panner laid over a QGraphicsScene.
Definition: callgraphview.h:378
GraphNode::callerCostSum
double callerCostSum()
Definition: callgraphview.cpp:209
GraphEdge::setCallerNode
void setCallerNode(GraphNode *n)
Definition: callgraphview.h:201
StorableGraphOptions::expandCycles
virtual bool expandCycles()
Definition: callgraphview.h:268
CallGraphView::Auto
Definition: callgraphview.h:580
CANVAS_FRAME
Definition: callgraphview.h:415
GraphExporter::GraphExporter
GraphExporter()
Definition: callgraphview.cpp:530
CanvasEdge::setArrow
void setArrow(CanvasEdgeArrow *a)
Definition: callgraphview.cpp:1374
StorableGraphOptions::_maxCallerDepth
int _maxCallerDepth
Definition: callgraphview.h:286
CallGraphView::dotExited
void dotExited()
Definition: callgraphview.cpp:2127
GraphExporter::edge
GraphEdge * edge(TraceFunction *, TraceFunction *)
Definition: callgraphview.cpp:935
QGraphicsRectItem
GraphNode::priorVisibleCaller
TraceCall * priorVisibleCaller(GraphEdge *=0)
Definition: callgraphview.cpp:366
CanvasEdge::type
int type() const
Definition: callgraphview.h:530
GraphOptions::maxCallerDepth
virtual int maxCallerDepth()=0
PanningView::PanningView
PanningView(QWidget *parent=0)
Definition: callgraphview.cpp:1090
GraphEdge::visibleCallee
TraceFunction * visibleCallee()
Definition: callgraphview.cpp:438
GraphNode::addUniqueCaller
void addUniqueCaller(GraphEdge *)
Definition: callgraphview.cpp:177
CanvasEdge::paint
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
Definition: callgraphview.cpp:1401
CanvasEdge::setControlPoints
void setControlPoints(const QPolygon &a)
Definition: callgraphview.cpp:1388
GraphExporter::~GraphExporter
virtual ~GraphExporter()
Definition: callgraphview.cpp:548
StorableGraphOptions::~StorableGraphOptions
virtual ~StorableGraphOptions()
Definition: callgraphview.h:261
CallGraphView::showRenderWarning
void showRenderWarning()
Definition: callgraphview.cpp:1955
CallGraphView::zoomPosString
static QString zoomPosString(ZoomPosition)
Definition: callgraphview.cpp:3125
CallGraphView::BottomLeft
Definition: callgraphview.h:580
StorableGraphOptions::_expandCycles
bool _expandCycles
Definition: callgraphview.h:287
GraphEdge::call
TraceCall * call() const
Definition: callgraphview.h:148
GraphEdge::canvasEdge
CanvasEdge * canvasEdge() const
Definition: callgraphview.h:138
StorableGraphOptions::layout
virtual Layout layout()
Definition: callgraphview.h:271
GraphExporter::node
GraphNode * node(TraceFunction *)
Definition: callgraphview.cpp:923
GraphExporter::setGraphOptions
void setGraphOptions(GraphOptions *go=0)
Definition: callgraphview.cpp:604
CanvasEdgeArrow
Definition: callgraphview.h:473
CanvasEdgeLabel::paint
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
Definition: callgraphview.cpp:1308
CANVAS_NODE
Definition: callgraphview.h:413
CanvasFrame::type
int type() const
Definition: callgraphview.h:550
CallGraphView::readDotOutput
void readDotOutput()
Definition: callgraphview.cpp:2093
CallGraphView::zoomPos
ZoomPosition zoomPos() const
Definition: callgraphview.h:596
CanvasEdgeLabel::CanvasEdgeLabel
CanvasEdgeLabel(CallGraphView *, CanvasEdge *, int, int, int, int)
Definition: callgraphview.cpp:1258
CanvasEdgeLabel::canvasEdge
CanvasEdge * canvasEdge()
Definition: callgraphview.h:450
GraphEdge::setCanvasEdge
void setCanvasEdge(CanvasEdge *ce)
Definition: callgraphview.h:143
GraphOptions::clusterGroups
virtual bool clusterGroups()=0
GraphNode::addCaller
void addCaller(GraphEdge *)
Definition: callgraphview.cpp:165
QWidget
TraceFunction
A traced function.
Definition: tracedata.h:1122
CanvasEdgeLabel::percentage
double percentage() const
Definition: callgraphview.h:460
GraphNode::callerCountSum
double callerCountSum()
Definition: callgraphview.cpp:219
PanningView::mousePressEvent
void mousePressEvent(QMouseEvent *)
Definition: callgraphview.cpp:1123
GraphExporter
GraphExporter.
Definition: callgraphview.h:298
CostItem
Base class for cost items.
Definition: costitem.h:37
CanvasFrame::hit
bool hit(const QPoint &) const
Definition: callgraphview.h:555
GraphNode::priorVisible
TraceFunction * priorVisible()
Definition: callgraphview.cpp:316
PanningView::_movingZoomRect
bool _movingZoomRect
Definition: callgraphview.h:398
traceitemview.h
StorableGraphOptions::maxCalleeDepth
virtual int maxCalleeDepth()
Definition: callgraphview.h:266
CallGraphView::Hide
Definition: callgraphview.h:580
CallGraphView::zoomPosTriggered
void zoomPosTriggered(QAction *)
Definition: callgraphview.cpp:2884
StorableGraphOptions::setExpandCycles
void setExpandCycles(bool b)
Definition: callgraphview.h:279
CallGraphView::contextMenuEvent
void contextMenuEvent(QContextMenuEvent *)
Definition: callgraphview.cpp:2924
GraphEdge::setCallee
void setCallee(TraceFunction *f)
Definition: callgraphview.h:196
CallGraphView::calleeDepthTriggered
void calleeDepthTriggered(QAction *)
Definition: callgraphview.cpp:2768
CallGraphView::mouseReleaseEvent
void mouseReleaseEvent(QMouseEvent *)
Definition: callgraphview.cpp:2653
QGraphicsPolygonItem
CallGraphView::keyPressEvent
void keyPressEvent(QKeyEvent *)
Definition: callgraphview.cpp:1714
GraphExporter::sortEdges
void sortEdges()
Definition: callgraphview.cpp:902
CanvasFrame
Definition: callgraphview.h:545
GraphNode::visibleCallee
TraceCall * visibleCallee()
Definition: callgraphview.cpp:256
CallGraphView::mousePressEvent
void mousePressEvent(QMouseEvent *)
Definition: callgraphview.cpp:2600
CallGraphView::callerDepthTriggered
void callerDepthTriggered(QAction *)
Definition: callgraphview.cpp:2729
EventType
A cost type, e.g.
Definition: eventtype.h:43
StorableGraphOptions::showSkipped
virtual bool showSkipped()
Definition: callgraphview.h:267
StorableGraphOptions::setDetailLevel
void setDetailLevel(int l)
Definition: callgraphview.h:281
TraceItemView
Abstract Base Class for KCachegrind Views.
Definition: traceitemview.h:70
CallGraphView::stopRendering
void stopRendering()
Definition: callgraphview.cpp:1986
GraphNode::nextVisibleCaller
TraceCall * nextVisibleCaller(GraphEdge *=0)
Definition: callgraphview.cpp:338
GraphNode::calleeCountSum
double calleeCountSum()
Definition: callgraphview.cpp:199
CanvasEdge::label
CanvasEdgeLabel * label()
Definition: callgraphview.h:504
GraphExporter::createGraph
void createGraph()
Definition: callgraphview.cpp:611
GraphEdge::setCaller
void setCaller(TraceFunction *f)
Definition: callgraphview.h:191
CanvasEdge::controlPoints
const QPolygon & controlPoints() const
Definition: callgraphview.h:518
GraphEdge::from
TraceFunction * from() const
Definition: callgraphview.h:178
PanningView::_lastPos
QPointF _lastPos
Definition: callgraphview.h:399
GraphOptions::maxCalleeDepth
virtual int maxCalleeDepth()=0
tracedata.h
StorableGraphOptions::_showSkipped
bool _showSkipped
Definition: callgraphview.h:287
GraphOptions::funcLimit
virtual double funcLimit()=0
GraphNode::visibleCaller
TraceCall * visibleCaller()
Definition: callgraphview.cpp:230
GraphEdge::priorVisible
TraceCall * priorVisible()
Definition: callgraphview.cpp:465
CanvasNode::CanvasNode
CanvasNode(CallGraphView *, GraphNode *, int, int, int, int)
Definition: callgraphview.cpp:1161
CANVAS_EDGEARROW
Definition: callgraphview.h:414
CanvasEdgeArrow::CanvasEdgeArrow
CanvasEdgeArrow(CanvasEdge *)
Definition: callgraphview.cpp:1332
StorableGraphOptions::clusterGroups
virtual bool clusterGroups()
Definition: callgraphview.h:269
GraphOptions::~GraphOptions
virtual ~GraphOptions()
Definition: callgraphview.h:241
StoredDrawParams
Definition: treemap.h:96
CallGraphView::nodeLimitTriggered
void nodeLimitTriggered(QAction *)
Definition: callgraphview.cpp:2811
CANVAS_EDGE
Definition: callgraphview.h:414
GraphEdge::GraphEdge
GraphEdge()
Definition: callgraphview.cpp:401
CallGraphView::whatsThis
QString whatsThis() const
Definition: callgraphview.cpp:1546
GraphNode::setCallee
void setCallee(GraphEdge *)
Definition: callgraphview.cpp:282
GraphNode::GraphNode
GraphNode()
Definition: callgraphview.cpp:132
GraphOptions::layoutString
static QString layoutString(Layout)
Definition: callgraphview.cpp:487
GraphEdge::toNode
GraphNode * toNode() const
Definition: callgraphview.h:173
CallGraphView::resizeEvent
void resizeEvent(QResizeEvent *)
Definition: callgraphview.cpp:1814
StorableGraphOptions::funcLimit
virtual double funcLimit()
Definition: callgraphview.h:263
GraphNode::addCallee
void addCallee(GraphEdge *)
Definition: callgraphview.cpp:159
StorableGraphOptions::_clusterGroups
bool _clusterGroups
Definition: callgraphview.h:287
CanvasEdge::setSelected
void setSelected(bool)
Definition: callgraphview.cpp:1382
GraphNode::calleeCostSum
double calleeCostSum()
Definition: callgraphview.cpp:189
StorableGraphOptions::setMaxCalleeDepth
void setMaxCalleeDepth(int d)
Definition: callgraphview.h:275
StorableGraphOptions::_maxCalleeDepth
int _maxCalleeDepth
Definition: callgraphview.h:286
GraphEdge::setCalleeNode
void setCalleeNode(GraphNode *n)
Definition: callgraphview.h:206
StorableGraphOptions::_detailLevel
int _detailLevel
Definition: callgraphview.h:288
GraphOptions::TopDown
Definition: callgraphview.h:240
StorableGraphOptions::callLimit
virtual double callLimit()
Definition: callgraphview.h:264
GraphNode::priorVisibleCallee
TraceCall * priorVisibleCallee(GraphEdge *=0)
Definition: callgraphview.cpp:381
CallGraphView::CallGraphView
CallGraphView(TraceItemView *parentView, QWidget *parent=0, const char *name=0)
Definition: callgraphview.cpp:1500
GraphNode::nextVisibleCallee
TraceCall * nextVisibleCallee(GraphEdge *=0)
Definition: callgraphview.cpp:352
GraphNode::setFunction
void setFunction(TraceFunction *f)
Definition: callgraphview.h:69
StorableGraphOptions::setMaxCallerDepth
void setMaxCallerDepth(int d)
Definition: callgraphview.h:274
StorableGraphOptions::StorableGraphOptions
StorableGraphOptions()
Definition: callgraphview.cpp:510
StorableGraphOptions::setShowSkipped
void setShowSkipped(bool b)
Definition: callgraphview.h:278
StorableGraphOptions
Definition: callgraphview.h:257
CanvasNode::node
GraphNode * node()
Definition: callgraphview.h:427
CallGraphView::showRenderError
void showRenderError(QString)
Definition: callgraphview.cpp:1971
GraphEdge::cost
double cost
Definition: callgraphview.h:217
GraphEdge::count
double count
Definition: callgraphview.h:217
PanningView::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *)
Definition: callgraphview.cpp:1137
GraphNode::addUniqueCallee
void addUniqueCallee(GraphEdge *)
Definition: callgraphview.cpp:171
GraphNode::removeEdge
void removeEdge(GraphEdge *)
Definition: callgraphview.cpp:183
GraphNodeMap
QMap< TraceFunction *, GraphNode > GraphNodeMap
Definition: callgraphview.h:232
GraphNode::setCanvasNode
void setCanvasNode(CanvasNode *cn)
Definition: callgraphview.h:79
CanvasEdge
Definition: callgraphview.h:495
StorableGraphOptions::_funcLimit
double _funcLimit
Definition: callgraphview.h:285
GraphNode::sortEdges
void sortEdges()
Definition: callgraphview.cpp:153
GraphExporter::filename
QString filename()
Definition: callgraphview.h:311
GraphOptions
Definition: callgraphview.h:237
CanvasNode
Definition: callgraphview.h:418
CallGraphView::mouseDoubleClickEvent
void mouseDoubleClickEvent(QMouseEvent *)
Definition: callgraphview.cpp:2660
GraphOptions::callLimit
virtual double callLimit()=0
CanvasEdge::setLabel
void setLabel(CanvasEdgeLabel *l)
Definition: callgraphview.cpp:1359
GraphNode::nextVisible
TraceFunction * nextVisible()
Definition: callgraphview.cpp:294
GraphOptions::Layout
Layout
Definition: callgraphview.h:240
CallGraphView::widget
QWidget * widget()
Definition: callgraphview.h:589
GraphExporter::writeDot
void writeDot(QIODevice *=0)
Definition: callgraphview.cpp:661
CallGraphView::ZoomPosition
ZoomPosition
Definition: callgraphview.h:580
CanvasEdge::edge
GraphEdge * edge()
Definition: callgraphview.h:525
CallGraphView::mouseMoveEvent
void mouseMoveEvent(QMouseEvent *)
Definition: callgraphview.cpp:2639
GraphNode::incl
double incl
Definition: callgraphview.h:118
CallGraphView::callLimitTriggered
void callLimitTriggered(QAction *)
Definition: callgraphview.cpp:2848
GraphEdge::setCall
void setCall(TraceCall *c)
Definition: callgraphview.h:153
ProfileContext::Type
Type
Definition: context.h:36
GraphExporter::nodeCount
int nodeCount()
Definition: callgraphview.h:321
GraphExporter::reset
void reset(TraceData *, CostItem *, EventType *, ProfileContext::Type, QString filename=QString())
Definition: callgraphview.cpp:559
CanvasEdgeLabel::type
int type() const
Definition: callgraphview.h:455
CallGraphView::TopRight
Definition: callgraphview.h:580
treemap.h
StorableGraphOptions::setFuncLimit
void setFuncLimit(double l)
Definition: callgraphview.h:276
CallGraphView::dotError
void dotError()
Definition: callgraphview.cpp:2107
PanningView::drawForeground
void drawForeground(QPainter *p, const QRectF &)
Definition: callgraphview.cpp:1105
CallGraphView::TopLeft
Definition: callgraphview.h:580
PanningView::mouseReleaseEvent
void mouseReleaseEvent(QMouseEvent *)
Definition: callgraphview.cpp:1147
GraphNode::setVisible
void setVisible(bool v)
Definition: callgraphview.h:89
QGraphicsView
PanningView::zoomRectMoveFinished
void zoomRectMoveFinished()
StorableGraphOptions::setClusterGroups
void setClusterGroups(bool b)
Definition: callgraphview.h:280
GraphOptions::Circular
Definition: callgraphview.h:240
CallGraphView
A QGraphicsView showing a part of the call graph and another zoomed out CanvasView in a border acting...
Definition: callgraphview.h:574
GraphExporter::toFunc
TraceFunction * toFunc(QString)
Definition: callgraphview.cpp:911
CallGraphView::focusOutEvent
void focusOutEvent(QFocusEvent *)
Definition: callgraphview.cpp:1708
CallGraphView::~CallGraphView
~CallGraphView()
Definition: callgraphview.cpp:1540
CallGraphView::BottomRight
Definition: callgraphview.h:580
CanvasNode::type
int type() const
Definition: callgraphview.h:432
GraphOptions::LeftRight
Definition: callgraphview.h:240
GraphEdge::isVisible
bool isVisible() const
Definition: callgraphview.h:158
CallGraphView::focusInEvent
void focusInEvent(QFocusEvent *)
Definition: callgraphview.cpp:1698
GraphEdge::to
TraceFunction * to() const
Definition: callgraphview.h:183
GraphNode::setCaller
void setCaller(GraphEdge *)
Definition: callgraphview.cpp:288
GraphNode::isVisible
bool isVisible() const
Definition: callgraphview.h:84
GraphOptions::expandCycles
virtual bool expandCycles()=0
StorableGraphOptions::setCallLimit
void setCallLimit(double l)
Definition: callgraphview.h:277
CallGraphView::layoutTriggered
void layoutTriggered(QAction *)
Definition: callgraphview.cpp:2917
TraceData
This class holds profiling data of multiple tracefiles generated with cachegrind on one command...
Definition: tracedata.h:1363
CanvasEdge::CanvasEdge
CanvasEdge(GraphEdge *)
Definition: callgraphview.cpp:1349
CanvasEdgeArrow::canvasEdge
CanvasEdge * canvasEdge()
Definition: callgraphview.h:480
GraphNode
Definition: callgraphview.h:59
TraceCall
A call from one to another function.
Definition: tracedata.h:835
PanningView::_zoomRect
QRectF _zoomRect
Definition: callgraphview.h:397
CallGraphView::zoomRectMoved
void zoomRectMoved(qreal, qreal)
Definition: callgraphview.cpp:2583
GraphEdgeMap
QMap< QPair< TraceFunction *, TraceFunction * >, GraphEdge > GraphEdgeMap
Definition: callgraphview.h:233
GraphEdge
Definition: callgraphview.h:133
CanvasEdge::arrow
CanvasEdgeArrow * arrow()
Definition: callgraphview.h:511
CANVAS_EDGELABEL
Definition: callgraphview.h:414
PanningView::zoomRectMoved
void zoomRectMoved(qreal dx, qreal dy)
CallGraphView::saveOptions
void saveOptions(const QString &prefix, const QString &postfix)
Definition: callgraphview.cpp:3163
StorableGraphOptions::_layout
Layout _layout
Definition: callgraphview.h:289
StorableGraphOptions::detailLevel
virtual int detailLevel()
Definition: callgraphview.h:270
PanningView::setZoomRect
void setZoomRect(const QRectF &r)
Definition: callgraphview.cpp:1099
GraphExporter::edgeCount
int edgeCount()
Definition: callgraphview.h:316
GraphNode::clearEdges
void clearEdges()
Definition: callgraphview.cpp:144
StorableGraphOptions::maxCallerDepth
virtual int maxCallerDepth()
Definition: callgraphview.h:265
CanvasNode::updateGroup
void updateGroup()
Definition: callgraphview.cpp:1205
CallGraphView::restoreOptions
void restoreOptions(const QString &prefix, const QString &postfix)
Definition: callgraphview.cpp:3143
CallGraphView::zoomRectMoveFinished
void zoomRectMoveFinished()
Definition: callgraphview.cpp:2594
CanvasFrame::paint
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
Definition: callgraphview.cpp:1472
CanvasNode::setSelected
void setSelected(bool)
Definition: callgraphview.cpp:1199
CanvasEdgeLabel
Definition: callgraphview.h:443
GraphEdge::fromNode
GraphNode * fromNode() const
Definition: callgraphview.h:168
StorableGraphOptions::_callLimit
double _callLimit
Definition: callgraphview.h:285
QList
QGraphicsPathItem
GraphOptions::showSkipped
virtual bool showSkipped()=0
CanvasNode::paint
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
Definition: callgraphview.cpp:1216
CanvasEdgeArrow::paint
void paint(QPainter *, const QStyleOptionGraphicsItem *, QWidget *)
Definition: callgraphview.cpp:1336
CanvasFrame::CanvasFrame
CanvasFrame(CanvasNode *)
Definition: callgraphview.cpp:1433
GraphEdge::nextVisible
TraceCall * nextVisible()
Definition: callgraphview.cpp:449
GraphEdge::prettyName
QString prettyName()
Definition: callgraphview.cpp:413
GraphEdge::visibleCaller
TraceFunction * visibleCaller()
Definition: callgraphview.cpp:427
CallGraphView::scrollContentsBy
void scrollContentsBy(int dx, int dy)
Definition: callgraphview.cpp:2567
GraphNode::canvasNode
CanvasNode * canvasNode() const
Definition: callgraphview.h:74
GraphEdge::setVisible
void setVisible(bool v)
Definition: callgraphview.h:163
This file is part of the KDE documentation.
Documentation copyright © 1996-2014 The KDE developers.
Generated on Tue Oct 14 2014 23:03:26 by doxygen 1.8.7 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.

kcachegrind

Skip menu "kcachegrind"
  • Main Page
  • Alphabetical List
  • Class List
  • Class Hierarchy
  • Class Members
  • File List
  • File Members

kdesdk API Reference

Skip menu "kdesdk API Reference"
  • kapptemplate
  • kcachegrind
  • kompare
  • lokalize
  • okteta
  • umbrello
  •   umbrello

Search



Report problems with this website to our bug tracking system.
Contact the specific authors with questions and comments about the page contents.

KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V. | Legal