Kage Studio 0.7.240121
A Simple Free and Open Source 2D Animation Software
Loading...
Searching...
No Matches
vectordatamanager.h
Go to the documentation of this file.
1/*
2 * Kage Studio - a simple free and open source vector-based 2D animation software
3 * Copyright (C) 2011~2024 Mj Mendoza IV
4 *
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License
16 * along with this program; if not, write to the Free Software
17 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
18 * MA 02110-1301, USA. Or, see <https://www.gnu.org/licenses/>.
19 *
20 */
21
22#ifndef GTKMM_KAGE_MANAGER_DATA_VECTOR_Hx
23 #define GTKMM_KAGE_MANAGER_DATA_VECTOR_Hx
24
25 #include <vector>
26 #include <iostream>
27
28 #include "data/color.h"
29 #include "data/point.h"
30 #include "data/strokecolor.h"
31 #include "data/vectordata.h"
32
33 class Kage; //forward declaration
34
36 public:
37 static unsigned int idmaker;
39 VectorDataManager(std::vector<VectorData> p_vectorData);
40 virtual ~VectorDataManager();
41
42 void setVectorData(std::vector<VectorData> p_vectorData);
43 std::vector<VectorData> getVectorData();
45
46 void clear();
47 void addInit();
48 void addInit(PointData p_point);
49 void addFill(ColorData p_color);
50 void addFill(std::string p_gradientID);
51 void addEndFill();
52 void addClosePath();
53 void addCubic(PointData p_point1, PointData p_point2, PointData p_point3);
54 void addQuadratic(PointData p_point1, PointData p_point2, PointData p_point3);
55 void addLine(PointData p_point);
56 void addLinePoly(PointData p_point, double p_x, double p_y);
57 void addMove(PointData p_point);
58 void addLineStyle(StrokeColorData p_stroke);
59
60 void addImage(PointData p_IDandBuff, PointData p_xy, PointData p_size, PointData p_scale, PointData p_rotateAlpha);
61
62// void init(ColorData p_fill, StrokeColorData p_stroke);
63 void push(VectorDataManager p_vectorsData);
64
65 bool isEmpty();
66
67 //for use on z-ordering~ish
68 std::vector<unsigned int> raiseSelectedShape(std::vector<unsigned int> p_selectedShapes);
69 std::vector<unsigned int> lowerSelectedShape(std::vector<unsigned int> p_selectedShapes);
70 std::vector<unsigned int> raiseToTopSelectedShape(std::vector<unsigned int> p_selectedShapes);
71 std::vector<unsigned int> lowerToBottomSelectedShape(std::vector<unsigned int> p_selectedShapes);
72 std::vector<unsigned int> groupSelectedShapes(std::vector<unsigned int> p_selectedShapes);
73 std::vector<unsigned int> ungroupSelectedShapes(std::vector<unsigned int> p_selectedShapes);
74 std::vector<unsigned int> duplicateShapes(std::vector<unsigned int> p_selectedShapes);
75 bool flipHorizontalSelectedShape(std::vector<unsigned int> p_selectedShapes);
76 bool flipVerticalSelectedShape(std::vector<unsigned int> p_selectedShapes);
77
78 bool recenterRotationPoint(std::vector<unsigned int> p_selectedShapes);
79
80 const unsigned int _NO_SELECTION = -1;
81 std::vector<unsigned int> _selectedNodes;
82 std::vector<unsigned int> _selectedShapes;
83 unsigned int getShape(unsigned int p_index);
84 bool isSelectedShape(unsigned int p_index);
85 void addSelectedShape(unsigned int p_index);
86 std::vector<unsigned int> tryMultiSelectShapes_populateShapes();
87 std::vector<unsigned int> selectAllShapes();
88 bool cutSelectedShapes();
89 std::vector<VectorData> copySelectedShapes(std::vector<unsigned int> p_selectedShapes);
90 std::vector<unsigned int> pasteSelectedShapes(std::vector<VectorData> p_vectorDataCopyBuffer);
91 bool deleteSelectedShapes(std::vector<unsigned int> p_selectedShapes);
92
93 void add(VectorData::type p_type, ColorData p_fill, StrokeColorData p_stroke);
94 void add(VectorData::type p_type, std::string p_fillGradientID, StrokeColorData p_stroke);
95
96 std::vector<VectorData> vectorData;
97
98 void addCurve(PointData p_point1, PointData p_point2, PointData p_point3, VectorData::type p_curveType);
99 };
100#endif //GTKMM_KAGE_MANAGER_DATA_VECTOR_Hx
Definition color.h:28
Definition kage.h:74
Definition point.h:27
Definition strokecolor.h:27
type
Definition vectordata.h:32
void addLine(PointData p_point)
Definition vectordatamanager.cpp:289
std::vector< unsigned int > groupSelectedShapes(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:816
std::vector< VectorData > copySelectedShapes(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:480
bool isSelectedShape(unsigned int p_index)
Definition vectordatamanager.cpp:406
bool flipVerticalSelectedShape(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:985
void addCurve(PointData p_point1, PointData p_point2, PointData p_point3, VectorData::type p_curveType)
Definition vectordatamanager.cpp:352
bool cutSelectedShapes()
Definition vectordatamanager.cpp:460
void setVectorData(std::vector< VectorData > p_vectorData)
Definition vectordatamanager.cpp:49
std::vector< unsigned int > _selectedShapes
Definition vectordatamanager.h:82
unsigned int getShape(unsigned int p_index)
Definition vectordatamanager.cpp:394
std::vector< unsigned int > raiseToTopSelectedShape(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:755
void addCubic(PointData p_point1, PointData p_point2, PointData p_point3)
Definition vectordatamanager.cpp:253
void add(VectorData::type p_type, ColorData p_fill, StrokeColorData p_stroke)
Definition vectordatamanager.cpp:70
VectorDataManager clone()
Definition vectordatamanager.cpp:242
bool isEmpty()
Definition vectordatamanager.cpp:390
virtual ~VectorDataManager()
Definition vectordatamanager.cpp:42
std::vector< unsigned int > tryMultiSelectShapes_populateShapes()
Definition vectordatamanager.cpp:429
void addSelectedShape(unsigned int p_index)
Definition vectordatamanager.cpp:418
void push(VectorDataManager p_vectorsData)
Definition vectordatamanager.cpp:61
static unsigned int idmaker
Definition vectordatamanager.h:37
std::vector< unsigned int > duplicateShapes(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:885
std::vector< unsigned int > lowerToBottomSelectedShape(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:784
std::vector< unsigned int > _selectedNodes
Definition vectordatamanager.h:81
void addLineStyle(StrokeColorData p_stroke)
Definition vectordatamanager.cpp:328
std::vector< unsigned int > pasteSelectedShapes(std::vector< VectorData > p_vectorDataCopyBuffer)
Definition vectordatamanager.cpp:509
void addImage(PointData p_IDandBuff, PointData p_xy, PointData p_size, PointData p_scale, PointData p_rotateAlpha)
Definition vectordatamanager.cpp:370
void addQuadratic(PointData p_point1, PointData p_point2, PointData p_point3)
Definition vectordatamanager.cpp:257
std::vector< unsigned int > raiseSelectedShape(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:575
std::vector< unsigned int > selectAllShapes()
Definition vectordatamanager.cpp:440
bool deleteSelectedShapes(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:526
void addLinePoly(PointData p_point, double p_x, double p_y)
Definition vectordatamanager.cpp:261
std::vector< unsigned int > ungroupSelectedShapes(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:842
void addClosePath()
Definition vectordatamanager.cpp:340
VectorDataManager()
Definition vectordatamanager.cpp:26
std::vector< VectorData > getVectorData()
Definition vectordatamanager.cpp:53
const unsigned int _NO_SELECTION
Definition vectordatamanager.h:80
void clear()
Definition vectordatamanager.cpp:57
bool flipHorizontalSelectedShape(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:902
void addMove(PointData p_point)
Definition vectordatamanager.cpp:312
bool recenterRotationPoint(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:111
std::vector< unsigned int > lowerSelectedShape(std::vector< unsigned int > p_selectedShapes)
Definition vectordatamanager.cpp:666
void addEndFill()
Definition vectordatamanager.cpp:235
void addInit()
Definition vectordatamanager.cpp:91
std::vector< VectorData > vectorData
Definition vectordatamanager.h:96
void addFill(ColorData p_color)
Definition vectordatamanager.cpp:211