#include <QPainter>
#include <QStyleOptionGraphicsItem>
#include <QCursor>
+#include <QGraphicsView>
OnMonitorCornersItem::OnMonitorCornersItem(QGraphicsItem* parent) :
QGraphicsPolygonItem(parent),
m_selectedCorner(-1),
- m_modified(false)
+ m_modified(false),
+ m_view(NULL)
{
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
return NoAction;
QPainterPath mouseArea;
- mouseArea.addRect(pos.x() - 6, pos.y() - 6, 12, 12);
+ qreal size = 12;
+ if (getView())
+ size /= m_view->matrix().m11();
+ mouseArea.addRect(pos.x() - size / 2, pos.y() - size / 2, size, size);
for (int i = 0; i < 4; ++i) {
if (mouseArea.contains(polygon().at(i))) {
*corner = i;
return points;
}
+bool OnMonitorCornersItem::getView()
+{
+ if (m_view)
+ return true;
+
+ if (scene() && scene()->views().count()) {
+ m_view = scene()->views()[0];
+ return true;
+ } else {
+ return false;
+ }
+}
+
#include "onmonitorcornersitem.moc"
#include <QtCore>
#include <QGraphicsPolygonItem>
+class QGraphicsView;
+
class OnMonitorCornersItem : public QObject, public QGraphicsPolygonItem
{
Q_OBJECT
/** @brief Returns the points of this polygon but sorted clockwise. */
QList <QPointF> sortedClockwise();
+ /** @brief Tries to get the view of the scene. */
+ bool getView();
+
cornersActions m_mode;
/** Number of the selected corner or if in MoveSide mode number of the first corner on this side */
int m_selectedCorner;
QPointF m_lastPoint;
bool m_modified;
+ QGraphicsView *m_view;
+
signals:
void changed();
};
#include <QPainter>
#include <QStyleOptionGraphicsItem>
#include <QCursor>
+#include <QGraphicsView>
OnMonitorRectItem::OnMonitorRectItem(const QRectF &rect, double dar, QGraphicsItem* parent) :
QGraphicsRectItem(rect, parent),
m_dar(dar),
- m_modified(false)
+ m_modified(false),
+ m_view(NULL)
{
setFlags(QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemIsSelectable);
right.lineTo(pol.at(2));
QPainterPath mouseArea;
- mouseArea.addRect(pos.x() - 4, pos.y() - 4, 8, 8);
+ qreal size = 8;
+ if (getView())
+ size /= m_view->matrix().m11();
+ mouseArea.addRect(pos.x() - size / 2, pos.y() - size / 2, size, size);
// Check for collisions between the mouse and the borders
if (mouseArea.contains(pol.at(0)))
}
}
+bool OnMonitorRectItem::getView()
+{
+ if (m_view)
+ return true;
+
+ if (scene() && scene()->views().count()) {
+ m_view = scene()->views()[0];
+ return true;
+ } else {
+ return false;
+ }
+}
+
#include "onmonitorrectitem.moc"
#include <QtCore>
#include <QGraphicsRectItem>
+class QGraphicsView;
+
enum rectActions { Move, ResizeTopLeft, ResizeBottomLeft, ResizeTopRight, ResizeBottomRight, ResizeLeft, ResizeRight, ResizeTop, ResizeBottom, NoAction };
class OnMonitorRectItem : public QObject, public QGraphicsRectItem
QPointF m_lastPoint;
bool m_modified;
+ QGraphicsView *m_view;
+
+ /** @brief Tries to get the view of the scene. */
+ bool getView();
+
signals:
void changed();
};