1
/************************************************************************
2
************************************************************************
4
Copyright (C) 2003-2004 GRAME, Centre National de Creation Musicale
5
---------------------------------------------------------------------
6
This program is free software; you can redistribute it and/or modify
7
it under the terms of the GNU General Public License as published by
8
the Free Software Foundation; either version 2 of the License, or
9
(at your option) any later version.
11
This program is distributed in the hope that it will be useful,
12
but WITHOUT ANY WARRANTY; without even the implied warranty of
13
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
GNU General Public License for more details.
16
You should have received a copy of the GNU General Public License
17
along with this program; if not, write to the Free Software
18
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
19
************************************************************************
20
************************************************************************/
26
#include "reprParam.h"
29
#include <complex> //for arctan()
31
reprParam::reprParam(const char* _nom,float l,float h,vector<float> i,vector<float> o) // in and out param
40
void reprParam::draw(device& dev,vector<wire*>& allWires,float x,float y,vector<wire*> wi,vector<wire*> wo,int sens)
44
if(sens == 1) //sens +
46
dev.rect(x,y,largeur,hauteur);
47
for(i=0;i<(int)ins.size();i++)
49
dev.rond(x,y+ins[i],rayonIO);
53
if(wi[i]->getLinkedToSize() != 0 && (int)wi[i]->getLSeg().size()==1) // -> merge
54
for(j=0;j<wi[i]->getLinkedToSize();j++)
56
if(wi[i]->getLinkedTo(j)->getLastSegment().x2-wi[i]->getLinkedTo(j)->getLastSegment().x1 != 0)
58
pente=(wi[i]->getLinkedTo(j)->getLastSegment().y2-wi[i]->getLinkedTo(j)->getLastSegment().y1)/(wi[i]->getLinkedTo(j)->getLastSegment().x2-wi[i]->getLinkedTo(j)->getLastSegment().x1);
59
dev.fleche(x,y+ins[i],atan(pente)*360/(2*3.1415926),sens);
62
else if(wi[i]->getLastSegment().x2-wi[i]->getLastSegment().x1 != 0)
64
pente=(wi[i]->getLastSegment().y2-wi[i]->getLastSegment().y1)/(wi[i]->getLastSegment().x2-wi[i]->getLastSegment().x1);
65
dev.fleche(x,y+ins[i],atan(pente)*360/(2*3.1415926),sens);
70
for(i=0;i<(int)outs.size();i++)
71
dev.rond(x+largeur,y+outs[i],rayonIO);
74
dev.markSens(x,y,sens);
77
dev.text(x+largeur/2,y+hauteur/2,nom);
81
dev.rect(x-largeur,y-hauteur,largeur,hauteur);
82
for(i=0;i<(int)ins.size();i++)
84
dev.rond(x,y-ins[i],rayonIO);
88
if(wi[i]->getLinkedToSize() != 0 && (int)wi[i]->getLSeg().size()==1) // -> merge
89
for(j=0;j<wi[i]->getLinkedToSize();j++)
91
if(wi[i]->getLinkedTo(j)->getLastSegment().x2-wi[i]->getLinkedTo(j)->getLastSegment().x1 != 0)
93
pente=(wi[i]->getLinkedTo(j)->getLastSegment().y2-wi[i]->getLinkedTo(j)->getLastSegment().y1)/(wi[i]->getLinkedTo(j)->getLastSegment().x2-wi[i]->getLinkedTo(j)->getLastSegment().x1);
94
dev.fleche(x,y-ins[i],atan(pente)*360/(2*3.1415926),sens);
97
else if(wi[i]->getLastSegment().x2-wi[i]->getLastSegment().x1 != 0)
99
pente=(wi[i]->getLastSegment().y2-wi[i]->getLastSegment().y1)/(wi[i]->getLastSegment().x2-wi[i]->getLastSegment().x1);
100
dev.fleche(x,y-ins[i],atan(pente)*360/(2*3.1415926),sens);
105
for(i=0;i<(int)outs.size();i++)
106
dev.rond(x-largeur,y-outs[i],rayonIO);
109
dev.markSens(x,y,sens);
112
dev.text(x-largeur/2,y-hauteur/2,nom);
115
cout<<"Param dessine"<<endl;