1 /***************************************************************************
2 * Copyright (C) 2010 by Till Theato (root@ttill.de) *
4 * This program is free software; you can redistribute it and/or modify *
5 * it under the terms of the GNU General Public License as published by *
6 * the Free Software Foundation; either version 2 of the License, or *
7 * (at your option) any later version. *
9 * This program is distributed in the hope that it will be useful, *
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of *
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
12 * GNU General Public License for more details. *
14 * You should have received a copy of the GNU General Public License *
15 * along with this program; if not, write to the *
16 * Free Software Foundation, Inc., *
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA *
18 ***************************************************************************/
21 #ifndef CORNERSWIDGET_H
22 #define CORNERSWIDGET_H
24 #include "keyframeedit.h"
30 class OnMonitorCornersItem;
33 class CornersWidget : public KeyframeEdit
37 /** @brief Sets up the UI and connects it.
38 * @param monitor Project monitor
39 * @param clipPos Position of the clip in timeline
40 * @param isEffect true if used in an effect, false if used in a transition
41 * @param factor Factor by which the parameters differ from the range 0-1
42 * @param parent (optional) Parent widget */
43 CornersWidget(Monitor *monitor, QDomElement e, int minFrame, int maxFrame, Timecode tc, int activeKeyframe, QWidget* parent = 0);
44 virtual ~CornersWidget();
46 virtual void addParameter(QDomElement e, int activeKeyframe = -1);
49 /** @brief Updates the on-monitor item. */
50 void slotSyncPosition(int relTimelinePos);
54 MonitorScene *m_scene;
55 OnMonitorCornersItem *m_item;
59 /** @brief Returns the corner positions set in the row of @param keyframe. */
60 QList <QPointF> getPoints(QTableWidgetItem *keyframe);
63 /** @brief Makes sure the monitor effect scene is only visible if the clip this geometry belongs to is visible.
64 * @param renderPos Postion of the Monitor / Timeline cursor */
65 void slotCheckMonitorPosition(int renderPos);
67 /** @brief Updates the on-monitor item according to the current timeline position. */
68 void slotUpdateItem();
69 /** @brief Updates the keyframe editor according to the on-monitor item. */
70 void slotUpdateProperties();
72 /** @brief Inserts a keyframe at the current (playback) position (m_pos). */
73 void slotInsertKeyframe();
75 /** @brief Shows/Hides the lines connecting the corners in the on-monitor item according to @param show. */
76 void slotShowLines(bool show = true);
78 /** @brief Shows/Hides additional controls on the monitor according to @param show. */
79 void slotShowControls(bool show = true);
81 /** @brief Switches from normal monitor to monitor scene according to @param show. */
82 void slotShowScene(bool show = true);
85 void checkMonitorPosition(int);