// -*- C++ -*- namespace Hurricane { /*! \class Horizontal * \brief Horizontal description (\b API) * * \section secHorizontalIntro Introduction * * A horizontal has, in addition to inherited attributes, a * specific one : its ordinate. The horizontal extend of the * segment is defined by the "source" and "target" components on * which it is anchored. * * This ordinate allows, among other things, to anchor a * horizontal segment extremity on a component (i.e. a contact) * with a small vertical offset without the need to materialize * it, because it is implicitely equal to the difference between * the horizontal ordinate and the component ordinate. It allows * also, and it not the least interesting feature, to anchor an * extremity of a horizontal directly on a vertical segment (and * conversely) without the need to create an intermediate * contact (unless they are on different layers!). The ordinate * of the implicit contact point is the one of the horizontal * and the abscissa the one of the vertical). */ /*! \typedef Horizontal::Inherit * Useful for calling upon methods of the base class without * knowing it. */ /*! \name Constructors */ // \{ /*! \function Horizontal* Horizontal::create(Component* source, Component* target, const Layer* layer,const DbU::Unit& y, const DbU::Unit& width = 0,const DbU::Unit& dxSource = 0, const DbU::Unit& dxTarget = 0); * No description. */ /*! \function Horizontal* Horizontal::create(Net* net, const Layer* layer, const DbU::Unit& y, const DbU::Unit& width = 0,const DbU::Unit& dxSource = 0, const DbU::Unit& dxTarget = 0); * creates and returns an absolute horizontal segment with layer * \c \, located at ordinate \c \ and of width * \c \. The differents extremities abscissas are given * by \c \ and \c \. * * \caution Throws an exception if any of the net or layer pointers is * null. */ // \} /*! \name Accessors */ // \{ /*! \function const DbU::Unit& Horizontal::getDxSource() const; * \Return the relative source abscissa of the segment (may be absolute * if the source extremity isn't anchored). * * \remark If you want to get the absolute one use the member function * getSourceY() defined at the Segment level. */ /*! \function const DbU::Unit& Horizontal::getDxTarget() const; * \Return the relative target abscissa of the segment (may be absolute * if the target extremity isn't anchored). * * \remark If you want to get the absolute one use the member function * getTargetY() defined at the Segment level. */ // \} /*! \name Modifiers */ // \{ /*! \function void Horizontal::setY(const DbU::Unit& x); * sets the ordinate of the segment. */ /*! \function void Horizontal::translate(const DbU::Unit& dy); * translate verticaly the horizontal segment of the quantity * \c \. */ // \} /*! \name Horizontal Collection */ // \{ /*! \typedef Horizontals * Generic collection representing a set of horizontal segments. */ /*! \typedef HorizontalLocator * Generic locator for traversing a collection of horizontal * segments. */ /*! \typedef HorizontalFilter * Generic filter allowing to select a subset of horizontals * matching some criteria. */ /*! \def for_each_horizontal(horizontal, horizontals) * Macro for visiting all the horizontals of a collection of * horizontal segments. */ // \} }