1 /*
2 For general Scribus (>=1.3.2) copyright and licensing information please refer
3 to the COPYING file provided with the program. Following this notice may exist
4 a copyright and/or license notice that predates the release of Scribus 1.3.2
5 for which a new license (GPL+exception) is in place.
6 */
7 /***************************************************************************
8 *   Copyright (C) 2008 by Franz Schmid                                     *
9 *   franz.schmid@altmuehlnet.de                                            *
10 *                                                                          *
11 *   This program is free software; you can redistribute it and/or modify   *
12 *   it under the terms of the GNU General Public License as published by   *
13 *   the Free Software Foundation; either version 2 of the License, or      *
14 *   (at your option) any later version.                                    *
15 *                                                                          *
16 *   This program is distributed in the hope that it will be useful,        *
17 *   but WITHOUT ANY WARRANTY; without even the implied warranty of         *
18 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          *
19 *   GNU General Public License for more details.                           *
20 *                                                                          *
21 *   You should have received a copy of the GNU General Public License      *
22 *   along with this program; if not, write to the                          *
23 *   Free Software Foundation, Inc.,                                        *
24 *   51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.              *
25 ****************************************************************************/
26 
27 #ifndef PATHCONNECT_H
28 #define PATHCONNECT_H
29 
30 #include "fpointarray.h"
31 #include "pluginapi.h"
32 #include "scplugin.h"
33 #include "scribuscore.h"
34 
35 class ScribusDoc;
36 
37 /** \brief This is a simple "Path Connect" plugin for Scribus 1.3 and later.
38 \author Franz Schmid
39 \date November 2008
40 */
41 class PLUGIN_API PathConnectPlugin : public ScActionPlugin
42 {
43 	Q_OBJECT
44 
45 	public:
46 		// Standard plugin implementation
47 		PathConnectPlugin();
48 		virtual ~PathConnectPlugin();
49 		bool run(ScribusDoc* doc, const QString& target = QString()) override;
50 		QString fullTrName() const override;
51 		const AboutData* getAboutData() const override;
52 		void deleteAboutData(const AboutData* about) const override;
53 		void languageChange() override;
addToMainWindowMenu(ScribusMainWindow *)54 		void addToMainWindowMenu(ScribusMainWindow *) override {};
55 
56 		// Special features (none)
57 	private:
58 		FPointArray computePath(int pointOne, int pointTwo, int mode, FPointArray &p1, FPointArray &p2);
59 		FPointArray reversePath(FPointArray &path);
60 
61 		PageItem* m_item1 {nullptr};
62 		PageItem* m_item2 {nullptr};
63 		ScribusDoc* m_doc {nullptr};
64 		FPointArray originalPath1;
65 		FPointArray originalPath2;
66 		double originalXPos {0.0};
67 		double originalYPos {0.0};
68 		bool firstUpdate {false};
69 
70 	private slots:
71 		void updateEffect(int effectType, int pointOne, int pointTwo, int mode);
72 };
73 
74 extern "C" PLUGIN_API int pathconnect_getPluginAPIVersion();
75 extern "C" PLUGIN_API ScPlugin* pathconnect_getPlugin();
76 extern "C" PLUGIN_API void pathconnect_freePlugin(ScPlugin* plugin);
77 
78 #endif
79