void CMeter2DGraphView::paintGL() { TRACE_FUN( Frequently, "CMeter2DGraphView::paintGL" ); CAbstractMeterView::paintGL(); if( model()->hasValues() ) { DrawTitles(); DrawMesh(); DrawValueGraph(); } }
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(); }
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); }