Krita Source Code Documentation
Loading...
Searching...
No Matches
KisAnimCurvesView.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2016 Jouni Pentikäinen <joupent@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7#ifndef _KIS_ANIMATION_CURVES_VIEW_H
8#define _KIS_ANIMATION_CURVES_VIEW_H
9
10#include <QScopedPointer>
11#include <QTableView>
12#include <KisKineticScroller.h>
13
14class KisAction;
15class KisZoomButton;
16
17class KisAnimCurvesView : public QAbstractItemView
18{
19 Q_OBJECT
20public:
21 KisAnimCurvesView(QWidget *parent);
22 ~KisAnimCurvesView() override;
23
24 void setModel(QAbstractItemModel *model) override;
25
26 QRect visualRect(const QModelIndex &index) const override;
27 void scrollTo(const QModelIndex &index, ScrollHint hint) override;
28 QModelIndex indexAt(const QPoint &point) const override;
29 bool indexHasKey(const QModelIndex& index);
30
31Q_SIGNALS:
32 void activeDataChanged(const QModelIndex& index);
33
34protected:
35 void paintEvent(QPaintEvent *event) override;
36 QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override;
37 int horizontalOffset() const override;
38 int verticalOffset() const override;
39 bool isIndexHidden(const QModelIndex &index) const override;
40 void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) override;
41 QRegion visualRegionForSelection(const QItemSelection &selection) const override;
42 void scrollContentsBy(int dx, int dy) override;
43
44 void mousePressEvent(QMouseEvent *) override;
45 void mouseDoubleClickEvent(QMouseEvent *) override;
46 void mouseMoveEvent(QMouseEvent *) override;
47 void mouseReleaseEvent(QMouseEvent *) override;
48
49public Q_SLOTS:
50 void applyConstantMode();
51 void applyLinearMode();
52 void applyBezierMode();
53 void applySmoothMode();
54 void applySharpMode();
55
56 void createKeyframe();
57 void removeKeyframes();
58
59 void zoomToFitCurve();
60 void zoomToFitChannel();
61 void changeZoom(Qt::Orientation orientation, qreal zoomDelta);
62
63 void slotScrollerStateChanged(QScroller::State state){KisKineticScroller::updateCursor(this, state);}
64
65protected Q_SLOTS:
66 void updateGeometries() override;
67
68private Q_SLOTS:
69 void slotRowsChanged(const QModelIndex &parentIndex, int first, int last);
70 void slotDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
71 void slotDataAdded(const QModelIndex &index);
72 void slotHeaderDataChanged(Qt::Orientation orientation, int first, int last);
75
76private:
77 struct Private;
78 const QScopedPointer<Private> m_d;
79
80 void paintGrid(QPainter &painter);
81 void paintCurves(QPainter &painter, int firstFrame, int lastFrame);
82 void paintCurve(int channel, int firstFrame, int lastFrame, QPainter &painter);
83 void paintCurveSegment(QPainter &painter, QPointF pos1, QPointF rightTangent, QPointF leftTangent, QPointF pos2, QVariant limitData);
84 void paintKeyframes(QPainter &painter, int firstFrame, int lastFrame);
85
86 QModelIndex findNextKeyframeIndex(int channel, int time, int selectionOffset, bool backward);
87 void findExtremes(qreal *minimum, qreal *maximum);
88};
89
90#endif
QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override
void paintCurves(QPainter &painter, int firstFrame, int lastFrame)
void paintEvent(QPaintEvent *event) override
void mouseMoveEvent(QMouseEvent *) override
void scrollTo(const QModelIndex &index, ScrollHint hint) override
QModelIndex findNextKeyframeIndex(int channel, int time, int selectionOffset, bool backward)
void mouseReleaseEvent(QMouseEvent *) override
void updateGeometries() override
bool indexHasKey(const QModelIndex &index)
void setModel(QAbstractItemModel *model) override
void slotRowsChanged(const QModelIndex &parentIndex, int first, int last)
void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags flags) override
void paintCurve(int channel, int firstFrame, int lastFrame, QPainter &painter)
int verticalOffset() const override
void activeDataChanged(const QModelIndex &index)
bool isIndexHidden(const QModelIndex &index) const override
QModelIndex indexAt(const QPoint &point) const override
void changeZoom(Qt::Orientation orientation, qreal zoomDelta)
const QScopedPointer< Private > m_d
KisAnimCurvesView(QWidget *parent)
void slotDataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
void paintCurveSegment(QPainter &painter, QPointF pos1, QPointF rightTangent, QPointF leftTangent, QPointF pos2, QVariant limitData)
void paintKeyframes(QPainter &painter, int firstFrame, int lastFrame)
void slotScrollerStateChanged(QScroller::State state)
void paintGrid(QPainter &painter)
QRect visualRect(const QModelIndex &index) const override
void scrollContentsBy(int dx, int dy) override
void mousePressEvent(QMouseEvent *) override
void slotDataAdded(const QModelIndex &index)
void slotHeaderDataChanged(Qt::Orientation orientation, int first, int last)
QRegion visualRegionForSelection(const QItemSelection &selection) const override
void findExtremes(qreal *minimum, qreal *maximum)
int horizontalOffset() const override
void mouseDoubleClickEvent(QMouseEvent *) override
KRITAWIDGETUTILS_EXPORT void updateCursor(QWidget *source, QScroller::State state)