#include <QVBoxLayout>
#include <QGridLayout>
-GeometryWidget::GeometryWidget(Monitor* monitor, Timecode timecode, int clipPos, bool isEffect, QWidget* parent ):
+
+
+GeometryWidget::GeometryWidget(Monitor* monitor, Timecode timecode, int clipPos, bool isEffect, QWidget* parent):
QWidget(parent),
m_monitor(monitor),
m_timePos(new TimecodeDisplay(timecode)),
m_geometry->fetch(&item, 0);
delete m_rect;
- m_rect = new QGraphicsRectItem(QRectF(0, 0, item.w(), item.h()));
+ m_rect = new QGraphicsRectHandleItem(QRectF(0, 0, item.w(), item.h()));
m_rect->setPos(item.x(), item.y());
m_rect->setZValue(0);
m_rect->setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
Mlt::GeometryItem item;
if (m_geometry->fetch(&item, pos) || item.key() == false) {
// no keyframe
+ m_rect->drawHandles = false;
m_scene->setEnabled(false);
m_ui.widgetGeometry->setEnabled(false);
m_ui.buttonAddDelete->setIcon(KIcon("document-new"));
m_ui.buttonAddDelete->setToolTip(i18n("Add keyframe"));
} else {
// keyframe
+ m_rect->drawHandles = true;
m_scene->setEnabled(true);
m_ui.widgetGeometry->setEnabled(true);
m_ui.buttonAddDelete->setIcon(KIcon("edit-delete"));
// Go to start if no keyframe is found
int currentPos = m_timePos->getValue();
int pos = 0;
- if(!m_geometry->prev_key(&item, currentPos - 1) && item.frame() < currentPos)
+ if (!m_geometry->prev_key(&item, currentPos - 1) && item.frame() < currentPos)
pos = item.frame();
slotPositionChanged(pos);
#include <mlt++/Mlt.h>
#include <QWidget>
+#include <QGraphicsRectItem>
+#include <QPainter>
class QDomElement;
class QGraphicsRectItem;
class KeyframeHelper;
class TimecodeDisplay;
+
+class QGraphicsRectHandleItem: public QGraphicsRectItem
+{
+public:
+
+ QGraphicsRectHandleItem(const QRectF & rect, QGraphicsItem * parent = 0):
+ QGraphicsRectItem(rect, parent),
+ drawHandles(false) {
+ }
+
+ bool drawHandles;
+
+
+ virtual void paint(QPainter *painter,
+ const QStyleOptionGraphicsItem * option,
+ QWidget* widget = 0) {
+ QGraphicsRectItem::paint(painter, option, widget);
+ if (!drawHandles) return;
+ double handleSize = 6 / painter->matrix().m11();
+ painter->fillRect(0, 0, handleSize, handleSize, QColor(Qt::yellow));
+ painter->fillRect(option->rect.width() - handleSize, 0, handleSize, handleSize, QColor(Qt::yellow));
+ painter->fillRect(option->rect.width() - handleSize, option->rect.height() - handleSize, handleSize, handleSize, QColor(Qt::yellow));
+ painter->fillRect(0, option->rect.height() - handleSize, handleSize, handleSize, QColor(Qt::yellow));
+ }
+};
+
class GeometryWidget : public QWidget
{
Q_OBJECT
int m_outPoint;
bool m_isEffect;
MonitorScene *m_scene;
- QGraphicsRectItem *m_rect;
+ QGraphicsRectHandleItem *m_rect;
KeyframeHelper *m_timeline;
/** Stores the different settings in the MLT geometry format. */
Mlt::Geometry *m_geometry;