134 lines
4.7 KiB
C++
134 lines
4.7 KiB
C++
|
|
// -*- C++ -*-
|
|
|
|
|
|
namespace Hurricane {
|
|
|
|
/*! \class Vertical
|
|
* \brief Vertical description (\b API)
|
|
*
|
|
* \section secVerticalIntro Introduction
|
|
*
|
|
* A vertical has, in addition to inherited attributes, a
|
|
* specific one : its abscissa. The vertical extend of the
|
|
* segment is defined by the "source" and "target" components on
|
|
* which it is anchored.
|
|
*
|
|
* This abscissa allows, among other things, to anchor a
|
|
* vertical segment extremity on a component (i.e. a contact)
|
|
* with a small horizontal offset without the need to
|
|
* materialize it, because it is implicitely equal to the
|
|
* difference between the vertical abscissa and the component
|
|
* abscissa. It allows also, and it not the least interesting
|
|
* feature, to anchor an extremity of a vertical directly on a
|
|
* horizontal segment (and conversely) without the need to
|
|
* create an intermediate contact (unless they are on different
|
|
* layers!). The abscissa of the implicit contact point is the
|
|
* one of the vertical and the ordinate the one of the
|
|
* horizontal).
|
|
*/
|
|
|
|
|
|
|
|
/*! \typedef Vertical::Inherit
|
|
* Useful for calling upon methods of the base class without
|
|
* knowing it.
|
|
*/
|
|
|
|
/*! \name Constructors
|
|
*/
|
|
// \{
|
|
|
|
/*! \function Vertical* Vertical::create(Component* source, Component* target, const Layer* layer,const DbU::Unit& x,const DbU::Unit& width = 0,const DbU::Unit& dySource = 0, const DbU::Unit& dyTarget = 0);
|
|
* creates and returns a vertical segment whose origin lies
|
|
* (through an offset equal to \c \<dySource\>) on
|
|
* \c \<source\>, whose extremity lies (through an offset equal
|
|
* to \c \<dyTarget\>) on \c \<target\>, with layer
|
|
* \c \<layer\>, located at abscissa \c \<x\> and of width
|
|
* \c \<width\>.
|
|
*
|
|
* \caution Throws an exception if any of the source, target or layer
|
|
* pointers is null or if the two component don't belong to the
|
|
* same net.
|
|
*/
|
|
|
|
/*! \function Vertical* Vertical::create(Net* net, const Layer* layer, const DbU::Unit& x, const DbU::Unit& width = 0,const DbU::Unit& dySource = 0, const DbU::Unit& dyTarget = 0);
|
|
* creates and returns an absolute vertical segment with layer
|
|
* \c \<layer\>, located at abscissa \c \<x\> and of width
|
|
* \c \<width\>. The differents extremities ordinates are given
|
|
* by \c \<dySource\> and \c \<dyTarget\>.
|
|
*
|
|
* \caution Throws an exception if any of the net or layer pointers is
|
|
* null.
|
|
*/
|
|
|
|
// \}
|
|
|
|
|
|
/*! \name Accessors
|
|
*/
|
|
// \{
|
|
|
|
/*! \function const DbU::Unit& Vertical::getDySource() const;
|
|
* \Return the relative source ordinate 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
|
|
* getSourceX() defined at the Segment level.
|
|
*/
|
|
|
|
/*! \function const DbU::Unit& Vertical::getDyTarget() const;
|
|
* \Return the relative target ordinate 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
|
|
* getTargetX() defined at the Segment level.
|
|
*/
|
|
|
|
// \}
|
|
|
|
|
|
/*! \name Modifiers
|
|
*/
|
|
// \{
|
|
|
|
/*! \function void Vertical::setX(const DbU::Unit& x);
|
|
* sets the abscissa of the segment.
|
|
*/
|
|
|
|
/*! \function void Vertical::translate(const DbU::Unit& dx);
|
|
* translate horizontaly the vertical segment of the quantity
|
|
* \c \<dx\>.
|
|
*/
|
|
|
|
// \}
|
|
|
|
|
|
/*! \name Vertical Collection
|
|
*/
|
|
// \{
|
|
|
|
/*! \typedef Verticals
|
|
* Generic collection representing a set of vertical segments.
|
|
*/
|
|
|
|
/*! \typedef VerticalLocator
|
|
* Generic locator for traversing a collection of vertical
|
|
* segments.
|
|
*/
|
|
|
|
/*! \typedef VerticalFilter
|
|
* Generic filter allowing to select a subset of verticals
|
|
* matching some criteria.
|
|
*/
|
|
|
|
/*! \def for_each_vertical(vertical, verticals)
|
|
* Macro for visiting all the verticals of a collection of
|
|
* vertical segments.
|
|
*/
|
|
|
|
// \}
|
|
|
|
|
|
}
|