X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdefinitions.h;h=e2635fa9c50686bc0c167f9cc787640f1b7124c0;hb=94ef97850a20b048dc536b1a3b40057504452b47;hp=d0aa354c51146e24d0fa12e5006dff70fa742574;hpb=95265b50de041c51b5111bc397709fe3ce83b1fc;p=kdenlive diff --git a/src/definitions.h b/src/definitions.h index d0aa354c..e2635fa9 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -21,18 +21,22 @@ #ifndef DEFINITIONS_H #define DEFINITIONS_H +#include "gentime.h" +#include "effectslist.h" + +#include #include -#include "gentime.h" +const int MAXCLIPDURATION = 15000; + +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 }; -#define FRAME_SIZE 90 -#define MAXCLIPDURATION 15000 +enum PROJECTITEMTYPE { PROJECTCLIPTYPE = QTreeWidgetItem::UserType, PROJECTFOLDERTYPE, PROJECTSUBCLIPTYPE }; -enum OPERATIONTYPE { NONE = 0, MOVE = 1, RESIZESTART = 2, RESIZEEND = 3, FADEIN = 4, FADEOUT = 5, TRANSITIONSTART = 6, TRANSITIONEND = 7, MOVEGUIDE = 8, KEYFRAME = 9}; -enum CLIPTYPE { UNKNOWN = 0, AUDIO = 1, VIDEO = 2, AV = 3, COLOR = 4, IMAGE = 5, TEXT = 6, SLIDESHOW = 7, VIRTUAL = 8, PLAYLIST = 9, FOLDER = 10}; -enum GRAPHICSRECTITEM { AVWIDGET = 70000 , LABELWIDGET , TRANSITIONWIDGET }; +enum GRAPHICSRECTITEM { AVWIDGET = 70000 , LABELWIDGET , TRANSITIONWIDGET , GROUPWIDGET}; -enum PROJECTTOOL { SELECTTOOL = 0 , RAZORTOOL = 1 }; +enum PROJECTTOOL { SELECTTOOL = 0 , RAZORTOOL = 1 , SPACERTOOL = 2 }; enum TRANSITIONTYPE { /** TRANSITIONTYPE: between 0-99: video trans, 100-199: video+audio trans, 200-299: audio trans */ @@ -47,20 +51,36 @@ enum MessageType { DefaultMessage, OperationCompletedMessage, InformationMessage, - ErrorMessage + ErrorMessage, + MltError }; enum TRACKTYPE { AUDIOTRACK = 0, VIDEOTRACK = 1 }; +enum CLIPJOBSTATUS { NOJOB = 0, JOBWAITING = -1, CREATINGJOB = -2, JOBDONE = -3, JOBCRASHED = -4}; + struct TrackInfo { TRACKTYPE type; + QString trackName; bool isMute; bool isBlind; + bool isLocked; + EffectsList effectsList; + int duration; }; +typedef QMap stringMap; +typedef QMap > audioByteArray; + struct ItemInfo { + /** 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; + /** cropStart is the position where the sub-clip starts, relative to the clip's 0 position */ + GenTime cropStart; + /** cropDuration is the duration of the clip */ + GenTime cropDuration; int track; }; @@ -76,13 +96,82 @@ struct MltVideoProfile { int sample_aspect_den; int display_aspect_num; int display_aspect_den; + int colorspace; + bool operator==(const MltVideoProfile& point) const + { + if (!description.isEmpty() && point.description == description) return true; + return point.frame_rate_num == frame_rate_num && + point.frame_rate_den == frame_rate_den && + point.width == width && + point.height == height && + point.progressive == progressive && + point.sample_aspect_num == sample_aspect_num && + point.sample_aspect_den == sample_aspect_den && + point.display_aspect_den == display_aspect_den && + point.colorspace == colorspace; + } + bool operator!=(const MltVideoProfile &other) const { + return !(*this == other); + } +}; + + +class EffectParameter +{ +public: + EffectParameter(const QString &name, const QString &value): m_name(name), m_value(value) {} + QString name() const { + return m_name; + } + QString value() const { + return m_value; + } + void setValue(const QString &value) { + m_value = value; + } + +private: + QString m_name; + QString m_value; }; -class CommentedTime { +/** Use our own list for effect parameters so that they are not sorted in any ways, because + some effects like sox need a precise order +*/ +class EffectsParameterList: public QList < EffectParameter > +{ +public: + EffectsParameterList(): QList < EffectParameter >() {} + bool hasParam(const QString &name) const { + for (int i = 0; i < size(); i++) + if (at(i).name() == name) return true; + return false; + } + 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(); + } + return defaultValue; + } + void addParam(const QString &name, const QString &value) { + if (name.isEmpty()) return; + append(EffectParameter(name, value)); + } + void removeParam(const QString &name) { + for (int i = 0; i < size(); i++) + if (at(i).name() == name) { + removeAt(i); + break; + } + } +}; + +class CommentedTime +{ public: CommentedTime(): t(GenTime(0)) {} - CommentedTime(const GenTime time, QString comment) - : t(time), c(comment) { } + CommentedTime(const GenTime &time, QString comment) + : t(time), c(comment) { } QString comment() const { return (c.isEmpty() ? i18n("Marker") : c); @@ -125,4 +214,6 @@ private: }; + + #endif