Olive
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros
media.h
Go to the documentation of this file.
1 /***
2 
3  Olive - Non-Linear Video Editor
4  Copyright (C) 2019 Olive Team
5 
6  This program is free software: you can redistribute it and/or modify
7  it under the terms of the GNU General Public License as published by
8  the Free Software Foundation, either version 3 of the License, or
9  (at your option) any later version.
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  You should have received a copy of the GNU General Public License
17  along with this program. If not, see <http://www.gnu.org/licenses/>.
18 
19 ***/
20 
21 #ifndef MEDIA_H
22 #define MEDIA_H
23 
24 #include <QList>
25 #include <QVariant>
26 #include <QIcon>
27 
28 #include "timeline/marker.h"
29 #include "project/footage.h"
30 
31 enum MediaType {
35 };
36 
37 class Sequence;
38 using SequencePtr = std::shared_ptr<Sequence>;
39 
40 using VoidPtr = std::shared_ptr<void>;
41 
42 class Media;
43 using MediaPtr = std::shared_ptr<Media>;
44 
45 class Media
46 {
47 public:
48  Media();
49 
52  void set_icon(const QString& str);
53  void set_icon(const QIcon &ico);
54  void set_footage(FootagePtr f);
55  void set_sequence(SequencePtr s);
56  void set_folder();
57  void set_parent(Media* p);
58  void update_tooltip(const QString& error = nullptr);
60  int get_type();
61  const QString& get_name();
62  void set_name(const QString& n);
63 
64  double get_frame_rate(int stream = -1);
65  int get_sampling_rate(int stream = -1);
66 
67  // item functions
69  bool setData(int col, const QVariant &value);
70  Media *child(int row);
71  int childCount() const;
72  int columnCount() const;
73  QVariant data(int column, int role);
74  int row() const;
75  Media *parentItem();
76  void removeChild(int i);
78 
79  // get markers from internal object
80  QVector<Marker>& get_markers();
81 
82  bool root;
83  int temp_id;
84  int temp_id2;
85 
86 private:
87  int type;
89 
90  QString GetStringDuration();
91 
92  // item functions
93  QList<MediaPtr> children;
95  QString folder_name;
96  QString tooltip;
97  QIcon icon;
98 };
99 
100 #endif // MEDIA_H
double get_frame_rate(int stream=-1)
Definition: media.cpp:233
void set_sequence(SequencePtr s)
Definition: media.cpp:83
std::shared_ptr< void > VoidPtr
Definition: clipboard.h:31
int row() const
Definition: media.cpp:352
MediaPtr get_shared_ptr(Media *m)
Definition: media.cpp:371
std::shared_ptr< Media > MediaPtr
Definition: media.h:43
void update_tooltip(const QString &error=nullptr)
Definition: media.cpp:114
void set_name(const QString &n)
Definition: media.cpp:225
Media()
Definition: media.cpp:64
VoidPtr object
Definition: media.h:88
int temp_id2
Definition: media.h:84
Media * parent
Definition: media.h:94
QIcon icon
Definition: media.h:97
std::shared_ptr< Footage > FootagePtr
Definition: footage.h:107
QString folder_name
Definition: media.h:95
void set_icon(const QString &str)
Definition: media.cpp:101
const QString & get_name()
Definition: media.cpp:217
VoidPtr to_object()
Definition: media.cpp:209
QVector< Marker > & get_markers()
Definition: media.cpp:381
void appendChild(MediaPtr child)
Definition: media.cpp:259
int type
Definition: media.h:87
int temp_id
Definition: media.h:83
Definition: media.h:45
MediaType
Definition: media.h:31
QString tooltip
Definition: media.h:96
void set_parent(Media *p)
Definition: media.cpp:110
bool setData(int col, const QVariant &value)
Definition: media.cpp:264
Media * parentItem()
Definition: media.cpp:363
void removeChild(int i)
Definition: media.cpp:367
int get_type()
Definition: media.cpp:213
Definition: media.h:33
QList< MediaPtr > children
Definition: media.h:93
Definition: media.h:34
int childCount() const
Definition: media.cpp:279
bool root
Definition: media.h:82
Media * child(int row)
Definition: media.cpp:275
Definition: media.h:32
Definition: sequence.h:31
int columnCount() const
Definition: media.cpp:283
int get_sampling_rate(int stream=-1)
Definition: media.cpp:246
SequencePtr to_sequence()
Definition: media.cpp:74
Definition: footage.h:68
Footage * to_footage()
Definition: media.cpp:70
QVariant data(int column, int role)
Definition: media.cpp:305
QString GetStringDuration()
Definition: media.cpp:287
void set_footage(FootagePtr f)
Definition: media.cpp:78
std::shared_ptr< Sequence > SequencePtr
Definition: media.h:38
void set_folder()
Definition: media.cpp:92