source: trunk/IPs/systemC/processor/Morpheo/Tools/Viewer/Graphics/src/Graphics_drawAll.cpp @ 33

Last change on this file since 33 was 32, checked in by chou, 17 years ago

Morpheo Viewer Release 5.0
Réalisation des étapes 3 (fin) et 4.

  • Property svn:executable set to *
File size: 5.1 KB
Line 
1#include "window.h"
2
3using namespace morpheo::tools::viewer::parser;
4using namespace morpheo::tools::viewer::bdd;
5using namespace morpheo::tools::viewer::graphics;
6
7void Window::paintEvent( QPaintEvent * )
8{
9  /*draw window size*/
10  setMinimumSize(600,600);
11   
12  int schema;
13  QString t;
14 
15 
16  if(paint){
17    /*draw the main component*/
18    painter.begin(this);
19    painter.setPen(Qt::blue);
20    painter.drawRect(MARGEX,MARGEY,MARGEX+450,MARGEY+450);
21   
22    Entity *e = p.getEntity();
23    string s;
24    s.append(e->getName());
25    s.append(" : ");
26    s.append(e->getType());
27    painter.setPen(Qt::black);
28    painter.drawText(50,10,500,60,Qt::AlignCenter,QString::fromStdString(s));
29    painter.setPen(Qt::blue);
30
31    /*draw the ports of the main component*/
32    for(QList<Port>::iterator it=port_east.begin(); it!=port_east.end(); ++it){
33      portX = it->get_x();
34      portY = it->get_y();
35      drawPort(portX + MARGEX,portY + MARGEY ,EAST,it->getDirection());
36
37    } 
38   
39    for(QList<Port>::iterator it=port_west.begin(); it!=port_west.end(); ++it){
40      portX = it->get_x() ;
41      portY = it->get_y() ;
42      drawPort(portX + MARGEX,portY + MARGEY, WEST, it->getDirection());
43
44    }
45
46    for(QList<Port>::iterator it=port_north.begin(); it!=port_north.end(); ++it){
47      portX = it->get_x() ;
48      portY = it->get_y() ;
49      drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it->getDirection());
50
51    }
52
53    for(QList<Port>::iterator it=port_south.begin(); it!=port_south.end(); ++it){
54      portX = it->get_x() ;
55      portY = it->get_y() ;
56      drawPort(portX + MARGEX,portY+ MARGEY + 20 ,SOUTH,it->getDirection());
57
58    }
59   
60    /*draw the components inside the main component*/
61    if(p.getArchitecture()!=NULL){
62      compo = p.getComponent();
63      for(QList<Component>::iterator it=compo->begin();it!=compo->end();++it){
64        Coord *co = it->get_Position();
65        posX = co->get_hg_x()+MARGEX;
66        posY = co->get_hg_y()+MARGEY;
67        tailleX = co->get_size_x();
68        tailleY = co->get_size_y();
69       
70        t=QString::fromStdString(it->getType()).toLower();
71        BaseP tp = base->get_BasePos(t.toStdString());
72        if(&tp != NULL){
73          schema=tp.getSchema();
74          switch(schema){
75          case 0://a basic element
76            painter.drawRect(posX,posY,tailleX,tailleY);
77            break;
78          case 1://a combinatoire element
79            painter.drawEllipse(posX,posY,tailleX,tailleY);
80            break; 
81          case 2://a FIFO
82            painter.drawRect(posX,posY,tailleX,tailleY);
83            painter.drawLine(posX+tailleX/4,posY+tailleY,posX+tailleX/4,posY);
84            painter.drawLine(posX+tailleX/2,posY+tailleY,posX+tailleX/2,posY);
85            painter.drawLine(posX+3*tailleX/4,posY+tailleY,posX+3*tailleX/4,posY);
86            break;
87          case 3://a register
88            painter.drawRect(posX,posY,tailleX,tailleY);
89            painter.drawLine(posX,posY+tailleY,posX+tailleX/2,posY+tailleY/2);
90            painter.drawLine(posX+tailleX,posY+tailleY,posX+tailleX/2,posY+tailleY/2);
91            break;
92          }
93        }
94
95        if (componentName){
96          QString compo_name = QString::fromStdString(it->getName());
97          painter.drawText(posX - compo_name.size()/2 , posY + tailleY/2,compo_name);
98        }
99
100        /*draw the ports of the inside components*/
101        Coord *co2=new Coord( co->get_hg_x() + tailleX/2, co->get_hg_y() + tailleY/2,tailleX/2,tailleY/2);
102
103        QList<Port> ports2=(it->getPortEast(co2));
104        for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) 
105          {
106           
107            portX =it2->get_x();
108            portY =it2->get_y();
109            drawPort(portX + MARGEX,portY+MARGEY , EAST,it2->getDirection());
110          }
111        ports2=(it->getPortWest(co));
112        for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) 
113          {
114           
115            portX =it2->get_x();
116            portY =it2->get_y();
117            drawPort(portX + MARGEX ,portY+MARGEY ,WEST,it2->getDirection());
118          }
119        ports2=(it->getPortNorth(co));
120        for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) 
121          {
122           
123            portX =it2->get_x();
124            portY =it2->get_y();
125            drawPort(portX + MARGEX ,portY+MARGEY,NORTH,it2->getDirection());
126           
127          }
128        ports2=(it->getPortSouth(co));
129        for (QList<Port>::iterator it2=ports2.begin();it2!=ports2.end();++it2) 
130          {
131           
132            portX =it2->get_x();
133            portY =it2->get_y();
134            drawPort(portX + MARGEX ,portY+MARGEY,SOUTH,it2->getDirection());
135
136          }
137        painter.setPen(Qt::red);
138        QList<PortMap> *pm=it->getPortMap();
139       
140        /*draw the signals*/
141        for (QList<PortMap>::iterator it3=pm->begin();it3!=pm->end();++it3) 
142          {
143            Signal *s=base->getSignal(&p,it->getName(),new PortMap(*it3));
144            painter.drawLine(s->get_src_x()+MARGEX,s->get_src_y()+MARGEY,s->get_dest_x()+MARGEX,s->get_dest_y()+MARGEY);
145
146            if(signalName){
147              QString signal_name = QString::fromStdString(it3->getName());
148              if(s->get_src_x() > s->get_dest_x())
149                painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name);
150              if(s->get_src_x() < s->get_dest_x())
151                painter.drawText(s->get_dest_x() + MARGEX - 40 ,s->get_dest_y() + MARGEY-10, signal_name);
152            }
153
154          }
155        if(charg_open){
156          charg_open = false;
157          mess_charg->close();
158        }
159        painter.setPen(Qt::blue);
160      }
161    }
162    painter.end();
163  }
164   if(mess_open){
165    mess_open = false;
166    mess->close();
167   }
168}
169
170void Window::repaint(){
171}
172
Note: See TracBrowser for help on using the repository browser.