void VideoSource::setRendering( bool r ) { // muting is related to rendering - enablerendering shouldn't be true when // it's muted, so stop it from changing when it is muted if ( !isMuted() ) { enableRendering = r; if ( !enableRendering ) { baseBColor.R = 0.05f; baseBColor.G = 0.1f; baseBColor.B = 1.0f; // see resetColor for why we check for selected here if ( !selected ) setColor( baseBColor ); setSecondaryColor( baseBColor ); } else { resetColor(); destSecondaryColor.R = 0.0f; destSecondaryColor.G = 0.0f; destSecondaryColor.B = 0.0f; destSecondaryColor.A = 0.0f; setSecondaryColor( destSecondaryColor ); } } }
void VideoSource::toggleMute() { session->getVPMSession()->enableSource( ssrc, isMuted() ); enableRendering = !isMuted(); if ( isMuted() ) { baseBColor.R = 1.0f; baseBColor.G = 0.1f; baseBColor.B = 0.15f; // see resetColor for why we check for selected here if ( !selected ) setColor( baseBColor ); setSecondaryColor( baseBColor ); } else { resetColor(); destSecondaryColor.R = 0.0f; destSecondaryColor.G = 0.0f; destSecondaryColor.B = 0.0f; destSecondaryColor.A = 0.0f; setSecondaryColor( destSecondaryColor ); } }
void setDrawMode (onScreenPerson * thisPerson) { if (thisPerson->colourmix) { //glEnable(GL_COLOR_SUM); FIXME: replace line? setSecondaryColor(curLight[0]*thisPerson->r*thisPerson->colourmix/65025/255.f, curLight[1]*thisPerson->g*thisPerson->colourmix/65025/255.f, curLight[2]*thisPerson->b*thisPerson->colourmix/65025/255.f, 1.0f); } //glTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); setPrimaryColor(curLight[0]*(255-thisPerson->colourmix)/65025.f, curLight[1]*(255-thisPerson->colourmix)/65025.f, curLight[2]*(255-thisPerson->colourmix)/65025.f, 1.0f - thisPerson->transparency/255.f); }
EnergyMeter::EnergyMeter(const sf::Sprite &overlay, const float &maximumValue) : value(maximumValue) , maximumValue(maximumValue) , orientation(-1) , overlay(overlay) , primaryColor(DEFAULT_PRIMARY_COLOR) , secondaryColor(DEFAULT_SECONDARY_COLOR) , fillColor(DEFAULT_FILL_COLOR) { setVisible(true); foreground.setSize( sf::Vector2f( overlay.getLocalBounds().width, overlay.getLocalBounds().height ) ); primaryBackground.setSize(foreground.getSize()); secondaryBackground.setSize( sf::Vector2f( 2.0f, foreground.getSize().y ) ); setFillColor(fillColor); setPrimaryColor(primaryColor); setSecondaryColor(secondaryColor); setPosition( sf::Vector2i( static_cast<int>(overlay.getPosition().x), static_cast<int>(overlay.getPosition().y) ) ); setOrientation(VERTICAL_ORIENTATION); updateFill(); }
void ColorSelector::resetColors() { setPrimaryColor(sf::Color::White); setSecondaryColor(sf::Color::Black); }
void ColorSelector::swapColors() { sf::Color primaryColor(getPrimaryColor()); setPrimaryColor(getSecondaryColor()); setSecondaryColor(primaryColor); }
// Paste a scaled sprite onto the backdrop void fixScaleSprite (int x, int y, sprite & single, const spritePalette & fontPal, onScreenPerson * thisPerson, int camX, int camY, bool mirror) { float scale = thisPerson-> scale; bool useZB = ! (thisPerson->extra & EXTRA_NOZB); bool light = ! (thisPerson->extra & EXTRA_NOLITE); if (scale <= 0.05) return; float tx1 = (float)(single.tex_x) / fontPal.tex_w[single.texNum]; float ty1 = (float) 1.0/fontPal.tex_h[single.texNum];//0.0; float tx2 = (float)(single.tex_x + single.width) / fontPal.tex_w[single.texNum]; float ty2 = (float)(single.height+1)/fontPal.tex_h[single.texNum]; int diffX = (int)(((float)single.width) * scale); int diffY = (int)(((float)single.height) * scale); int x1; if (single.xhot < 0) x1 = x - (int)((mirror ? (float) (single.width - single.xhot) : (float)(single.xhot+1) ) * scale); else x1 = x - (int)((mirror ? (float) (single.width - (single.xhot+1)) : (float)single.xhot ) * scale); int y1 = y - (int)((single.yhot - thisPerson->floaty) * scale); float spriteWidth = diffX; float spriteHeight = diffY; if (x1 < 0) diffX += x1; if (y1 < 0) diffY += y1; if (x1 + diffX > sceneWidth) diffX = sceneWidth - x1; if (y1 + diffY > sceneHeight) diffY = sceneHeight - y1; if (diffX < 0) return; if (diffY < 0) return; GLfloat z; if (useZB && zBuffer.numPanels) { int i; for (i = 1; i<zBuffer.numPanels; i++) { if (zBuffer.panel[i] >= y + cameraY) { i--; break; } } z = 0.999 - (double) i * (1.0 / 128.0); } else { z = -0.5; } float ltx1, btx1; float ltx2, btx2; float lty1, bty1; float lty2, bty2; if (! NPOT_textures) { ltx1 = lightMap.texW * x1 / sceneWidth; ltx2 = lightMap.texW * (x1+spriteWidth) / sceneWidth; lty1 = lightMap.texH * y1 / sceneHeight; lty2 = lightMap.texH * (y1+spriteHeight) / sceneHeight; btx1 = backdropTexW * x1 / sceneWidth; btx2 = backdropTexW * (x1+spriteWidth) / sceneWidth; bty1 = backdropTexH * y1 / sceneHeight; bty2 = backdropTexH * (y1+spriteHeight) / sceneHeight; } else { btx1 = ltx1 = (float) x1 / sceneWidth; btx2 = ltx2 = (float) (x1+spriteWidth) / sceneWidth; bty1 = lty1 = (float) y1 / sceneHeight; bty2 = lty2 = (float) (y1+spriteHeight) / sceneHeight; } const GLfloat ltexCoords[] = { ltx1, lty1, ltx2, lty1, ltx1, lty2, ltx2, lty2 }; const GLfloat btexCoords[] = { btx1, bty1, btx2, bty1, btx1, bty2, btx2, bty2 }; if (light && lightMap.data) { if (lightMapMode == LIGHTMAPMODE_HOTSPOT) { int lx=x+cameraX; int ly=y+cameraY; if (lx<0 || ly<0 || lx>=sceneWidth || ly>=sceneHeight) { curLight[0] = curLight[1] = curLight[2] = 255; } else { GLubyte *target = lightMap.data + (ly*sceneWidth + lx)*4; curLight[0] = target[0]; curLight[1] = target[1]; curLight[2] = target[2]; } } else if (lightMapMode == LIGHTMAPMODE_PIXEL) { curLight[0] = curLight[1] = curLight[2] = 255; glActiveTexture(GL_TEXTURE1); glBindTexture (GL_TEXTURE_2D, lightMap.name); } } else { curLight[0] = curLight[1] = curLight[2] = 255; } glActiveTexture(GL_TEXTURE2); glBindTexture (GL_TEXTURE_2D, backdropTextureName); glActiveTexture(GL_TEXTURE0); setPixelCoords (true); GLfloat xoffset = 0.0f; while (xoffset < diffX) { int w = (diffX-xoffset < viewportWidth) ? (int) (diffX-xoffset) : viewportWidth; GLfloat yoffset = 0.0f; while (yoffset < diffY) { int h = (diffY-yoffset< viewportHeight) ? (int) (diffY-yoffset) : viewportHeight; // Render the scene - first the old backdrop (so that it'll show through when the z-buffer is active //glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); glBindTexture (GL_TEXTURE_2D, backdropTextureName); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri (GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); const GLfloat vertices[] = { -x1-xoffset, -y1-yoffset, 0.0f, sceneWidth-x1-xoffset, -y1-yoffset, 0.0f, -x1-xoffset, sceneHeight-y1-yoffset, 0.0f, sceneWidth-x1-xoffset, sceneHeight-y1-yoffset, 0.0f }; const GLfloat texCoords[] = { 0.0f, 0.0f, backdropTexW, 0.0f, 0.0f, backdropTexH, backdropTexW, backdropTexH }; glUseProgram(shader.texture); setPMVMatrix(shader.texture); drawQuad(shader.texture, vertices, 1, texCoords); // The z-buffer if (useZB) { glDepthMask (GL_TRUE); glClear(GL_DEPTH_BUFFER_BIT); drawZBuffer((int) (x1+xoffset+camX), (int) (y1+yoffset+camY), false); glDepthMask (GL_FALSE); glEnable(GL_DEPTH_TEST); } // Then the sprite glUseProgram(shader.paste); GLint uniform = glGetUniformLocation(shader.paste, "useLightTexture"); if (uniform >= 0) glUniform1i(uniform, light && lightMapMode == LIGHTMAPMODE_PIXEL && lightMap.data); setPMVMatrix(shader.paste); setDrawMode (thisPerson); glBindTexture (GL_TEXTURE_2D, fontPal.tex_names[single.texNum]); const GLfloat vertices2[] = { -xoffset, -yoffset, z, spriteWidth-xoffset, -yoffset, z, -xoffset, spriteHeight-yoffset, z, spriteWidth-xoffset, spriteHeight-yoffset, z }; if (! mirror) { GLfloat tx3 = tx1; tx1 = tx2; tx2 = tx3; } const GLfloat texCoords2[] = { tx2, ty1, tx1, ty1, tx2, ty2, tx1, ty2 }; drawQuad(shader.paste, vertices2, 3, texCoords2, ltexCoords, btexCoords); setSecondaryColor(0., 0., 0., 1.); //glDisable(GL_COLOR_SUM); FIXME: replace line? // Copy Our ViewPort To The Texture glUseProgram(0); copyTexSubImage2D(GL_TEXTURE_2D, 0, (int) ((x1<0) ? xoffset: x1+xoffset), (int) ((y1<0) ? yoffset: y1+yoffset), (int) ((x1<0) ?viewportOffsetX-x1:viewportOffsetX), (int) ((y1<0) ?viewportOffsetY-y1:viewportOffsetY), w, h, backdropTextureName); yoffset += viewportHeight; } xoffset += viewportWidth; } setPixelCoords (false); glUseProgram(0); }
bool scaleSprite (sprite & single, const spritePalette & fontPal, onScreenPerson * thisPerson, bool mirror) { float x = thisPerson->x; float y = thisPerson->y; float scale = thisPerson-> scale; bool light = ! (thisPerson->extra & EXTRA_NOLITE); if (scale <= 0.05) return false; float tx1 = (float)(single.tex_x) / fontPal.tex_w[single.texNum]; float ty1 = (float) 1.0/fontPal.tex_h[single.texNum]; float tx2 = (float)(single.tex_x + single.width) / fontPal.tex_w[single.texNum]; float ty2 = (float)(single.height+1)/fontPal.tex_h[single.texNum]; int diffX = (int)(((float)single.width) * scale); int diffY = (int)(((float)single.height) * scale); GLfloat x1, y1, x2, y2; if (thisPerson -> extra & EXTRA_FIXTOSCREEN) { x = x / cameraZoom; y = y / cameraZoom; if (single.xhot < 0) x1 = x - (int)((mirror ? (float) (single.width - single.xhot) : (float)(single.xhot+1) ) * scale/cameraZoom); else x1 = x - (int)((mirror ? (float) (single.width - (single.xhot+1)) : (float)single.xhot ) * scale / cameraZoom); y1 = y - (int)((single.yhot - thisPerson->floaty) * scale / cameraZoom); x2 = x1 + (int)(diffX / cameraZoom); y2 = y1 + (int)(diffY / cameraZoom); } else { x -= cameraX; y -= cameraY; if (single.xhot < 0) x1 = x - (int)((mirror ? (float) (single.width - single.xhot) : (float)(single.xhot+1) ) * scale); else x1 = x - (int)((mirror ? (float) (single.width - (single.xhot+1)) : (float)single.xhot ) * scale); y1 = y - (int)((single.yhot - thisPerson->floaty) * scale); x2 = x1 + diffX; y2 = y1 + diffY; } GLfloat z; if ((! (thisPerson->extra & EXTRA_NOZB)) && zBuffer.numPanels) { int i; for (i = 1; i<zBuffer.numPanels; i++) { if (zBuffer.panel[i] >= y + cameraY) { i--; break; } } z = 0.999 - (double) i * (1.0 / 128.0); } else { z = -0.5; } float ltx1, ltx2, lty1, lty2; if (! NPOT_textures) { ltx1 = lightMap.texW * (x1+cameraX) / sceneWidth; ltx2 = lightMap.texW * (x2+cameraX) / sceneWidth; lty1 = lightMap.texH * (y1+cameraY) / sceneHeight; lty2 = lightMap.texH * (y2+cameraY) / sceneHeight; } else { ltx1 = (float) (x1+cameraX) / sceneWidth; ltx2 = (float) (x2+cameraX) / sceneWidth; lty1 = (float) (y1+cameraY) / sceneHeight; lty2 = (float) (y2+cameraY) / sceneHeight; } const GLfloat ltexCoords[] = { ltx1, lty1, ltx2, lty1, ltx1, lty2, ltx2, lty2 }; if (light && lightMap.data) { if (lightMapMode == LIGHTMAPMODE_HOTSPOT) { int lx=(int)(x+cameraX); int ly=(int)(y+cameraY); if (lx<0) lx = 0; else if (lx>=sceneWidth) lx = sceneWidth-1; if (ly<0) ly = 0; else if (ly>=sceneHeight) ly = sceneHeight-1; GLubyte *target; if (! NPOT_textures) { target = lightMap.data + (ly*getNextPOT(sceneWidth) + lx)*4; } else { target = lightMap.data + (ly*sceneWidth + lx)*4; } curLight[0] = target[0]; curLight[1] = target[1]; curLight[2] = target[2]; } else if (lightMapMode == LIGHTMAPMODE_PIXEL) { curLight[0] = curLight[1] = curLight[2] = 255; glActiveTexture(GL_TEXTURE1); glBindTexture (GL_TEXTURE_2D, lightMap.name); glActiveTexture(GL_TEXTURE0); } } else { curLight[0] = curLight[1] = curLight[2] = 255; } if (! (thisPerson->extra & EXTRA_RECTANGULAR)) checkColourChange (true); setDrawMode (thisPerson); glBindTexture (GL_TEXTURE_2D, fontPal.tex_names[single.texNum]); glEnable(GL_BLEND); glUseProgram(shader.smartScaler); GLuint uniform = glGetUniformLocation(shader.smartScaler, "useLightTexture"); if (uniform >= 0) glUniform1i(uniform, light && lightMapMode == LIGHTMAPMODE_PIXEL && lightMap.data); setPMVMatrix(shader.smartScaler); if (gameSettings.antiAlias == 1) { glUniform1i(glGetUniformLocation(shader.smartScaler, "antialias"), 1); } else { glUniform1i(glGetUniformLocation(shader.smartScaler, "antialias"), 0); } const GLfloat vertices[] = { x1, y1, z, x2, y1, z, x1, y2, z, x2, y2, z }; if (! mirror) { GLfloat tx3 = tx1; tx1 = tx2; tx2 = tx3; } const GLfloat texCoords[] = { tx2, ty1, tx1, ty1, tx2, ty2, tx1, ty2 }; drawQuad(shader.smartScaler, vertices, 2, texCoords, ltexCoords); glDisable(GL_BLEND); glUseProgram(0); if (light && lightMapMode == LIGHTMAPMODE_PIXEL) { glActiveTexture(GL_TEXTURE1); glActiveTexture(GL_TEXTURE0); } setSecondaryColor(0., 0., 0.,1.); //glDisable(GL_COLOR_SUM); FIXME: replace line? // Are we pointing at the sprite? if (input.mouseX >= x1 && input.mouseX <= x2 && input.mouseY >= y1 && input.mouseY <= y2) { if (thisPerson->extra & EXTRA_RECTANGULAR) return true; return checkColourChange (false); } return false; }
void MainWindow::_init() { setWindowState(Qt::WindowFullScreen); m_bPerspectiveProjection = false; ui->radioBtnTransformation->hide(); m_bHideFaces = false; m_pView = new CCoordinateView(this); m_pView3D = new C3DView(PROJECTION_DEFAULT,this); m_pView3D->hide(); // m_pView->hide(); //m_pView->hideGrid(true); //m_pView->hideGrid(false); ui->viewFrameGrid->addWidget(m_pView); ui->viewFrameGrid->addWidget(m_pView3D); m_pDebugBox = new CDebugModeBox(this); ui->sidePanel->addWidget(m_pDebugBox); m_pDebugBox->setDisabled(true); m_pTmpUndoStack.clear(); m_firstPoint = QPoint(0,0); m_secondPoint = QPoint(0,0); m_btnClickState = MCS_UNDEFINED; m_pCurrentListener = NULL; m_bHighlightInitPoints = false; m_mainColor = QColor(Qt::blue); //m_mainColor.setAlpha(10); m_secondaryColor = QColor(Qt::red); ui->btnSecondaryColor->setAutoFillBackground(true); ui->btnMainColor->setAutoFillBackground(true); m_mode = MODE_NORMAL; ui->radioBtnAlgDDA->setChecked(true); ui->radioBtnAlgBrezenhema->setChecked(false); ui->radioBtnDefaultMode->setChecked(true); //defaultModeEnable(); //ui->debugInfoBrowser->setUndoRedoEnabled(true); m_drawShapeType = DST_LINE; //m_pListener = new CListenerLineDDA(m_pView, m_pDebugBox,QColor(Qt::red), QColor(Qt::blue)); connect(m_pView,SIGNAL(clickOnCell(int,int)),this,SLOT(mouseClickOnCell(int,int))); connect(m_pView,SIGNAL(moveOnCell(int,int)),this,SLOT(mouseMoveOnCell(int,int))); connect(m_pView,SIGNAL(releaseOnScene(int,int)),this,SLOT(mouseReleaseOnCell(int,int))); // connect(ui->btnZoomIn,SIGNAL(clicked()),m_pView,SLOT(zoomIn())); // connect(ui->btnZoomOut,SIGNAL(clicked()),m_pView,SLOT(zoomOut())); connect(ui->btnMainColor,SIGNAL(clicked()),this,SLOT(setMainColor())); connect(ui->btnSecondaryColor,SIGNAL(clicked()),this,SLOT(setSecondaryColor())); connect(ui->btnClear,SIGNAL(clicked()),this,SLOT(clearView())); connect(ui->radioBtnDebugMode,SIGNAL(clicked()),this,SLOT(debugModeEnable())); connect(ui->radioBtnDefaultMode,SIGNAL(clicked()),this,SLOT(defaultModeEnable())); connect(ui->checkBoxHightlightEndPoints,SIGNAL(clicked()),this,SLOT(highlightEndPoints())); connect(ui->radioBtnAlgBrezenhema,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->radioBtnAlgDDA,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->radioBtnRound,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->radioBtnAlgorithmParabola,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->radioBtnBSpline,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->radioBtnBese,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->radioBtnLineFilling,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->radioBtnLineVertexFilling,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->radioBtnTransformation,SIGNAL(clicked()),this,SLOT(drawAlgorithmChanged())); connect(ui->tabAlgorithms,SIGNAL(currentChanged(int)),this,SLOT(algorithmTabIndexChanged(int))); connect(ui->zoomSlider,SIGNAL(valueChanged(int)),this,SLOT(zoomChanged(int))); connect(ui->checkBoxHightlight,SIGNAL(clicked()),this,SLOT(perspectiveProjection())); connect(ui->checkBoxHideFaces,SIGNAL(clicked()),this,SLOT(hideFaces())); //connect(ui->btnRunThread, SIGNAL(clicked()),this,SLOT(runThread())); ui->radioBtnAlgDDA->setChecked(true); ui->radioBtnAlgBrezenhema->setChecked(false); ui->radioBtnDefaultMode->setChecked(true); createListeners(); ui->radioBtnAlgDDA->click(); _setMainColor(m_mainColor); _setSecondaryColor(m_secondaryColor); // CAlgorithmVertexLineFilling alg; // QList<QPoint> list; // list << QPoint(0,0) << QPoint(20,0) << QPoint(10,10) ;//<< QPoint(20,20) << QPoint(20,0);// << QPoint(20,20) << QPoint(-15,3); // alg.setPoints(list); // //qDebug() << alg.getDrawPoints(); // StepPoints points = alg.getDrawPoints(); // for(int i=0; i<points.size();i++) // { // m_pView->setCellColor(points.at(i),m_mainColor); // } m_lastZoomValue = ui->zoomSlider->value(); }