Add missing capability.cpp
[harmattan/cameraplus] / src / focusrectangle.cpp
1 /*!
2  * This file is part of CameraPlus.
3  *
4  * Copyright (C) 2012-2013 Mohammed Sameer <msameer@foolab.org>
5  *
6  * This library is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * This library is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with this library; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
19  */
20
21 #include "focusrectangle.h"
22 #include <QPainter>
23
24 #define WIDTH  4
25 #define LENGTH 30
26
27 #if defined(QT4)
28 FocusRectangle::FocusRectangle(QDeclarativeItem *parent) :
29   QDeclarativeItem(parent),
30 #elif defined(QT5)
31 FocusRectangle::FocusRectangle(QQuickItem *parent) :
32   QQuickPaintedItem(parent),
33 #endif
34   m_color(Qt::white) {
35
36 #if defined(QT4)
37   setFlag(QGraphicsItem::ItemHasNoContents, false);
38 #endif
39 }
40
41 FocusRectangle::~FocusRectangle() {
42
43 }
44
45 QColor FocusRectangle::color() const {
46   return m_color;
47 }
48
49 void FocusRectangle::setColor(const QColor& color) {
50   if (color != m_color) {
51     m_color = color;
52     emit colorChanged();
53
54     update();
55   }
56 }
57
58 #if defined(QT4)
59 void FocusRectangle::paint(QPainter* painter, const QStyleOptionGraphicsItem* option,
60                            QWidget* widget) {
61
62   QDeclarativeItem::paint(painter, option, widget);
63 #elif defined(QT5)
64 void FocusRectangle::paint(QPainter* painter) {
65 #endif
66
67   painter->save();
68
69   painter->setPen(QPen(QBrush(Qt::black), WIDTH));
70   painter->drawPath(m_path);
71
72   painter->setPen(QPen(QBrush(m_color), WIDTH - 2));
73   painter->drawPath(m_path);
74
75   painter->restore();
76 }
77
78 void FocusRectangle::geometryChanged( const QRectF& newGeometry, const QRectF& oldGeometry) {
79 #if defined(QT4)
80   QDeclarativeItem::geometryChanged(newGeometry, oldGeometry);
81 #elif defined(QT5)
82   QQuickPaintedItem::geometryChanged(newGeometry, oldGeometry);
83 #endif
84
85   qreal w = width();
86   qreal h = height();
87
88   qreal offset = WIDTH / 2;
89
90   // top left:
91   m_path = QPainterPath(QPointF(offset, LENGTH - offset));
92   m_path.lineTo(offset, offset);
93   m_path.lineTo(LENGTH - offset, offset);
94
95   // top right:
96   m_path.moveTo(w - LENGTH + offset, offset);
97   m_path.lineTo(w - offset, offset);
98   m_path.lineTo(w - offset, LENGTH - offset);
99
100   // bottom right:
101   m_path.moveTo(w - offset, h - LENGTH + offset);
102   m_path.lineTo(w - offset, h - offset);
103   m_path.lineTo(w - LENGTH + offset, h - offset);
104
105   // bottom left:
106   m_path.moveTo(LENGTH - offset, h - offset);
107   m_path.lineTo(offset, h - offset);
108   m_path.lineTo(offset, h - LENGTH + offset);
109 }