Ejemplo n.º 1
0
//---------------------------------------------------------------
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);

}
Ejemplo n.º 2
0
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
///
}
Ejemplo n.º 3
0
//---------------------------------------------------------------
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);
        }
    }
}
Ejemplo n.º 4
0
//======================================================================
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();
}
Ejemplo n.º 6
0
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);

  
 }
}
Ejemplo n.º 7
0
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);
            }
        }
    }
}