Pencil2D Animation
Download Community News Docs Contribute
  • Overview
  • Articles
  • Code
  •  
  • Class List
  • Class Index
  • Class Hierarchy
  • Class Members
  • File List
Loading...
Searching...
No Matches
  • core_lib
  • src
  • graphics
  • vector
vectorimage.h
1/*
2
3Pencil2D - Traditional Animation Software
4Copyright (C) 2005-2007 Patrick Corrieri & Pascal Naidon
5Copyright (C) 2012-2020 Matthew Chiawen Chang
6
7This program is free software; you can redistribute it and/or
8modify it under the terms of the GNU General Public License
9as published by the Free Software Foundation; version 2 of the License.
10
11This program is distributed in the hope that it will be useful,
12but WITHOUT ANY WARRANTY; without even the implied warranty of
13MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14GNU General Public License for more details.
15
16*/
17#ifndef VECTORIMAGE_H
18#define VECTORIMAGE_H
19
20#include <QTransform>
21
22#include "bezierarea.h"
23#include "beziercurve.h"
24#include "vertexref.h"
25#include "keyframe.h"
26
27class Object;
28class QPainter;
29class QImage;
30
31class VectorImage : public KeyFrame
32{
33public:
34 VectorImage();
35 VectorImage(const VectorImage&);
36 ~VectorImage() override;
37 VectorImage& operator=(const VectorImage& a);
38
39 VectorImage* clone() const override;
40
41 bool read(QString filePath);
42 Status write(QString filePath, QString format);
43
44 Status createDomElement(QXmlStreamWriter& doc);
45 void loadDomElement(QDomElement element);
46
47 BezierCurve& curve(int i);
48
49 void insertCurve(int position, BezierCurve& newCurve, qreal factor, bool interacts);
50 void addCurve(BezierCurve& newCurve, qreal factor, bool interacts = true);
51 void removeCurveAt(int i);
52 void select(QRectF rectangle);
53 void setSelected(int curveNumber, bool YesOrNo);
54 void setSelected(int curveNumber, int vertexNumber, bool YesOrNo);
55 void setSelected(VertexRef vertexRef, bool YesOrNo);
56 void setSelected(QList<int> curveList, bool YesOrNo);
57 void setSelected(QList<VertexRef> vertexList, bool YesOrNo);
58 bool isSelected(int curveNumber);
59 bool isSelected(int curveNumber, int vertexNumber);
60 bool isSelected(VertexRef vertexRef);
61 bool isSelected(QList<int> curveList);
62 bool isSelected(QList<VertexRef> vertexList);
63 bool isAnyCurveSelected();
64 void setAreaSelected(int areaNumber, bool YesOrNo);
65 bool isAreaSelected(int areaNumber);
66 bool isPathFilled();
67
68 int getFirstSelectedCurve();
69 int getFirstSelectedArea();
70 int getNumOfCurvesSelected();
71 void selectAll();
72 void deselectAll();
73 QRectF getSelectionRect() { return mSelectionRect; }
74 void setSelectionRect(QRectF rectange);
75 void calculateSelectionRect();
76 void deleteSelection();
77 void deleteSelectedPoints();
78 void removeVertex(int curve, int vertex);
79
80 QRectF getBoundsOfTransformedCurves() const;
81
82 bool isEmpty() const { return mCurves.isEmpty(); }
83
84 void paste(VectorImage&);
85
86 int getColorNumber(QPointF point);
87 bool usesColor(int index);
88 void removeColor(int index);
89 int getCurvesColor(int curve);
90 bool isCurveVisible(int curve);
91 void moveColor(int start, int end);
92
93 void paintImage(QPainter& painter, const Object& object, bool simplified, bool showThinCurves, bool antialiasing);
94
95 void clear();
96 void clean();
97 void setSelectionTransformation(QTransform transform);
98 void applySelectionTransformation();
99 void applySelectionTransformation(QTransform transform);
100 void applyColorToSelectedCurve(int colorNumber);
101 void applyColorToSelectedArea(int colorNumber);
102 void applyWidthToSelection(qreal width);
103 void applyFeatherToSelection(qreal feather);
104 void applyOpacityToSelection(qreal opacity);
105 void applyInvisibilityToSelection(bool YesOrNo);
106 void applyVariableWidthToSelection(bool YesOrNo);
107 void fillContour(QList<QPointF> contourPath, int color);
108 void fillSelectedPath(int color);
109 // void fill(QPointF point, int color, float tolerance);
110 void addArea(BezierArea bezierArea);
111 int getFirstAreaNumber(QPointF point);
112 int getLastAreaNumber(QPointF point);
113 int getLastAreaNumber(QPointF point, int maxAreaNumber);
114 int getLastCurveNumber();
115 BezierCurve getLastCurve();
116 void removeArea(QPointF point);
117 void removeAreaInCurve(int curve, int areaNumber);
118 void updateArea(BezierArea& bezierArea);
119
120 QList<int> getCurvesCloseTo(QPointF thisPoint, qreal maxDistance);
121 QList<BezierCurve> getSelectedCurves();
122 QList<int> getSelectedCurveNumbers();
123 BezierArea getSelectedArea(QPointF currentPoint);
124 VertexRef getClosestVertexTo(const BezierCurve& curve, int curveNum, QPointF thisPoint);
125 QList<VertexRef> getCurveVertices(int curveNumber);
126 QList<VertexRef> getVerticesCloseTo(QPointF thisPoint, qreal maxDistance);
127 QList<VertexRef> getVerticesCloseTo(QPointF thisPoint, qreal maxDistance, QList<VertexRef>* listOfPoints);
128 QList<VertexRef> getVerticesCloseTo(VertexRef thisPointRef, qreal maxDistance);
129 QList<VertexRef> getVerticesCloseTo(VertexRef thisPointRef, qreal maxDistance, QList<VertexRef>* listOfPoints);
130 QList<VertexRef> getAndRemoveVerticesCloseTo(QPointF thisPoint, qreal maxDistance, QList<VertexRef>* listOfPoints);
131 QList<VertexRef> getAndRemoveVerticesCloseTo(VertexRef thisPointRef, qreal maxDistance, QList<VertexRef>* listOfPoints);
132 QPointF getVertex(int curveNumber, int vertexNumber);
133 QPointF getVertex(VertexRef vertexRef);
134 QPointF getC1(int curveNumber, int vertexNumber);
135 QPointF getC1(VertexRef vertexRef);
136 QPointF getC2(int curveNumber, int vertexNumber);
137 QPointF getC2(VertexRef vertexRef);
138 QList<VertexRef> getAllVertices();
139 int getCurveSize(int curveNumber);
140
141 QPainterPath getStrokedPath() { return mGetStrokedPath; }
142
143 QList<BezierArea> mArea;
144 QList<int> mCurveDisplayOrders;
145
146 qreal getDistance(VertexRef r1, VertexRef r2);
147
148 QSize getSize() { return mSize; }
149
150 void setOpacity(qreal opacity) { mOpacity = opacity; }
151 qreal getOpacity() const { return mOpacity; }
152
153private:
154 void addPoint(int curveNumber, int vertexNumber, qreal fraction);
155
156 void checkCurveExtremity(BezierCurve& newCurve, qreal tolerance);
157 void checkCurveIntersections(BezierCurve& newCurve, qreal tolerance);
158
159 void updateImageSize(BezierCurve& updatedCurve);
160 QPainterPath mGetStrokedPath;
161
162private:
163 QList<BezierCurve> mCurves;
164
165 QRectF mSelectionRect;
166 QTransform mSelectionTransformation;
167 QSize mSize;
168 qreal mOpacity = 1.0;
169};
170
171#endif
172
BezierArea
Definition: bezierarea.h:31
BezierCurve
Definition: beziercurve.h:34
KeyFrame
Definition: keyframe.h:30
Object
Definition: object.h:42
Status
Definition: pencilerror.h:40
VectorImage
Definition: vectorimage.h:32
VectorImage::applyInvisibilityToSelection
void applyInvisibilityToSelection(bool YesOrNo)
VectorImage::applyInvisibilityToSelection.
Definition: vectorimage.cpp:1368
VectorImage::applyColorToSelectedArea
void applyColorToSelectedArea(int colorNumber)
VectorImage::applyColorToSelectedArea.
Definition: vectorimage.cpp:1315
VectorImage::addArea
void addArea(BezierArea bezierArea)
VectorImage::addArea.
Definition: vectorimage.cpp:2223
VectorImage::getClosestVertexTo
VertexRef getClosestVertexTo(const BezierCurve &curve, int curveNum, QPointF thisPoint)
VectorImage::getClosestVertexTo.
Definition: vectorimage.cpp:1429
VectorImage::getDistance
qreal getDistance(VertexRef r1, VertexRef r2)
VectorImage::getDistance.
Definition: vectorimage.cpp:2384
VectorImage::applyFeatherToSelection
void applyFeatherToSelection(qreal feather)
VectorImage::applyFeatherToSelection.
Definition: vectorimage.cpp:1341
VectorImage::getLastCurve
BezierCurve getLastCurve()
VectorImage::getLastCurve.
Definition: vectorimage.cpp:2273
VectorImage::updateArea
void updateArea(BezierArea &bezierArea)
VectorImage::updateArea.
Definition: vectorimage.cpp:2331
VectorImage::fillSelectedPath
void fillSelectedPath(int color)
VectorImage::fillSelectedPath.
Definition: vectorimage.cpp:1789
VectorImage::createDomElement
Status createDomElement(QXmlStreamWriter &doc)
VectorImage::createDomElement.
Definition: vectorimage.cpp:161
VectorImage::getCurveVertices
QList< VertexRef > getCurveVertices(int curveNumber)
VectorImage::getCurveVertices.
Definition: vectorimage.cpp:1662
VectorImage::removeArea
void removeArea(QPointF point)
VectorImage::removeArea.
Definition: vectorimage.cpp:2305
VectorImage::deselectAll
void deselectAll()
VectorImage::deselectAll.
Definition: vectorimage.cpp:839
VectorImage::loadDomElement
void loadDomElement(QDomElement element)
VectorImage::loadDomElement.
Definition: vectorimage.cpp:193
VectorImage::getNumOfCurvesSelected
int getNumOfCurvesSelected()
VectorImage::numOfCurvesSelected.
Definition: vectorimage.cpp:1754
VectorImage::isAreaSelected
bool isAreaSelected(int areaNumber)
VectorImage::isAreaSelected.
Definition: vectorimage.cpp:696
VectorImage::paste
void paste(VectorImage &)
VectorImage::paste.
Definition: vectorimage.cpp:1049
VectorImage::getSelectedCurveNumbers
QList< int > getSelectedCurveNumbers()
VectorImage::getSelectedCurveNumber.
Definition: vectorimage.cpp:1737
VectorImage::applyVariableWidthToSelection
void applyVariableWidthToSelection(bool YesOrNo)
VectorImage::applyVariableWidthToSelection.
Definition: vectorimage.cpp:1381
VectorImage::removeCurveAt
void removeCurveAt(int i)
VectorImage::removeCurveAt.
Definition: vectorimage.cpp:273
VectorImage::setSelected
void setSelected(int curveNumber, bool YesOrNo)
VectorImage::setSelected.
Definition: vectorimage.cpp:616
VectorImage::paintImage
void paintImage(QPainter &painter, const Object &object, bool simplified, bool showThinCurves, bool antialiasing)
VectorImage::paintImage.
Definition: vectorimage.cpp:1191
VectorImage::calculateSelectionRect
void calculateSelectionRect()
VectorImage::calculateSelectionRect.
Definition: vectorimage.cpp:883
VectorImage::getLastCurveNumber
int getLastCurveNumber()
VectorImage::getLastCurveNumber.
Definition: vectorimage.cpp:2264
VectorImage::removeAreaInCurve
void removeAreaInCurve(int curve, int areaNumber)
VectorImage::removeAreaInCurve.
Definition: vectorimage.cpp:2321
VectorImage::isPathFilled
bool isPathFilled()
VectorImage::isPathFilled.
Definition: vectorimage.cpp:705
VectorImage::applyColorToSelectedCurve
void applyColorToSelectedCurve(int colorNumber)
VectorImage::applyColorToSelectedCurve.
Definition: vectorimage.cpp:1302
VectorImage::getSelectedArea
BezierArea getSelectedArea(QPointF currentPoint)
VectorImage::getSelectedArea.
Definition: vectorimage.cpp:1772
VectorImage::usesColor
bool usesColor(int index)
VectorImage::usesColor.
Definition: vectorimage.cpp:1136
VectorImage::addCurve
void addCurve(BezierCurve &newCurve, qreal factor, bool interacts=true)
VectorImage::addCurve.
Definition: vectorimage.cpp:341
VectorImage::getC1
QPointF getC1(int curveNumber, int vertexNumber)
VectorImage::getC1.
Definition: vectorimage.cpp:1601
VectorImage::addPoint
void addPoint(int curveNumber, int vertexNumber, qreal fraction)
VectorImage::addPoint.
Definition: vectorimage.cpp:230
VectorImage::getAllVertices
QList< VertexRef > getAllVertices()
VectorImage::getAllVertices.
Definition: vectorimage.cpp:1684
VectorImage::getColorNumber
int getColorNumber(QPointF point)
VectorImage::getColorNumber.
Definition: vectorimage.cpp:1097
VectorImage::removeVertex
void removeVertex(int curve, int vertex)
VectorImage::removeVertex.
Definition: vectorimage.cpp:952
VectorImage::removeColor
void removeColor(int index)
VectorImage::removeColor.
Definition: vectorimage.cpp:1153
VectorImage::read
bool read(QString filePath)
VectorImage::read.
Definition: vectorimage.cpp:73
VectorImage::fillContour
void fillContour(QList< QPointF > contourPath, int color)
VectorImage::fillContour.
Definition: vectorimage.cpp:1829
VectorImage::checkCurveExtremity
void checkCurveExtremity(BezierCurve &newCurve, qreal tolerance)
VectorImage::checkCurveExtremity.
Definition: vectorimage.cpp:351
VectorImage::write
Status write(QString filePath, QString format)
VectorImage::write.
Definition: vectorimage.cpp:112
VectorImage::applyWidthToSelection
void applyWidthToSelection(qreal width)
VectorImage::applyWidthToSelection.
Definition: vectorimage.cpp:1328
VectorImage::getLastAreaNumber
int getLastAreaNumber(QPointF point)
VectorImage::getLastAreaNumber.
Definition: vectorimage.cpp:2256
VectorImage::getFirstSelectedArea
int getFirstSelectedArea()
VectorImage::getFirstSelectedArea.
Definition: vectorimage.cpp:800
VectorImage::selectAll
void selectAll()
VectorImage::selectAll.
Definition: vectorimage.cpp:813
VectorImage::getAndRemoveVerticesCloseTo
QList< VertexRef > getAndRemoveVerticesCloseTo(QPointF thisPoint, qreal maxDistance, QList< VertexRef > *listOfPoints)
VectorImage::getAndRemoveVerticesCloseTo.
Definition: vectorimage.cpp:1532
VectorImage::getCurvesColor
int getCurvesColor(int curve)
VectorImage::getCurvesColor.
Definition: vectorimage.cpp:1112
VectorImage::getC2
QPointF getC2(int curveNumber, int vertexNumber)
VectorImage::getC2.
Definition: vectorimage.cpp:1632
VectorImage::getSelectedCurves
QList< BezierCurve > getSelectedCurves()
VectorImage::getSelectedCurve.
Definition: vectorimage.cpp:1720
VectorImage::applyOpacityToSelection
void applyOpacityToSelection(qreal opacity)
VectorImage::applyOpacityToSelection.
Definition: vectorimage.cpp:1354
VectorImage::getFirstSelectedCurve
int getFirstSelectedCurve()
VectorImage::getFirstSelectedCurve.
Definition: vectorimage.cpp:786
VectorImage::checkCurveIntersections
void checkCurveIntersections(BezierCurve &newCurve, qreal tolerance)
VectorImage::checkCurveIntersections.
Definition: vectorimage.cpp:437
VectorImage::getVertex
QPointF getVertex(int curveNumber, int vertexNumber)
VectorImage::getVertex.
Definition: vectorimage.cpp:1566
VectorImage::clear
void clear()
VectorImage::clear.
Definition: vectorimage.cpp:1249
VectorImage::deleteSelectedPoints
void deleteSelectedPoints()
VectorImage::deleteSelectedPoints.
Definition: vectorimage.cpp:1030
VectorImage::clean
void clean()
VectorImage::clean.
Definition: vectorimage.cpp:1259
VectorImage::setAreaSelected
void setAreaSelected(int areaNumber, bool YesOrNo)
VectorImage::setAreaSelected.
Definition: vectorimage.cpp:684
VectorImage::insertCurve
void insertCurve(int position, BezierCurve &newCurve, qreal factor, bool interacts)
VectorImage::insertCurve.
Definition: vectorimage.cpp:295
VectorImage::applySelectionTransformation
void applySelectionTransformation()
VectorImage::applySelectionTransformation.
Definition: vectorimage.cpp:1274
VectorImage::setSelectionTransformation
void setSelectionTransformation(QTransform transform)
VectorImage::setSelectionTransformation.
Definition: vectorimage.cpp:897
VectorImage::setSelectionRect
void setSelectionRect(QRectF rectange)
VectorImage::setSelectionRect.
Definition: vectorimage.cpp:859
VectorImage::getFirstAreaNumber
int getFirstAreaNumber(QPointF point)
VectorImage::getFirstAreaNumber.
Definition: vectorimage.cpp:2235
VectorImage::getVerticesCloseTo
QList< VertexRef > getVerticesCloseTo(QPointF thisPoint, qreal maxDistance)
VectorImage::getVerticesCloseTo.
Definition: vectorimage.cpp:1458
VectorImage::isAnyCurveSelected
bool isAnyCurveSelected()
VectorImage::isAnyCurveSelected.
Definition: vectorimage.cpp:826
VectorImage::isSelected
bool isSelected(int curveNumber)
VectorImage::isSelected.
Definition: vectorimage.cpp:726
VectorImage::getCurvesCloseTo
QList< int > getCurvesCloseTo(QPointF thisPoint, qreal maxDistance)
VectorImage::getCurvesCloseTo.
Definition: vectorimage.cpp:1398
VectorImage::updateImageSize
void updateImageSize(BezierCurve &updatedCurve)
VectorImage::updateImageSize.
Definition: vectorimage.cpp:2393
VectorImage::getCurveSize
int getCurveSize(int curveNumber)
VectorImage::getCurveSize.
Definition: vectorimage.cpp:1704
VectorImage::deleteSelection
void deleteSelection()
VectorImage::deleteSelection.
Definition: vectorimage.cpp:906
VertexRef
Definition: vertexref.h:22
QDomElement
QImage
QList
QList::isEmpty
bool isEmpty() const const
QPainter
QPainterPath
QPointF
QRectF
QSize
QString
QTransform
QXmlStreamWriter
Generated on Thu May 8 2025 04:47:53 for Pencil2D by doxygen 1.9.6 based on revision 4513250b1d5b1a3676ec0e67b06b7a885ceaae39