Exemplo n.º 1
0
void DownloadedPiecesBar::updatePieceColors()
{
  m_pieceColors = QVector<int>(256);
  for (int i = 0; i < 256; ++i) {
    float ratio = (i / 255.0);
    m_pieceColors[i] = mixTwoColors(m_bgColor, m_pieceColor, ratio);
  }
}
Exemplo n.º 2
0
void PieceAvailabilityBar::updatePieceColors()
{
  piece_colors = std::vector<int>(256);
  for (int i = 0; i < 256; ++i) {
    float ratio = (i / 255.0);
    piece_colors[i] = mixTwoColors(bg_color, piece_color, ratio);
  }
}
Exemplo n.º 3
0
void DownloadedPiecesBar::updateImage()
{
  //  qDebug() << "updateImage";
  QImage image2(width() - 2, 1, QImage::Format_RGB888);

  if (m_pieces.isEmpty()) {
    image2.fill(0xffffff);
    m_image = image2;
    update();
    return;
  }

  QVector<float> scaled_pieces = bitfieldToFloatVector(m_pieces, image2.width());
  QVector<float> scaled_pieces_dl = bitfieldToFloatVector(m_downloadedPieces, image2.width());

  // filling image
  for (int x = 0; x < scaled_pieces.size(); ++x)
  {
    float pieces2_val = scaled_pieces.at(x);
    float pieces2_val_dl = scaled_pieces_dl.at(x);
    if (pieces2_val_dl != 0)
    {
      float fill_ratio = pieces2_val + pieces2_val_dl;
      float ratio = pieces2_val_dl / fill_ratio;

      int mixedColor = mixTwoColors(m_pieceColor, m_dlPieceColor, ratio);
      mixedColor = mixTwoColors(m_bgColor, mixedColor, fill_ratio);

      image2.setPixel(x, 0, mixedColor);
    }
    else
    {
      image2.setPixel(x, 0, m_pieceColors[pieces2_val * 255]);
    }
  }
  m_image = image2;
}