]> git.cworth.org Git - apitrace/blobdiff - gui/timelinewidget.h
Improve profiling.
[apitrace] / gui / timelinewidget.h
index be8f92aa0733e16584004c37de3f835bc17df41c..472ffa113f6ff6571f2ab1111ce869367cc02ece 100644 (file)
@@ -6,12 +6,6 @@
 #include <QPen>
 #include "trace_profiler.hpp"
 
-struct VisibleItem {
-    QRect rect;
-    const trace::Profile::Frame* frame;
-    const trace::Profile::Call* call;
-};
-
 class TimelineWidget : public QWidget
 {
     Q_OBJECT
@@ -58,20 +52,21 @@ private:
     void setRowScroll(int position, bool notify = true);
     void setTimeScroll(int64_t time, bool notify = true);
 
-    void paintHeatmapColumn(int x, QPainter& painter, QVector<uint64_t>& rows);
+    void drawHeat(QPainter& painter, int x, int64_t heat, bool isCpu);
 
     double timeToPosition(int64_t time);
     int64_t positionToTime(int pos);
 
-    const VisibleItem* itemAtPosition(const QPoint& pos);
-
     void calculateRows();
 
+    const trace::Profile::Frame* frameAtTime(int64_t time);
+    const trace::Profile::CpuCall* cpuCallAtTime(int64_t time);
+    const trace::Profile::DrawCall* drawCallAtTime(int program, int64_t time);
+
 private:
     /* Data */
     trace::Profile* m_profile;
-    QList<int> m_programRowMap;
-    QList<VisibleItem> m_visibleItems;
+    std::vector<int> m_rowPrograms;
 
     /* Scrollbars */
     int m_scrollX;
@@ -108,7 +103,9 @@ private:
     int m_rowHeight;
     int m_axisWidth;
     int m_axisHeight;
+    QPen m_axisLine;
     QPen m_axisBorder;
+    QPen m_axisForeground;
     QBrush m_axisBackground;
     QPen m_itemBorder;
     QPen m_itemForeground;