//--------------------------------------------------------------- void LonLatGrid::drawLabel(QPainter &pnt, const Projection *proj, double value, int i, int j) { int a,b,c,d; QString label; QColor couleur(10,10,10); label = label.sprintf("%g", value); QPen penText(couleur); QFont fontText = Font::getFont(FONT_LonLatGridLabel); QFontMetrics fmet(fontText); QRect rect = fmet.boundingRect(label); pnt.setPen(penText); pnt.setFont(fontText); // use a gradient, because it's a bug sometimes with solid pattern (black background) QLinearGradient gradient; int r = 255; gradient.setColorAt(0, QColor(r,r,r, 170)); gradient.setColorAt(1, QColor(r,r,r, 170)); pnt.setBrush(gradient); //--------------------------------------------------------- // Ecrit le label //--------------------------------------------------------- // rect = fmet.boundingRect(label); // rect.moveTo((a+c)/2-rect.width()/2, (b+d)/2-rect.height()/2); // pnt.drawRect(rect.x()-1, rect.y(), rect.width()+2, fmet.ascent()+2); // pnt.drawText(rect, Qt::AlignHCenter|Qt::AlignVCenter, label); }
void IsoLine::drawIsoLineLabels(GRIBOverlayFactory *pof, wxDC &dc, wxColour text_color, wxColour back_color, PlugIn_ViewPort *vp, int density, int first, double coef) { /// //#if 0 std::list<Segment *>::iterator it; int nb = first; wxString label; label.Printf(_T("%d"), (int)(value*coef+0.5)); wxPen penText(text_color); int w, h; dc.GetTextExtent(label, &w, &h); dc.SetPen(penText); dc.SetBrush(wxBrush(back_color)); dc.SetTextForeground(text_color); dc.SetTextBackground(back_color); //--------------------------------------------------------- // Ecrit les labels //--------------------------------------------------------- for (it=trace.begin(); it!=trace.end(); it++,nb++) { if (nb % density == 0) { Segment *seg = *it; // if(vp->vpBBox.PointInBox((seg->px1 + seg->px2)/2., (seg->py1 + seg->py2)/2., 0.)) { // wxPoint ab = vp->GetMercatorPixFromLL(seg->py1, seg->px1); // wxPoint cd = vp->GetMercatorPixFromLL(seg->py2, seg->px2); wxPoint ab; GetCanvasPixLL(vp, &ab, seg->py1, seg->px1); wxPoint cd; GetCanvasPixLL(vp, &cd, seg->py1, seg->px1); int label_offset = 6; int xd = (ab.x + cd.x-(w+label_offset * 2))/2; int yd = (ab.y + cd.y - h)/2; dc.DrawRoundedRectangle(xd, yd, w+(label_offset * 2), h, -.25); dc.DrawText(label, label_offset/2 + xd, yd-1); } } } //#endif /// }
//--------------------------------------------------------------- void IsoLine::drawIsoLineLabels(QPainter &pnt, QColor &couleur, const Projection *proj, int density, int first, double coef,double offset) { std::vector <Segment *>::iterator it; int a,b,c,d; int nb = first; QString label; label = label.sprintf("%d", qRound(value*coef+offset)); QPen penText(couleur); QFont fontText = Font::getFont(FONT_IsolineLabel); QFontMetrics fmet(fontText); QRect rect = fmet.boundingRect(label); pnt.setPen(penText); pnt.setFont(fontText); // use a gradient, because it's a bug sometimes with solid pattern (black background) QLinearGradient gradient; int r = 255; gradient.setColorAt(0, QColor(r,r,r, 170)); gradient.setColorAt(1, QColor(r,r,r, 170)); pnt.setBrush(gradient); //--------------------------------------------------------- // Ecrit les labels //--------------------------------------------------------- for (it=trace.begin(); it!=trace.end(); ++it,nb++) { if (nb % density == 0) { Segment *seg = *it; rect = fmet.boundingRect(label); proj->map2screen( seg->px1, seg->py1, &a, &b ); proj->map2screen( seg->px2, seg->py2, &c, &d ); rect.moveTo((a+c)/2-rect.width()/2, (b+d)/2-rect.height()/2); pnt.drawRect(rect.x()-1, rect.y(), rect.width()+2, fmet.ascent()+2); pnt.drawText(rect, Qt::AlignHCenter|Qt::AlignVCenter, label); // tour du monde ? proj->map2screen( seg->px1-360.0, seg->py1, &a, &b ); proj->map2screen( seg->px2-360.0, seg->py2, &c, &d ); rect.moveTo((a+c)/2-rect.width()/2, (b+d)/2-rect.height()/2); pnt.drawRect(rect.x()-1, rect.y(), rect.width()+2, fmet.ascent()+2); pnt.drawText(rect, Qt::AlignHCenter|Qt::AlignVCenter, label); } } }
//====================================================================== void IacPlot::draw_PRESSURE_IsobarsLabels (QPainter &pnt, Projection *proj) { if (iacReader==NULL || !iacReader->isOk()) { return; } int a,b; QString label="1XXX"; QPen penText(QColor(0,0,0)); QFont fontText = Font::getFont(FONT_IAC_Isobar); QFontMetrics fmet(fontText); QRect rect = fmet.boundingRect(label); pnt.setPen(penText); pnt.setFont(fontText); // use a gradient, because it's a bug sometimes with solid pattern (black background) QLinearGradient gradient; int r = 255; gradient.setColorAt(0, QColor(r,r,r, 140)); gradient.setColorAt(1, QColor(r,r,r, 140)); pnt.setBrush(gradient); //--------------------------------------------------------- // Ecrit les labels //--------------------------------------------------------- std::vector <IAC_Isobar *> *lslines = iacReader->getList_PressureIsobars(); for (uint i=0; i<lslines->size(); i++) { IAC_Isobar * trline= lslines->at(i); std::vector <IAC_Point *> lspoints = trline->points; if (lspoints.size() > 1) { label = label.sprintf("%d", (int)(trline->value+0.5)); rect = fmet.boundingRect(label); IAC_Point *pt = lspoints.at(lspoints.size()/2); proj->map2screen( pt->x, pt->y, &a, &b ); rect.moveTo(a-rect.width()/2, b-rect.height()/2); pnt.drawRect(rect.x()-1, rect.y(), rect.width()+2, fmet.ascent()+2); pnt.drawText(rect, Qt::AlignHCenter|Qt::AlignVCenter, label); // proj->map2screen( pt->x-360, pt->y, &a, &b ); rect.moveTo(a-rect.width()/2, b-rect.height()/2); pnt.drawRect(rect.x()-1, rect.y(), rect.width()+2, fmet.ascent()+2); pnt.drawText(rect, Qt::AlignHCenter|Qt::AlignVCenter, label); } } }
void QAdvancedCalibrationWidget::paintEvent(QPaintEvent *) { QPainter painter; QRect rcClient( 0, 0, width()-1, height()-1 ); painter.begin( this ); switch( m_eCurrentPart ) { case spDetectionRange: m_DetectionRange.draw( painter, rcClient ); break; case spBent: m_BentAdjustment.draw( painter, rcClient ); break; default: break; } QFont ft( font() ); ft.setPixelSize( rcClient.height() / 30 ); ft.setWeight(QFont::Black); painter.setFont( ft ); QFontMetricsF fm( ft ); qreal dW = fm.width( m_strEscapeMsg ); qreal dH = fm.height(); QRectF rcText( rcClient.center().x() - (dW / 2.f), rcClient.height() / 4 - (dH / 2.f), dW, dH ); QPen penText( Qt::SolidLine ); penText.setColor( QColor(160,160,160) ); painter.setPen( penText ); painter.drawText( rcText, m_strEscapeMsg, QTextOption(Qt::AlignCenter) ); painter.end(); }
void Game::paintEvent(QPaintEvent *event) { QPainter painter(this); if(cover->isON()==true)//cover on the begining with instructions painter.drawImage(cover->getRect(), cover->getImage()); if (gameOver) {//print gameover message when all lives lost QFont font("Courier", 15, QFont::DemiBold); QFontMetrics fm(font); int textWidth = fm.width("Game Over"); painter.setFont(font); int h = height(); int w = width(); QPen penText(QColor("#00e0fc"));// drawn using this color painter.setPen(penText); painter.translate(QPoint(w/2, h/2)); painter.drawText(-textWidth/2, 0, "Game Over"); } else if(gameWon) {//prints win message when 6 gets 7 QFont font("Courier", 15, QFont::DemiBold); QFontMetrics fm(font); int textWidth = fm.width("YOU WON :D"); painter.setFont(font); int h = height(); int w = width(); QPen penHText(QColor("#990000")); painter.setPen(penHText); painter.translate(QPoint(w/2, h/2)); painter.drawText(-textWidth/2, 0, "YOU WON :D"); painter.drawText(-100,100 ,"score->"); scores.setNum(score); painter.drawText(100,100 ,scores); } else if(cover->isON()==false&&level1==true&&gameOver==false){//still playing the game so all objecst are draw in current position painter.drawImage(port1->getRect(),port1->getImage(1)); painter.drawImage(port2->getRect(),port2->getImage(1)); painter.drawImage(port3->getRect(),port3->getImage(1)); painter.drawImage(port4->getRect(),port4->getImage(1)); painter.drawImage(port5->getRect(),port5->getImage(1)); painter.drawImage(door->getRect(), door->getImage(1)); painter.drawImage(nj->getRect(), nj->getImage()); painter.drawImage(nj2->getRect(), nj2->getImage()); painter.drawImage(nj3->getRect(), nj3->getImage()); painter.drawImage(block->getRect(), block->getImage()); painter.drawImage(six->getRect(), six->getImage(step)); painter.drawImage(lazer->getRect(), lazer->getImage(0)); painter.drawImage(lazer2->getRect(), lazer2->getImage(0)); painter.drawImage(lazer3->getRect(), lazer3->getImage(0)); painter.drawImage(lazer4->getRect(), lazer4->getImage(0)); painter.drawImage(lazer5->getRect(), lazer5->getImage(0)); painter.drawImage(lazer6->getRect(),lazer6->getImage(0)); painter.drawImage(lwall2->getRect(),lwall->getImage()); painter.drawImage(L->getRect(), L->getImage()); painter.drawImage(lastwall->getRect(), lastwall->getImage()); painter.drawImage(lazerl->getRect(), lazerl->getImage(0)); painter.drawImage(psych->getRect(), psych->getImage()); //painter.drawImage(seven->getRect(), seven->getImage()); painter.drawImage(blade->getRect(), blade->getImage()); painter.drawImage(blade2->getRect(), blade2->getImage()); painter.drawImage(blade3->getRect(), blade3->getImage()); if(!bomb1->boom()==true) painter.drawImage(bomb1->getRect(), bomb1->getImage(0)); if(!bomb2->boom()==true) painter.drawImage(bomb2->getRect(), bomb2->getImage(0)); if(!bomb3->boom()==true) painter.drawImage(bomb3->getRect(), bomb3->getImage(0)); painter.drawImage(lwall->getRect(), lwall->getImage()); } //paints second level else if(cover->isON()==false&&level2==true&&gameOver==false){ painter.drawImage(port1->getRect(),port1->getImage(1)); painter.drawImage(port1->getRect(),port1->getImage(1)); int y = six->getRect().y(); int x = six->getRect().x(); int a = eye1->getRect().left()+(eye1->getRect().width()/2); int b = eye1->getRect().top()+(eye1->getRect().height()/2); int c = eye2->getRect().left()+(eye2->getRect().width()/2); int d = eye2->getRect().top()+(eye2->getRect().height()/2); int e = eye3->getRect().left()+(eye3->getRect().width()/2); int f = eye3->getRect().top()+(eye3->getRect().height()/2); QPoint me(six->getRect().top(),six->getRect().left()); QPoint first(280,425); QPoint second(c,d); QPoint third(e,f); if(ouch1==false)//if not already destroyed sight1= eye1->getQUAD(x,y);//finds the pic to make i look in 6s direction else if(me==first) {sight1=9;key=true;} else {sight1=100;key=true;} if(ouch2==false) sight2= eye2->getQUAD(x,y); else if(me==second) sight2=9; else sight2=12; if(ouch3==false) sight3= eye3->getQUAD(x,y); else if(me==third) sight3=9; else sight3=64; if(ouch4==false) sight4= eye4->getQUAD(x,y); else sight4=9; if(ouch5==false) sight5= eye5->getQUAD(x,y); else sight5=9; painter.drawImage(six->getRect(), six->getImage(step)); painter.drawImage(ninja->getRect(), ninja->getImage(stip)); painter.drawImage(ninja2->getRect(), ninja2->getImage(stip)); for (int i=0; i<45; i++) { painter.drawImage(bricks[i]->getRect(), bricks[i]->getImage()); } //shoots the acid from each eyeball if(ouch1==false) painter.drawImage(bleh1->getRect(), bleh1->getImage()); if(ouch2==false) painter.drawImage(bleh2->getRect(), bleh2->getImage()); if(ouch3==false) painter.drawImage(bleh3->getRect(), bleh3->getImage()); if(ouch4==false) painter.drawImage(bleh4->getRect(), bleh4->getImage()); if(ouch5==false) painter.drawImage(bleh5->getRect(), bleh5->getImage()); //then draw eyes on top painter.drawImage(eye1->getRect(), eye1->getImage2(sight1)); painter.drawImage(eye2->getRect(), eye2->getImage2(sight2)); painter.drawImage(eye3->getRect(), eye3->getImage2(sight3)); painter.drawImage(eye4->getRect(), eye4->getImage2(sight4)); painter.drawImage(eye5->getRect(), eye5->getImage2(sight5)); } //third level with piano guy if(cover->isON()==false&&level3==true&&gameOver==false){ //move to bottom of screen to start this level /* painter.drawImage(side1->getRect(),side1->getImage()); painter.drawImage(side2->getRect(),side2->getImage(0)); painter.drawImage(side3->getRect(),side3->getImage());*/ painter.drawImage(man->getRect(),man->getImage(throwy,0)); painter.drawImage(port2->getRect(),port2->getImage(1)); //painter.drawImage(portsiete->getRect(),portsiete->getImage(1));&&&&&& painter.drawImage(portskull->getRect(),portskull->getImage(1)); painter.drawImage(cloud1->getRect(),cloud1->getImage()); painter.drawImage(cloud5->getRect(),cloud5->getImage()); painter.drawImage(cloud3->getRect(),cloud3->getImage()); //draw all the clouds painter.drawImage(six->getRect(), six->getImage(step)); painter.drawImage(cloud2->getRect(),cloud2->getImage()); painter.drawImage(bolt->getRect(), bolt->getImage());//bolt painted painter.drawImage(cloud4->getRect(),cloud4->getImage()); painter.drawImage(cloud6->getRect(),cloud6->getImage()); //draw three walls and man //draw piano where ever it be painter.drawImage(piano->getRect(),piano->getImage()); //three portals that lead back to siete or skull door } if(final==true&&gameOver==false&&cover->isON()==false&&gameWon==false) { int sight64; int y = six->getRect().y(); int x = six->getRect().x(); int c = aye->getRect().left()+(aye->getRect().width()/2); int d = aye->getRect().top()+(aye->getRect().height()/2); painter.drawImage(bg->getRect(), bg->getImage(stip)); //draw background and animate flames painter.drawImage(bolt->getRect(), bolt->getImage()); if(ouche==false)//if not already destroyed { sight64= aye->getQUAD(x,y); painter.drawImage(aye->getRect(), aye->getImage2(sight64)); //painter.drawImage(blak->getRect(), blak->getImage()); this eye is harmless } else painter.drawImage(aye->getRect(), aye->getImage2(9)); painter.drawImage(six->getRect(), six->getImage(step)); painter.drawImage(seven->getRect(),seven->getImage()); } if(level7==true&&gameOver==false){ int diologue; if(dio<=100) painter.drawImage(siete->getRect(), siete->getImage(1,stip)); else if(dio<=200) painter.drawImage(siete->getRect(), siete->getImage(2,stip)); else painter.drawImage(siete->getRect(), siete->getImage(3,stip)); painter.drawImage(portsiete->getRect(), portsiete->getImage(1)); //portal painter.drawImage(six->getRect(), six->getImage(step)); if((six->getRect()).intersects(portsiete->getRect())){level7=false;level3=true; six->resetState(1000,550); } } //print score------------------------------- QFont font("Arial", 20, QFont::DemiBold); QFontMetrics fm(font); int textWidth = fm.width("LIVES"); painter.setFont(font); QPen penText(QColor("#FFFFFF"));// drawn using this color painter.setPen(penText); //place at bottom of screen painter.translate(QPoint(100, 650)); painter.drawText(-textWidth/2, 0, "LIVES"); QPen penT(QColor("#00e0fc")); painter.setPen(penT); life.setNum(lives); painter.drawText(100, 0 , life); if(lives>=0){ QFont font("Arial", 20, QFont::DemiBold); QFontMetrics fm(font); int textWidth = fm.width(" COOL POINTS"); painter.setFont(font); QPen penText(QColor("#FFFFFF"));// drawn using this color painter.setPen(penText); painter.translate(QPoint(500, 0)); painter.drawText(-textWidth/2, 0, "COOL POINTS"); QPen penT(QColor("#00e0fc")); painter.setPen(penT); scores.setNum(score); painter.drawText(100,0 ,scores); } }
void IsoLine::drawGLIsoLineLabels(GRIBOverlayFactory *pof, wxColour text_color, wxColour back_color, PlugIn_ViewPort *vp, int density, int first, double coef) { std::list<Segment *>::iterator it; int nb = first; wxString label; label.Printf(_T("%d"), (int)(value*coef+0.5)); int w, h; wxPen penText(text_color); wxBrush backBrush(back_color); int label_offset = 10; if(!m_imageLabel.IsOk()) { wxBitmap bm(100,100); // big enough wxMemoryDC mdc(bm); mdc.Clear(); mdc.GetTextExtent(label, &w, &h); mdc.SetPen(penText); mdc.SetBrush(backBrush); mdc.SetTextForeground(text_color); mdc.SetTextBackground(back_color); int xd = 0; int yd = 0; // mdc.DrawRoundedRectangle(xd, yd, w+(label_offset * 2), h, -.25); mdc.DrawRectangle(xd, yd, w+(label_offset * 2), h+2); mdc.DrawText(label, label_offset/2 + xd, yd-1); mdc.SelectObject(wxNullBitmap); wxBitmap sub_BMLabel = bm.GetSubBitmap(wxRect(0,0,w+(label_offset * 2), h+2)); m_imageLabel = sub_BMLabel.ConvertToImage(); } //--------------------------------------------------------- // Ecrit les labels //--------------------------------------------------------- for (it=trace.begin(); it!=trace.end(); it++,nb++) { if (nb % density == 0) { Segment *seg = *it; // if(vp->vpBBox.PointInBox((seg->px1 + seg->px2)/2., (seg->py1 + seg->py2)/2., 0.)) { int w = m_imageLabel.GetWidth(); int h = m_imageLabel.GetHeight(); wxPoint ab; GetCanvasPixLL(vp, &ab, seg->py1, seg->px1); wxPoint cd; GetCanvasPixLL(vp, &cd, seg->py1, seg->px1); int xd = (ab.x + cd.x-(w+label_offset * 2))/2; int yd = (ab.y + cd.y - h)/2; glRasterPos2i(xd, yd); glPixelZoom(1, -1); /* draw data from top to bottom */ glDrawPixels(w, h, GL_RGB, GL_UNSIGNED_BYTE, m_imageLabel.GetData()); glPixelZoom(1, 1); } } } }