Krita

VectorLayer.h
1 /*
2  * SPDX-FileCopyrightText: 2017 Wolthera van Hövell tot Westerflier <[email protected]>
3  *
4  * SPDX-License-Identifier: LGPL-2.0-or-later
5  */
6 #ifndef LIBKIS_VECTORLAYER_H
7 #define LIBKIS_VECTORLAYER_H
8 
9 #include <QObject>
10 
11 #include <kis_types.h>
12 
13 #include "kritalibkis_export.h"
14 #include "libkis.h"
15 
16 #include <KoShapeControllerBase.h>
17 
18 #include "Node.h"
19 #include "Shape.h"
20 
21 /**
22  * @brief The VectorLayer class
23  * A vector layer is a special layer that stores
24  * and shows vector shapes.
25  *
26  * Vector shapes all have their coordinates in points, which
27  * is a unit that represents 1/72th of an inch. Keep this in
28  * mind wen parsing the bounding box and position data.
29  */
30 
31 class KRITALIBKIS_EXPORT VectorLayer : public Node
32 {
33  Q_OBJECT
35 
36 public:
37  explicit VectorLayer(KoShapeControllerBase* shapeController, KisImageSP image, QString name, QObject *parent = 0);
38  explicit VectorLayer(KisShapeLayerSP layer, QObject *parent = 0);
39  ~VectorLayer() override;
40 public Q_SLOTS:
41 
42  /**
43  * @brief type Krita has several types of nodes, split in layers and masks. Group
44  * layers can contain other layers, any layer can contain masks.
45  *
46  * @return vectorlayer
47  */
48  virtual QString type() const override;
49 
50  /**
51  * @brief shapes
52  * @return the list of top-level shapes in this vector layer.
53  */
54  QList<Shape *> shapes() const;
55 
56  /**
57  * @brief toSvg
58  * convert the shapes in the layer to svg.
59  * @return the svg in a string.
60  */
61  QString toSvg();
62 
63  /**
64  * @brief addShapesFromSvg
65  * add shapes to the layer from a valid svg.
66  * @param svg valid svg string.
67  * @return the list of shapes added to the layer from the svg.
68  */
69  QList<Shape *> addShapesFromSvg(const QString &svg);
70 
71  /**
72  * @brief shapeAtPoint
73  * check if the position is located within any non-group shape's boundingBox() on the current layer.
74  * @param position a QPointF of the position.
75  * @return the shape at the position, or None if no shape is found.
76  */
77  Shape* shapeAtPosition(const QPointF &position) const;
78 
79  /**
80  * @brief shapeInRect
81  * get all non-group shapes that the shape's boundingBox() intersects or is contained within a given rectangle on the current layer.
82  * @param rect a QRectF
83  * @param omitHiddenShapes true if non-visible() shapes should be omitted, false if they should be included. \p omitHiddenShapes defaults to true.
84  * @param containedMode false if only shapes that are within or intersect with the outline should be included, true if only shapes that are fully contained within the outline should be included. \p containedMode defaults to false
85  * @return returns a list of shapes.
86  */
87  QList<Shape *> shapesInRect(const QRectF &rect, bool omitHiddenShapes = true, bool containedMode = false) const;
88 
89  /**
90  * @brief createGroupShape
91  * combine a list of top level shapes into a group.
92  * @param name the name of the shape.
93  * @param shapes list of top level shapes.
94  * @return if successful, a GroupShape object will be returned.
95  */
96  Shape* createGroupShape(const QString &name, QList<Shape *> shapes) const;
97 
98 };
99 
100 #endif // LIBKIS_VECTORLAYER_H
101 
virtual QString type() const
type Krita has several types of nodes, split in layers and masks.
Definition: Node.cpp:456
Q_SLOTSQ_SLOTS
The Shape class The shape class is a wrapper around Krita's vector objects.
Definition: Shape.h:37
Node represents a layer or mask in a Krita image's Node hierarchy.
Definition: Node.h:21
The VectorLayer class A vector layer is a special layer that stores and shows vector shapes.
Definition: VectorLayer.h:31
Q_DISABLE_COPY(Class)
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Wed Sep 27 2023 03:58:14 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.