Ejemplo n.º 1
0
void CMeter2DGraphView::paintGL()
{
   TRACE_FUN( Frequently, "CMeter2DGraphView::paintGL" );
   
   CAbstractMeterView::paintGL();

   if( model()->hasValues() )
   {
      DrawTitles();
      DrawMesh();
      DrawValueGraph();
   }
}
Ejemplo n.º 2
0
void QGraph::DrawGraph(QPainter &painter)
{
	static QColor color;
	painter.save();

//	Paint background
//	QBrush bg(m_BkColor);
//	painter.setBackground(bg);

//	Draw Border
	if(m_bBorder) color = m_BorderColor;
	else          color = m_BkColor;
	QPen BorderPen(color);
	BorderPen.setStyle(GetStyle(m_BorderStyle));
	BorderPen.setWidth(m_BorderWidth);

	painter.setPen(BorderPen);
	painter.fillRect(m_rCltRect, m_BkColor);
	painter.drawRect(m_rCltRect);
	Init();

	painter.setClipRect(m_rCltRect);

	painter.setBackgroundMode(Qt::TransparentMode);

	if(m_bXMinGrid) DrawXMinGrid(painter);
	if(m_bYMinGrid) DrawYMinGrid(painter);
	if(m_bXMajGrid) DrawXMajGrid(painter);
	if(m_bYMajGrid) DrawYMajGrid(painter);

	DrawAxes(painter);

	DrawXTicks(painter);

	DrawYTicks(painter);

	for (int nc=0; nc < m_oaCurves.size(); nc++)	DrawCurve(nc,painter);

	DrawTitles(painter);

	painter.setClipping(false);
	painter.restore();
}
Ejemplo n.º 3
0
void LevelManager::UpdateDisplay(GameEngine* game) {

    // Reset all tiles to blank
    game->display->SetAll(TILE_BLANK);

    // Draw the level in the center
    int offsetX = (game->display->GetWidth() - levelData->GetWidth())/2;
    int offsetY = TITLE_HEIGHT + (LEVEL_HEIGHT_MAX - levelData->GetHeight())/2;//(game->display->GetHeight() - levelData->GetHeight())/2;

    // Draw all the walls and floors
    for (int y = 0; y < levelData->GetHeight(); y++) {
        for (int x = 0; x < levelData->GetWidth(); x++) {
            int c = levelData->GetTileDisplayCharacter(x, y);
            game->display->SetDisplayCharacter(x + offsetX, y + offsetY, c);
        }
    }

    // 2D array of int vectors

    // NOTE: In order to make clang happy, we use this:
    //   LEVEL_WIDTH_MAX * LEVEL_HEIGHT_MAX
    // Instead of this:
    //   levelData->GetWidth() * levelData->GetHeight();
    std::vector<int> objectQueue[LEVEL_WIDTH_MAX * LEVEL_HEIGHT_MAX];

    // Queue all the objects to be drawn in the 2D array of int vectors
    for (int index = 0; index < levelData->GetNumObjects(); index++) {
        int c = levelData->GetObjectDisplayCharacter(index);
        int x = levelData->GetObjectX(index);
        int y = levelData->GetObjectY(index);

        // Check the object lies within the level boundaries, else objectQueue will not be accessed correctly
        // Objects are sometimes given coordinates outside the boundaries (e.g. -1,-1) in order to make them "invisible"
        if (x >= 0 && x < levelData->GetWidth() && y >= 0 && y < levelData->GetHeight())
            objectQueue[x + y * levelData->GetWidth()].push_back(c);
    }

    // Loop through the 2D array of int vectors
    for (int y = 0; y < levelData->GetHeight(); y++) {
        for (int x = 0; x < levelData->GetWidth(); x++) {
            //2D//int s = objectQueue[x][y].size();
            int s = objectQueue[x + y * levelData->GetWidth()].size();
            // Check whether there is at least one object queued to be drawn at this position
            if (s == 1) {
                //2D//game->display->SetDisplayCharacter(x + offsetX, y + offsetY, (objectQueue[x][y]).at(0));
                game->display->SetDisplayCharacter(x + offsetX, y + offsetY, (objectQueue[x + y * levelData->GetWidth()]).at(0));
            } else if (s > 1) {
                // Choose one of the objects to draw based upon the gameClock

                // Scale the time in order to determine how long each object's display character is shown for
                int t = ((int)(game->gameClock->getElapsedTime().asSeconds() / SECONDS_PER_OBJECT));

                // This is the display character shown between every other tile
                int c = TILE_PLUS;

                // Multiply by 2 because every other character will be TILE_PLUS by default
                //2D//int objectToDraw = t % (objectQueue[x][y].size() * 2);
                int objectToDraw = t % (objectQueue[x + y * levelData->GetWidth()].size() * 2);

                // Set every other tile to the display character of the relevant object
                // Divide by two because objectToDraw was multiplied by two earlier
                if (objectToDraw % 2 == 0)
                    c = (objectQueue[x + y * levelData->GetWidth()]).at(objectToDraw/2);
                    //2D//c = (objectQueue[x][y]).at(objectToDraw/2);

                // Actually update display
                game->display->SetDisplayCharacter(x + offsetX, y + offsetY, c);
            }
        }
    }

    // Draw the timeline
    timeline->UpdateDisplay(game, this);

    // Draw the titles
    DrawTitles(game);

    // Draw the victory/failure things on top
    endGame->UpdateDisplay(game, this);
}