# Changes in /[255:914c5432be97:251:a1ffc9099c25] in lemon

Ignore:
Files:
5 edited

Unmodified
Removed
• ## lemon/bfs.h

 r252 /// the member functions of the \c Visitor class on every BFS event. /// /// This interface of the BFS algorithm should be used in special cases /// when extra actions have to be performed in connection with certain /// events of the BFS algorithm. Otherwise consider to use Bfs or bfs() /// instead. /// /// \tparam _Digraph The type of the digraph the algorithm runs on. /// The default value is
• ## lemon/dfs.h

 r252 /// the member functions of the \c Visitor class on every DFS event. /// /// This interface of the DFS algorithm should be used in special cases /// when extra actions have to be performed in connection with certain /// events of the DFS algorithm. Otherwise consider to use Dfs or dfs() /// instead. /// /// \tparam _Digraph The type of the digraph the algorithm runs on. /// The default value is
• ## lemon/dim2.h

 r253 /// a two dimensional vector with the usual operations. /// /// The class \ref lemon::dim2::Box "dim2::Box" can be used to determine /// The class \ref lemon::dim2::BoundingBox "dim2::BoundingBox" /// can be used to determine /// the rectangular bounding box of a set of /// \ref lemon::dim2::Point "dim2::Point"'s. /// @{ /// Two dimensional vector (plain vector) /// A simple two dimensional vector (plain vector) implementation /// A simple two dimensional vector (plain vector) implementation inline std::ostream& operator<<(std::ostream &os, const Point& z) { os << "(" << z.x << "," << z.y << ")"; os << "(" << z.x << ", " << z.y << ")"; return os; } /// Bounding box of plain vectors (\ref Point points). /// A class to calculate or store the bounding box of plain vectors /// (\ref Point points). template class Box { /// A class to calculate or store the bounding box of plain vectors. /// A class to calculate or store the bounding box of plain vectors. /// template class BoundingBox { Point _bottom_left, _top_right; bool _empty; public: ///Default constructor: creates an empty box Box() { _empty = true; } ///Construct a box from one point Box(Point a) { ///Default constructor: creates an empty bounding box BoundingBox() { _empty = true; } ///Construct an instance from one point BoundingBox(Point a) { _bottom_left = _top_right = a; _empty = false; } ///Construct a box from two points ///Construct a box from two points. ///Construct an instance from two points ///Construct an instance from two points. ///\param a The bottom left corner. ///\param b The top right corner. ///\warning The coordinates of the bottom left corner must be no more ///than those of the top right one. Box(Point a,Point b) BoundingBox(Point a,Point b) { _bottom_left = a; } ///Construct a box from four numbers ///Construct a box from four numbers. ///Construct an instance from four numbers ///Construct an instance from four numbers. ///\param l The left side of the box. ///\param b The bottom of the box. ///\warning The left side must be no more than the right side and ///bottom must be no more than the top. Box(T l,T b,T r,T t) BoundingBox(T l,T b,T r,T t) { _bottom_left=Point(l,b); } ///Return \c true if the box is empty. ///Return \c true if the box is empty (i.e. return \c false ///Return \c true if the bounding box is empty. ///Return \c true if the bounding box is empty (i.e. return \c false ///if at least one point was added to the box or the coordinates of ///the box were set). /// ///The coordinates of an empty box are not defined. ///The coordinates of an empty bounding box are not defined. bool empty() const { return _empty; } ///Make the box empty ///Make the BoundingBox empty void clear() { _empty = true; ///Give back the bottom left corner of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. Point bottomLeft() const { return _bottom_left; ///Give back the top right corner of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. Point topRight() const { return _top_right; ///Give back the bottom right corner of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. Point bottomRight() const { return Point(_top_right.x,_bottom_left.y); ///Give back the top left corner of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. Point topLeft() const { return Point(_bottom_left.x,_top_right.y); ///Give back the bottom of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. T bottom() const { return _bottom_left.y; ///Give back the top of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. T top() const { return _top_right.y; ///Give back the left side of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. T left() const { return _bottom_left.x; /// Give back the right side of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. T right() const { return _top_right.x; ///Give back the height of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. T height() const { return _top_right.y-_bottom_left.y; ///Give back the width of the box. ///If the box is empty, then the return value is not defined. ///If the bounding box is empty, then the return value is not defined. T width() const { return _top_right.x-_bottom_left.x; } ///Checks whether a point is inside the box ///Checks whether a point is inside a bounding box bool inside(const Point& u) const { if (_empty) } ///Increments the box with a point ///Increments the box with a point. ///Increments a bounding box with a point ///Increments a bounding box with a point. /// Box& add(const Point& u){ BoundingBox& add(const Point& u){ if (_empty) { _bottom_left = _top_right = u; } ///Increments the box to contain another box ///Increments the box to contain another box. ///Increments a bounding box to contain another bounding box ///Increments a bounding box to contain another bounding box. /// Box& add(const Box &u){ BoundingBox& add(const BoundingBox &u){ if ( !u.empty() ){ add(u._bottom_left); } ///Intersection of two boxes ///Intersection of two boxes. ///Intersection of two bounding boxes ///Intersection of two bounding boxes. /// Box operator&(const Box& u) const { Box b; BoundingBox operator&(const BoundingBox& u) const { BoundingBox b; if (_empty || u._empty) { b._empty = true; } };//class Box ///Read a box from a stream ///Read a box from a stream. ///\relates Box template inline std::istream& operator>>(std::istream &is, Box& b) { char c; Point p; if (is >> c) { if (c != '(') is.putback(c); } else { is.clear(); } if (!(is >> p)) return is; b.bottomLeft(p); if (is >> c) { if (c != ',') is.putback(c); } else { is.clear(); } if (!(is >> p)) return is; b.topRight(p); if (is >> c) { if (c != ')') is.putback(c); } else { is.clear(); } return is; } ///Write a box to a stream ///Write a box to a stream. ///\relates Box template inline std::ostream& operator<<(std::ostream &os, const Box& b) { os << "(" << b.bottomLeft() << "," << b.topRight() << ")"; return os; } };//class Boundingbox ///Map of x-coordinates of a \ref Point "Point"-map
