// ------------------------------------------------------------------ // // @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(); }
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; }
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(); }