summaryrefslogtreecommitdiffstats
path: root/src/live_effects/parameter
diff options
context:
space:
mode:
authorJabier Arraiza Cenoz <jabier.arraiza@marker.es>2015-03-22 17:27:17 +0000
committerJabiertxof <jtx@jtx.marker.es>2015-03-22 17:27:17 +0000
commit8bd246d8b59749e15de4d5d0d78e9b82fa8a601a (patch)
tree5f9792fbade2d276210c43a904d59d7e7a689681 /src/live_effects/parameter
parentupdate to trunk (diff)
downloadinkscape-8bd246d8b59749e15de4d5d0d78e9b82fa8a601a.tar.gz
inkscape-8bd246d8b59749e15de4d5d0d78e9b82fa8a601a.zip
Fixed bug when deleting nodes
(bzr r13645.1.51)
Diffstat (limited to 'src/live_effects/parameter')
-rw-r--r--src/live_effects/parameter/array.cpp10
-rw-r--r--src/live_effects/parameter/array.h4
-rw-r--r--src/live_effects/parameter/satellitepairarray.cpp37
-rw-r--r--src/live_effects/parameter/satellitepairarray.h8
4 files changed, 31 insertions, 28 deletions
diff --git a/src/live_effects/parameter/array.cpp b/src/live_effects/parameter/array.cpp
index d8b2388da..33cb53f4e 100644
--- a/src/live_effects/parameter/array.cpp
+++ b/src/live_effects/parameter/array.cpp
@@ -78,20 +78,20 @@ sp_svg_satellite_read_d(gchar const *str, Geom::Satellite *sat){
}
template <>
-std::pair<unsigned int, Geom::Satellite>
-ArrayParam<std::pair<unsigned int, Geom::Satellite> >::readsvg(const gchar * str)
+std::pair<size_t, Geom::Satellite>
+ArrayParam<std::pair<size_t, Geom::Satellite> >::readsvg(const gchar * str)
{
gchar ** strarray = g_strsplit(str, ",", 2);
double index;
- std::pair<unsigned int, Geom::Satellite> result;
+ std::pair<size_t, Geom::Satellite> result;
unsigned int success = (int)sp_svg_number_read_d(strarray[0], &index);
Geom::Satellite sat;
success += sp_svg_satellite_read_d(strarray[1], &sat);
g_strfreev (strarray);
if (success == 2) {
- return std::make_pair(index, sat);
+ return std::make_pair((size_t)index, sat);
}
- return std::make_pair((int)Geom::infinity(),sat);
+ return std::make_pair((size_t)0,sat);
}
} /* namespace LivePathEffect */
diff --git a/src/live_effects/parameter/array.h b/src/live_effects/parameter/array.h
index 7ff477ffb..4fb053dbb 100644
--- a/src/live_effects/parameter/array.h
+++ b/src/live_effects/parameter/array.h
@@ -90,7 +90,7 @@ protected:
size_t _default_size;
void writesvg(SVGOStringStream &str, std::vector<StorageType> const &vector) const {
- for (unsigned int i = 0; i < vector.size(); ++i) {
+ for (size_t i = 0; i < vector.size(); ++i) {
if (i != 0) {
// separate items with pipe symbol
str << " | ";
@@ -111,7 +111,7 @@ protected:
str << nVector;
}
- void writesvgData(SVGOStringStream &str, std::pair<unsigned int, Geom::Satellite> const &nVector) const {
+ void writesvgData(SVGOStringStream &str, std::pair<size_t, Geom::Satellite> const &nVector) const {
str << nVector.first;
str << ",";
str << nVector.second.getSatelliteTypeGchar();
diff --git a/src/live_effects/parameter/satellitepairarray.cpp b/src/live_effects/parameter/satellitepairarray.cpp
index 47f023c29..8102edf9b 100644
--- a/src/live_effects/parameter/satellitepairarray.cpp
+++ b/src/live_effects/parameter/satellitepairarray.cpp
@@ -11,6 +11,7 @@
#include "knotholder.h"
#include "ui/dialog/lpe-fillet-chamfer-properties.h"
#include "live_effects/parameter/satellitepairarray.h"
+#include "live_effects/effect.h"
#include "sp-lpe-item.h"
// TODO due to internal breakage in glibmm headers,
// this has to be included last.
@@ -27,7 +28,7 @@ SatellitePairArrayParam::SatellitePairArrayParam(
const Glib::ustring &label, const Glib::ustring &tip,
const Glib::ustring &key, Inkscape::UI::Widget::Registry *wr,
Effect *effect)
- : ArrayParam<std::pair<unsigned int,Geom::Satellite> >(label, tip, key, wr, effect, 0)
+ : ArrayParam<std::pair<size_t,Geom::Satellite> >(label, tip, key, wr, effect, 0)
{
knot_shape = SP_KNOT_SHAPE_DIAMOND;
knot_mode = SP_KNOT_MODE_XOR;
@@ -90,7 +91,7 @@ void SatellitePairArrayParam::updateCanvasIndicators(bool mirror)
if( mirror == true){
hp.clear();
}
- for (unsigned int i = 0; i < _vector.size(); ++i) {
+ for (size_t i = 0; i < _vector.size(); ++i) {
if(!_vector[i].second.getActive() || _vector[i].second.getHidden()){
continue;
}
@@ -106,7 +107,7 @@ void SatellitePairArrayParam::updateCanvasIndicators(bool mirror)
double size_out = _vector[i].second.getSize(pwd2[_vector[i].first]);
double lenght_out = Geom::length(pwd2[_vector[i].first], Geom::EPSILON);
double lenght_in = 0;
- boost::optional<unsigned int> d2_prev_index = last_pointwise->getPrevious(_vector[i].first);
+ boost::optional<size_t> d2_prev_index = last_pointwise->getPrevious(_vector[i].first);
if(d2_prev_index){
lenght_in = Geom::length(pwd2[*d2_prev_index], Geom::EPSILON);
}
@@ -191,8 +192,7 @@ void SatellitePairArrayParam::addCanvasIndicators(
void SatellitePairArrayParam::recalculate_knots()
{
if(last_pointwise){
- _vector = last_pointwise->getSatellites();
- write_to_SVG();
+ //_vector = last_pointwise->getSatellites();
}
}
@@ -202,8 +202,8 @@ void SatellitePairArrayParam::addKnotHolderEntities(KnotHolder *knotholder,
bool mirror)
{
recalculate_knots();
- for (unsigned int i = 0; i < _vector.size(); ++i) {
- int iPlus = i;
+ for (size_t i = 0; i < _vector.size(); ++i) {
+ size_t iPlus = i;
if( mirror == true){
iPlus = i + _vector.size();
}
@@ -254,7 +254,7 @@ void SatellitePairArrayParam::addKnotHolderEntities(KnotHolder *knotholder,
addKnotHolderEntities(knotholder, desktop, item, true);
}
-FilletChamferKnotHolderEntity::FilletChamferKnotHolderEntity(SatellitePairArrayParam *p, unsigned int index)
+FilletChamferKnotHolderEntity::FilletChamferKnotHolderEntity(SatellitePairArrayParam *p, size_t index)
: _pparam(p),
_index(index)
{
@@ -267,7 +267,7 @@ void FilletChamferKnotHolderEntity::knot_set(Point const &p,
guint state)
{
Geom::Point s = snap_knot_position(p, state);
- int index = _index;
+ size_t index = _index;
if( _index >= _pparam->_vector.size()){
index = _index-_pparam->_vector.size();
}
@@ -286,12 +286,12 @@ void FilletChamferKnotHolderEntity::knot_set(Point const &p,
Geom::Pointwise* pointwise = _pparam->last_pointwise;
Geom::Piecewise<Geom::D2<Geom::SBasis> > pwd2 = pointwise->getPwd2();
if(_pparam->_vector.size() <= _index){
- boost::optional<unsigned int> d2_prev_index = pointwise->getPrevious(satellite.first);
+ boost::optional<size_t> d2_prev_index = pointwise->getPrevious(satellite.first);
if(d2_prev_index){
Geom::D2<Geom::SBasis> d2_in = pwd2[*d2_prev_index];
double mirrorTime = Geom::nearest_point(s, d2_in);
double timeStart = 0;
- std::vector<unsigned int> satIndexes = pointwise->findPeviousSatellites(satellite.first,1);
+ std::vector<size_t> satIndexes = pointwise->findPeviousSatellites(satellite.first,1);
if(satIndexes.size()>0){
timeStart = pointwise->getSatellites()[satIndexes[0]].second.getTime(d2_in);
}
@@ -319,7 +319,7 @@ Geom::Point
FilletChamferKnotHolderEntity::knot_get() const
{
Geom::Point tmpPoint;
- int index = _index;
+ size_t index = _index;
if( _index >= _pparam->_vector.size()){
index = _index-_pparam->_vector.size();
}
@@ -335,9 +335,12 @@ FilletChamferKnotHolderEntity::knot_get() const
}
Geom::Pointwise* pointwise = _pparam->last_pointwise;
Geom::Piecewise<Geom::D2<Geom::SBasis> > pwd2 = pointwise->getPwd2();
+ if(pwd2.size() <= (unsigned)satellite.first){
+ return Point(infinity(), infinity());
+ }
if( _index >= _pparam->_vector.size()){
tmpPoint = satellite.second.getPosition(pwd2[satellite.first]);
- boost::optional<unsigned int> d2_prev_index = pointwise->getPrevious(satellite.first);
+ boost::optional<size_t> d2_prev_index = pointwise->getPrevious(satellite.first);
if(d2_prev_index){
Geom::D2<Geom::SBasis> d2_in = pwd2[*d2_prev_index];
double s = satellite.second.getSize(pwd2[satellite.first]);
@@ -349,7 +352,7 @@ FilletChamferKnotHolderEntity::knot_get() const
t = 0;
}
double timeStart = 0;
- std::vector<unsigned int> satIndexes = pointwise->findPeviousSatellites(satellite.first,1);
+ std::vector<size_t> satIndexes = pointwise->findPeviousSatellites(satellite.first,1);
if(satIndexes.size()>0){
timeStart = pointwise->getSatellites()[satIndexes[0]].second.getTime(d2_in);
}
@@ -371,7 +374,7 @@ void FilletChamferKnotHolderEntity::knot_click(guint state)
return;
}
- int index = _index;
+ size_t index = _index;
if( _index >= _pparam->_vector.size()){
index = _index-_pparam->_vector.size();
}
@@ -428,7 +431,7 @@ void FilletChamferKnotHolderEntity::knot_click(guint state)
}
bool aprox = false;
D2<SBasis> d2_out = _pparam->last_pointwise->getPwd2()[index];
- boost::optional<unsigned int> d2_prev_index = _pparam->last_pointwise->getPrevious(_pparam->_vector.at(index).first);
+ boost::optional<size_t> d2_prev_index = _pparam->last_pointwise->getPrevious(_pparam->_vector.at(index).first);
if(d2_prev_index){
Geom::D2<Geom::SBasis> d2_in = _pparam->last_pointwise->getPwd2()[*d2_prev_index];
aprox = ((d2_in)[0].degreesOfFreedom() != 2 || d2_out[0].degreesOfFreedom() != 2) && !_pparam->use_distance?true:false;
@@ -444,7 +447,7 @@ void FilletChamferKnotHolderEntity::knot_set_offset(Geom::Satellite satellite)
if( !_pparam->last_pointwise){
return;
}
- int index = _index;
+ size_t index = _index;
if( _index >= _pparam->_vector.size()){
index = _index-_pparam->_vector.size();
}
diff --git a/src/live_effects/parameter/satellitepairarray.h b/src/live_effects/parameter/satellitepairarray.h
index 9b22a386b..a85e3f83f 100644
--- a/src/live_effects/parameter/satellitepairarray.h
+++ b/src/live_effects/parameter/satellitepairarray.h
@@ -30,7 +30,7 @@ namespace LivePathEffect {
class FilletChamferKnotHolderEntity;
-class SatellitePairArrayParam : public ArrayParam<std::pair<unsigned int, Geom::Satellite> > {
+class SatellitePairArrayParam : public ArrayParam<std::pair<size_t, Geom::Satellite> > {
public:
SatellitePairArrayParam(const Glib::ustring &label,
const Glib::ustring &tip,
@@ -81,7 +81,7 @@ private:
class FilletChamferKnotHolderEntity : public KnotHolderEntity {
public:
- FilletChamferKnotHolderEntity(SatellitePairArrayParam *p, unsigned int index);
+ FilletChamferKnotHolderEntity(SatellitePairArrayParam *p, size_t index);
virtual ~FilletChamferKnotHolderEntity() {}
virtual void knot_set(Geom::Point const &p, Geom::Point const &origin, guint state);
@@ -89,13 +89,13 @@ public:
virtual void knot_click(guint state);
void knot_set_offset(Geom::Satellite);
/** Checks whether the index falls within the size of the parameter's vector */
- bool valid_index(unsigned int index) const {
+ bool valid_index(size_t index) const {
return (_pparam->_vector.size() > index);
};
private:
SatellitePairArrayParam *_pparam;
- unsigned int _index;
+ size_t _index;
};
} //namespace LivePathEffect