void GUITextBox::render(float clockTick)
{
  if (!parent || !visible)
    return;
    
  modifyCurrentAlpha(clockTick);
  getWindowBounds();
  
  int realBlinkerPosition = clamp(blinkerPosition,
                                  windowBounds.x  + padding.x,
                                  windowBounds.z  - padding.x);
  blinkerTimer += clockTick;
  blinkerTimer -= blinkerTimer > 1.0f ? 1.0f : 0.0f;
  
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glColor4fv(color);
  
  glBegin(GL_TRIANGLE_STRIP);
  glVertex2i(windowBounds.x, windowBounds.y);
  glVertex2i(windowBounds.x, windowBounds.w);
  glVertex2i(windowBounds.z + padding.x, windowBounds.y);
  glVertex2i(windowBounds.z + padding.x, windowBounds.w);
  glEnd();
  
  glColor3fv(bordersColor);
  glBegin(GL_LINE_LOOP);
  glVertex2i(windowBounds.x, windowBounds.y);
  glVertex2i(windowBounds.x, windowBounds.w);
  glVertex2i(windowBounds.z + padding.x, windowBounds.w);
  glVertex2i(windowBounds.z + padding.x, windowBounds.y);
  glEnd();
  glDisable(GL_BLEND);
  
  label.print(windowBounds.x + padding.x, windowBounds.y, textStartIndex, textEndIndex);
  
  if (blinkerOn && (blinkerTimer > 0.5f))
  {
    glColor3fv(label.getColor());
    glBegin(GL_LINES);
    glVertex2i(realBlinkerPosition, windowBounds.y + padding.y/2);
    glVertex2i(realBlinkerPosition, windowBounds.w - padding.y);
    glEnd();
    glColor3f(1,1,1);
  }
}
Exemple #2
0
void GUIButton::render(float clockTick)
{
  if(!parent || !visible)
    return;

  modifyCurrentAlpha(clockTick);
  bgColor = color;

  Tuple3f tempColor    = label.getColor();
  float   displacement = 2.0f*(pressed || clicked)*bounce;
  int     xCenter      = (windowBounds.x + windowBounds.z)/2,
          yCenter      = (windowBounds.y + windowBounds.w)/2;

  glTranslatef(displacement, displacement, 0.0);
  renderClippedBounds();
  label.printCenteredXY(xCenter, yCenter);
  glTranslatef(-displacement, -displacement, 0.0f);
}
Exemple #3
0
void GUIButton::render(float clockTick)
{
  if(!parent || !visible)
    return;

  modifyCurrentAlpha(clockTick);
  bgColor = color;

  D3DXFROMWINEVECTOR3 tempColor    = label.getColor();
  float   displacement = 2.0f*(STX_Service::GetInputInstance()->IsMouseButtonPressed())*bounce;
  int     xCenter      = (windowBounds.x + windowBounds.z)/2,
          yCenter      = (windowBounds.y + windowBounds.w)/2;

  m_Translation=D3DXFROMWINEVECTOR3(displacement, displacement, 0.0);
  renderClippedBounds(&m_Translation);
  label.printCenteredXY(xCenter+m_Translation.x, yCenter+m_Translation.y);
  m_Translation=D3DXFROMWINEVECTOR3(-displacement, -displacement, 0.0f);
}
void GUICheckBox::render(float clockTick)
{
  if (!parent || !visible)
    return;
    
  modifyCurrentAlpha(clockTick);
  getCenter();
  
  GUITexCoordDescriptor *descriptor     = parent->getTexCoordsInfo(primaryTexDesc),
                                          *descriptorCB   = parent->getTexCoordsInfo(secondaryTexDesc);
                                          
  int yCenter = (windowBounds.y + windowBounds.w)/2;
  
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  glColor4fv(color);
  
  if (descriptor)
  {
    const Tuple4f &texCoords = descriptor->getTexCoords();
    parent->enableGUITexture();
    
    glBegin(GL_TRIANGLE_STRIP);
    glTexCoord2f(texCoords.x, texCoords.y);
    glVertex2i(windowBounds.x, windowBounds.y);
    
    glTexCoord2f(texCoords.x, texCoords.w);
    glVertex2i(windowBounds.x, windowBounds.w);
    
    glTexCoord2f(texCoords.z, texCoords.y);
    glVertex2i(windowBounds.x + extra, windowBounds.y);
    
    glTexCoord2f(texCoords.z, texCoords.w);
    glVertex2i(windowBounds.x + extra, windowBounds.w);
    glEnd();
    
    parent->disableGUITexture();
  }
  else
  {
    glBegin(GL_TRIANGLE_STRIP);
    glVertex2i(windowBounds.x, windowBounds.y);
    glVertex2i(windowBounds.x, windowBounds.w);
    glVertex2i(windowBounds.x + extra, windowBounds.y);
    glVertex2i(windowBounds.x + extra, windowBounds.w);
    glEnd();
  }
  
  if (!checked)
    setAlphaMark(alphaMark - clockTick*alphaFadeScale*4.0f);
  else
    setAlphaMark(alphaMark + clockTick*alphaFadeScale*4.0f);
    
  if (alphaMark != minAlphaMark)
  {
    glColor4f(1.0f, 1.0f, 1.0f, alphaMark);
    
    if (descriptorCB)
    {
      const Tuple4f &texCoords = descriptorCB->getTexCoords();
      parent->enableGUITexture();
      
      glBegin(GL_TRIANGLE_STRIP);
      glTexCoord2f(texCoords.x, texCoords.y);
      glVertex2i(windowBounds.x + markOffset, windowBounds.y + markOffset);
      
      glTexCoord2f(texCoords.x, texCoords.w);
      glVertex2i(windowBounds.x + markOffset, windowBounds.w - markOffset);
      
      glTexCoord2f(texCoords.z, texCoords.y);
      glVertex2i(windowBounds.x - markOffset + extra, windowBounds.y + markOffset);
      
      glTexCoord2f(texCoords.z, texCoords.w);
      glVertex2i(windowBounds.x - markOffset + extra, windowBounds.w - markOffset);
      glEnd();
      
      parent->disableGUITexture();
    }
    else
    {
      glBegin(GL_TRIANGLE_STRIP);
      glVertex2i(windowBounds.x + markOffset, windowBounds.y + markOffset);
      glVertex2i(windowBounds.x + markOffset, windowBounds.w - markOffset);
      glVertex2i(windowBounds.x - markOffset + extra, windowBounds.y + markOffset);
      glVertex2i(windowBounds.x - markOffset + extra, windowBounds.w - markOffset);
      glEnd();
    }
  }
  
  glDisable(GL_BLEND);
  label.printCenteredY(windowBounds.x + extra + 2, yCenter);
}