// -*- C++ -*- namespace Hurricane { /*! \class Segment * \brief Segment description (\b API) * * \section secSegmentIntro Introduction * * Segments are abstract objects introducing the concept of link * between two components. * * They are implicitely oriented, but that doesn't represent any * particular signification (for layout objects at least). */ /*! \typedef Segment::Inherit * Useful for calling upon methods of the base class without * knowing it. */ /*! \class Segment::SourceHook * With segments, a new type of Hook appears : the * SourceHook, which allows to attach the segment origin * upon an other component, on which it is said to be * "anchored". The SourceHook is always a slave hook. */ /*! \class Segment::TargetHook * With segments, a new type of Hook appears : the * TargetHook, which allows to attach the segment * extremity upon an other component, on which it is said to be * "anchored". The TargetHook is always a slave hook. */ /*! \name Accessors */ // \{ /*! \function Segment::SourceHook* Segment::getSourceHook(); * \Return the hook through which the segment origin can be anchored on * a component. */ /*! \function Segment::TargetHook* Segment::getTargetHook(); * \Return the hook through which the segment extremity can be anchored * on a component. */ /*! \function Hook* Segment::getOppositeHook(const Hook* hook) const; * \Return the target hook of the segment if \c \ is the source * hook of the segment. * * \Return the source hook of the segment if \c \ is the target * hook of the segment. * * \Return NULL otherwise. */ /*! \function Component* Segment::getSource() const; * The source hook being a slave one, it may have an associated * master hook representing the body of the component on wich * the segment origin is anchored. * * So, this method returns the component owner of this master * hook, if any, else a NULL pointer. */ /*! \function Component* Segment::getTarget() const; * The target hook being a slave one, it may have an associated * master hook representing the body of the component on wich * the segment extremity is anchored. * * So, this method returns the component owner of this master * hook, if any, else a NULL pointer. */ /*! \function Component* Segment::getOppositeAnchor(Component* anchor) const; * \Return the target anchor of the segment if \c \ is the * source anchor of the segment (may be NULL) * * \Return the source anchor of the segment if \c \ is the * target anchor of the segment (may be NULL) * * \Return NULL otherwise. */ /*! \function Components Segment::getAnchors() const; * \Return the collection of anchors. This collection is composed by the * source (if non NULL) and the target (if non NULL) of the * segment (may be empty if all extremities of the segment * aren't anchored). */ /*! \function const DbU::Unit& Segment::getWidth() const; * \Return the segment width. */ /*! \function DbU::Unit Segment::getHalfWidth() const; * \Return the segment half width. */ /*! \function DbU::Unit Segment::getSourceX() const; * \Return the abscissa of the segment origin. */ /*! \function DbU::Unit Segment::getSourceY() const; * \Return the ordinate of the segment origin. */ /*! \function Point Segment::getSourcePosition() const; * \Return the point location of the segment origin. */ /*! \function DbU::Unit Segment::getTargetX() const; * \Return the abscissa of the segment extremity. */ /*! \function DbU::Unit Segment::getTargetY() const; * \Return the ordinate of the segment extremity. */ /*! \function Point Segment::getTargetPosition() const; * \Return the point location of the segment extremity. */ /*! \function DbU::Unit Segment::getLength() const; * \Return the segment length. */ // \} /*! \name Modifiers */ // \{ /*! \function void Segment::setLayer(const Layer* layer); * sets the segment layer. */ /*! \function void Segment::setWidth(const DbU::Unit& width); * sets the segment width. */ /*! \function void Segment::invert(); * invert the segment. The source and target of the segment are * permutted. */ // \} /*! \name Segment Collection */ // \{ /*! \typedef Segments * Generic collection representing a set of segments. */ /*! \typedef SegmentLocator * Generic locator for traversing a collection of segments. */ /*! \typedef SegmentFilter * Generic filter allowing to select a subset of segments * matching some criteria. */ /*! \def for_each_segment(segment, segments) * Macro for visiting all the segments of a collection of * segments. */ // \} }