X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fline-geometry.h;h=472478e3b908620505309eb503f989bb28b3ec9d;hb=698cd69991e23d81f6dccf30b2014d8cf0981d11;hp=5e3152c03c97e44e9f4be6b32cdf559af56db5d6;hpb=4358ff6156766a315e38e72a5c3c83d6d5f7486b;p=inkscape.git diff --git a/src/line-geometry.h b/src/line-geometry.h index 5e3152c03..472478e3b 100644 --- a/src/line-geometry.h +++ b/src/line-geometry.h @@ -12,9 +12,7 @@ #ifndef SEEN_LINE_GEOMETRY_H #define SEEN_LINE_GEOMETRY_H -#include "libnr/nr-point.h" -#include "libnr/nr-point-fns.h" -#include "libnr/nr-maybe.h" +#include #include "glib.h" #include "display/sp-ctrlline.h" #include "axis-manip.h" // FIXME: This is only for Box3D::epsilon; move that to a better location @@ -26,57 +24,57 @@ namespace Box3D { class Line { public: - Line(NR::Point const &start, NR::Point const &vec, bool is_endpoint = true); + Line(Geom::Point const &start, Geom::Point const &vec, bool is_endpoint = true); Line(Line const &line); virtual ~Line() {} Line &operator=(Line const &line); - virtual NR::Maybe intersect(Line const &line); - inline NR::Point direction () { return v_dir; } + virtual boost::optional intersect(Line const &line); + inline Geom::Point direction () { return v_dir; } - NR::Point closest_to(NR::Point const &pt); // returns the point on the line closest to pt + Geom::Point closest_to(Geom::Point const &pt); // returns the point on the line closest to pt friend inline std::ostream &operator<< (std::ostream &out_file, const Line &in_line); - NR::Maybe intersection_with_viewbox (SPDesktop *desktop); - inline bool lie_on_same_side (NR::Point const &A, NR::Point const &B) { + boost::optional intersection_with_viewbox (SPDesktop *desktop); + inline bool lie_on_same_side (Geom::Point const &A, Geom::Point const &B) { /* If A is a point in the plane and n is the normal vector of the line then the sign of dot(A, n) specifies the half-plane in which A lies. Thus A and B lie on the same side if the dot products have equal sign. */ - return ((NR::dot(A, normal) - d0) * (NR::dot(B, normal) - d0)) > 0; + return ((Geom::dot(A, normal) - d0) * (Geom::dot(B, normal) - d0)) > 0; } - double lambda (NR::Point const pt); - inline NR::Point point_from_lambda (double const lambda) { - return (pt + lambda * NR::unit_vector (v_dir)); } + double lambda (Geom::Point const pt); + inline Geom::Point point_from_lambda (double const lambda) { + return (pt + lambda * Geom::unit_vector (v_dir)); } protected: - void set_direction(NR::Point const &dir); - inline static bool pts_coincide (NR::Point const pt1, NR::Point const pt2) + void set_direction(Geom::Point const &dir); + inline static bool pts_coincide (Geom::Point const pt1, Geom::Point const pt2) { - return (NR::L2 (pt2 - pt1) < epsilon); + return (Geom::L2 (pt2 - pt1) < epsilon); } - NR::Point pt; - NR::Point v_dir; - NR::Point normal; - NR::Coord d0; + Geom::Point pt; + Geom::Point v_dir; + Geom::Point normal; + Geom::Coord d0; }; -inline double determinant (NR::Point const &a, NR::Point const &b) +inline double determinant (Geom::Point const &a, Geom::Point const &b) { - return (a[NR::X] * b[NR::Y] - a[NR::Y] * b[NR::X]); + return (a[Geom::X] * b[Geom::Y] - a[Geom::Y] * b[Geom::X]); } -std::pair coordinates (NR::Point const &v1, NR::Point const &v2, NR::Point const &w); -bool lies_in_sector (NR::Point const &v1, NR::Point const &v2, NR::Point const &w); -bool lies_in_quadrangle (NR::Point const &A, NR::Point const &B, NR::Point const &C, NR::Point const &D, NR::Point const &pt); -std::pair side_of_intersection (NR::Point const &A, NR::Point const &B, - NR::Point const &C, NR::Point const &D, - NR::Point const &pt, NR::Point const &dir); +std::pair coordinates (Geom::Point const &v1, Geom::Point const &v2, Geom::Point const &w); +bool lies_in_sector (Geom::Point const &v1, Geom::Point const &v2, Geom::Point const &w); +bool lies_in_quadrangle (Geom::Point const &A, Geom::Point const &B, Geom::Point const &C, Geom::Point const &D, Geom::Point const &pt); +std::pair side_of_intersection (Geom::Point const &A, Geom::Point const &B, + Geom::Point const &C, Geom::Point const &D, + Geom::Point const &pt, Geom::Point const &dir); /*** For debugging purposes: Draw a knot/node of specified size and color at the given position ***/ -void create_canvas_point(NR::Point const &pos, double size = 4.0, guint32 rgba = 0xff00007f); +void create_canvas_point(Geom::Point const &pos, double size = 4.0, guint32 rgba = 0xff00007f); /*** For debugging purposes: Draw a line between the specified points ***/ -void create_canvas_line(NR::Point const &p1, NR::Point const &p2, guint32 rgba = 0xff00007f); +void create_canvas_line(Geom::Point const &p1, Geom::Point const &p2, guint32 rgba = 0xff00007f); /** A function to print out the Line. It just prints out the coordinates of start point and