X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdefinitions.h;h=d5fe0d66c0818d1d1afad82280d8b32309b45a6f;hb=c24658bd34221d735f0641c924b890e1a6be7101;hp=d0aa354c51146e24d0fa12e5006dff70fa742574;hpb=95265b50de041c51b5111bc397709fe3ce83b1fc;p=kdenlive diff --git a/src/definitions.h b/src/definitions.h index d0aa354c..d5fe0d66 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -21,50 +21,173 @@ #ifndef DEFINITIONS_H #define DEFINITIONS_H -#include - #include "gentime.h" +#include "effectslist.h" + +#include +#include + +#include +#include + +const int MAXCLIPDURATION = 15000; + +namespace Kdenlive { + +enum MonitorId { + NoMonitor, + ClipMonitor, + ProjectMonitor, + RecordMonitor, + StopMotionMonitor, + DvdMonitor +}; + +const int DefaultThumbHeight = 100; +/* +const QString clipMonitor("clipMonitor"); +const QString recordMonitor("recordMonitor"); +const QString projectMonitor("projectMonitor"); +const QString stopmotionMonitor("stopmotionMonitor"); +*/ + +} -#define FRAME_SIZE 90 -#define MAXCLIPDURATION 15000 +enum OperationType { + None = 0, + MoveOperation = 1, + ResizeStart = 2, + ResizeEnd = 3, + FadeIn = 4, + FadeOut = 5, + TransitionStart = 6, + TransitionEnd = 7, + MoveGuide = 8, + KeyFrame = 9, + Seek = 10, + Spacer = 11, + RubberSelection = 12, + ScrollTimeline = 13 +}; -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 ClipType { + Unknown = 0, + Audio = 1, + Video = 2, + AV = 3, + Color = 4, + Image = 5, + Text = 6, + SlideShow = 7, + Virtual = 8, + Playlist = 9 +}; -enum PROJECTTOOL { SELECTTOOL = 0 , RAZORTOOL = 1 }; +enum ProjectItemType { + ProjectClipType = QTreeWidgetItem::UserType, + ProjectFoldeType, + ProjectSubclipType +}; -enum TRANSITIONTYPE { +enum GraphicsRectItem { + AVWidget = 70000, + LabelWidget, + TransitionWidget, + GroupWidget +}; + +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 */ - LUMA_TRANSITION = 0, - COMPOSITE_TRANSITION = 1, - PIP_TRANSITION = 2, - LUMAFILE_TRANSITION = 3, - MIX_TRANSITION = 200 + LumaTransition = 0, + CompositeTransition = 1, + PipTransition = 2, + LumaFileTransition = 3, + MixTransition = 200 }; enum MessageType { DefaultMessage, OperationCompletedMessage, InformationMessage, - ErrorMessage + ErrorMessage, + MltError }; -enum TRACKTYPE { AUDIOTRACK = 0, VIDEOTRACK = 1 }; +enum TrackType { + AudioTrack = 0, + VideoTrack = 1 +}; -struct TrackInfo { - TRACKTYPE type; +enum ClipJobStatus { + NoJob = 0, + JobWaiting = -1, + JobWorking = -2, + JobDone = -3, + JobCrashed = -4, + JobAborted = -5 +}; + +class TrackInfo { + +public: + TrackType type; + QString trackName; bool isMute; bool isBlind; + bool isLocked; + EffectsList effectsList; + int duration; + TrackInfo() : + type(VideoTrack), + isMute(0), + isBlind(0), + isLocked(0), + duration(0) {} }; -struct ItemInfo { +typedef QMap stringMap; +typedef QMap > audioByteArray; + +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 */ 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; + ItemInfo() : track(0) {} }; -struct MltVideoProfile { +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) {} +}; + +class MltVideoProfile { +public: QString path; QString description; int frame_rate_num; @@ -76,53 +199,90 @@ struct MltVideoProfile { int sample_aspect_den; int display_aspect_num; int display_aspect_den; + int colorspace; + MltVideoProfile(); + bool operator==(const MltVideoProfile& point) const; + bool operator!=(const MltVideoProfile &other) const; +}; + +/**) + * @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(); + bool isCollapsed; + bool groupIsCollapsed; + int groupIndex; + QString groupName; + QString toString() const; + void fromString(QString value); +}; + +class EffectParameter +{ +public: + EffectParameter(const QString &name, const QString &value); + QString name() const; + QString value() const; + void setValue(const QString &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: - CommentedTime(): t(GenTime(0)) {} - CommentedTime(const GenTime time, QString comment) - : t(time), c(comment) { } - - QString comment() const { - return (c.isEmpty() ? i18n("Marker") : c); - } - GenTime time() const { - return t; - } - void setComment(QString comm) { - c = comm; - } + EffectsParameterList(); + bool hasParam(const QString &name) const; + void setParamValue(const QString &name, const QString &value); + + QString paramValue(const QString &name, const QString &defaultValue = QString()) const; + void addParam(const QString &name, const QString &value); + void removeParam(const QString &name); +}; + +class CommentedTime +{ +public: + CommentedTime(); + CommentedTime(const GenTime &time, const QString& comment, int markerType = 0); + + QString comment() const; + GenTime time() const; + void setComment(const QString &comm); + void setMarkerType(int t); + int markerType() const; + static QColor markerColor(int type); /* Implementation of > operator; Works identically as with basic types. */ - bool operator>(CommentedTime op) const { - return t > op.time(); - } + bool operator>(CommentedTime op) const; /* Implementation of < operator; Works identically as with basic types. */ - bool operator<(CommentedTime op) const { - return t < op.time(); - } + bool operator<(CommentedTime op) const; /* Implementation of >= operator; Works identically as with basic types. */ - bool operator>=(CommentedTime op) const { - return t >= op.time(); - } + bool operator>=(CommentedTime op) const; /* Implementation of <= operator; Works identically as with basic types. */ - bool operator<=(CommentedTime op) const { - return t <= op.time(); - } + bool operator<=(CommentedTime op) const; /* Implementation of == operator; Works identically as with basic types. */ - bool operator==(CommentedTime op) const { - return t == op.time(); - } + bool operator==(CommentedTime op) const; /* Implementation of != operator; Works identically as with basic types. */ - bool operator!=(CommentedTime op) const { - return t != op.time(); - } + bool operator!=(CommentedTime op) const; private: GenTime t; QString c; + int type; +}; +QDebug operator << (QDebug qd, const ItemInfo &info); -}; #endif