+ //=========================================================================
+
+ GPortModel::~GPortModel( ) {
+ }
+ //=========================================================================
+
+ void GPortModel::registerInBox( GBoxModel *blackBox , int portType , int pos ) {
+ _parentBox = blackBox ;
+ _portType = portType ;
+ _posInBox = pos ;
+ updatePortPosition( ) ;
+ }
+
+ //=========================================================================
+
+ void GPortModel::updatePortPosition( ) {
+ double xInic , yInic , zInic , xFin , yFin , zFin ;
+ _parentBox->getInicPoint( xInic , yInic , zInic ) ;
+ _parentBox->getFinalPoint( xFin , yFin , zFin ) ;
+
+ double posX = xInic , posY = yInic , posZ = zInic ;
+ if ( _portType == GOUTPUTPORT ) {
+ posY = yFin ;
+ } else if ( _portType == GINPUTPORT ) {
+ posY = yInic + PORT_HEIGHT ;
+ }
+
+ //Attribute '_posInBox' starts with value 0 and it represents the position of the port in the box from left to right
+ posX = xInic + ( PORT_WIDTH / 2 ) + _posInBox * 1.1 * PORT_WIDTH ;
+
+ setInicPoint( posX , posY , posZ ) ;
+
+ posX = posX + PORT_WIDTH ;
+ posY = posY - PORT_HEIGHT ;
+
+ setFinalPoint( posX , posY , posZ ) ;
+
+ }
+
+ //=========================================================================
+
+ int GPortModel::getPortType( ) {
+ return _portType ;
+ }
+
+ //=========================================================================
+
+ int GPortModel::getPosInBox( ) {
+ return _posInBox ;
+ }