#include <QGraphicsRectItem>
#include <QDomElement>
#include <QGraphicsSceneMouseEvent>
+#include <QTimeLine>
#include "definitions.h"
#include "gentime.h"
#include "effectslist.h"
#include "docclipbase.h"
#include "kthumb.h"
+#include "transition.h"
-class ClipItem : public QObject, public QGraphicsRectItem
-{
- Q_OBJECT
+class ClipItem : public QObject, public QGraphicsRectItem {
+ Q_OBJECT
- public:
- ClipItem(DocClipBase *clip, int track, int startpos, const QRectF & rect, int duration);
+public:
+ ClipItem(DocClipBase *clip, int track, GenTime startpos, const QRectF & rect, GenTime duration, double fps);
virtual ~ ClipItem();
virtual void paint(QPainter *painter,
- const QStyleOptionGraphicsItem *option,
- QWidget *widget);
- virtual int type () const;
+ const QStyleOptionGraphicsItem *option,
+ QWidget *widget);
+ virtual int type() const;
void moveTo(int x, double scale, double offset, int newTrack);
void resizeStart(int posx, double scale);
void resizeEnd(int posx, double scale);
int clipType();
DocClipBase *baseClip();
QString clipName();
- int maxDuration();
- int track();
+ GenTime maxDuration() const;
+ int track() const;
void setTrack(int track);
- int startPos();
- int cropStart();
- int endPos();
- int duration();
+ GenTime startPos() const;
+ GenTime cropStart() const;
+ GenTime endPos() const;
+ GenTime duration() const;
+ double fps() const;
QDomElement xml() const;
int fadeIn() const;
int fadeOut() const;
QDomElement effectAt(int ix);
/** Replace effect at pos ix with given value */
void setEffectAt(int ix, QDomElement effect);
+ void flashClip();
+ void addTransition(Transition tr);
- protected:
- virtual void mouseMoveEvent ( QGraphicsSceneMouseEvent * event );
- virtual void mouseReleaseEvent ( QGraphicsSceneMouseEvent * event );
- virtual void mousePressEvent ( QGraphicsSceneMouseEvent * event );
+protected:
+ virtual void mouseMoveEvent(QGraphicsSceneMouseEvent * event);
+ virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent * event);
+ virtual void mousePressEvent(QGraphicsSceneMouseEvent * event);
+ virtual void dragEnterEvent(QGraphicsSceneDragDropEvent *event);
+ virtual void dragLeaveEvent(QGraphicsSceneDragDropEvent *event);
+ virtual void dropEvent(QGraphicsSceneDragDropEvent *event);
+ virtual void hoverEnterEvent(QGraphicsSceneHoverEvent *);
+ virtual void hoverLeaveEvent(QGraphicsSceneHoverEvent *);
- private:
+private:
QDomElement m_xml;
DocClipBase *m_clip;
- int m_textWidth;
OPERATIONTYPE m_resizeMode;
int m_grabPoint;
int m_producer;
CLIPTYPE m_clipType;
QString m_clipName;
- int m_maxDuration;
- int m_cropStart;
- int m_cropDuration;
+ GenTime m_maxDuration;
+ GenTime m_cropStart;
+ GenTime m_cropDuration;
int m_maxTrack;
int m_track;
- int m_startPos;
+ GenTime m_startPos;
QPixmap m_startPix;
QPixmap m_endPix;
bool m_hasThumbs;
uint m_endFade;
/** counter used to provide a unique id to each effect */
int m_effectsCounter;
-
+ double m_opacity;
+ QTimeLine *m_timeLine;
+ uint m_thumbsRequested;
+ double m_fps;
+ bool m_hover;
+
EffectsList m_effectList;
- QPixmap audioThumbCachePic;
- bool audioThumbWasDrawn;
+ QList <Transition *> m_transitionsList;
+ QMap<int, QPixmap> audioThumbCachePic;
+ bool audioThumbWasDrawn, audioThumbReady;
double framePixelWidth;
- QMap<int,QPainterPath > channelPaths;
- private slots:
+ QMap<int, QPainterPath > channelPaths;
+
+private slots:
void slotThumbReady(int frame, QPixmap pix);
void slotFetchThumbs();
void slotGetStartThumb();
void slotGetEndThumb();
void slotGotAudioData();
- void slotPrepareAudioThumb(double,QPainterPath);
- signals:
+ void slotPrepareAudioThumb(double, QPainterPath, int, int);
+ void animate(qreal value);
+
+signals:
void getThumb(int, int);
- void prepareAudioThumb(double,QPainterPath);
+ void prepareAudioThumb(double, QPainterPath, int, int);
};