lpe-knot.h revision 29b1527f9bdcb4ac48c0e7e4730c366abb7a5bcb
/** \file
* LPE knot effect implementation, see lpe-knot.cpp.
*/
/* Authors:
* Jean-Francois Barraud <jf.barraud@gmail.com>
* Johan Engelen <j.b.c.engelen@utwente.nl>
*
* Copyright (C) Johan Engelen 2007
*
* Released under GNU GPL, read the file 'COPYING' for more information
*/
#ifndef INKSCAPE_LPE_KNOT_H
#define INKSCAPE_LPE_KNOT_H
#include "sp-item-group.h"
#include "live_effects/effect.h"
#include "live_effects/lpegroupbbox.h"
#include "live_effects/parameter/parameter.h"
#include "live_effects/parameter/array.h"
//#include "live_effects/parameter/path.h"
#include "live_effects/parameter/bool.h"
#include "2geom/crossing.h"
// CrossingPoint, CrossingPoints:
// "point oriented" storage of crossing data (needed to find crossing nearest to a click, etc...)
//TODO: evaluate how lpeknot-specific that is? Should something like this exist in 2geom?
struct CrossingPoint {
int sign; //+/-1 = positive or neg crossing, 0 = flat.
unsigned i, j; //paths components meeting in this point.
};
CrossingPoints(Geom::CrossingSet const &cs, std::vector<Geom::Path> const &path);//for self crossings only!
};
}
/* the knotholder entity classes must be declared friends */
void updateSwitcher();
double stroke_width;
std::vector<double> gstroke_widths;//the collection of all the stroke widths in the object or group.
//UI: please, someone, help me to improve this!!
unsigned selectedCrossing;//the selected crossing
};
} //namespace LivePathEffect
} //namespace Inkscape
#endif