void Render::renderiza(void) { QPoint p1, p2, t; QList<QPair<QPointF,QPointF> > lista = interface.getTodasArestas(); QPainter buff(buffer); QPainter back(backBuffer); buff.fillRect(buffer->rect(), Qt::white); buff.fillRect(buffer->rect(),Qt::transparent); back.fillRect(backBuffer->rect(), Qt::white); back.fillRect(backBuffer->rect(), Qt::transparent); buff.setPen(arestaScreen); for(int i = 0; i < lista.size() ; ++i) { p1 = transforma(lista[i].first); p2 = transforma(lista[i].second); buff.drawLine(p1,p2); back.setPen(arestaGrossaBack); back.drawLine(p1,p2); back.setPen(verticeGrossoBack); back.drawEllipse(p1,5,5); back.drawEllipse(p2,5,5); } }
void Render::renderizaArestas() { QPainter buff(frontBuffer); QPoint p; HalfEdge *partida; HalfEdge::iterator it; buff.setPen(vizinhoScreen); if(vsel != NULL) partida = vsel->getEdge(); if(hsel != NULL) partida = hsel; if(fsel != NULL) partida = fsel->getHalfEdge(); if(vsel != NULL || hsel != NULL) { for(it = partida->v_begin(); it != partida->v_end(); ++it) { buff.drawLine(transforma(it->getOrigem()->getPoint()), transforma(it->getDestino()->getPoint())); } if(hsel != NULL) { partida = partida->getTwin(); for(it = partida->v_begin(); it != partida->v_end(); ++it) { buff.drawLine(transforma(it->getOrigem()->getPoint()), transforma(it->getDestino()->getPoint())); } }else buff.drawLine(transforma(partida->getOrigem()->getPoint()), transforma(partida->getDestino()->getPoint())); } QVector<HalfEdge *> *v; if(fsel != NULL) { if(interface.isExterna(fsel)) v = &(interface.componentesFaceExterna); else { v = new QVector<HalfEdge *>(); v->push_back(partida->getTwin()); } for(int i = 0; i < v->size(); ++i) { partida = v->at(i)->getTwin(); for(it = partida->f_begin(); it != partida->f_end(); ++it) { buff.drawLine(transforma(it->getOrigem()->getPoint()), transforma(it->getDestino()->getPoint())); } buff.drawLine(transforma(partida->getOrigem()->getPoint()), transforma(partida->getDestino()->getPoint())); } if(!interface.isExterna(fsel)) delete v; } }
void Render::arestaSelecionada() { QPainter p(frontBuffer); if(hsel == NULL) return; p.setPen(selecionadoScreen); p.drawLine(transforma(hsel->getOrigem()->getPoint()), transforma(hsel->getDestino()->getPoint())); }
void Render::verticeSelecionado() { QPainter p(frontBuffer); if(vsel == NULL) return; p.setPen(selecionadoScreen); p.drawEllipse(transforma(vsel->getPoint()),5,5); }
void Render::renderizaFace(HalfEdge *h,QImage* b,QPen pen) { QPainter buff(b); QPainterPath *path; QPoint p; HalfEdge::iterator it; buff.setPen(pen); path = new QPainterPath(); p = transforma(h->getOrigem()->getPoint()); path->moveTo(p.x(),p.y()); for(it = h->f_begin(); it != h->f_end(); ++it) { p = transforma(it->getOrigem()->getPoint()); path->lineTo(p.x(),p.y()); } p = transforma(h->getOrigem()->getPoint()); path->lineTo(p.x(),p.y()); buff.fillPath(*path,pen.brush()); delete path; }
int main (int argc, char *argv[]){ ApontadorT arvT; ApontadorP arvP; int elem, bit, tipo; int chave[tam]; int chave_busca[tam]; char op; arvT = inicializa_trie (arvT); arvP = inicializa_pat (arvP); tipo = 0; while (op != 'f') { scanf ("%c" , &op); if (op == 'i') { getchar(); scanf ("%d" , &elem); } if (op == 'b') { getchar(); scanf ("%d" , &elem); getchar(); scanf ("%d" , &bit); } if (op == 'f') elem = 1; switch (op) { case ('i'): dtb (elem, chave); if (!tipo) { if (confere_trie (arvT, elem)) { arvT = insere_trie (arvT, elem, 0, chave); getchar(); imprime_trie (arvT); printf ("\n"); } } else { if (confere_pat (arvP, elem)) { arvP->esq = insere_pat (arvP, arvP->esq, elem, chave, arvP->esq->bit); getchar(); imprime_pat (arvP->esq); printf ("\n"); } } break; case ('b'): dtb (elem, chave); busca_chave (chave, chave_busca, bit); if (!tipo) busca_trie (arvT, 0, elem, bit, chave_busca); else busca_pat (arvP->esq, 0, elem, bit, chave_busca); break; case ('t'): transforma (arvP, arvT); arvT = inicializa_trie (arvT); tipo = 1; break; case ('f'): break; case ('e'): break; } } return 0; }