• ## lemon/graph_to_eps.h

 r253 double diag_len = 1; if(!(_absoluteNodeSizes&&_absoluteArcWidths)) { dim2::Box bb; dim2::BoundingBox bb; for(NodeIt n(g);n!=INVALID;++n) bb.add(mycoords[n]); if (bb.empty()) { bb = dim2::Box(dim2::Point(0,0)); bb = dim2::BoundingBox(dim2::Point(0,0)); } diag_len = std::sqrt((bb.bottomLeft()-bb.topRight()).normSquare()); } dim2::Box bb; dim2::BoundingBox bb; for(NodeIt n(g);n!=INVALID;++n) { double ns=_nodeSizes[n]*_nodeScale; } if (bb.empty()) { bb = dim2::Box(dim2::Point(0,0)); bb = dim2::BoundingBox(dim2::Point(0,0)); }
• ## test/dim_test.cc

 r253 check(p.x==1 && p.y==2, "Wrong dim2::Point division by a scalar."); typedef dim2::Box Box; Box box1; check(box1.empty(), "Wrong empty() in dim2::Box."); typedef dim2::BoundingBox BB; BB box1; check(box1.empty(), "Wrong empty() in dim2::BoundingBox."); box1.add(a); check(!box1.empty(), "Wrong empty() in dim2::Box."); check(!box1.empty(), "Wrong empty() in dim2::BoundingBox."); box1.add(b); check(box1.left()==1 && box1.bottom()==2 && box1.right()==3 && box1.top()==4, "Wrong addition of points to dim2::Box."); "Wrong addition of points to dim2::BoundingBox."); check(box1.inside(Point(2,3)), "Wrong inside() in dim2::Box."); check(box1.inside(Point(1,3)), "Wrong inside() in dim2::Box."); check(!box1.inside(Point(0,3)), "Wrong inside() in dim2::Box."); check(box1.inside(Point(2,3)), "Wrong inside() in dim2::BoundingBox."); check(box1.inside(Point(1,3)), "Wrong inside() in dim2::BoundingBox."); check(!box1.inside(Point(0,3)), "Wrong inside() in dim2::BoundingBox."); Box box2(Point(2,2)); check(!box2.empty(), "Wrong empty() in dim2::Box."); BB box2(Point(2,2)); check(!box2.empty(), "Wrong empty() in dim2::BoundingBox."); box2.bottomLeft(Point(2,0)); box2.topRight(Point(5,3)); Box box3 = box1 & box2; BB box3 = box1 & box2; check(!box3.empty() && box3.left()==2 && box3.bottom()==2 && box3.left()==2 && box3.bottom()==2 && box3.right()==3 && box3.top()==3, "Wrong intersection of two dim2::Box objects."); "Wrong intersection of two dim2::BoundingBox objects."); box1.add(box2); check(!box1.empty() && box1.left()==1 && box1.bottom()==0 && box1.right()==5 && box1.top()==4, "Wrong addition of two dim2::Box objects."); "Wrong addition of two dim2::BoundingBox objects."); return 0;
Note: See TracChangeset for help on using the changeset viewer.