GConnectorModel::GConnectorModel()
{
- //_startPort = NULL;
- //_endPort = NULL;
+ _startPort = NULL;
+ _endPort = NULL;
}
//=========================================================================
void GConnectorModel::setStartPort(GPortModel* startPort)
{
_startPort = startPort;
+ startPort->setConnected(true);
double xCenter,yCenter,zCenter;
startPort->getCenter(xCenter,yCenter,zCenter);
void GConnectorModel::setEndPort(GPortModel* endPort)
{
_endPort = endPort;
+ endPort->setConnected(true);
double xCenter,yCenter,zCenter;
endPort->getCenter(xCenter,yCenter,zCenter);
setFinalPoint(xCenter,yIport,zCenter);
+ // Sets the last point of the contour model in the position of the end input port
manualPoint* point = _model->GetManualPoint(_model->GetSizeLstPoints()-1);
point->SetPoint(xCenter,yIport,zCenter);
- cout<<"RaC GConnectorModel::setEndPort size:"<<_model->GetSizeLstPoints()<<endl;
}
//=========================================================================
//=========================================================================
+ void GConnectorModel::updateStartEndPoints()
+ {
+
+ //back point
+ double bsx,bsy; // back start for x and y
+ double nsx,nsy;
+ double bex,bey; // new start for x and y
+ double nex,ney;
+
+ //Start Point
+ double xCenter,yCenter,zCenter;
+ _startPort->getCenter(xCenter,yCenter,zCenter);
+ double xport,yport,zport;
+ _startPort->getFinalPoint(xport,yport,zport);
+
+ // Refresh the position of the contourModel first point with the data of the connector model
+ manualPoint* point = _model->GetManualPoint(0);
+ bsx=point->GetX();
+ bsy=point->GetY();
+ point->SetPoint(xCenter,yport,zCenter);
+ nsx=xCenter;
+ nsy=yport;
+
+ //End Point
+ _endPort->getCenter(xCenter,yCenter,zCenter);
+ _endPort->getInicPoint(xport,yport,zport);
+
+ // Refresh the position of the contourModel last point with the data of the connector model
+ point = _model->GetManualPoint(_model->GetSizeLstPoints()-1);
+ bex=point->GetX();
+ bey=point->GetY();
+ point->SetPoint(xCenter,yport,zCenter);
+ nex=xCenter;
+ ney=yport;
+
+
+ // moving point of the spline connection
+ if ( ((bsx!=nsx)&&(bex!=nex)) || ((bsy!=nsy)&&(bey!=ney)) )
+ {
+ double difx=bsx-nsx;
+ double dify=bey-ney;
+ double tmpX, tmpY, tmpZ;
+ int i,size=_model->GetSizeLstPoints();
+ if (size>2)
+ {
+ for (i=1;i<size-1;i++)
+ {
+ point = _model->GetManualPoint(i);
+ tmpX = point->GetX();
+ tmpY = point->GetY();
+ tmpZ = point->GetZ();
+ point->SetPoint(tmpX-difx,tmpY-dify,tmpZ);
+ } // for i
+ }// if size
+ } // if bsx nsx bex nex bsy nsy bey ney
+ }
+
+ //=========================================================================
+
+ void GConnectorModel::disconnectConnection()
+ {
+ if(_startPort!=NULL)
+ {
+ _startPort->setConnected(false);
+ }
+
+ if(_endPort!=NULL)
+ {
+ _endPort->setConnected(false);
+ }
+ }
+
+ //=========================================================================
+
+ void GConnectorModel::save(std::string &content)
+ {
+ char buffer[50];
+
+ content+="CONNECTION\n";
+
+ // Connection info
+ content+=_startPort->getParentBox()->getBBTKName();
+ content+=":";
+ content+=_startPort->getBBTKName();
+ content+=":";
+ content+=_endPort->getParentBox()->getBBTKName();
+ content+=":";
+ content+=_endPort->getBBTKName();
+ content+="\n";
+
+ int i,sizeLstPoints = _model->GetSizeLstPoints()-2;
+ content+="NumberOfControlPoints:";
+ sprintf (buffer, "%d", sizeLstPoints );
+ content+=buffer;
+ content+="\n";
+
+ for (i=0;i<sizeLstPoints;i++)
+ {
+ manualPoint *mp = _model->GetManualPoint(i+1);
+ sprintf (buffer, "%f:%f:%f\n", (float)mp->GetX(),(float)mp->GetY(),(float)mp->GetZ() );
+ content+=buffer;
+ }
+ }
+
+ //=========================================================================
+
} // EO namespace bbtk
// EOF