summaryrefslogtreecommitdiffstats
path: root/src/2geom
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-04-01 02:13:16 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-04-01 02:13:16 +0000
commitdff3aa428ff050c2cce501f646977ddad921feca (patch)
tree3152c9b571095e1db57af2522129d278b5f4ce39 /src/2geom
parentremoved code comments (diff)
downloadinkscape-dff3aa428ff050c2cce501f646977ddad921feca.tar.gz
inkscape-dff3aa428ff050c2cce501f646977ddad921feca.zip
Move 2Geom work to a intermediate positon -helper-
Removed dependency to helper/geom.h Now use a simple vector, not a vector of pairs of size_t and Satellite Getters and setters on Satellite removed Update store parameter to a more friendly string, like powerstroke Todo: Documentation and Fix coding style. (bzr r13645.1.63)
Diffstat (limited to 'src/2geom')
-rw-r--r--src/2geom/Makefile_insert4
-rw-r--r--src/2geom/pointwise.cpp519
-rw-r--r--src/2geom/pointwise.h108
-rw-r--r--src/2geom/satellite-enum.h51
-rw-r--r--src/2geom/satellite.cpp156
-rw-r--r--src/2geom/satellite.h188
6 files changed, 0 insertions, 1026 deletions
diff --git a/src/2geom/Makefile_insert b/src/2geom/Makefile_insert
index 8872065fb..e77f413cb 100644
--- a/src/2geom/Makefile_insert
+++ b/src/2geom/Makefile_insert
@@ -80,8 +80,6 @@
2geom/point.cpp \
2geom/point.h \
2geom/point-ops.h \
- 2geom/pointwise.cpp \
- 2geom/pointwise.h \
2geom/poly.cpp \
2geom/poly.h \
2geom/quadtree.cpp \
@@ -92,8 +90,6 @@
2geom/recursive-bezier-intersection.cpp \
2geom/region.cpp \
2geom/region.h \
- 2geom/satellite.cpp \
- 2geom/satellite.h \
2geom/sbasis-2d.cpp \
2geom/sbasis-2d.h \
2geom/sbasis.cpp \
diff --git a/src/2geom/pointwise.cpp b/src/2geom/pointwise.cpp
deleted file mode 100644
index bc82780d7..000000000
--- a/src/2geom/pointwise.cpp
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * pointwise.cpp
- * Authors:
- * 2015 Jabier Arraiza Cenoz<jabier.arraiza@marker.es>
- * Copyright 2015 authors
- *
- * This library is free software; you can redistribute it and/or
- * modify it either under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation
- * (the "LGPL") or, at your option, under the terms of the Mozilla
- * Public License Version 1.1 (the "MPL"). If you do not alter this
- * notice, a recipient may use your version of this file under either
- * the MPL or the LGPL.
- *
- * You should have received a copy of the LGPL along with this library
- * in the file COPYING-LGPL-2.1; if not, output to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * You should have received a copy of the MPL along with this library
- * in the file COPYING-MPL-1.1
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
- * OF ANY KIND, either express or implied. See the LGPL or the MPL for
- * the specific language governing rights and limitations.
- *
- */
-
-#include <2geom/pointwise.h>
-#include <2geom/ray.h>
-#include <2geom/path-intersection.h>
-#include <cmath>
-
-namespace Geom {
-
-Pointwise::Pointwise(Piecewise<D2<SBasis> > pwd2, std::vector<std::pair<size_t,Satellite> > satellites)
- : _pwd2(pwd2),_satellites(satellites),_pathInfo()
-{
- setPathInfo();
-};
-
-Pointwise::~Pointwise(){};
-
-Piecewise<D2<SBasis> >
-Pointwise::getPwd2() const
-{
- return _pwd2;
-}
-
-void
-Pointwise::setPwd2(Piecewise<D2<SBasis> > pwd2_in)
-{
- _pwd2 = pwd2_in;
- setPathInfo();
-}
-
-std::vector<std::pair<size_t,Satellite> >
-Pointwise::getSatellites() const
-{
- return _satellites;
-}
-
-void
-Pointwise::setSatellites(std::vector<std::pair<size_t,Satellite> > sats)
-{
- _satellites = sats;
-}
-
-//START QUESTION Next functions maybe is beter land outside the class?
-void
-Pointwise::setPathInfo()
-{
- setPathInfo(_pwd2);
-}
-
-void
-Pointwise::setPathInfo(Piecewise<D2<SBasis> > pwd2)
-{
- _pathInfo.clear();
- std::vector<Geom::Path> path_in = path_from_piecewise(remove_short_cuts(pwd2,0.1), 0.001);
- size_t counter = 0;
- for (PathVector::const_iterator path_it = path_in.begin(); path_it != path_in.end(); ++path_it) {
- if (path_it->empty()){
- continue;
- }
- Geom::Path::const_iterator curve_it1 = path_it->begin();
- Geom::Path::const_iterator curve_endit = path_it->end_default();
- if (path_it->closed()) {
- const Curve &closingline = path_it->back_closed();
- if (are_near(closingline.initialPoint(), closingline.finalPoint())) {
- curve_endit = path_it->end_open();
- }
- }
- while (curve_it1 != curve_endit) {
- ++curve_it1;
- counter++;
- }
- if(path_it->closed()){
- _pathInfo.push_back(std::make_pair(counter-1,true));
- } else {
- _pathInfo.push_back(std::make_pair(counter-1,false));
- }
- }
-}
-
-size_t
-Pointwise::getSubPathIndex(size_t index) const
-{
- for(size_t i = 0; i < _pathInfo.size(); i++){
- if(index <= _pathInfo[i].first){
- return i;
- }
- }
- return 0;
-}
-
-size_t
-Pointwise::getLast(size_t index) const
-{
- for(size_t i = 0; i < _pathInfo.size(); i++){
- if(index <= _pathInfo[i].first){
- return _pathInfo[i].first;
- }
- }
- return 0;
-}
-
-size_t
-Pointwise::getFirst(size_t index) const
-{
- for(size_t i = 0; i < _pathInfo.size(); i++){
- if(index <= _pathInfo[i].first){
- if(i==0){
- return 0;
- } else {
- return _pathInfo[i-1].first + 1;
- }
- }
- }
- return 0;
-}
-
-boost::optional<size_t>
-Pointwise::getPrevious(size_t index) const
-{
- if(getFirst(index) == index && getIsClosed(index)){
- return getLast(index);
- }
- if(getFirst(index) == index && !getIsClosed(index)){
- return boost::none;
- }
- return index - 1;
-}
-
-boost::optional<size_t>
-Pointwise::getNext(size_t index) const
-{
- if(getLast(index) == index && getIsClosed(index)){
- return getFirst(index);
- }
- if(getLast(index) == index && !getIsClosed(index)){
- return boost::none;
- }
- return index + 1;
-}
-
-bool
-Pointwise::getIsClosed(size_t index) const
-{
- for(size_t i = 0; i < _pathInfo.size(); i++){
- if(index <= _pathInfo[i].first){
- return _pathInfo[i].second;
- }
- }
- return false;
-}
-//END QUESTION
-
-void
-Pointwise::recalculate_for_new_pwd2(Piecewise<D2<SBasis> > A)
-{
- if( _pwd2.size() > A.size()){
- pwd2_sustract(A);
- } else if (_pwd2.size() < A.size()){
- pwd2_append(A);
- }
-}
-
-void
-Pointwise::pwd2_append(Piecewise<D2<SBasis> > A)
-{
- size_t counter = 0;
- std::vector<std::pair<size_t,Satellite> > sats;
- for (std::vector<std::pair<size_t,Satellite> >::iterator it=_satellites.begin(); it!=_satellites.end();)
- {
- if(it->second.getIsEndOpen()){
- it = _satellites.erase(it);
- } else {
- ++it;
- }
- }
- bool reversed = false;
- bool reorder = false;
- for(size_t i = 0; i < A.size(); i++){
- size_t first = getFirst(i-counter);
- size_t last = getLast(i-counter);
- setPathInfo(A);
- size_t subpathAIndex = getSubPathIndex(i);
- setPathInfo(_pwd2);
- bool changedSubpath = false;
- if(_pwd2.size() <= i-counter){
- changedSubpath = false;
- } else {
- changedSubpath = subpathAIndex != getSubPathIndex(i-counter);
- }
- if(!reorder && first == i-counter && !are_near(_pwd2[i-counter].at0(),A[i].at0(),0.001) && !changedSubpath){
- subpath_append_reorder(getSubPathIndex(first));
- reorder = true;
- i--;
- continue;
- }
- if(!reversed && first == i-counter && !are_near(_pwd2[i-counter].at0(),A[i].at0(),0.001) && !changedSubpath){
- reverse(first, last);
- reversed = true;
- }
- if(_pwd2.size() <= i-counter || !are_near(_pwd2[i-counter].at0(),A[i].at0(),0.001)){
- counter++;
- bool isEndOpen = false;
- bool active = true;
- bool hidden = false;
- bool isTime = _satellites[0].second.getIsTime();
- bool mirror_knots = _satellites[0].second.getHasMirror();
- double amount = 0.0;
- double degrees = 0.0;
- int steps = 0;
- Satellite sat(_satellites[0].second.getSatelliteType(), isTime, isEndOpen, active, mirror_knots, hidden, amount, degrees, steps);
- sats.push_back(std::make_pair(i,sat));
- } else {
- std::vector<size_t> satsFind = findSatellites(i-counter,999);
- for(size_t j = 0; j< satsFind.size(); j++){
- sats.push_back(std::make_pair(i,_satellites[satsFind[j]].second));
- }
- }
- }
- setPwd2(A);
- setSatellites(sats);
-}
-
-void
-Pointwise::pwd2_sustract(Piecewise<D2<SBasis> > A)
-{
- size_t counter = 0;
- std::vector<std::pair<size_t,Satellite> > sats;
- for (std::vector<std::pair<size_t,Satellite> >::iterator it=_satellites.begin(); it!=_satellites.end();)
- {
- if(it->second.getIsEndOpen()){
- it = _satellites.erase(it);
- } else {
- ++it;
- }
- }
- Piecewise<D2<SBasis> > pwd2 = _pwd2;
- setPwd2(A);
- for(size_t i = 0; i < _satellites.size(); i++){
- if(getLast(_satellites[i].first-counter) < _satellites[i].first-counter || !are_near(pwd2[_satellites[i].first].at0(),A[_satellites[i].first-counter].at0(),0.001)){
- counter++;
- } else {
- std::vector<size_t> satsFind = findSatellites(_satellites[i].first-counter,999);
- for(size_t j = 0; j< satsFind.size(); j++){
- sats.push_back(std::make_pair(_satellites[i].first-counter,_satellites[satsFind[j]].second));
- }
- }
- }
- setSatellites(sats);
-}
-
-void
-Pointwise::set_extremes(bool active, bool hidden, double amount, double angle)
-{
- for(size_t i = 0; i < _pathInfo.size(); i++){
- size_t firstNode = getFirst(_pathInfo[i].first);
- size_t lastNode = getLast(_pathInfo[i].first);
- if(!getIsClosed(lastNode)){
- long lastIndex = -1;
- for(size_t j = 0; j < _satellites.size(); j++){
- if(_satellites[j].first < firstNode || _satellites[j].first > lastNode){
- continue;
- }
- _satellites[j].second.setIsEndOpen(false);
- if(_satellites[j].first == firstNode){
- _satellites[j].second.setActive(active);
- _satellites[j].second.setHidden(hidden);
- if(amount >= 0){
- _satellites[j].second.setAmount(amount);
- }
- if(angle >= 0){
- _satellites[j].second.setAngle(angle);
- }
- }
- if(_satellites[j].first == lastNode && lastIndex == -1){
- lastIndex = j;
- }
- }
- Satellite sat(_satellites[0].second.getSatelliteType(), _satellites[0].second.getIsTime(), true, active, _satellites[0].second.getHasMirror(), hidden, 0.0, 0.0, _satellites[0].second.getSteps());
- _satellites.insert(_satellites.begin() + lastIndex + 1, std::make_pair(lastNode,sat));
- } else {
- for(size_t j = 0; j < _satellites.size(); j++){
- if(_satellites[j].first < firstNode){
- continue;
- }
- if(_satellites[j].first == firstNode && !_satellites[j].second.getActive()){
- _satellites[j].second.setActive(true);
- _satellites[j].second.setHidden(_satellites[j+1].second.getHidden());
- }
-
- }
- }
- }
-}
-
-void
-Pointwise::subpath_append_reorder(size_t subpath){
- std::vector<Geom::Path> path_in = path_from_piecewise(remove_short_cuts(_pwd2,0.1), 0.001);
- size_t nSubpath = 0;
- size_t counter = 0;
- std::vector<Geom::Path> tmp_path;
- Geom::Path rev;
- for (PathVector::const_iterator path_it = path_in.begin(); path_it != path_in.end(); ++path_it) {
- if (path_it->empty()){
- continue;
- }
- Geom::Path::const_iterator curve_it1 = path_it->begin();
- Geom::Path::const_iterator curve_endit = path_it->end_default();
- const Curve &closingline = path_it->back_closed();
- if (are_near(closingline.initialPoint(), closingline.finalPoint())) {
- curve_endit = path_it->end_open();
- }
- while (curve_it1 != curve_endit) {
- if(nSubpath == subpath){
- std::vector<size_t> sats = findSatellites(counter,999);
- for(size_t i = 0; i< sats.size(); i++){
- _satellites.push_back(std::make_pair(_pwd2.size(),_satellites[sats[i]].second));
- }
- deleteSatellites(counter);
- } else {
- counter++;
- }
- ++curve_it1;
- }
- if(nSubpath == subpath){
- rev = *path_it;
- } else {
- tmp_path.push_back(*path_it);
- }
- nSubpath++;
- }
- tmp_path.push_back(rev);
- setPwd2(remove_short_cuts(paths_to_pw(pathv_to_linear_and_cubic_beziers(tmp_path)),0.01));
-}
-
-void
-Pointwise::reverse(size_t start,size_t end){
- start ++;
- for(size_t i = end; i >= start; i--){
- std::vector<size_t> sats = findSatellites(i,999);
- for(size_t j = 0; j< sats.size(); j++){
- _satellites.push_back(std::make_pair(_pwd2.size(),_satellites[sats[j]].second));
- }
- deleteSatellites(i);
- }
- std::vector<Geom::Path> path_in = path_from_piecewise(remove_short_cuts(_pwd2,0.1), 0.001);
- size_t counter = 0;
- size_t nSubpath = 0;
- size_t subpath = getSubPathIndex(start);
- std::vector<Geom::Path> tmp_path;
- Geom::Path rev;
- for (PathVector::const_iterator path_it = path_in.begin(); path_it != path_in.end(); ++path_it) {
- if (path_it->empty()){
- continue;
- }
- counter ++;
- if(nSubpath == subpath){
- tmp_path.push_back(path_it->reverse());
- } else {
- tmp_path.push_back(*path_it);
- }
- nSubpath++;
- }
- setPwd2(remove_short_cuts(paths_to_pw(pathv_to_linear_and_cubic_beziers(tmp_path)),0.01));
-}
-
-double
-Pointwise::rad_to_len(double A, std::pair<size_t,Geom::Satellite> sat) const
-{
- double len = 0;
- boost::optional<size_t> d2_prev_index = getPrevious(sat.first);
- if(d2_prev_index){
- Geom::D2<Geom::SBasis> d2_in = _pwd2[*d2_prev_index];
- Geom::D2<Geom::SBasis> d2_out = _pwd2[sat.first];
- Piecewise<D2<SBasis> > offset_curve0 = Piecewise<D2<SBasis> >(d2_in)+rot90(unitVector(derivative(d2_in)))*(A);
- Piecewise<D2<SBasis> > offset_curve1 = Piecewise<D2<SBasis> >(d2_out)+rot90(unitVector(derivative(d2_out)))*(A);
- Geom::Path p0 = path_from_piecewise(offset_curve0, 0.1)[0];
- Geom::Path p1 = path_from_piecewise(offset_curve1, 0.1)[0];
- Geom::Crossings cs = Geom::crossings(p0, p1);
- if(cs.size() > 0){
- Point cp =p0(cs[0].ta);
- double p0pt = nearest_point(cp, d2_out);
- len = sat.second.toSize(p0pt,d2_out);
- } else {
- if(A > 0){
- len = rad_to_len(A * -1, sat);
- }
- }
- }
- return len;
-}
-
-double
-Pointwise::len_to_rad(double A, std::pair<size_t,Geom::Satellite> sat) const
-{
- boost::optional<size_t> d2_prev_index = getPrevious(sat.first);
- if(d2_prev_index){
- Geom::D2<Geom::SBasis> d2_in = _pwd2[*d2_prev_index];
- Geom::D2<Geom::SBasis> d2_out = _pwd2[sat.first];
- double time_in = sat.second.getOpositeTime(A, d2_in);
- double time_out = sat.second.toTime(A,d2_out);
- Geom::Point startArcPoint = (d2_in).valueAt(time_in);
- Geom::Point endArcPoint = d2_out.valueAt(time_out);
- Piecewise<D2<SBasis> > u;
- u.push_cut(0);
- u.push((d2_in), 1);
- Geom::Curve * A = path_from_piecewise(u, 0.1)[0][0].duplicate();
- Piecewise<D2<SBasis> > u2;
- u2.push_cut(0);
- u2.push((d2_out), 1);
- Geom::Curve * B = path_from_piecewise(u2, 0.1)[0][0].duplicate();
- Curve *knotCurve1 = A->portion(0, time_in);
- Curve *knotCurve2 = B->portion(time_out, 1);
- Geom::CubicBezier const *cubic1 = dynamic_cast<Geom::CubicBezier const *>(&*knotCurve1);
- Ray ray1(startArcPoint, (d2_in).valueAt(1));
- if (cubic1) {
- ray1.setPoints((*cubic1)[2], startArcPoint);
- }
- Geom::CubicBezier const *cubic2 = dynamic_cast<Geom::CubicBezier const *>(&*knotCurve2);
- Ray ray2(d2_out.valueAt(0), endArcPoint);
- if (cubic2) {
- ray2.setPoints(endArcPoint, (*cubic2)[1]);
- }
- bool ccwToggle = cross((d2_in).valueAt(1) - startArcPoint, endArcPoint - startArcPoint) < 0;
- double distanceArc = Geom::distance(startArcPoint,middle_point(startArcPoint,endArcPoint));
- double angleBetween = angle_between(ray1, ray2, ccwToggle);
- double divisor = std::sin(angleBetween/2.0);
- if(divisor > 0){
- return distanceArc/divisor;
- }
- }
- return 0;
-}
-
-void
-Pointwise::deleteSatellites(size_t A)
-{
- bool erased = false;
- for (std::vector<std::pair<size_t,Satellite> >::iterator it=_satellites.begin(); it!=_satellites.end();)
- {
- if(it->first == A){
- it = _satellites.erase(it);
- erased = true;
- } else {
- if(erased){
- it->first = it->first-1;
- }
- ++it;
- }
- }
-}
-
-std::vector<size_t>
-Pointwise::findSatellites(size_t A, long B) const
-{
- std::vector<size_t> ret;
- long counter = 0;
- for(size_t i = 0; i < _satellites.size(); i++){
- if(_satellites[i].first == A){
- if(counter >= B && B != (long)-1){
- return ret;
- }
- ret.push_back(i);
- counter++;
- }
- }
- return ret;
-}
-
-std::vector<size_t >
-Pointwise::findPeviousSatellites(size_t A, long B) const
-{
- boost::optional<size_t> previous = getPrevious(A);
- std::vector<size_t> ret;
- if(previous){
- ret = findSatellites(*previous,B);
- }
- return ret;
-}
-
-}
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
diff --git a/src/2geom/pointwise.h b/src/2geom/pointwise.h
deleted file mode 100644
index 0eb7c7073..000000000
--- a/src/2geom/pointwise.h
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * \file
- * \brief Pointwise
- *//*
- * Authors:
- * 2015 Jabier Arraiza Cenoz<jabier.arraiza@marker.es>
- * Copyright 2015 authors
- *
- * Pointwise maintains a set of "Satellite" positions along a curve/pathvector.
- * The positions are specified as arc length distances along the curve or by
- * time in the curve. Splicing operations automatically update the satellite
- * positions to preserve the intent.
- * The data is serialised to SVG using a specialiced pointwise LPE parameter to
- * handle it in th future can be a inkscape based property to paths
- * Anywhere a Piecewise is used, a Pointwise can be substituted, allowing
- * existing algorithms to correctly update satellite positions.
-
- * This library is free software; you can redistribute it and/or
- * modify it either under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation
- * (the "LGPL") or, at your option, under the terms of the Mozilla
- * Public License Version 1.1 (the "MPL"). If you do not alter this
- * notice, a recipient may use your version of this file under either
- * the MPL or the LGPL.
- *
- * You should have received a copy of the LGPL along with this library
- * in the file COPYING-LGPL-2.1; if not, output to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * You should have received a copy of the MPL along with this library
- * in the file COPYING-MPL-1.1
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
- * OF ANY KIND, either express or implied. See the LGPL or the MPL for
- * the specific language governing rights and limitations.
- *
- */
-
-#ifndef SEEN_GEOM_POINTWISE_H
-#define SEEN_GEOM_POINTWISE_H
-
-#include <vector>
-#include <2geom/sbasis.h>
-#include <2geom/sbasis-2d.h>
-#include <2geom/piecewise.h>
-#include <2geom/satellite.h>
-#include <2geom/sbasis-to-bezier.h>
-#include <2geom/path.h>
-#include "helper/geom.h"
-#include <boost/optional.hpp>
-
-namespace Geom {
-/**
- * %Pointwise function class.
- */
-
-class Pointwise
-{
- public:
- Pointwise(Piecewise<D2<SBasis> > pwd2, std::vector<std::pair<size_t,Satellite> > satellites);
- virtual ~Pointwise();
- std::vector<size_t> findSatellites(size_t A, long B = -1) const;
- std::vector<size_t> findPeviousSatellites(size_t A, long B) const;
- double rad_to_len(double A, std::pair<size_t,Geom::Satellite> sat) const;
- double len_to_rad(double A, std::pair<size_t,Geom::Satellite> sat) const;
- std::vector<std::pair<size_t,Satellite> > getSatellites() const;
- void setSatellites(std::vector<std::pair<size_t,Satellite> > sats);
- Piecewise<D2<SBasis> > getPwd2() const;
- void setPwd2(Piecewise<D2<SBasis> > pwd2_in);
- void recalculate_for_new_pwd2(Piecewise<D2<SBasis> > A);
- void pwd2_append(Piecewise<D2<SBasis> > A);
- void pwd2_sustract(Piecewise<D2<SBasis> > A);
- void set_extremes(bool active, bool hidden, double amount = -1, double angle = -1);
- void deleteSatellites(size_t A);
- void subpath_append_reorder(size_t subpath);
- void reverse(size_t start,size_t end);
- void setPathInfo();
- void setPathInfo(Piecewise<D2<SBasis> >);
- size_t getSubPathIndex(size_t index) const;
- size_t getLast(size_t index) const;
- size_t getFirst(size_t index) const;
- boost::optional<size_t> getPrevious(size_t index) const;
- boost::optional<size_t> getNext(size_t index) const;
- bool getIsClosed(size_t index) const;
-
- private:
- Piecewise<D2<SBasis> > _pwd2;
- std::vector<std::pair<size_t,Satellite> > _satellites;
- std::vector<std::pair<size_t, bool> > _pathInfo;
-};
-
-} // end namespace Geom
-
-#endif //SEEN_GEOM_POINTWISE_H
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
diff --git a/src/2geom/satellite-enum.h b/src/2geom/satellite-enum.h
deleted file mode 100644
index bcd8d1bb3..000000000
--- a/src/2geom/satellite-enum.h
+++ /dev/null
@@ -1,51 +0,0 @@
-#ifndef LIB2GEOM_SEEN_SATELLITE_ENUM_H
-#define LIB2GEOM_SEEN_SATELLITE_ENUM_H
-
-/*
- *
- *
-* Copyright (C) Jabier Arraiza Cenoz <jabier.arraiza@marker.es>
- *
- * Released under GNU GPL, read the file 'COPYING' for more information
- */
-
-#include "util/enums.h"
-/*#include <boost/bimap.hpp>
-*/
-
-namespace Geom {
-
-enum SatelliteType {
- F=0, //Fillet
- IF, //Inverse Fillet
- C, //Chamfer
- IC, //Inverse Chamfer
- KO // Invalid Satellite)
-};
-
-/* TODO maybe is best do next by bimap
- typedef boost::bimap< Geom::SatelliteType,gchar const *> map_type ;
-
- map_type SatelliteTypeBimap;
-
- SatelliteTypeBimap.insert( map_type::value_type(FILLET, "FILLET"));
- SatelliteTypeBimap.insert( map_type::value_type(INVERSE_FILLET, "INVERSE_FILLET"));
- SatelliteTypeBimap.insert( map_type::value_type(CHAMFER, "CHAMFER")) );
- SatelliteTypeBimap.insert( map_type::value_type(INVERSE_CHAMFER, "INVERSE_CHAMFER"));
- SatelliteTypeBimap.insert( map_type::value_type(INVALID_SATELLITE, "INVALID_SATELLITE"));
-*/
-
-} //namespace Geom
-
-#endif
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4 :
diff --git a/src/2geom/satellite.cpp b/src/2geom/satellite.cpp
deleted file mode 100644
index d1420b20c..000000000
--- a/src/2geom/satellite.cpp
+++ /dev/null
@@ -1,156 +0,0 @@
-/**
- * \file
- * \brief Satellite
- *//*
- * Authors:
- * 2015 Jabier Arraiza Cenoz<jabier.arraiza@marker.es>
- * Copyright 2015 authors
- *
- * This library is free software; you can redistribute it and/or
- * modify it either under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation
- * (the "LGPL") or, at your option, under the terms of the Mozilla
- * Public License Version 1.1 (the "MPL"). If you do not alter this
- * notice, a recipient may use your version of this file under either
- * the MPL or the LGPL.
- *
- * You should have received a copy of the LGPL along with this library
- * in the file COPYING-LGPL-2.1; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * You should have received a copy of the MPL along with this library
- * in the file COPYING-MPL-1.1
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
- * OF ANY KIND, either express or implied. See the LGPL or the MPL for
- * the specific language governing rights and limitations.
- */
-
-#include <2geom/satellite.h>
-#include <2geom/curve.h>
-#include <2geom/nearest-point.h>
-#include <2geom/sbasis-geometric.h>
-
-
-namespace Geom {
-
-Satellite::Satellite(){};
-
-Satellite::Satellite(SatelliteType satellitetype, bool isTime, bool isEndOpen, bool active, bool hasMirror, bool hidden, double amount, double angle, size_t steps)
- : _satellitetype(satellitetype), _isTime(isTime), _isEndOpen(isEndOpen), _active(active), _hasMirror(hasMirror), _hidden(hidden), _amount(amount), _angle(angle), _steps(steps){};
-
-Satellite::~Satellite() {};
-
-double
-Satellite::toTime(double A,Geom::D2<Geom::SBasis> d2_in) const
-{
- if(!d2_in.isFinite() || d2_in.isZero() || A == 0){
- return 0;
- }
- double t = 0;
- double lenghtPart = Geom::length(d2_in, Geom::EPSILON);
- if (A > lenghtPart || d2_in[0].degreesOfFreedom() == 2) {
- if (lenghtPart != 0) {
- t = A / lenghtPart;
- }
- } else if (d2_in[0].degreesOfFreedom() != 2) {
- Geom::Piecewise<Geom::D2<Geom::SBasis> > u;
- u.push_cut(0);
- u.push(d2_in, 1);
- std::vector<double> t_roots = roots(arcLengthSb(u) - A);
- if (t_roots.size() > 0) {
- t = t_roots[0];
- }
- }
-
- return t;
-}
-
-double
-Satellite::toSize(double A,Geom::D2<Geom::SBasis> d2_in) const
-{
- if(!d2_in.isFinite() || d2_in.isZero() || A == 0){
- return 0;
- }
- double s = 0;
- double lenghtPart = Geom::length(d2_in, Geom::EPSILON);
- if (A > lenghtPart || d2_in[0].degreesOfFreedom() == 2) {
- s = (A * lenghtPart);
- } else if (d2_in[0].degreesOfFreedom() != 2) {
- Geom::Piecewise<Geom::D2<Geom::SBasis> > u;
- u.push_cut(0);
- u.push(d2_in, 1);
- u = Geom::portion(u, 0.0, A);
- s = Geom::length(u, 0.001);
- }
- return s;
-}
-
-double
-Satellite::getOpositeTime(double s, Geom::D2<Geom::SBasis> d2_in) const
-{
- if(s == 0){
- return 1;
- }
- double lenghtPart = Geom::length(d2_in, Geom::EPSILON);
- double size = lenghtPart - s;
- return toTime(size, d2_in);
-}
-
-double
-Satellite::getTime(Geom::D2<Geom::SBasis> d2_in) const
-{
- double t = getAmount();
- if(!getIsTime()){
- t = toTime(t, d2_in);
- }
- if(t > 1){
- t = 1;
- }
- return t;
-}
-
-double
-Satellite::getSize(Geom::D2<Geom::SBasis> d2_in) const
-{
- double s = getAmount();
- if(getIsTime()){
- s = toSize(s, d2_in);
- }
- return s;
-}
-
-
-Geom::Point
-Satellite::getPosition(Geom::D2<Geom::SBasis> d2_in) const
-{
- double t = getTime(d2_in);
- return d2_in.valueAt(t);
-}
-
-void
-Satellite::setPosition(Geom::Point p, Geom::D2<Geom::SBasis> d2_in)
-{
- double A = Geom::nearest_point(p, d2_in);
- if(!getIsTime()){
- A = toSize(A, d2_in);
- }
- setAmount(A);
-}
-
-} // end namespace Geom
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :
diff --git a/src/2geom/satellite.h b/src/2geom/satellite.h
deleted file mode 100644
index 42ed9c291..000000000
--- a/src/2geom/satellite.h
+++ /dev/null
@@ -1,188 +0,0 @@
-/**
- * \file
- * \brief Satellite
- *//*
- * Authors:
- * 2015 Jabier Arraiza Cenoz<jabier.arraiza@marker.es>
- * Copyright 2015 authors
- *
- * This library is free software; you can redistribute it and/or
- * modify it either under the terms of the GNU Lesser General Public
- * License version 2.1 as published by the Free Software Foundation
- * (the "LGPL") or, at your option, under the terms of the Mozilla
- * Public License Version 1.1 (the "MPL"). If you do not alter this
- * notice, a recipient may use your version of this file under either
- * the MPL or the LGPL.
- *
- * You should have received a copy of the LGPL along with this library
- * in the file COPYING-LGPL-2.1; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- * You should have received a copy of the MPL along with this library
- * in the file COPYING-MPL-1.1
- *
- * The contents of this file are subject to the Mozilla Public License
- * Version 1.1 (the "License"); you may not use this file except in
- * compliance with the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY
- * OF ANY KIND, either express or implied. See the LGPL or the MPL for
- * the specific language governing rights and limitations.
- */
-
-#ifndef LIB2GEOM_SEEN_SATELLITE_H
-#define LIB2GEOM_SEEN_SATELLITE_H
-
-#include <2geom/satellite-enum.h>
-#include <2geom/d2.h>
-#include <map>
-#include <boost/assign.hpp>
-
-namespace Geom {
-
-class Satellite
-{
- public:
-
- Satellite();
- Satellite(SatelliteType satellitetype, bool isTime, bool isEndOpen, bool active, bool hasMirror, bool hidden, double amount, double angle, size_t steps);
-
- virtual ~Satellite();
-
- void setSatelliteType(SatelliteType A)
- {
- _satellitetype = A;
- }
-
- void setSatelliteType(gchar const * A)
- {
- std::map<std::string,SatelliteType> GcharMapToSatelliteType = boost::assign::map_list_of("F", F)("IF", IF)("C",C)("IC",IC)("KO",KO);
- _satellitetype = GcharMapToSatelliteType.find(std::string(A))->second;
- }
-
- void setIsTime(bool A)
- {
- _isTime = A;
- }
-
- void setIsEndOpen(bool A)
- {
- _isEndOpen = A;
- }
-
-
- void setActive(bool A)
- {
- _active = A;
- }
-
- void setHasMirror(bool A)
- {
- _hasMirror = A;
- }
-
- void setHidden(bool A)
- {
- _hidden = A;
- }
- void setAmount(double A)
- {
- _amount = A;
- }
-
- void setAngle(double A)
- {
- _angle = A;
- }
-
- void setSteps(int A)
- {
- _steps = A;
- }
-
- SatelliteType getSatelliteType() const
- {
- return _satellitetype;
- }
-
- gchar const * getSatelliteTypeGchar() const
- {
- std::map<SatelliteType,gchar const *> SatelliteTypeToGcharMap = boost::assign::map_list_of(F, "F")(IF, "IF")(C,"C")(IC,"IC")(KO,"KO");
- return SatelliteTypeToGcharMap.at(_satellitetype);
- }
-
- bool getIsTime() const
- {
- return _isTime;
- }
-
- bool getIsEndOpen() const
- {
- return _isEndOpen;
- }
-
- bool getActive() const
- {
- return _active;
- }
-
- bool getHasMirror() const
- {
- return _hasMirror;
- }
-
- bool getHidden() const
- {
- return _hidden;
- }
-
- double getAmount() const
- {
- return _amount;
- }
-
- double getAngle() const
- {
- return _angle;
- }
-
- int getSteps() const
- {
- return _steps;
- }
-
- void setPosition(Geom::Point p, Geom::D2<Geom::SBasis> d2_in);
- Geom::Point getPosition(Geom::D2<Geom::SBasis> curve) const;
- double getSize(Geom::D2<Geom::SBasis> d2_in) const;
- double getTime(Geom::D2<Geom::SBasis> d2_in) const;
- double getOpositeTime(double A,Geom::D2<Geom::SBasis> SBasisCurve) const;
- double toSize(double A,Geom::D2<Geom::SBasis> d2_in) const;
- double toTime(double A,Geom::D2<Geom::SBasis> d2_in) const;
-
- private:
-
- SatelliteType _satellitetype;
- bool _isTime;
- bool _isEndOpen;
- bool _active;
- bool _hasMirror;
- bool _hidden;
- double _amount;
- double _angle;
- size_t _steps;
-};
-
-} // end namespace Geom
-
-#endif // LIB2GEOM_SEEN_SATELLITE_H
-
-/*
- Local Variables:
- mode:c++
- c-file-style:"stroustrup"
- c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +))
- indent-tabs-mode:nil
- fill-column:99
- End:
-*/
-// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 :