Krita Source Code Documentation
Loading...
Searching...
No Matches
RectangleShapeFactory.cpp
Go to the documentation of this file.
1/* This file is part of the KDE project
2 * SPDX-FileCopyrightText: 2006 Thomas Zander <zander@kde.org>
3 *
4 * SPDX-License-Identifier: LGPL-2.0-or-later
5 */
6
8#include "RectangleShape.h"
10#include "KoShapeStroke.h"
11#include <KoXmlNS.h>
14#include <KoProperties.h>
15#include "kis_assert.h"
16
17#include <KoIcon.h>
18#include <klocalizedstring.h>
19
20#include "kis_pointer_utils.h"
21
23 : KoShapeFactoryBase(RectangleShapeId, i18n("Rectangle"))
24{
25 setToolTip(i18n("A rectangle"));
26 setIconName(koIconNameCStr("rectangle-shape"));
27 setFamily("geometric");
29
30 QList<QPair<QString, QStringList> > elementNamesList;
31 elementNamesList.append(qMakePair(QString(KoXmlNS::draw), QStringList("rect")));
32 elementNamesList.append(qMakePair(QString(KoXmlNS::svg), QStringList("rect")));
33 setXmlElements(elementNamesList);
34}
35
37{
39
40 rect->setStroke(toQShared(new KoShapeStroke(1.0)));
41 rect->setShapeId(KoPathShapeId);
42
43 QLinearGradient *gradient = new QLinearGradient(QPointF(0, 0), QPointF(1, 1));
44 gradient->setCoordinateMode(QGradient::ObjectBoundingMode);
45
46 gradient->setColorAt(0.0, Qt::white);
47 gradient->setColorAt(1.0, Qt::green);
49
50 return rect;
51}
52
54{
55 KoShape *shape = createDefaultShape(documentResources);
56 RectangleShape *rectShape = dynamic_cast<RectangleShape*>(shape);
58
59 rectShape->setSize(
60 QSizeF(params->doubleProperty("width", rectShape->size().width()),
61 params->doubleProperty("height", rectShape->size().height())));
62
63 rectShape->setAbsolutePosition(
64 QPointF(params->doubleProperty("x", rectShape->absolutePosition(KoFlake::TopLeft).x()),
65 params->doubleProperty("y", rectShape->absolutePosition(KoFlake::TopLeft).y())),
67
68
69 rectShape->setCornerRadiusX(params->doubleProperty("rx", 0.0));
70 rectShape->setCornerRadiusY(params->doubleProperty("ry", 0.0));
71
72 return shape;
73}
74
75bool RectangleShapeFactory::supports(const QDomElement &e, KoShapeLoadingContext &/*context*/) const
76{
77 Q_UNUSED(e);
78 return (e.localName() == "rect" && e.namespaceURI() == KoXmlNS::draw);
79}
80
87
QList< QString > QStringList
#define KoPathShapeId
Definition KoPathShape.h:20
#define RectangleShapeId
A gradient shape background.
void setSize(const QSizeF &size) override
reimplemented from KoShape
QSizeF size() const override
reimplemented
qreal doubleProperty(const QString &name, qreal defaultValue=0.0) const
void setFamily(const QString &family)
void setToolTip(const QString &tooltip)
void setLoadingPriority(int priority)
void setIconName(const char *iconName)
void setXmlElements(const QList< QPair< QString, QStringList > > &elementNamesList)
QPointF absolutePosition(KoFlake::AnchorPosition anchor=KoFlake::Center) const
Definition KoShape.cpp:653
void setAbsolutePosition(const QPointF &newPosition, KoFlake::AnchorPosition anchor=KoFlake::Center)
Definition KoShape.cpp:668
static const QString svg
Definition KoXmlNS.h:39
static const QString draw
Definition KoXmlNS.h:27
KoShape * createDefaultShape(KoDocumentResourceManager *documentResources=0) const override
KoShape * createShape(const KoProperties *params, KoDocumentResourceManager *documentResources=0) const override
bool supports(const QDomElement &e, KoShapeLoadingContext &context) const override
QList< KoShapeConfigWidgetBase * > createShapeOptionPanels() override
void setCornerRadiusY(qreal radius)
void setCornerRadiusX(qreal radius)
#define KIS_SAFE_ASSERT_RECOVER_RETURN_VALUE(cond, val)
Definition kis_assert.h:129
#define koIconNameCStr(name)
Definition kis_icon.h:28
QSharedPointer< T > toQShared(T *ptr)
@ TopLeft
Definition KoFlake.h:86