X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=src%2Fdefinitions.h;h=d5fe0d66c0818d1d1afad82280d8b32309b45a6f;hb=c24658bd34221d735f0641c924b890e1a6be7101;hp=6fe7d5693e9bfcb796464789c800dcb321bd1548;hpb=f5584dd222f8bda079f31c903b2b59ce82747ed9;p=kdenlive diff --git a/src/definitions.h b/src/definitions.h index 6fe7d569..d5fe0d66 100644 --- a/src/definitions.h +++ b/src/definitions.h @@ -22,47 +22,172 @@ #define DEFINITIONS_H #include "gentime.h" +#include "effectslist.h" -#define FRAME_SIZE 90 -#define MAXCLIPDURATION 15000 +#include +#include -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 }; +#include +#include -enum PROJECTTOOL { SELECTTOOL = 0 , RAZORTOOL = 1 }; +const int MAXCLIPDURATION = 15000; -enum TRANSITIONTYPE { +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"); +*/ + +} + +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 ClipType { + Unknown = 0, + Audio = 1, + Video = 2, + AV = 3, + Color = 4, + Image = 5, + Text = 6, + SlideShow = 7, + Virtual = 8, + Playlist = 9 +}; + +enum ProjectItemType { + ProjectClipType = QTreeWidgetItem::UserType, + ProjectFoldeType, + ProjectSubclipType +}; + +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 +}; + +enum ClipJobStatus { + NoJob = 0, + JobWaiting = -1, + JobWorking = -2, + JobDone = -3, + JobCrashed = -4, + JobAborted = -5 +}; -struct TrackInfo { - TRACKTYPE type; +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; @@ -74,6 +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; }; +/** 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(); + 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; + /* Implementation of < operator; Works identically as with basic types. */ + bool operator<(CommentedTime op) const; + /* Implementation of >= operator; Works identically as with basic types. */ + bool operator>=(CommentedTime op) const; + /* Implementation of <= operator; Works identically as with basic types. */ + bool operator<=(CommentedTime op) const; + /* Implementation of == operator; Works identically as with basic types. */ + bool operator==(CommentedTime op) const; + /* Implementation of != operator; Works identically as with basic types. */ + bool operator!=(CommentedTime op) const; + +private: + GenTime t; + QString c; + int type; +}; + +QDebug operator << (QDebug qd, const ItemInfo &info); + #endif