X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdefinitions.h;h=b663fc6b0c4261bfe3a82f8b7fc6fadcc0d1404a;hb=8b4c224d4929ace1515266709c0f24978b19d3b4;hp=e2635fa9c50686bc0c167f9cc787640f1b7124c0;hpb=94ef97850a20b048dc536b1a3b40057504452b47;p=kdenlive diff --git a/src/definitions.h b/src/definitions.h index e2635fa9..b663fc6b 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -24,11 +24,22 @@ #include "gentime.h" #include "effectslist.h" -#include #include +#include + +#include + #include const int MAXCLIPDURATION = 15000; +namespace Kdenlive { + enum MONITORID { noMonitor, clipMonitor, projectMonitor, recordMonitor, stopmotionMonitor, dvdMonitor }; + /*const QString clipMonitor("clipMonitor"); + const QString recordMonitor("recordMonitor"); + const QString projectMonitor("projectMonitor"); + const QString stopmotionMonitor("stopmotionMonitor");*/ +} + enum OPERATIONTYPE { NONE = 0, MOVE = 1, RESIZESTART = 2, RESIZEEND = 3, FADEIN = 4, FADEOUT = 5, TRANSITIONSTART = 6, TRANSITIONEND = 7, MOVEGUIDE = 8, KEYFRAME = 9, SEEK = 10, SPACER = 11, RUBBERSELECTION = 12}; enum CLIPTYPE { UNKNOWN = 0, AUDIO = 1, VIDEO = 2, AV = 3, COLOR = 4, IMAGE = 5, TEXT = 6, SLIDESHOW = 7, VIRTUAL = 8, PLAYLIST = 9 }; @@ -57,9 +68,10 @@ enum MessageType { enum TRACKTYPE { AUDIOTRACK = 0, VIDEOTRACK = 1 }; -enum CLIPJOBSTATUS { NOJOB = 0, JOBWAITING = -1, CREATINGJOB = -2, JOBDONE = -3, JOBCRASHED = -4}; +enum CLIPJOBSTATUS { NOJOB = 0, JOBWAITING = -1, JOBWORKING = -2, JOBDONE = -3, JOBCRASHED = -4, JOBABORTED = -5}; -struct TrackInfo { +class TrackInfo { +public: TRACKTYPE type; QString trackName; bool isMute; @@ -67,12 +79,19 @@ struct TrackInfo { bool isLocked; EffectsList effectsList; int duration; + TrackInfo() : + type(VIDEOTRACK), + isMute(0), + isBlind(0), + isLocked(0), + duration(0) {}; }; typedef QMap stringMap; typedef QMap > audioByteArray; -struct ItemInfo { +class ItemInfo { +public: /** startPos is the position where the clip starts on the track */ GenTime startPos; /** endPos is the duration where the clip ends on the track */ @@ -82,9 +101,29 @@ struct ItemInfo { /** cropDuration is the duration of the clip */ GenTime cropDuration; int track; + ItemInfo() : track(0) {}; +}; + +class TransitionInfo { +public: +/** startPos is the position where the clip starts on the track */ + GenTime startPos; + /** endPos is the duration where the clip ends on the track */ + GenTime endPos; + /** the track on which the transition is (b_track)*/ + int b_track; + /** the track on which the transition is applied (a_track)*/ + int a_track; + /** Does the user request for a special a_track */ + bool forceTrack; + TransitionInfo() : + b_track(0), + a_track(0), + forceTrack(0) {}; }; -struct MltVideoProfile { +class MltVideoProfile { +public: QString path; QString description; int frame_rate_num; @@ -97,6 +136,17 @@ struct MltVideoProfile { int display_aspect_num; int display_aspect_den; int colorspace; + MltVideoProfile() : + frame_rate_num(0), + frame_rate_den(0), + width(0), + height(0), + progressive(0), + sample_aspect_num(0), + sample_aspect_den(0), + display_aspect_num(0), + display_aspect_den(0), + colorspace(0) {}; bool operator==(const MltVideoProfile& point) const { if (!description.isEmpty() && point.description == description) return true; @@ -115,6 +165,38 @@ struct MltVideoProfile { } }; +/**) + * @class EffectInfo + * @brief A class holding some meta info for effects widgets, like state (collapsed or not, ...) + * @author Jean-Baptiste Mardelle + */ + +class EffectInfo +{ +public: + EffectInfo() {isCollapsed = false; groupIndex = -1; groupIsCollapsed = false;} + bool isCollapsed; + bool groupIsCollapsed; + int groupIndex; + QString groupName; + QString toString() const { + QStringList data; + // effect collapsed state: 0 = effect not collapsed, 1 = effect collapsed, + // 2 = group collapsed - effect not, 3 = group and effect collapsed + int collapsedState = (int) isCollapsed; + if (groupIsCollapsed) collapsedState += 2; + data << QString::number(collapsedState) << QString::number(groupIndex) << groupName; + return data.join("/"); + } + void fromString(QString value) { + if (value.isEmpty()) return; + QStringList data = value.split("/"); + isCollapsed = data.at(0).toInt() == 1 || data.at(0).toInt() == 3; + groupIsCollapsed = data.at(0).toInt() >= 2; + if (data.count() > 1) groupIndex = data.at(1).toInt(); + if (data.count() > 2) groupName = data.at(2); + } +}; class EffectParameter { @@ -147,6 +229,17 @@ public: if (at(i).name() == name) return true; return false; } + void setParamValue(const QString &name, const QString &value) { + bool found = false; + for (int i = 0; i < size(); i++) + if (at(i).name() == name) { + // update value + replace(i, EffectParameter(name, value)); + found = true; + } + if (!found) addParam(name, value); + } + QString paramValue(const QString &name, QString defaultValue = QString()) const { for (int i = 0; i < size(); i++) { if (at(i).name() == name) return at(i).value(); @@ -215,5 +308,7 @@ private: }; +QDebug operator << (QDebug qd, const ItemInfo &info); + #endif