summaryrefslogtreecommitdiffstats
path: root/demos/callout/callout.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'demos/callout/callout.cpp')
-rw-r--r--demos/callout/callout.cpp119
1 files changed, 0 insertions, 119 deletions
diff --git a/demos/callout/callout.cpp b/demos/callout/callout.cpp
deleted file mode 100644
index 2491368f..00000000
--- a/demos/callout/callout.cpp
+++ /dev/null
@@ -1,119 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2014 Digia Plc
-** All rights reserved.
-** For any questions to Digia, please use contact form at http://qt.digia.com
-**
-** This file is part of the Qt Enterprise Charts Add-on.
-**
-** $QT_BEGIN_LICENSE$
-** Licensees holding valid Qt Enterprise licenses may use this file in
-** accordance with the Qt Enterprise License Agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and Digia.
-**
-** If you have questions regarding the use of this file, please use
-** contact form at http://qt.digia.com
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include "callout.h"
-#include <QPainter>
-#include <QFontMetrics>
-#include <QGraphicsSceneMouseEvent>
-#include <QMouseEvent>
-
-Callout::Callout(QGraphicsItem * parent):
- QGraphicsItem(parent)
-{
-}
-
-QRectF Callout::boundingRect() const
-{
- QPointF anchor = mapFromParent(m_anchor);
- QRectF rect;
- rect.setLeft(qMin(m_rect.left(), anchor.x()));
- rect.setRight(qMax(m_rect.right(), anchor.x()));
- rect.setTop(qMin(m_rect.top(), anchor.y()));
- rect.setBottom(qMax(m_rect.bottom(), anchor.y()));
- return rect;
-}
-
-void Callout::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
-{
- Q_UNUSED(option)
- Q_UNUSED(widget)
- QPainterPath path;
- path.addRoundedRect(m_rect, 5, 5);
-
- QPointF anchor = mapFromParent(m_anchor);
- if (!m_rect.contains(anchor)) {
- QPointF point1, point2;
-
- // establish the position of the anchor point in relation to m_rect
- bool above = anchor.y() <= m_rect.top();
- bool aboveCenter = anchor.y() > m_rect.top() && anchor.y() <= m_rect.center().y();
- bool belowCenter = anchor.y() > m_rect.center().y() && anchor.y() <= m_rect.bottom();
- bool below = anchor.y() > m_rect.bottom();
-
- bool onLeft = anchor.x() <= m_rect.left();
- bool leftOfCenter = anchor.x() > m_rect.left() && anchor.x() <= m_rect.center().x();
- bool rightOfCenter = anchor.x() > m_rect.center().x() && anchor.x() <= m_rect.right();
- bool onRight = anchor.x() > m_rect.right();
-
- // get the nearest m_rect corner.
- qreal x = (onRight + rightOfCenter) * m_rect.width();
- qreal y = (below + belowCenter) * m_rect.height();
- bool cornerCase = (above && onLeft) || (above && onRight) || (below && onLeft) || (below && onRight);
- bool vertical = qAbs(anchor.x() - x) > qAbs(anchor.y() - y);
-
- qreal x1 = x + leftOfCenter * 10 - rightOfCenter * 20 + cornerCase * !vertical * (onLeft * 10 - onRight * 20);
- qreal y1 = y + aboveCenter * 10 - belowCenter * 20 + cornerCase * vertical * (above * 10 - below * 20);;
- point1.setX(x1);
- point1.setY(y1);
-
- qreal x2 = x + leftOfCenter * 20 - rightOfCenter * 10 + cornerCase * !vertical * (onLeft * 20 - onRight * 10);;
- qreal y2 = y + aboveCenter * 20 - belowCenter * 10 + cornerCase * vertical * (above * 20 - below * 10);;
- point2.setX(x2);
- point2.setY(y2);
-
- path.moveTo(point1);
- path.lineTo(mapFromParent(m_anchor));
- path.lineTo(point2);
- path = path.simplified();
- }
- painter->setBrush(QColor(255, 255, 255));
- painter->drawPath(path);
- painter->drawText(m_textRect, m_text);
-}
-
-void Callout::mousePressEvent(QGraphicsSceneMouseEvent *event)
-{
- event->setAccepted(true);
-}
-
-void Callout::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
-{
- if (event->buttons() & Qt::LeftButton){
- setPos(mapToParent(event->pos() - event->buttonDownPos(Qt::LeftButton)));
- event->setAccepted(true);
- } else {
- event->setAccepted(false);
- }
-}
-
-void Callout::setText(const QString &text)
-{
- m_text = text;
- QFontMetrics metrics(m_font);
- m_textRect = metrics.boundingRect(QRect(0, 0, 150, 150), Qt::AlignLeft, m_text);
- m_textRect.translate(5, 5);
- prepareGeometryChange();
- m_rect = m_textRect.adjusted(-5, -5, 5, 5);
-}
-
-void Callout::setAnchor(QPointF point)
-{
- m_anchor = point;
-}