1 /************************************************************************ 2 ** 3 ** @file 4 ** @author Roman Telezhynskyi <dismine(at)gmail.com> 5 ** @date 16 5, 2017 6 ** 7 ** @brief 8 ** @copyright 9 ** This source code is part of the Valentina project, a pattern making 10 ** program, whose allow create and modeling patterns of clothing. 11 ** Copyright (C) 2017 Valentina project 12 ** <https://gitlab.com/smart-pattern/valentina> All Rights Reserved. 13 ** 14 ** Valentina is free software: you can redistribute it and/or modify 15 ** it under the terms of the GNU General Public License as published by 16 ** the Free Software Foundation, either version 3 of the License, or 17 ** (at your option) any later version. 18 ** 19 ** Valentina is distributed in the hope that it will be useful, 20 ** but WITHOUT ANY WARRANTY; without even the implied warranty of 21 ** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 22 ** GNU General Public License for more details. 23 ** 24 ** You should have received a copy of the GNU General Public License 25 ** along with Valentina. If not, see <http://www.gnu.org/licenses/>. 26 ** 27 *************************************************************************/ 28 29 #ifndef VCURVEPATHITEM_H 30 #define VCURVEPATHITEM_H 31 32 #include <QGraphicsPathItem> 33 #include <QtGlobal> 34 35 #include "../vmisc/def.h" 36 37 class VCurvePathItem : public QGraphicsPathItem 38 { 39 public: 40 explicit VCurvePathItem(QGraphicsItem *parent = nullptr); 41 virtual ~VCurvePathItem() = default; 42 43 virtual QPainterPath shape() const override; 44 45 virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, 46 QWidget *widget = nullptr) override; 47 type()48 virtual int type() const override {return Type;} 49 enum { Type = UserType + static_cast<int>(Vis::CurvePathItem)}; 50 51 void SetDirectionArrows(const QVector<QPair<QLineF, QLineF>> &arrows); 52 void SetPoints(const QVector<QPointF> &points); 53 void SetWidth(qreal width); 54 protected: 55 virtual void ScalePenWidth(); 56 private: 57 Q_DISABLE_COPY(VCurvePathItem) 58 59 QVector<QPair<QLineF, QLineF>> m_directionArrows; 60 QVector<QPointF> m_points; 61 qreal m_defaultWidth; 62 }; 63 64 #endif // VCURVEPATHITEM_H 65