28 #ifndef OPENSHOT_TIMELINE_H
29 #define OPENSHOT_TIMELINE_H
33 #include <QtGui/QImage>
34 #include <QtGui/QPainter>
54 using namespace openshot;
151 list<Clip*> closing_clips;
152 map<Clip*, Clip*> open_clips;
153 list<EffectBase*> effects;
157 void add_layer(std::shared_ptr<Frame> new_frame,
Clip* source_clip, int64_t clip_frame_number, int64_t timeline_frame_number,
bool is_top_clip,
float max_volume);
160 void apply_mapper_to_clip(
Clip* clip);
163 void apply_json_to_clips(Json::Value change);
164 void apply_json_to_effects(Json::Value change);
165 void apply_json_to_effects(Json::Value change,
EffectBase* existing_effect);
166 void apply_json_to_timeline(Json::Value change);
169 double calculate_time(int64_t number,
Fraction rate);
177 vector<Clip*> find_intersecting_clips(int64_t requested_frame,
int number_of_frames,
bool include);
180 std::shared_ptr<Frame> GetOrCreateFrame(
Clip* clip, int64_t number);
183 std::shared_ptr<Frame> apply_effects(std::shared_ptr<Frame> frame, int64_t timeline_frame_number,
int layer);
186 bool isEqual(
double a,
double b);
195 void update_open_clips(
Clip *clip,
bool does_clip_intersect);
210 void AddClip(
Clip* clip);
217 void ApplyMapperToClips();
226 void ClearAllCache();
229 list<Clip*>
Clips() {
return clips; };
235 list<EffectBase*>
Effects() {
return effects; };
247 std::shared_ptr<Frame> GetFrame(int64_t requested_frame);
261 string Name() {
return "Timeline"; };
265 void SetJson(
string value);
266 Json::Value JsonValue();
267 void SetJsonValue(Json::Value root);
271 void SetMaxSize(
int width,
int height);
277 void ApplyJsonDiff(
string value);
284 void RemoveClip(
Clip* clip);
CacheBase * GetCache()
Get the cache object used by this reader.
Header file for Fraction class.
This abstract class is the base class, used by all effects in libopenshot.
Keyframe viewport_scale
Curve representing the scale of the viewport (0 to 100)
Header file for ReaderBase class.
bool AutoMapClips()
Determine if clips are automatically mapped to the timeline's framerate and samplerate.
Header file for OpenMPUtilities (set some common macros)
Header file for Point class.
This header includes all commonly used effects for libopenshot, for ease-of-use.
Keyframe viewport_y
Curve representing the y coordinate for the viewport.
This abstract class is the base class, used by all readers in libopenshot.
int Layer()
Get layer of clip on timeline (lower number is covered by higher numbers)
Header file for the Keyframe class.
Header file for CacheMemory class.
Header file for CacheBase class.
This class represents a clip (used to arrange readers on the timeline)
Header file for Frame class.
Header file for Clip class.
float Position()
Get position on timeline (in seconds)
bool operator()(Clip *lhs, Clip *rhs)
This class represents a fraction.
Header file for the FrameMapper class.
All cache managers in libopenshot are based on this CacheBase class.
ChannelLayout
This enumeration determines the audio channel layout (such as stereo, mono, 5 point surround...
Header file for global Settings class.
Header file for Color class.
void AutoMapClips(bool auto_map)
Automatically map all clips to the timeline's framerate and samplerate.
bool IsOpen()
Determine if reader is open or closed.
This class represents a color (used on the timeline and clips)
Header file for EffectBase class.
Keyframe viewport_x
Curve representing the x coordinate for the viewport.
Header file for CacheDisk class.
Header file for CrashHandler class.
Color color
Background color of timeline canvas.
string Name()
Return the type name of the class.
list< EffectBase * > Effects()
Return the list of effects on the timeline.
list< Clip * > Clips()
Return a list of clips on the timeline.
Header file for the EffectInfo class.
A Keyframe is a collection of Point instances, which is used to vary a number or property over time...
int Order()
Get the order that this effect should be executed.
bool operator()(EffectBase *lhs, EffectBase *rhs)
This class represents a timeline.