1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /** @file 3 * Satellite -- a per node holder of data. 4 *//* 5 * Authors: 6 * see git history 7 * Jabier Arraiza Cenoz<jabier.arraiza@marker.es> 8 * 9 * Copyright (C) 2017 Authors 10 * Released under GNU GPL v2+, read the file 'COPYING' for more information. 11 */ 12 13 #ifndef SEEN_SATELLITE_H 14 #define SEEN_SATELLITE_H 15 16 #include <map> 17 #include <boost/assign.hpp> 18 #include <2geom/sbasis-geometric.h> 19 #include "util/enums.h" 20 21 22 enum SatelliteType { 23 FILLET = 0, //Fillet 24 INVERSE_FILLET, //Inverse Fillet 25 CHAMFER, //Chamfer 26 INVERSE_CHAMFER, //Inverse Chamfer 27 INVALID_SATELLITE // Invalid Satellite 28 }; 29 /** 30 * @brief Satellite a per node holder of data. 31 */ 32 33 class Satellite { 34 public: 35 36 Satellite(); 37 Satellite(SatelliteType satellite_type); 38 39 virtual ~Satellite(); setIsTime(bool set_is_time)40 void setIsTime(bool set_is_time) 41 { 42 is_time = set_is_time; 43 } setSelected(bool set_selected)44 void setSelected(bool set_selected) 45 { 46 selected = set_selected; 47 } setHasMirror(bool set_has_mirror)48 void setHasMirror(bool set_has_mirror) 49 { 50 has_mirror = set_has_mirror; 51 } setHidden(bool set_hidden)52 void setHidden(bool set_hidden) 53 { 54 hidden = set_hidden; 55 } setAmount(double set_amount)56 void setAmount(double set_amount) 57 { 58 amount = set_amount; 59 } setAngle(double set_angle)60 void setAngle(double set_angle) 61 { 62 angle = set_angle; 63 } setSteps(size_t set_steps)64 void setSteps(size_t set_steps) 65 { 66 steps = set_steps; 67 } 68 double lenToRad(double const A, Geom::Curve const &curve_in, 69 Geom::Curve const &curve_out, 70 Satellite const previousSatellite) const; 71 double radToLen(double const A, Geom::Curve const &curve_in, 72 Geom::Curve const &curve_out) const; 73 74 double time(Geom::Curve const &curve_in, bool inverse = false) const; 75 double time(double A, bool inverse, Geom::Curve const &curve_in) const; 76 double arcDistance(Geom::Curve const &curve_in) const; 77 78 void setPosition(Geom::Point const p, Geom::Curve const &curve_in, bool inverse = false); 79 Geom::Point getPosition(Geom::Curve const &curve_in, bool inverse = false) const; 80 81 void setSatelliteType(gchar const *A); 82 gchar const *getSatelliteTypeGchar() const; 83 SatelliteType satellite_type; 84 //The value stored could be a time value of the satellite in the curve or a length of distance to the node from the satellite 85 //"is_time" tells us if it's a time or length value 86 bool is_time; 87 bool selected; 88 bool has_mirror; 89 bool hidden; 90 //in "amount" we store the time or distance used in the satellite 91 double amount; 92 double angle; 93 size_t steps; 94 }; 95 96 double timeAtArcLength(double const A, Geom::Curve const &curve_in); 97 double arcLengthAt(double const A, Geom::Curve const &curve_in); 98 99 #endif // SEEN_SATELLITE_H 100 101 /* 102 Local Variables: 103 mode:c++ 104 c-file-style:"stroustrup" 105 c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) 106 indent-tabs-mode:nil 107 fill-column:99 108 End: 109 */ 110 // vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : 111