\fIgcell\fP The \fBGCell\fP into which create the \fBAutoContact\fP\&.
.br
\fIrp\fP The Component on which to anchor the \fBAutoContact\fP\&.
.br
\fIlayer\fP The Layer of the \fBAutoContact\fP\&.
.br
\fIx\fP The absolute X position\&.
.br
\fIy\fP The absolute Y position\&.
.br
\fIwidth\fP The width of the \fBAutoContact\fP\&.
.br
\fIheight\fP The height of the \fBAutoContact\fP\&.
.RE
.PP
\fBReturns:\fP
.RS4
The created \fBAutoContact\fP\&.
.RE
.PP
Create a new \fBAutoContactTerminal\fP anchored on \fCrp\fP\&. \fC(x,y)\fP gives the \fIabsolute\fP position\&.
.PP
The anchor component \fCrp\fP is most often a \fBHurricane::RoutingPad\fP (occurrencing a \fBHurricane::Segment\fP) or directly a \fBHurricane::Segment\fP, in case of RoutingPad layer promotion\&.
.PP
References Katabatic::CntInCreationStage, Contact::create(), Component::getPosition(), and DbU::getValueString()\&.
\fBReturns:\fP The native constraint box (that is, whithout any user constraints applied)\&. For \fBAutoContactTerminal\fP, this is the Box of the supporting external component, and for all others the bounding box of the owning \fBGCell\fP\&.
.SS"\fBAutoSegment\fP * getSegment (unsigned int index) const\fC [virtual]\fP"
\fBReturns:\fP The nth anchored \fBAutoSegment\fP\&. The index is significant:
.IP"\(bu"2
\fB0\fP : first horizontal (\fBh1\fP)\&.
.IP"\(bu"2
\fB1\fP : second horizontal (\fBh2\fP)\&.
.IP"\(bu"2
\fB2\fP : first vertical (\fBb1\fP)\&.
.IP"\(bu"2
\fB3\fP : second vertical (\fBb2\fP)\&.
.PP
.PP
Not all the indexes are filled for every \fBAutoContact\fP\&. For example \fCTurn\fP have \fBh1\fP and \fBb1\fP, and \fCHTee\fP have \fBh1\fP, \fBh2\fP and \fBv1\fP\&.
.PP
Implements \fBAutoContact\fP\&.
.PP
References AutoSegment::isHorizontal(), and AutoSegment::isVertical()\&.
\fBReturns:\fP The other \fBAutoSegment\fP the \fIsame\fP direction as \fCreference\fP, this is only meaningful on \fBAutoContactHTee\fP or \fBAutoContactVTee\fP\&. If there is no opposite, \fCNULL\fP is returned\&.
\fBReturns:\fP The \fBAutoSegment\fP in the \fIperpandicular\fP direction to \fCreference\fP, this is only meaningful on AutoContacTurn\&. It there is no unique perpandicular, \fCNULL\fP is returned\&.
.PP
Implements \fBAutoContact\fP\&.
.SS"void updateGeometry ()\fC [virtual]\fP"
Compute the new position of the \fBAutoContact\fP based on the \fBAutoSegment\fP positions\&. The \fBSession\fP mechanism ensure that all \fBAutoSegment\fP are set into their final positions before calling this updator\&.
Restore the topology (i\&.e\&. connexity) of the contact after the incident segment has changed layer\&.
.PP
Based on the layer depth delta between the terminal and the segment three case can occurs:
.IP"\(bu"2
The delta is \fBzero\fP, then just sets the layer of the contact to the common metal layer\&.
.IP"\(bu"2
The delta is \fBone\fP, then sets the contact layer to VIA connecting the two layers\&.
.IP"\(bu"2
The delta is \fBtwo\fP, then create a dogleg to restore the connexity\&. Depending on whether the terminal was attached to the source or target, sets the layer of the segments\&.
.IP"\(bu"2
A delta of more than \fBtwo\fP is an error, and must never occurs\&.
.PP
.PP
As, by default, the perpandicular is set in the layer above the parallel, it may be necessary to adjust his layer as well (to the one below)\&.