Pencil2D Animation
Download Community News Docs Contribute
  • Overview
  • Articles
  • Code
  •  
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • File List
Loading...
Searching...
No Matches
  • app
  • src
timelinecells.h
1/*
2
3Pencil2D - Traditional Animation Software
4Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5Copyright (C) 2012-2020 Matthew Chiawen Chang
6
7This program is free software; you can redistribute it and/or
8modify it under the terms of the GNU General Public License
9as published by the Free Software Foundation; version 2 of the License.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16*/
17
18#ifndef TIMELINECELLS_H
19#define TIMELINECELLS_H
20
21#include <QString>
22#include <QWidget>
23#include "layercamera.h"
24
25class Layer;
26enum class LayerVisibility;
27class TimeLine;
28class QPaintEvent;
29class QMouseEvent;
30class QResizeEvent;
31class Editor;
32class PreferenceManager;
33class QMenu;
34class QAction;
35enum class SETTING;
36
37enum class TIMELINE_CELL_TYPE
38{
39 Layers,
40 Tracks
41};
42
43class TimeLineCells : public QWidget
44{
45 Q_OBJECT
46
47public:
48 TimeLineCells( TimeLine* parent, Editor* editor, TIMELINE_CELL_TYPE );
49 ~TimeLineCells() override;
50
51 static int getOffsetX() { return mOffsetX; }
52 static int getOffsetY() { return mOffsetY; }
53 int getLayerHeight() const { return mLayerHeight; }
54
55 int getFrameLength() const { return mFrameLength; }
56 int getFrameSize() const { return mFrameSize; }
57
58 void setFrameLength(int n) { mFrameLength = n; }
59 void setFrameSize(int size);
60 void clearCache() { delete mCache; mCache = nullptr; }
61
62 bool didDetachLayer() const;
63
64 void showCameraMenu(QPoint pos);
65
66signals:
67 void mouseMovedY(int);
68 void lengthChanged(int);
69 void offsetChanged(int);
70 void selectionChanged();
71 void insertNewKeyFrame();
72
73public slots:
74 void updateContent();
75 void updateFrame(int frameNumber);
76 void hScrollChange(int);
77 void vScrollChange(int);
78 void onScrollingVerticallyStopped();
79 void setMouseMoveY(int x);
80
81protected:
82 bool event(QEvent *event) override;
83 void paintEvent(QPaintEvent* event) override;
84 void resizeEvent(QResizeEvent* event) override;
85 void mousePressEvent(QMouseEvent* event) override;
86 void mouseMoveEvent(QMouseEvent* event) override;
87 void mouseReleaseEvent(QMouseEvent* event) override;
88 void mouseDoubleClickEvent(QMouseEvent* event) override;
89
90private slots:
91 void loadSetting(SETTING setting);
92
93private:
94 int getLayerNumber(int y) const;
95 int getInbetweenLayerNumber(int y) const;
96 int getLayerY(int layerNumber) const;
97 int getFrameX(int frameNumber) const;
98 int getFrameNumber(int x) const;
99
100 void onDidLeaveWidget();
101
102 bool trackScrubber();
103 void drawContent();
104 void paintTicks(QPainter& painter, const QPalette& palette) const;
105 void paintOnionSkin(QPainter& painter) const;
106 void paintLayerGutter(QPainter& painter) const;
107 void paintTrack(QPainter& painter, const Layer* layer, int x, int y, int width, int height, bool selected, int frameSize) const;
108 void paintFrames(QPainter& painter, QColor trackCol, const Layer* layer, int y, int height, bool selected, int frameSize) const;
109 void paintCurrentFrameBorder(QPainter& painter, int recLeft, int recTop, int recWidth, int recHeight) const;
110 void paintFrameCursorOnCurrentLayer(QPainter& painter, int recTop, int recWidth, int recHeight) const;
111 void paintSelectedFrames(QPainter& painter, const Layer* layer, const int layerIndex) const;
112 void paintLabel(QPainter& painter, const Layer* layer, int x, int y, int height, int width, bool selected, LayerVisibility layerVisibility) const;
113 void paintSelection(QPainter& painter, int x, int y, int width, int height) const;
114 void paintHighlightedFrame(QPainter& painter, int framePos, int recTop, int recWidth, int recHeight) const;
115
116 void editLayerProperties(Layer* layer) const;
117 void editLayerProperties(LayerCamera *layer) const;
118 void editLayerName(Layer* layer) const;
119
120 TimeLine* mTimeLine;
121 Editor* mEditor; // the editor for which this timeLine operates
122 PreferenceManager* mPrefs;
123
124 TIMELINE_CELL_TYPE mType;
125
126 QPixmap* mCache = nullptr;
127 bool mRedrawContent = false;
128 bool mDrawFrameNumber = true;
129 bool mbShortScrub = false;
130 int mFrameLength = 1;
131 int mFrameSize = 0;
132 int mFontSize = 10;
133 bool mScrubbing = false;
134 bool mHighlightFrameEnabled = false;
135 int mHighlightedFrame = -1;
136 int mLayerHeight = 20;
137 int mStartY = 0;
138 int mEndY = 0;
139
140 int mCurrentLayerNumber = 0;
141 int mLastScrubFrame = 0;
142
143 int mFromLayer = 0;
144 int mToLayer = 1;
145 int mStartLayerNumber = -1;
146 int mStartFrameNumber = 0;
147 int mLastFrameNumber = -1;
148
149 // is used to move layers, don't use this to get mousePos;
150 int mMouseMoveY = 0;
151 int mPrevFrame = 0;
152 int mFrameOffset = 0;
153 int mLayerOffset = 0;
154 Qt::MouseButton primaryButton = Qt::NoButton;
155
156 bool mScrollingVertically = false;
157
158 bool mCanMoveFrame = false;
159 bool mMovingFrames = false;
160
161 bool mCanBoxSelect = false;
162 bool mBoxSelecting = false;
163
164 bool mClickSelecting = false;
165
166 int mFramePosMoveX = 0;
167 int mLayerPosMoveY = 0;
168
169 int mMouseMoveX = 0;
170 int mMousePressX = 0;
171
172 const static int mOffsetX = 0;
173 const static int mOffsetY = 20;
174 const static int mLayerDetachThreshold = 5;
175
176};
177
178#endif // TIMELINECELLS_H
Editor
Definition: editor.h:71
LayerCamera
Definition: layercamera.h:30
Layer
Definition: layer.h:33
PreferenceManager
Definition: preferencemanager.h:28
TimeLineCells
Definition: timelinecells.h:44
TimeLine
Definition: timeline.h:32
QAction
QColor
QEvent
QMenu
QMouseEvent
QObject::Q_OBJECT
Q_OBJECTQ_OBJECT
QObject::parent
QObject * parent() const const
QPainter
QPaintEvent
QPalette
QPixmap
QPoint
QResizeEvent
Qt::MouseButton
MouseButton
QWidget
QWidget::frameSize
frameSize
QWidget::height
height
QWidget::palette
palette
QWidget::pos
pos
QWidget::size
size
QWidget::width
width
QWidget::x
x
QWidget::y
y
Generated on Thu May 8 2025 04:47:53 for Pencil2D by doxygen 1.9.6 based on revision 4513250b1d5b1a3676ec0e67b06b7a885ceaae39