Esempio n. 1
0
// ------------------------------------------------------------------
//
// @details This is where the image and task delegation work is performed.
//
// ------------------------------------------------------------------
void MandelImageTask::execute()
{
	//
	// For each row, compute how far to move in each of the y direction
	double deltaY = (m_endY - m_startY) / m_sizeY;

	//
	// Create a bunch of smaller tasks that compute individual rows in the image
	for (auto row : IRange<decltype(m_sizeY)>(0, m_sizeY - 1))
	{
		auto task = std::make_shared<MandelPartTask>(
			m_image.get() + row * m_sizeX, 
			m_sizeX, m_maxIterations,
			m_startY + row * deltaY,
			m_startX, m_endX,
			std::bind(&MandelImageTask::completePart, this),
			this->getPriority());
		ThreadPool::instance()->enqueueTask(task);
	}

	prepareColors();

	//
	// Wait for all of these items to finish computing
	std::unique_lock<std::mutex> lock(m_mutexImageFinished);
	m_imageFinished.wait(lock,
		[this]()
		{
			//
			// Might be a spurious wakeup, make sure we have really received all the parts.
			return m_partsFinished == m_sizeY;
		});

	copyToPixels();
}
Esempio n. 2
0
QColor FeatureColors::genLightColor(const QString& name) {
    static QList<QColor> colors = prepareColors();

    int hash = 0;
    QByteArray a = name.toLatin1();
    for (int i=0;i<a.size(); i++) {
        hash+=a[i];
    }
    QColor c = colors.at((hash*hash)%colors.size());
    return c;
}
Esempio n. 3
0
ComparisonGraphic::ComparisonGraphic(bool preview):
    awayTeamMain(MiamiAllAccessHockey::awaySchool.getPrimaryColor()),
    homeTeamMain(MiamiAllAccessHockey::homeSchool.getPrimaryColor()),
    statFont("Arial", 22, QFont::Bold), nameFont("Arial", 28, QFont::Bold),
    labelFont("Arial", 18, QFont::Bold)
{
    this->preview = preview;
    show = false;
    statHeader = "";
    setRect(0,0,800,BOX_HEIGHT*3);
    statFontPointSize = statFont.pointSize();

    bgGradient.setStart(0, BOX_HEIGHT);
    bgGradient.setFinalStop(0, BOX_HEIGHT * 3);
    statHeaderGradient.setStart(0, 0);
    statHeaderGradient.setFinalStop(0, BOX_HEIGHT);
    bottomGradient.setStart(0, BOX_HEIGHT*2);
    bottomGradient.setFinalStop(0, BOX_HEIGHT * 3);
    topGradient.setStart(0, BOX_HEIGHT);
    topGradient.setFinalStop(0, BOX_HEIGHT*2);
    homeLogo = new QPixmap(MiamiAllAccessHockey::homeSchool.getLogo());
    awayLogo = new QPixmap(MiamiAllAccessHockey::awaySchool.getLogo());

    *homeLogo = homeLogo->scaledToHeight(BOX_HEIGHT, Qt::SmoothTransformation);
    *awayLogo = awayLogo->scaledToHeight(BOX_HEIGHT, Qt::SmoothTransformation);

    if (awayLogo->width() > 50) {
        *awayLogo = awayLogo->scaledToWidth(50, Qt::SmoothTransformation);
    }

    awayLogoXOffset = std::max((50 - awayLogo->width()) / 2, 0);
    awayLogoYOffset = std::max((BOX_HEIGHT - awayLogo->height()) / 2, 0);
    topOffset = true;
    botOffset = false;
    prepareColors();
}