All Classes Namespaces Functions Variables Enumerations Properties Pages
layercamera.h
1 /*
2 
3 Pencil2D - Traditional Animation Software
4 Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5 Copyright (C) 2012-2020 Matthew Chiawen Chang
6 
7 This program is free software; you can redistribute it and/or
8 modify it under the terms of the GNU General Public License
9 as published by the Free Software Foundation; version 2 of the License.
10 
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15 
16 */
17 #ifndef LAYERCAMERA_H
18 #define LAYERCAMERA_H
19 
20 #include <QRect>
21 #include "layer.h"
22 #include "cameraeasingtype.h"
23 
24 class Camera;
25 
26 class LayerCamera : public Layer
27 {
28 public:
29  explicit LayerCamera(Object* object);
30  ~LayerCamera() override;
31 
32  void loadImageAtFrame(int frame, qreal dx, qreal dy, qreal rotate, qreal scale, CameraEasingType type);
33 
34  QDomElement createDomElement(QDomDocument& doc) const override;
35  void loadDomElement(const QDomElement& element, QString dataDirPath, ProgressCallback progressStep) override;
36 
37  Camera* getCameraAtFrame(int frameNumber);
38  Camera* getLastCameraAtFrame(int frameNumber, int increment);
39  QTransform getViewAtFrame(int frameNumber) const;
40 
41  QRect getViewRect();
42  QSize getViewSize() const;
43  void setViewRect(QRect newViewRect);
44 
45 protected:
46  Status saveKeyFrameFile(KeyFrame*, QString path) override;
47  KeyFrame* createKeyFrame(int position, Object*) override;
48 
49 private:
50  void linearInterpolateTransform(Camera*);
51  qreal getInterpolationPercent(CameraEasingType type, qreal percent) const;
52 
53  int mFieldW = 800;
54  int mFieldH = 600;
55  QRect viewRect;
56 };
57 
58 #endif
Definition: camera.h:24
Definition: layer.h:38
Definition: object.h:41