]> git.sesse.net Git - kdenlive/commitdiff
abstract class for clipitem (many func's from clipitem must move to abstractclipitem)
authorMarco Gittler <marco@gitma.de>
Mon, 10 Mar 2008 19:22:00 +0000 (19:22 +0000)
committerMarco Gittler <marco@gitma.de>
Mon, 10 Mar 2008 19:22:00 +0000 (19:22 +0000)
transitions are now abstractclipitem

svn path=/branches/KDE4/; revision=2040

src/CMakeLists.txt
src/abstractclipitem.cpp [new file with mode: 0644]
src/abstractclipitem.h [new file with mode: 0644]
src/clipitem.cpp
src/clipitem.h
src/customtrackview.cpp
src/customtrackview.h
src/kthumb.cpp
src/transition.cpp
src/transition.h

index d9f526bc3cca16f584abc06f865c097bee0361b5..0efc4b97f7f0c48f9f91d0cb96d919552ad47c97 100644 (file)
@@ -85,6 +85,7 @@ set(kdenlive_SRCS
   transition.cpp
   renderjob.cpp
   renderwidget.cpp
+  abstractclipitem.cpp
 )
 
 kde4_add_kcfg_files(kdenlive_SRCS GENERATE_MOC kdenlivesettings.kcfgc )
diff --git a/src/abstractclipitem.cpp b/src/abstractclipitem.cpp
new file mode 100644 (file)
index 0000000..6c35eff
--- /dev/null
@@ -0,0 +1,97 @@
+#include "abstractclipitem.h"
+#include <KDebug>
+
+AbstractClipItem::AbstractClipItem(const QRectF& rect): QGraphicsRectItem(rect), m_startFade(0), m_endFade(0) {
+    setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
+}
+void AbstractClipItem::moveTo(int x, double scale, double offset, int newTrack) {
+    double origX = rect().x();
+    double origY = rect().y();
+    bool success = true;
+    if (x < 0) return;
+    setRect(x * scale, origY + offset, rect().width(), rect().height());
+    QList <QGraphicsItem *> collisionList = collidingItems(Qt::IntersectsItemBoundingRect);
+    if (collisionList.size() == 0) m_track = newTrack;
+    for (int i = 0; i < collisionList.size(); ++i) {
+        QGraphicsItem *item = collisionList.at(i);
+        if (item->type() == 70000 || item->type() == 70001) {
+            if (offset == 0) {
+                QRectF other = ((QGraphicsRectItem *)item)->rect();
+                if (x < m_startPos.frames(m_fps)) {
+                    kDebug() << "COLLISION, MOVING TO------";
+                    m_startPos = ((AbstractClipItem *)item)->endPos() + GenTime(1, m_fps);
+                    origX = m_startPos.frames(m_fps) * scale;
+                } else {
+                    kDebug() << "COLLISION, MOVING TO+++";
+                    m_startPos = ((AbstractClipItem *)item)->startPos() - m_cropDuration;
+                    origX = m_startPos.frames(m_fps) * scale;
+                }
+            }
+            setRect(origX, origY, rect().width(), rect().height());
+            offset = 0;
+            origX = rect().x();
+            success = false;
+            break;
+        }
+    }
+    if (success) {
+        m_track = newTrack;
+        m_startPos = GenTime(x, m_fps);
+    }
+    /*    QList <QGraphicsItem *> childrenList = QGraphicsItem::children();
+        for (int i = 0; i < childrenList.size(); ++i) {
+          childrenList.at(i)->moveBy(rect().x() - origX , offset);
+        }*/
+}
+
+GenTime AbstractClipItem::endPos() const {
+    return m_startPos + m_cropDuration;
+}
+
+int AbstractClipItem::track() const {
+    return m_track;
+}
+
+GenTime AbstractClipItem::cropStart() const {
+    return m_cropStart;
+}
+
+void AbstractClipItem::resizeStart(int posx, double scale) {
+
+}
+
+void AbstractClipItem::resizeEnd(int posx, double scale) {
+
+}
+
+void AbstractClipItem::setFadeOut(int pos, double scale) {
+
+}
+
+void AbstractClipItem::setFadeIn(int pos, double scale) {
+
+}
+
+GenTime AbstractClipItem::duration() const {
+    return m_cropDuration;
+}
+
+GenTime AbstractClipItem::startPos() const {
+    return m_startPos;
+}
+
+void AbstractClipItem::setTrack(int track) {
+    m_track = track;
+}
+
+double AbstractClipItem::fps() const {
+    return m_fps;
+}
+
+int AbstractClipItem::fadeIn() const {
+    return m_startFade;
+}
+
+int AbstractClipItem::fadeOut() const {
+    return m_endFade;
+}
diff --git a/src/abstractclipitem.h b/src/abstractclipitem.h
new file mode 100644 (file)
index 0000000..c727ca2
--- /dev/null
@@ -0,0 +1,38 @@
+#ifndef ABSTRACTCLIPITEM
+#define ABSTRACTCLIPITEM
+
+#include <QGraphicsRectItem>
+#include "definitions.h"
+#include "gentime.h"
+
+class AbstractClipItem : public QObject , public QGraphicsRectItem {
+    Q_OBJECT
+public:
+    AbstractClipItem(const QRectF& rect);
+    virtual  OPERATIONTYPE operationMode(QPointF pos, double scale) = 0;
+    virtual GenTime startPos() const ;
+    virtual void setTrack(int track);
+    virtual GenTime endPos() const ;
+    virtual int track() const ;
+    virtual void moveTo(int x, double scale, double offset, int newTrack);
+    virtual GenTime cropStart() const ;
+    virtual  void resizeStart(int posx, double scale);
+    virtual void resizeEnd(int posx, double scale);
+    virtual void setFadeOut(int pos, double scale);
+    virtual void setFadeIn(int pos, double scale);
+    virtual GenTime duration() const;
+    virtual double fps() const;
+    virtual int fadeIn() const;
+    virtual int fadeOut() const;
+protected:
+    int m_track;
+    GenTime m_cropStart;
+    GenTime m_cropDuration;
+    GenTime m_startPos;
+    double m_fps;
+    uint m_startFade;
+    uint m_endFade;
+
+};
+
+#endif
index f9c4b5f30dcf9dd5e29d76c0c8c687d80274e87d..2d113f902506ddcc557d1b9e4b8f51792203e36f 100644 (file)
 #include "kdenlivesettings.h"
 
 ClipItem::ClipItem(DocClipBase *clip, int track, GenTime startpos, const QRectF & rect, GenTime duration, double fps)
-        : QGraphicsRectItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_track(track), m_startPos(startpos), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_startFade(0), m_endFade(0), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0), m_fps(fps), m_hover(false) {
+        : AbstractClipItem(rect), m_clip(clip), m_resizeMode(NONE), m_grabPoint(0), m_maxTrack(0), m_hasThumbs(false), startThumbTimer(NULL), endThumbTimer(NULL), m_effectsCounter(1), audioThumbWasDrawn(false), m_opacity(1.0), m_timeLine(0), m_thumbsRequested(0), m_hover(false) {
     //setToolTip(name);
     // kDebug() << "*******  CREATING NEW TML CLIP, DUR: " << duration;
+    m_fps = fps;
+    m_startPos = startpos;
+    m_track = track;
     m_xml = clip->toXML();
     m_clipName = clip->name();
     m_producer = clip->getId();
@@ -155,26 +158,10 @@ GenTime ClipItem::maxDuration() const {
     return m_maxDuration;
 }
 
-GenTime ClipItem::duration() const {
-    return m_cropDuration;
-}
-
-GenTime ClipItem::startPos() const {
-    return m_startPos;
-}
-
 GenTime ClipItem::cropStart() const {
     return m_cropStart;
 }
 
-GenTime ClipItem::endPos() const {
-    return m_startPos + m_cropDuration;
-}
-
-double ClipItem::fps() const {
-    return m_fps;
-}
-
 void ClipItem::flashClip() {
     if (m_timeLine == 0) {
         m_timeLine = new QTimeLine(750, this);
@@ -245,23 +232,6 @@ void ClipItem::paint(QPainter *painter,
             right_lower = 40;
     }
 
-    // draw transitions
-    QList<QPainterPath> transitionPath;
-    foreach(Transition transition, m_transitionsList) {
-        QPainterPath t;
-        //t.addRect(br_startx,br.y()+br.height()/2,br.x() + /*t->transitionDuration().frames(m_fps) *pixelForOneFrame*/5 ,br.y()+br.height()*2);
-        int twidth = br_startx + transition.transitionDuration().frames(m_fps) * scale;
-        t.moveTo(twidth , br_endy);
-        t.lineTo(twidth , br_halfy + roundingY);
-
-        t.arcTo(twidth - roundingX , br_halfy , roundingX, roundingY,  0.0, 90.0);
-        t.lineTo(br_startx +  roundingX , br_halfy);
-        t.arcTo(br_startx , br_halfy, roundingX , roundingY,  90.0, 90.0);
-        t.lineTo(br_startx , br_endy);
-        //t.closeSubpath();
-        transitionPath.append(t);
-    }
-
     // build path around clip
     roundRectPathUpper.moveTo(br_endx - right_upper , br_halfy);
     roundRectPathUpper.arcTo(br_endx - roundingX - right_upper , br_starty , roundingX, roundingY, 0.0, 90.0);
@@ -276,9 +246,7 @@ void ClipItem::paint(QPainter *painter,
     roundRectPathLower.lineTo(br_endx - right_lower , br_halfy);
 
     QPainterPath resultClipPath = roundRectPathUpper.united(roundRectPathLower);
-    foreach(QPainterPath p, transitionPath) {
-        resultClipPath = resultClipPath.united(p);
-    }
+
     painter->setClipPath(resultClipPath.intersected(clippath), Qt::IntersectClip);
     //painter->fillPath(roundRectPath, brush()); //, QBrush(QColor(Qt::red)));
     painter->fillRect(br.intersected(rectInView), paintColor);
@@ -397,11 +365,6 @@ void ClipItem::paint(QPainter *painter,
     if (isSelected()) painter->setPen(pen);
     painter->setClipRect(option->exposedRect);
     painter->drawPath(resultClipPath.intersected(clippath));
-    foreach(QPainterPath p, transitionPath) {
-
-        painter->fillPath(p, QBrush(QColor(255, 255, 0, 100)));
-        painter->drawPath(p);
-    }
 
     //painter->fillRect(startpixel,0,startpixel+endpixel,(int)br.height(),  QBrush(QColor(255,255,255,150)));
     //painter->fillRect(QRect(br.x(), br.y(), roundingX, roundingY), QBrush(QColor(Qt::green)));
@@ -438,6 +401,7 @@ OPERATIONTYPE ClipItem::operationMode(QPointF pos, double scale) {
     else if (abs((int)(pos.x() - (rect().x() + rect().width()))) < 6) return RESIZEEND;
     else if (abs((int)(pos.x() - (rect().x() + 10))) < 6 && abs((int)(pos.y() - (rect().y() + rect().height() / 2 - 5))) < 6) return TRANSITIONSTART;
     else if (abs((int)(pos.x() - (rect().x() + rect().width() - 20))) < 6 && abs((int)(pos.y() - (rect().y() + rect().height() / 2 - 5))) < 6) return TRANSITIONEND;
+
     return MOVE;
 }
 
@@ -521,13 +485,7 @@ void ClipItem::slotPrepareAudioThumb(double pixelForOneFrame, QPainterPath path,
     //}
 }
 
-int ClipItem::fadeIn() const {
-    return m_startFade;
-}
 
-int ClipItem::fadeOut() const {
-    return m_endFade;
-}
 
 void ClipItem::setFadeIn(int pos, double scale) {
     int oldIn = m_startFade;
@@ -673,14 +631,6 @@ void ClipItem::resizeEnd(int posx, double scale) {
 void ClipItem::mouseMoveEvent(QGraphicsSceneMouseEvent * event) {
 }
 
-int ClipItem::track() const {
-    return  m_track;
-}
-
-void ClipItem::setTrack(int track) {
-    m_track = track;
-}
-
 int ClipItem::effectsCounter() {
     return m_effectsCounter++;
 }
@@ -770,11 +720,6 @@ void ClipItem::deleteEffect(QString index) {
     update(boundingRect());
 }
 
-void ClipItem::addTransition(Transition tr) {
-    m_transitionsList.append(tr);
-    update();
-}
-
 //virtual
 void ClipItem::dropEvent(QGraphicsSceneDragDropEvent * event) {
     QString effects = QString(event->mimeData()->data("kdenlive/effectslist"));
index 15d91d8962559babb3c389d289e29c96bc353b88..ef11d0daeaa865a3160e557b7d9cc045ca5a7c10 100644 (file)
@@ -32,9 +32,9 @@
 #include "docclipbase.h"
 #include "kthumb.h"
 #include "transition.h"
+#include "abstractclipitem.h"
 
-
-class ClipItem : public QObject, public QGraphicsRectItem {
+class ClipItem : public AbstractClipItem {
     Q_OBJECT
 
 public:
@@ -53,16 +53,9 @@ public:
     DocClipBase *baseClip();
     QString clipName();
     GenTime maxDuration() const;
-    int track() const;
-    void setTrack(int track);
-    GenTime startPos() const;
     GenTime cropStart() const;
-    GenTime endPos() const;
-    GenTime duration() const;
-    double fps() const;
     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 */
@@ -82,7 +75,6 @@ public:
     /** 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);
@@ -103,24 +95,21 @@ private:
     CLIPTYPE m_clipType;
     QString m_clipName;
     GenTime m_maxDuration;
-    GenTime m_cropStart;
-    GenTime m_cropDuration;
+
     int m_maxTrack;
-    int m_track;
-    GenTime 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;
-    double m_fps;
     bool m_hover;
 
     EffectsList m_effectList;
index 626c7e371b61825d764de60ecbc217183e8e259a..aa418b45c983ce59f15cb753341598cd64733cc6 100644 (file)
@@ -98,7 +98,7 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event) {
             // a button was pressed, delete visual tips
             if (m_operationMode == MOVE) {
                 double snappedPos = getSnapPointForPos(mapToScene(event->pos()).x() - m_clickPoint);
-                //kDebug()<<"///////  MOVE CLIP, EVENT Y: "<<event->scenePos().y()<<", SCENE HEIGHT: "<<scene()->sceneRect().height();
+                kDebug() << "///////  MOVE CLIP, EVENT Y: ";//<<event->scenePos().y()<<", SCENE HEIGHT: "<<scene()->sceneRect().height();
                 int moveTrack = (int)  mapToScene(event->pos()).y() / 50;
                 int currentTrack = m_dragItem->track();
 
@@ -132,17 +132,18 @@ void CustomTrackView::mouseMoveEvent(QMouseEvent * event) {
 
         QList<QGraphicsItem *> itemList = items(event->pos());
         int i = 0;
-        QGraphicsItem *item = NULL;
+        QGraphicsRectItem *item = NULL;
         for (int i = 0; i < itemList.count(); i++) {
-            if (itemList.at(i)->type() == 70000) {
-                item = itemList.at(i);
+            if (itemList.at(i)->type() == 70000 || itemList.at(i)->type() == 70001) {
+                item = (QGraphicsRectItem*) itemList.at(i);
                 break;
             }
         }
         if (item && event->buttons() == Qt::NoButton) {
-            ClipItem *clip = (ClipItem*) item;
+            AbstractClipItem *clip = (AbstractClipItem*) item;
+            OPERATIONTYPE opMode = opMode = clip->operationMode(mapToScene(event->pos()), m_scale);
             double size = 8;
-            OPERATIONTYPE opMode = clip->operationMode(mapToScene(event->pos()), m_scale);
+
             if (opMode == m_moveOpMode) {
                 QGraphicsView::mouseMoveEvent(event);
                 return;
@@ -324,7 +325,7 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) {
         QList<QGraphicsItem *> collisionList = items(event->pos());
         for (int i = 0; i < collisionList.size(); ++i) {
             QGraphicsItem *item = collisionList.at(i);
-            if (item->type() == 70000) {
+            if (item->type() == 70000 || item->type() == 70001) {
                 // select item
                 if (!item->isSelected()) {
                     QList<QGraphicsItem *> itemList = items();
@@ -333,8 +334,11 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) {
                     item->setSelected(true);
                     update();
                 }
-                m_dragItem = (ClipItem *) item;
-                emit clipItemSelected(m_dragItem);
+
+                m_dragItem = (AbstractClipItem *) item;
+                if (item->type() == 70000) {
+                    emit clipItemSelected((ClipItem*) m_dragItem);
+                }
                 m_clickPoint = mapToScene(event->pos()).x() - m_dragItem->startPos().frames(m_document->fps()) * m_scale;
                 m_operationMode = m_dragItem->operationMode(item->mapFromScene(mapToScene(event->pos())), m_scale);
                 if (m_operationMode == MOVE) setCursor(Qt::ClosedHandCursor);
@@ -343,9 +347,11 @@ void CustomTrackView::mousePressEvent(QMouseEvent * event) {
                 else if (m_operationMode == RESIZEEND)
                     m_startPos = QPointF(m_dragItem->endPos().frames(m_document->fps()), m_dragItem->track());
                 else if (m_operationMode == TRANSITIONSTART) {
-                    Transition tra(m_dragItem, LUMA_TRANSITION, m_dragItem->startPos(), m_dragItem->startPos() + GenTime(2.5));
-                    m_dragItem->addTransition(tra);
+                    Transition *tr = new Transition(QRect(10 , 10, 20, 20), (ClipItem*)m_dragItem, LUMA_TRANSITION, m_dragItem->startPos(), m_dragItem->startPos() + GenTime(2.5), m_document->fps());
+                    scene()->addItem(tr);
+                    //m_dragItem->addTransition(tra);
                 }
+
                 kDebug() << "//////// ITEM CLICKED: " << m_startPos;
                 collision = true;
                 break;
@@ -681,7 +687,7 @@ double CustomTrackView::getSnapPointForPos(double pos) {
     return pos;
 }
 
-void CustomTrackView::updateSnapPoints(ClipItem *selected) {
+void CustomTrackView::updateSnapPoints(AbstractClipItem *selected) {
     m_snapPoints.clear();
     GenTime offset;
     if (selected) offset = selected->duration();
index f8ddb10544911f380ef2e0fb28537f4c86af19b5..6140b04843ab6bb83d1bf7b9cc11fab12cbd25f7 100644 (file)
@@ -85,7 +85,7 @@ private:
     QPointF m_startPos;
     OPERATIONTYPE m_operationMode;
     OPERATIONTYPE m_moveOpMode;
-    ClipItem *m_dragItem;
+    AbstractClipItem *m_dragItem;
     KUndoStack *m_commandStack;
     QGraphicsItem *m_visualTip;
     QGraphicsItemAnimation *m_animation;
@@ -95,7 +95,7 @@ private:
     double m_scale;
     int m_clickPoint;
     QList <GenTime> m_snapPoints;
-    void updateSnapPoints(ClipItem *selected);
+    void updateSnapPoints(AbstractClipItem *selected);
     double getSnapPointForPos(double pos);
     ClipItem *getClipItemAt(int pos, int track);
     ClipItem *getClipItemAt(GenTime pos, int track);
index e13c2d2eff5609fcfd86daa4d26d2c4369af1282..ec137979dfda05ba2cbe28334894859123df24db 100644 (file)
@@ -141,7 +141,7 @@ KThumb::KThumb(ClipManager *clipManager, KUrl url, int width, int height, QObjec
     m_profile = new Mlt::Profile((char*) KdenliveSettings::current_profile().data());
     QCryptographicHash context(QCryptographicHash::Sha1);
     context.addData((KFileItem(m_url, "text/plain", S_IFREG).timeString() + m_url.fileName()).toAscii().data());
-    m_thumbFile = KGlobal::dirs()->saveLocation("tmp" , "kdenlive" ) + context.result().toHex() + ".thumb";
+    m_thumbFile = KGlobal::dirs()->saveLocation("tmp" , "kdenlive") + context.result().toHex() + ".thumb";
     kDebug() << "thumbfile=" << m_thumbFile;
 }
 
index 2bcc5b80405a1de7a16d3ccfa6c61c187ed70de3..1fca5cb98199d74ab70fad868a9d9bed3ac98d74 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <QBrush>
 #include <qdom.h>
+#include <QPainter>
 
 #include <kdebug.h>
 #include <KIcon>
 #include "kdenlivesettings.h"
 
 
-Transition::Transition(ClipItem * clipa, const TRANSITIONTYPE & type, const GenTime &startTime, const GenTime &endTime, bool inverted) {
+Transition::Transition(const QRectF& rect , ClipItem * clipa, const TRANSITIONTYPE & type, const GenTime &startTime, const GenTime &endTime, double fps, bool inverted) : AbstractClipItem(rect) {
     m_invertTransition = inverted;
     m_singleClip = true;
     m_transitionTrack = 0;
     m_secondClip = NULL;
     m_transitionType = type;
     m_transitionName = getTransitionName(m_transitionType);
-
+    m_fps = fps;
     GenTime duration = endTime - startTime;
 
     // Default duration = 2.5 seconds
@@ -49,10 +50,11 @@ Transition::Transition(ClipItem * clipa, const TRANSITIONTYPE & type, const GenT
         m_transitionDuration = m_referenceClip->duration() - m_transitionStart;
     else m_transitionDuration = duration;
     m_secondClip = 0;
+    setFlags(QGraphicsItem::ItemClipsToShape | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
 }
 
 // create a transition from XML
-Transition::Transition(ClipItem * clip, QDomElement transitionElement, GenTime offset) {
+Transition::Transition(const QRectF& rect , ClipItem * clip, QDomElement transitionElement, double fps, GenTime offset) : AbstractClipItem(rect) {
     if (offset == GenTime()) offset = clip->startPos();
     m_referenceClip = clip;
     m_singleClip = true;
@@ -83,6 +85,7 @@ Transition::Transition(ClipItem * clip, QDomElement transitionElement, GenTime o
     // Check if transition is valid (not outside of clip)
     if (m_transitionStart > clip->duration())
         m_transitionDuration = GenTime();
+
 }
 
 Transition::~Transition() {
@@ -212,8 +215,18 @@ GenTime Transition::transitionEndTime() const {
         return m_referenceClip->startPos() + m_transitionStart + m_transitionDuration;
     }
 }
+void Transition::paint(QPainter *painter,
+                       const QStyleOptionGraphicsItem *option,
+                       QWidget *widget) {
+    painter->fillRect(rect(), QBrush(Qt::green));
+}
 
-
+int Transition::type() const {
+    return 70001;
+}
+OPERATIONTYPE Transition::operationMode(QPointF pos, double scale) {
+    return MOVE;
+}
 void Transition::resizeTransitionStart(GenTime time) {
     if (!m_singleClip) return; //cannot resize automatic transitions
     if (time < m_referenceClip->startPos()) time = m_referenceClip->startPos();
@@ -251,7 +264,7 @@ bool Transition::belongsToClip(const ClipItem * clip) const {
 }
 
 Transition *Transition::clone() {
-    return new Transition::Transition(m_referenceClip, this->toXML());
+    return new Transition::Transition(rect(), m_referenceClip, this->toXML() , m_fps);
     /*if (m_singleClip || m_secondClip == 0)
         return new Transition::Transition(m_referenceClip);
     else
@@ -261,7 +274,7 @@ Transition *Transition::clone() {
 }
 
 Transition *Transition::reparent(ClipItem * clip) {
-    return new Transition::Transition(clip, this->toXML(), m_referenceClip->startPos());
+    return new Transition::Transition(rect(), clip, this->toXML(), m_fps, m_referenceClip->startPos());
 }
 
 bool Transition::isValid() const {
@@ -297,3 +310,18 @@ QDomElement Transition::toXML() {
     return effect;
 }
 
+GenTime Transition::startPos() const {
+    return GenTime();
+}
+
+GenTime Transition::endPos() const {
+    return GenTime();
+}
+
+int Transition::track() const {
+    return 0;
+}
+
+GenTime Transition::duration() const {
+    return GenTime();
+}
index 3678fd35150c911a69f2183539cf128da9c46c3a..19ee87a5fbee4c8e681e97070458c0f24f871f71 100644 (file)
 
 #include <QString>
 #include <QGraphicsRectItem>
-#include <qpixmap.h>
+#include <QPixmap>
 #include <qdom.h>
-#include <qmap.h>
+#include <QMap>
 
 #include "gentime.h"
 #include "definitions.h"
-
+#include "abstractclipitem.h"
 
 /**Describes a Transition, with a name, parameters keyframes, etc.
   *@author Jean-Baptiste Mardelle
 
 class ClipItem;
 
-class Transition {
+class Transition : public AbstractClipItem {
+    Q_OBJECT
 public:
 
-    Transition(ClipItem * clipa, const TRANSITIONTYPE & type, const GenTime &startTime, const GenTime &endTime, bool inverted = false);
-    Transition(ClipItem * clip, QDomElement transitionElement, GenTime offset = GenTime());
-    ~Transition();
-
+    Transition(const QRectF&, ClipItem * clipa, const TRANSITIONTYPE & type, const GenTime &startTime, const GenTime &endTime, double fps, bool inverted = false);
+    Transition(const QRectF&, ClipItem * clip, QDomElement transitionElement, double fps, GenTime offset = GenTime());
+    virtual ~Transition();
+    virtual void paint(QPainter *painter,
+                       const QStyleOptionGraphicsItem *option,
+                       QWidget *widget);
+    virtual int type() const;
     /** Returns an XML representation of this transition. */
     QDomElement toXML();
 
@@ -57,6 +61,7 @@ public:
     void moveTransition(GenTime time);
     bool invertTransition() const;
     TRANSITIONTYPE transitionType() const;
+    OPERATIONTYPE operationMode(QPointF pos, double scale);
     QString transitionTag() const;
     QString transitionName() const;
     void setTransitionType(TRANSITIONTYPE newType);
@@ -70,7 +75,10 @@ public:
     bool isValid() const;
     GenTime transitionDuration() const;
     const ClipItem *referencedClip() const;
-
+    GenTime startPos() const;
+    GenTime endPos() const;
+    int track() const;
+    GenTime duration() const;
 private:
 
     GenTime m_transitionStart;