void RGBAudio::calculateColors(int barsHeight) { if (barsHeight > 0) { m_barColors.clear(); if (endColor() == QColor()) { for (int i = 0; i < barsHeight; i++) m_barColors.append(startColor().rgb()); } else { int crDelta = (endColor().red() - startColor().red()) / (barsHeight - 1); int cgDelta = (endColor().green() - startColor().green()) / (barsHeight - 1); int cbDelta = (endColor().blue() - startColor().blue()) / (barsHeight - 1); QColor pixelColor = startColor(); for (int i = 0; i < barsHeight; i++) { m_barColors.append(pixelColor.rgb()); pixelColor = QColor(pixelColor.red() + crDelta, pixelColor.green() + cgDelta, pixelColor.blue() + cbDelta); } } } }
void FractalCreator::drawFractal() { RGB startColor(0, 0, 0); RGB endColor(0, 0, 255); RGB colorDiff = endColor - startColor; for (int y = 0; y < m_height; y++) { for (int x = 0; x < m_width; x++) { uint8_t red = 0; uint8_t green = 0; uint8_t blue = 0; int iterations = m_fractal[y * m_width + x]; if (iterations != Mandelbrot::MAX_ITERATIONS) { double hue = 0.0; for (int i = 0; i <= iterations; i++) { hue += ((double) m_histogram[i]) / m_total; } red = startColor.r + colorDiff.r*hue; green = startColor.g + colorDiff.g*hue; blue = startColor.b + colorDiff.b*hue; } m_bitmap.setPixel(x, y, red, green, blue); } } }
void ParticlePerformTest4::doTest() { auto s = Director::getInstance()->getWinSize(); auto particleSystem = (ParticleSystem*) getChildByTag(kTagParticleSystem); // duration particleSystem->setDuration(-1); // gravity particleSystem->setGravity(Vec2(0,-90)); // angle particleSystem->setAngle(90); particleSystem->setAngleVar(0); // radial particleSystem->setRadialAccel(0); particleSystem->setRadialAccelVar(0); // speed of particles particleSystem->setSpeed(180); particleSystem->setSpeedVar(50); // emitter position particleSystem->setPosition(Vec2(s.width/2, 100)); particleSystem->setPosVar(Vec2(s.width/2,0)); // life of particles particleSystem->setLife(2.0f); particleSystem->setLifeVar(1); // emits per frame particleSystem->setEmissionRate(particleSystem->getTotalParticles() / particleSystem->getLife()); // color of particles Color4F startColor(0.5f, 0.5f, 0.5f, 1.0f); particleSystem->setStartColor(startColor); Color4F startColorVar(0.5f, 0.5f, 0.5f, 1.0f); particleSystem->setStartColorVar(startColorVar); Color4F endColor(0.1f, 0.1f, 0.1f, 0.2f); particleSystem->setEndColor(endColor); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.2f); particleSystem->setEndColorVar(endColorVar); // size, in pixels particleSystem->setEndSize(64.0f); particleSystem->setStartSize(64.0f); particleSystem->setEndSizeVar(0); particleSystem->setStartSizeVar(0); // additive particleSystem->setBlendAdditive(false); }
bool RGBMatrix::saveXML(QXmlStreamWriter *doc) { Q_ASSERT(doc != NULL); /* Function tag */ doc->writeStartElement(KXMLQLCFunction); /* Common attributes */ saveXMLCommon(doc); /* Speeds */ saveXMLSpeed(doc); /* Direction */ saveXMLDirection(doc); /* Run order */ saveXMLRunOrder(doc); /* Algorithm */ if (m_algorithm != NULL) m_algorithm->saveXML(doc); /* Dimmer Control */ doc->writeTextElement(KXMLQLCRGBMatrixDimmerControl, QString::number(dimmerControl())); /* Start Color */ doc->writeTextElement(KXMLQLCRGBMatrixStartColor, QString::number(startColor().rgb())); /* End Color */ if (endColor().isValid()) { doc->writeTextElement(KXMLQLCRGBMatrixEndColor, QString::number(endColor().rgb())); } /* Fixture Group */ doc->writeTextElement(KXMLQLCRGBMatrixFixtureGroup, QString::number(fixtureGroup())); /* Properties */ QHashIterator<QString, QString> it(m_properties); while(it.hasNext()) { it.next(); doc->writeStartElement(KXMLQLCRGBMatrixProperty); doc->writeAttribute(KXMLQLCRGBMatrixPropertyName, it.key()); doc->writeAttribute(KXMLQLCRGBMatrixPropertyValue, it.value()); doc->writeEndElement(); } /* End the <Function> tag */ doc->writeEndElement(); return true; }
bool RGBMatrix::saveXML(QDomDocument* doc, QDomElement* wksp_root) { QDomElement root; QDomElement tag; QDomText text; QString str; Q_ASSERT(doc != NULL); Q_ASSERT(wksp_root != NULL); /* Function tag */ root = doc->createElement(KXMLQLCFunction); wksp_root->appendChild(root); /* Common attributes */ saveXMLCommon(&root); /* Speeds */ saveXMLSpeed(doc, &root); /* Direction */ saveXMLDirection(doc, &root); /* Run order */ saveXMLRunOrder(doc, &root); /* Algorithm */ if (m_algorithm != NULL) m_algorithm->saveXML(doc, &root); /* Start Color */ tag = doc->createElement(KXMLQLCRGBMatrixStartColor); root.appendChild(tag); text = doc->createTextNode(QString::number(startColor().rgb())); tag.appendChild(text); /* End Color */ if (endColor().isValid()) { tag = doc->createElement(KXMLQLCRGBMatrixEndColor); root.appendChild(tag); text = doc->createTextNode(QString::number(endColor().rgb())); tag.appendChild(text); } /* Fixture Group */ tag = doc->createElement(KXMLQLCRGBMatrixFixtureGroup); root.appendChild(tag); text = doc->createTextNode(QString::number(fixtureGroup())); tag.appendChild(text); return true; }
// This function is a slot activated by clientsocket when the image change is required. void ServerNForm::slotGUIupdateStopButtonImage() { QColor startColor(192,192,192); QColor stopColor_rl03(0,255,0); // button up QColor stopColor_rl02(0,0,255); // button down QColor stopColor_rl01(255,255,0); // Initializing QColor stopColor_rl00(255,0,0); // Emergency static int prv_runlevel=3, prv_start=TRUE; if( (prv_start) && !(UI2Madata.flag01&BASIC_START) ) { startButton->setPixmap(pm_start); setPaletteBackgroundColor_ksy(A_startButton, startColor); } else if( !(prv_start) && (UI2Madata.flag01&BASIC_START) ) { if( Ma2UIdata.runlevel == 0) { startButton->setPixmap(pm_stop00); setPaletteBackgroundColor_ksy(A_startButton, stopColor_rl00); } else if( Ma2UIdata.runlevel == 1) { startButton->setPixmap(pm_stop01); setPaletteBackgroundColor_ksy(A_startButton, stopColor_rl01); } else if( Ma2UIdata.runlevel == 2) { startButton->setPixmap(pm_stop02); setPaletteBackgroundColor_ksy(A_startButton, stopColor_rl02); } else if( Ma2UIdata.runlevel == 3) { startButton->setPixmap(pm_stop03); setPaletteBackgroundColor_ksy(A_startButton, stopColor_rl03); } } else if( (prv_start) && (UI2Madata.flag01&BASIC_START) ) { if(prv_runlevel != 0 && Ma2UIdata.runlevel == 0) { startButton->setPixmap(pm_stop00); setPaletteBackgroundColor_ksy(A_startButton, stopColor_rl00); } else if(prv_runlevel != 1 && Ma2UIdata.runlevel == 1) { startButton->setPixmap(pm_stop01); setPaletteBackgroundColor_ksy(A_startButton, stopColor_rl01); } else if(prv_runlevel != 2 && Ma2UIdata.runlevel == 2) { startButton->setPixmap(pm_stop02); setPaletteBackgroundColor_ksy(A_startButton, stopColor_rl02); } else if(prv_runlevel != 3 && Ma2UIdata.runlevel == 3) { startButton->setPixmap(pm_stop03); setPaletteBackgroundColor_ksy(A_startButton, stopColor_rl03); } } prv_start = UI2Madata.flag01&BASIC_START; prv_runlevel = Ma2UIdata.runlevel; }
void TestScene::emit() { auto _emitter = ParticleSystemQuad::createWithTotalParticles(100); addChild(_emitter, 10); _emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("images/test_lizi.png")); _emitter->setDuration(1.f); // gravity _emitter->setGravity(Vec2::ZERO); // angle _emitter->setAngle(90); _emitter->setAngleVar(0); // speed of particles _emitter->setSpeed(260); _emitter->setSpeedVar(0); // radial _emitter->setRadialAccel(-260); _emitter->setRadialAccelVar(0); // tagential _emitter->setTangentialAccel(00); _emitter->setTangentialAccelVar(0); // emitter position // _emitter->setPosition( Vec2(160,240) ); _emitter->setPosVar({2,10}); // life of particles _emitter->setLife(1); _emitter->setLifeVar(0); // spin of particles _emitter->setStartSpin(10000); _emitter->setStartSizeVar(360); _emitter->setEndSpin(0); _emitter->setEndSpinVar(360); // color of particles Color4F startColor(0.f, 0.5f, 0.f, 1.0f); _emitter->setStartColor(startColor); Color4F startColorVar(0.f, 0.1f, 0.f, 1.0f); _emitter->setStartColorVar(startColorVar); Color4F endColor(0.1f, 0.5f, 0.1f, 1.0f); _emitter->setEndColor(endColor); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.2f); _emitter->setEndColorVar(endColorVar); // size, in pixels _emitter->setStartSize(5.0f); _emitter->setStartSizeVar(1.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles()/_emitter->getLife()); // additive _emitter->setBlendAdditive(true); //addChild(_emitter); _emitter->setPosition(genPos({0.5,0.5})); // _emitter->runAction(RotateBy::create(10.f, 1000)); }
ParticleSystemQuad* BaseScene::createComplexParticle(int type){ if (type == 0){ _emitter = ParticleSystemQuad::createWithTotalParticles(50); addChild(_emitter, 10); _emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("Images/stars.png")); _emitter->setDuration(-1); // gravity _emitter->setGravity(Vec2::ZERO); // angle _emitter->setAngle(90); _emitter->setAngleVar(360); // speed of particles _emitter->setSpeed(160); _emitter->setSpeedVar(20); // radial _emitter->setRadialAccel(-120); _emitter->setRadialAccelVar(0); // tagential _emitter->setTangentialAccel(30); _emitter->setTangentialAccelVar(0); // emitter position _emitter->setPosition(Vec2(160, 240)); _emitter->setPosVar(Vec2::ZERO); // life of particles _emitter->setLife(4); _emitter->setLifeVar(1); // spin of particles _emitter->setStartSpin(0); _emitter->setStartSizeVar(0); _emitter->setEndSpin(0); _emitter->setEndSpinVar(0); // color of particles Color4F startColor(0.5f, 0.5f, 0.5f, 1.0f); _emitter->setStartColor(startColor); Color4F startColorVar(0.5f, 0.5f, 0.5f, 1.0f); _emitter->setStartColorVar(startColorVar); Color4F endColor(0.1f, 0.1f, 0.1f, 0.2f); _emitter->setEndColor(endColor); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.2f); _emitter->setEndColorVar(endColorVar); // size, in pixels _emitter->setStartSize(80.0f); _emitter->setStartSizeVar(40.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles() / _emitter->getLife()); // additive _emitter->setBlendAdditive(true); } else if (type == 1){ _emitter = ParticleSystemQuad::createWithTotalParticles(300); _emitter->retain(); addChild(_emitter, 10); ////_emitter->release(); // win32 : Remove this line _emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("Images/stars.png")); // duration _emitter->setDuration(-1); // gravity _emitter->setGravity(Vec2::ZERO); // angle _emitter->setAngle(90); _emitter->setAngleVar(360); // speed of particles _emitter->setSpeed(160); _emitter->setSpeedVar(20); // radial _emitter->setRadialAccel(-120); _emitter->setRadialAccelVar(0); // tagential _emitter->setTangentialAccel(30); _emitter->setTangentialAccelVar(0); // emitter position _emitter->setPosition(Vec2(160, 240)); _emitter->setPosVar(Vec2::ZERO); // life of particles _emitter->setLife(3); _emitter->setLifeVar(1); // spin of particles _emitter->setStartSpin(0); _emitter->setStartSpinVar(0); _emitter->setEndSpin(0); _emitter->setEndSpinVar(2000); // color of particles Color4F startColor(0.5f, 0.5f, 0.5f, 1.0f); _emitter->setStartColor(startColor); Color4F startColorVar(0.5f, 0.5f, 0.5f, 1.0f); _emitter->setStartColorVar(startColorVar); Color4F endColor(0.1f, 0.1f, 0.1f, 0.2f); _emitter->setEndColor(endColor); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.2f); _emitter->setEndColorVar(endColorVar); // size, in pixels _emitter->setStartSize(30.0f); _emitter->setStartSizeVar(00.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles() / _emitter->getLife()); // additive _emitter->setBlendAdditive(false); } return _emitter; }
void GameSceneQuattro::addPartcleStella(Vec2 posizione) { _boom = ParticleSystemQuad::createWithTotalParticles(900); _boom->setTexture(Director::getInstance()->getTextureCache()->addImage("gugut_01.png")); //The code below we can use both in 2.x and 3.x _boom->setDuration(-1); _boom->setGravity(Point(0, -240)); // in Cocos2d-x-2.x CCPoint(0, -240) is used _boom->setAngle(90); _boom->setAngleVar(360); _boom->setRadialAccel(50); _boom->setRadialAccelVar(0); _boom->setTangentialAccel(30); _boom->setTangentialAccelVar(0); _boom->setPosition(Point(_visibleSize.width / 2 , _visibleSize.width / 2 )); _boom->setPosVar(Point(400, 0)); _boom->setLife(4); _boom->setLifeVar(2); _boom->setStartSpin(30); _boom->setStartSpinVar(60); _boom->setEndSpin(60); _boom->setEndSpinVar(60); _boom->setStartColor(Color4F(255,255,255,1)); _boom->setStartColorVar(Color4F(0,0,0,0)); _boom->setEndColor(Color4F(255, 255, 255, 1)); _boom->setEndColorVar(Color4F(0, 0, 0, 0)); _boom->setStartSize(30); _boom->setStartSizeVar(0); _boom->setEndSize(20.0f); _boom->setEndSizeVar(0); _boom->setEmissionRate(100); _boom->stopSystem(); addChild(_boom,10); _emitter = ParticleSystemQuad::createWithTotalParticles(300); _emitter->retain(); addChild(_emitter, 15); ////_emitter->release(); // win32 : Remove this line _emitter->setTexture( Director::getInstance()->getTextureCache()->addImage("star.png") ); // duration _emitter->setDuration(-1); // gravity _emitter->setGravity(Vec2::ZERO); // angle _emitter->setAngle(90); _emitter->setAngleVar(360); // speed of particles _emitter->setSpeed(160); _emitter->setSpeedVar(20); // radial _emitter->setRadialAccel(-120); _emitter->setRadialAccelVar(0); // tagential _emitter->setTangentialAccel(30); _emitter->setTangentialAccelVar(0); // emitter position _emitter->setPosition( Vec2(160,240) ); _emitter->setPosVar(Vec2::ZERO); // life of particles _emitter->setLife(3); _emitter->setLifeVar(1); // spin of particles _emitter->setStartSpin(0); _emitter->setStartSpinVar(0); _emitter->setEndSpin(0); _emitter->setEndSpinVar(2000); // color of particles Color4F startColor(0.5f, 0.5f, 0.5f, 1.0f); _emitter->setStartColor(startColor); Color4F startColorVar(0.5f, 0.5f, 0.5f, 1.0f); _emitter->setStartColorVar(startColorVar); Color4F endColor(0.1f, 0.1f, 0.1f, 0.2f); _emitter->setEndColor(endColor); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.2f); _emitter->setEndColorVar(endColorVar); // size, in pixels _emitter->setStartSize(30.0f); _emitter->setStartSizeVar(00.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles()/_emitter->getLife()); // additive _emitter->setBlendAdditive(false); _emitter->setPosition(Point(_visibleSize.width / 2 , _visibleSize.height / 2 )); _emitter->stopSystem(); }
bool RGBMatrix::saveXML(QDomDocument* doc, QDomElement* wksp_root) { QDomElement root; QDomElement tag; QDomText text; QString str; Q_ASSERT(doc != NULL); Q_ASSERT(wksp_root != NULL); /* Function tag */ root = doc->createElement(KXMLQLCFunction); wksp_root->appendChild(root); /* Common attributes */ saveXMLCommon(&root); /* Speeds */ saveXMLSpeed(doc, &root); /* Direction */ saveXMLDirection(doc, &root); /* Run order */ saveXMLRunOrder(doc, &root); /* Algorithm */ if (m_algorithm != NULL) m_algorithm->saveXML(doc, &root); /* Dimmer Control */ tag = doc->createElement(KXMLQLCRGBMatrixDimmerControl); root.appendChild(tag); text = doc->createTextNode(QString::number(dimmerControl())); tag.appendChild(text); /* Start Color */ tag = doc->createElement(KXMLQLCRGBMatrixStartColor); root.appendChild(tag); text = doc->createTextNode(QString::number(startColor().rgb())); tag.appendChild(text); /* End Color */ if (endColor().isValid()) { tag = doc->createElement(KXMLQLCRGBMatrixEndColor); root.appendChild(tag); text = doc->createTextNode(QString::number(endColor().rgb())); tag.appendChild(text); } /* Fixture Group */ tag = doc->createElement(KXMLQLCRGBMatrixFixtureGroup); root.appendChild(tag); text = doc->createTextNode(QString::number(fixtureGroup())); tag.appendChild(text); /* Properties */ QHashIterator<QString, QString> it(m_properties); while(it.hasNext()) { it.next(); tag = doc->createElement(KXMLQLCRGBMatrixProperty); tag.setAttribute(KXMLQLCRGBMatrixPropertyName, it.key()); tag.setAttribute(KXMLQLCRGBMatrixPropertyValue, it.value()); root.appendChild(tag); } return true; }
void FloatingEffectManager::toast_cure(const cocos2d::Vec2& srcPos, const cocos2d::Vec2& desPos, DDElementType elementType, int level) { const float speed = 300; float len = (desPos-srcPos).length(); if (len == 0) { return; } auto _emitter = ParticleSystemQuad::createWithTotalParticles(500); _emitter->setAutoRemoveOnFinish(true); _layer->addChild(_emitter, 10); _emitter->setTexture(Director::getInstance()->getTextureCache()->addImage("images/test_lizi.png")); _emitter->setDuration(len/speed); // gravity _emitter->setGravity(Vec2::ZERO); // angle _emitter->setAngle(vector2angel(desPos-srcPos)); _emitter->setAngleVar(0.5f* std::atan(DDConfig::battleCubeWidth()/len) * 180.f/3.1415926f); // speed of particles _emitter->setSpeed(speed); _emitter->setSpeedVar(0); // radial _emitter->setRadialAccel(-(speed/(2*len/speed))); _emitter->setRadialAccelVar(0); // tagential _emitter->setTangentialAccel(00); _emitter->setTangentialAccelVar(0); // emitter position // _emitter->setPosition( Vec2(160,240) ); _emitter->setPosVar({0,0}); // life of particles _emitter->setLife(2*len/speed); _emitter->setLifeVar(0); // spin of particles _emitter->setStartSpin(720); _emitter->setStartSizeVar(360); _emitter->setEndSpin(0); _emitter->setEndSpinVar(360); // color of particles Color4F startColor(0.f, 0.5f, 0.f, 0.8f); _emitter->setStartColor(startColor); Color4F startColorVar(0.f, 0.1f, 0.f, 0.1f); _emitter->setStartColorVar(startColorVar); Color4F endColor(0.1f, 0.5f, 0.1f, 0.8f); _emitter->setEndColor(endColor); Color4F endColorVar(0.1f, 0.1f, 0.1f, 0.1f); _emitter->setEndColorVar(endColorVar); // size, in pixels _emitter->setStartSize(3.0f); _emitter->setStartSizeVar(1.0f); _emitter->setEndSize(ParticleSystem::START_SIZE_EQUAL_TO_END_SIZE); // emits per second _emitter->setEmissionRate(_emitter->getTotalParticles()/_emitter->getLife()); // additive _emitter->setBlendAdditive(true); _emitter->setPosition(srcPos); }
void PlexyDayWidget::paintFrontView(QPainter *painter, const QRectF &rect) { if (!painter->isActive()) { return; } if (isObscured()) { return; } /* Painter settings */ painter->setRenderHint(QPainter::Antialiasing, true); painter->setRenderHint(QPainter::TextAntialiasing, true); painter->setRenderHint(QPainter::HighQualityAntialiasing, true); /* Draw the background. */ float headerHight = 64.0; #ifdef Q_WS_QPA headerHight = 64.0 * 2; #endif QPainterPath backgroundPath; backgroundPath.addRect(QRectF(0.0, headerHight, rect.width(), rect.height())); QLinearGradient linearGrad(QPointF(0, 0), QPointF(0.0, rect.height())); linearGrad.setColorAt(1, QColor(189, 191, 196)); linearGrad.setColorAt(0, QColor(231, 235, 238)); painter->fillPath(backgroundPath, linearGrad); QPen pen(QColor(98, 101, 108), 2, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin); painter->setPen(pen); painter->drawPath(backgroundPath); /* Draw the top header date box */ QRectF titleCornerRect = QRect(0.0, 0.0, headerHight, headerHight); QLinearGradient titleCornerGrad(QPointF(0, 0), QPointF(0.0, titleCornerRect.height())); titleCornerGrad.setColorAt(0, QColor(81, 168, 201)); titleCornerGrad.setColorAt(1, QColor(21, 108, 169)); painter->fillRect(titleCornerRect, titleCornerGrad); QPointF start(0.0, 0.0); QPointF end(0.0, titleCornerRect.height()); QList<QColor> colors; QColor startColor(235, 238, 241); QColor endColor(220, 225, 228); colors << startColor << endColor; QLinearGradient titleHeaderGrad = genGrad(start, end, colors); QRectF titleHeaderRect(titleCornerRect.width(), 0.0, rect.width() - titleCornerRect.width(), titleCornerRect.height()); drawBox(painter, titleHeaderGrad, rect, titleHeaderRect); }
void GroupBoxWidget::paintEvent(QPaintEvent * /*event*/) { // skip the rest of the painting if no text if (m_titleText.isEmpty()) return; // draw hovering QPainter p(this); if (m_hoverValue > 0 && (m_checkValue == 0.0 || m_checkValue == 1.0)) { QRadialGradient rg = m_checkValue == 1.0 ? QRadialGradient(0.5, 0.2, 0.8) : QRadialGradient(0.5, 1.0, 1.5); QColor startColor(Qt::white); startColor.setAlpha((int)(255.0 * m_hoverValue)); rg.setColorAt(0.0, startColor); rg.setColorAt(1.0, Qt::transparent); rg.setColorAt(0.0, startColor); rg.setColorAt(1.0, Qt::transparent); rg.setCoordinateMode(QGradient::ObjectBoundingMode); p.fillRect(0, 0, width(), height() - m_checkValue * (height() - 12) , rg); } // draw left/right lines if (m_borderFlags & 0x0001) p.fillRect(0, 0, 1, height(), QColor(230, 230, 230)); if (m_borderFlags & 0x0002) p.fillRect(width() - 1, 0, 1, height(), Qt::white); // precalc text position and move painter QStyle * ss = m_checkable ? style() : 0; int indW = ss ? ss->pixelMetric(QStyle::PM_IndicatorWidth, 0, 0) : 0; int indH = ss ? ss->pixelMetric(QStyle::PM_IndicatorHeight, 0, 0) : 0; p.save(); p.setFont(m_titleFont); QFontMetrics metrics(m_titleFont); QRect textRect = metrics.boundingRect(m_titleText); // int textHeight = textRect.height(); int dx = 0; if (m_checkValue < 1.0) { qreal x1 = -textRect.top() + 2, x2 = (width() - textRect.width() - indW - 4) / 2; qreal y1 = height() - 2, //height() + textRect.width()) / 2, y2 = -textRect.top(); p.translate(x1 + m_checkValue * (x2 - x1), y1 + m_checkValue * (y2 - y1)); p.rotate(m_checkValue * 90 - 90); } else p.translate((width() - textRect.width() - indW - 4) / 2, -textRect.top()); // draw checkbox indicator if (m_checkable && indW && indH) { QStyleOptionButton opt; opt.state = QStyle::State_Enabled; int styleOffset = (textRect.height() - indH) / 2; opt.rect = QRect(0, -indH + 4 - styleOffset, indW, indH); dx = indW + 4; opt.state |= m_checked ? QStyle::State_On : QStyle::State_Off; if (underMouse()) opt.state |= QStyle::State_MouseOver; //p.setRenderHints(QPainter::Antialiasing); style()->drawPrimitive(QStyle::PE_IndicatorCheckBox, &opt, &p, this); } // draw text p.drawText(dx, 0, m_titleText); p.restore(); }
void Ui::Ncurses::writeInColor(const std::string &string, ColorCombination combination) { startColor(combination); printw(string.c_str()); startColor(DEFAULT_COLOR); }
Ui::Ncurses &Ui::Ncurses::operator<<(Ui::Ncurses::ColorCombination combination) { startColor(combination); return *this; }
/*绘制*/ void CheckersPicture::paintEvent(QPaintEvent *event) { QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing, true); painter.setViewport(p.x(),p.y(),side,side); painter.setWindow(0, 0, zoom*(n), zoom*(n)); QColor dark(0xcc,0xcc,0xcc,200); QColor endColor(0x78,0xff,0x21,200); /*终点颜色*/ QColor startColor(0xea,0x76,0x0f,200); /*起点颜色*/ QColor capturedColor(0xed,0x50,0x62,200); /*捕获颜色*/ QColor normalColor(0xd6,0xb8,0x2c,200); /*正常色*/ QColor black(0x00, 0x00, 0x00, 200); QColor white(0xff, 0xff, 0xff, 220); QColor light(0xed,0xfc,0xdf,200); QColor deep(0x5a,0x61,0x54,200); /*绘制棋盘*/ for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { QRect rect = pixelRect(i, j); if( !((i+j%2)%2) ) { painter.fillRect(rect, deep); } else { painter.fillRect(rect, light); } } } int ix,jx; if(v.size()) { int type; for(unsigned i=0; i< v.size(); i++) { color==WHITE ? jx = n-1-v.at(i).y : jx = v.at(i).y; color==WHITE ? ix = n-1-v.at(i).x : ix = v.at(i).x; QRect rect = pixelRect(ix, jx); type = v.at(i).type; if(type == MOVEDFROM) painter.fillRect(rect, startColor); else if(type == MOVEDTO || type == TOKING) painter.fillRect(rect, endColor); else if(type == MOVEDTHROUGH) painter.fillRect(rect, normalColor); else if(type == DELETED) painter.fillRect(rect, capturedColor); } } int s = zoom*0.4; int sd = zoom*0.3; /*画白棋*/ if(curstate){ /*如果棋局状态发生了改变*/ painter.setPen(QPen(black,zoom*0.025)); painter.setBrush(QBrush(white)); for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { /*如果是白色则从最后一行开始画*/ color==WHITE ? jx = j+1 : jx = n-j; color==WHITE? ix = n-i : ix = i+1; if(curstate->at(i,j)==WHITE) painter.drawEllipse(QPoint(zoom*(ix-0.5),zoom*(jx-0.5)),s,s); if(curstate->at(i,j)==WHITEKING) { painter.drawEllipse(QPoint(zoom*(ix-0.5),zoom*(jx-0.5)),s,s); painter.drawEllipse(QPoint(zoom*(ix-0.5),zoom*(jx-0.5)),sd,sd); } } } /*画黑棋*/ painter.setBrush(QBrush(black)); for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { color==WHITE ? jx = j+1 : jx = n-j; color==WHITE ? ix = n-i : ix = i+1; if(curstate->at(i,j)==BLACK) painter.drawEllipse(QPoint(zoom*(ix-0.5),zoom*(jx-0.5)),s,s); if(curstate->at(i,j)==BLACKKING) { painter.drawEllipse(QPoint(zoom*(ix-0.5),zoom*(jx-0.5)),s,s); painter.setPen(QPen(white,zoom*0.1)); painter.drawEllipse(QPoint(zoom*(ix-0.5),zoom*(jx-0.5)),sd,sd); painter.setPen(QPen(black,zoom*0.1)); } } } } if (thinking && showHourglass) { painter.setWindow(painter.viewport()); painter.drawImage((width() - hourglass.width()) / 2, (height() - hourglass.height()) / 2, hourglass); } }