#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"
+#include "abstractclipitem.h"
+class ClipItem : public AbstractClipItem {
+ 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;
- void moveTo(int x, double scale, double offset, int newTrack);
+ const QStyleOptionGraphicsItem *option,
+ QWidget *widget);
+ virtual int type() const;
void resizeStart(int posx, double scale);
void resizeEnd(int posx, double scale);
OPERATIONTYPE operationMode(QPointF pos, double scale);
int clipType();
DocClipBase *baseClip();
QString clipName();
- int maxDuration();
- int track();
- void setTrack(int track);
- int startPos();
- int cropStart();
- int endPos();
- int duration();
QDomElement xml() const;
- int fadeIn() const;
- int fadeOut() const;
+
void setFadeOut(int pos, double scale);
void setFadeIn(int pos, double scale);
/** Give a string list of the clip's effect names */
QDomElement effectAt(int ix);
/** Replace effect at pos ix with given value */
void setEffectAt(int ix, QDomElement effect);
+ void flashClip();
+ void addTransition(Transition*);
+ /** regenerate audio and video thumbnails */
+ void resetThumbs();
- 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;
+
+
int m_maxTrack;
- int m_track;
- int m_startPos;
+
+
QPixmap m_startPix;
QPixmap m_endPix;
bool m_hasThumbs;
QTimer *startThumbTimer;
QTimer *endThumbTimer;
- uint m_startFade;
- 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;
+ bool m_hover;
+
EffectsList m_effectList;
- QMap<int,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,int,int);
- signals:
+ void slotPrepareAudioThumb(double, QPainterPath, int, int);
+ void animate(qreal value);
+
+signals:
void getThumb(int, int);
- void prepareAudioThumb(double,QPainterPath,int,int);
+ void prepareAudioThumb(double, QPainterPath, int, int);
};