File indexing completed on 2024-05-26 04:32:27
0001 /* 0002 * SPDX-FileCopyrightText: 2015 Dmitry Kazakov <dimula73@gmail.com> 0003 * SPDX-FileCopyrightText: 2021 Eoin O'Neil <eoinoneill1991@gmail.com> 0004 * SPDX-FileCopyrightText: 2021 Emmet O'Neill <emmetoneill.pdx@gmail.com> 0005 * 0006 * SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #ifndef TIMELINE_RULER_HEADER_H 0010 #define TIMELINE_RULER_HEADER_H 0011 0012 #include <QHeaderView> 0013 #include <QScopedPointer> 0014 #include "kis_action_manager.h" 0015 0016 class QPaintEvent; 0017 0018 class KisAnimTimelineTimeHeader : public QHeaderView 0019 { 0020 Q_OBJECT 0021 public: 0022 KisAnimTimelineTimeHeader(QWidget *parent = 0); 0023 ~KisAnimTimelineTimeHeader() override; 0024 0025 void setPixelOffset(qreal offset); 0026 0027 void setFramePerSecond(int fps); 0028 bool setZoom(qreal zoomLevel); 0029 qreal zoom(); 0030 0031 void setModel(QAbstractItemModel *model) override; 0032 0033 void setActionManager(KisActionManager *actionManager); 0034 0035 void mouseMoveEvent(QMouseEvent *e) override; 0036 0037 int estimateFirstVisibleColumn(); 0038 int estimateLastVisibleColumn(); 0039 0040 protected: 0041 void mousePressEvent(QMouseEvent *e) override; 0042 0043 void mouseReleaseEvent(QMouseEvent *e) override; 0044 0045 void paintEvent(QPaintEvent *e) override; 0046 void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const override; 0047 void paintSection1(QPainter *painter, const QRect &rect, int logicalIndex) const; 0048 void changeEvent(QEvent *event) override; 0049 0050 private: 0051 void updateMinimumSize(); 0052 0053 void paintSpan(QPainter *painter, int userFrameId, 0054 const QRect &spanRect, 0055 bool isIntegralLine, 0056 bool isPrevIntegralLine, 0057 QStyle *style, 0058 const QPalette &palette, 0059 const QPen &gridPen) const; 0060 0061 public Q_SLOTS: 0062 void slotSaveThrottle(qreal value); 0063 0064 Q_SIGNALS: 0065 void sigInsertColumnLeft(); 0066 void sigInsertColumnRight(); 0067 void sigInsertMultipleColumns(); 0068 0069 void sigRemoveColumns(); 0070 void sigRemoveColumnsAndShift(); 0071 0072 void sigInsertHoldColumns(); 0073 void sigRemoveHoldColumns(); 0074 void sigInsertHoldColumnsCustom(); 0075 void sigRemoveHoldColumnsCustom(); 0076 0077 void sigMirrorColumns(); 0078 void sigClearCache(); 0079 0080 void sigCutColumns(); 0081 void sigCopyColumns(); 0082 void sigPasteColumns(); 0083 0084 void sigZoomChanged(qreal zoom); 0085 0086 private: 0087 struct Private; 0088 const QScopedPointer<Private> m_d; 0089 }; 0090 0091 #endif // TIMELINE_RULER_HEADER_H