Logo Search packages:      
Sourcecode: kdenlive version File versions  Download package

ktrackview.h

/***************************************************************************
                         kmmtimelinetrackview.h  -  description
                            -------------------
   begin                : Wed Aug 7 2002
   copyright            : (C) 2002 by Jason Wood
   email                : jasonwood@blueyonder.co.uk
***************************************************************************/

/***************************************************************************
 *                                                                         *
 *   This program is free software; you can redistribute it and/or modify  *
 *   it under the terms of the GNU General Public License as published by  *
 *   the Free Software Foundation; either version 2 of the License, or     *
 *   (at your option) any later version.                                   *
 *                                                                         *
 ***************************************************************************/

#ifndef KTRACKVIEW_H
#define KTRACKVIEW_H

#include <qwidget.h>
#include <qpixmap.h>

#include "gentime.h"
#include "trackpanelfunctionfactory.h"
#include "rangelist.h"
#include "dynamicToolTip.h"

class DocClipBase;

namespace Gui {

    class KTimeLine;
    class KTrackPanel;

/**Timeline track view area.
  *@author Jason Wood
  */

00040     class KTrackView:public QWidget {
      Q_OBJECT public:
      KTrackView(KTimeLine & timeLine, double fps, QWidget * parent =
          0, const char *name = 0);
      ~KTrackView();
      void resizeEvent(QResizeEvent * event);
      void paintEvent(QPaintEvent * event);
      /** This event occurs when the mouse has been moved. */
      void mouseMoveEvent(QMouseEvent * event);
      /** This event occurs when a mouse button is released. */
      void mouseReleaseEvent(QMouseEvent * event);
      /** This event occurs when a mouse button is pressed. */
      void mousePressEvent(QMouseEvent * event);
      /** This event occurs when a double click occurs. */
      void mouseDoubleClickEvent(QMouseEvent * event);

      /** Returns the track panel that lies at the specified y coordinate on the
      TimelineTrackView. */
      KTrackPanel *panelAt(int y);

      virtual void dragEnterEvent(QDragEnterEvent *);
      virtual void dragMoveEvent(QDragMoveEvent *);
      virtual void dragLeaveEvent(QDragLeaveEvent *);
      virtual void dropEvent(QDropEvent *);

      void registerFunction(const QString & name, TrackPanelFunction * function);
      void clearFunctions();
      void setDragFunction(const QString & name);
      void tip(const QPoint &pos, QRect &rect, QString &tipText);
      void drawSelection(QPoint start, QPoint end);
      void setFrameRate(bool fps);
      void setReady(bool ready);

      protected:
          void wheelEvent( QWheelEvent * e );

      private:                // Private methods
        RangeList < int >m_bufferDrawList;
        void drawBackBuffer();
        void drawBackBuffer(int start, int end);
      TrackPanelFunction *getApplicableFunction(KTrackPanel * panel,
      const QString & editMode, QMouseEvent * event);
      int m_startTrack;
      int m_endTrack;
      QColor m_selectedColor;
      QPixmap m_backBuffer;
       KTimeLine & m_timeline;
      /** True if the back buffer needs to be redrawn. */
00088       bool m_bufferInvalid;
      bool m_ready;
      int m_trackBaseNum;
      bool m_showMarkers;
      KTrackPanel *m_panelUnderMouse;
      QPoint m_selectionStart;
      QPoint m_selectionEnd;
      QPixmap m_darkenPixmap;

      /** The current function that is in operation*/
00098       TrackPanelFunction *m_function;

      /** This function will be called if a drag operation starts/stops. */
00101       TrackPanelFunction *m_dragFunction;

      /** Factory containing the various decorating functions that can be applied to different tracks */
00104       TrackPanelFunctionFactory m_factory;
      GenTime currentSeekPos;
      DynamicToolTip *trackview_tips;
      double m_fps;

    public slots:       // Public slots
      /** Invalidate the back buffer, alerting the trackview that it should redraw itself. */
      void scrollBackBuffer(int value);
      void invalidateBackBuffer(int startTrack = 0, int endTrack = -1);
        void invalidatePartialBackBuffer(int pos1, int pos2, int startTrack = 0, int endTrack = -1);
        void setShowAllMarkers(bool show);

    signals: 
        void rightButtonPressed();
        void changeZoom(bool);
    };

}                       // namespace Gui
#endif

Generated by  Doxygen 1.6.0   Back to index