Branch data Line data Source code
1 : : /* 2 : : * libpal - Automated Placement of Labels Library 3 : : * 4 : : * Copyright (C) 2008 Maxence Laurent, MIS-TIC, HEIG-VD 5 : : * University of Applied Sciences, Western Switzerland 6 : : * http://www.hes-so.ch 7 : : * 8 : : * Contact: 9 : : * maxence.laurent <at> heig-vd <dot> ch 10 : : * or 11 : : * eric.taillard <at> heig-vd <dot> ch 12 : : * 13 : : * This file is part of libpal. 14 : : * 15 : : * libpal is free software: you can redistribute it and/or modify 16 : : * it under the terms of the GNU General Public License as published by 17 : : * the Free Software Foundation, either version 3 of the License, or 18 : : * (at your option) any later version. 19 : : * 20 : : * libpal is distributed in the hope that it will be useful, 21 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of 22 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 23 : : * GNU General Public License for more details. 24 : : * 25 : : * You should have received a copy of the GNU General Public License 26 : : * along with libpal. If not, see <http://www.gnu.org/licenses/>. 27 : : * 28 : : */ 29 : : 30 : : #ifndef PAL_UTIL_H 31 : : #define PAL_UTIL_H 32 : : 33 : : #define SIP_NO_FILE 34 : : 35 : : 36 : : #include <QList> 37 : : #include <vector> 38 : : #include <memory> 39 : : 40 : : namespace pal 41 : : { 42 : : 43 : : class LabelPosition; 44 : : class Layer; 45 : : class FeaturePart; 46 : : class PointSet; 47 : : 48 : : /** 49 : : * \ingroup core 50 : : * \brief For usage in problem solving algorithm 51 : : * \note not available in Python bindings 52 : : */ 53 : 0 : class Feats 54 : : { 55 : : public: 56 : : //! Constructor for Feats 57 : 0 : Feats() = default; 58 : : 59 : 0 : FeaturePart *feature = nullptr; 60 : 0 : PointSet *shape = nullptr; 61 : 0 : double priority = 0; 62 : : std::vector< std::unique_ptr< LabelPosition > > candidates; 63 : : }; 64 : : 65 : : 66 : : struct ElemTrans 67 : : { 68 : : int feat; 69 : : int old_label; 70 : : int new_label; 71 : : }; 72 : : 73 : : struct Point 74 : : { 75 : : double x, y; 76 : : }; 77 : : 78 : : #define EPSILON 1e-9 79 : : 80 : : /** 81 : : * \class pal::Util 82 : : * \note not available in Python bindings 83 : : * \brief Pal utilities. 84 : : * \ingroup core 85 : : */ 86 : : class Util 87 : : { 88 : : public: 89 : : 90 : : static QLinkedList<const GEOSGeometry *> *unmulti( const GEOSGeometry *the_geom ); 91 : : }; 92 : : 93 : : 94 : : } // namespace 95 : : 96 : : Q_DECLARE_TYPEINFO( pal::Point, Q_PRIMITIVE_TYPE ); 97 : : 98 : : #endif