Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 7757 in orxonox.OLD for trunk/src/lib/shell


Ignore:
Timestamp:
May 21, 2006, 11:07:48 PM (18 years ago)
Author:
bensch
Message:

orxonox/trunk: Resize of the Shell works quite nice

Location:
trunk/src/lib/shell
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/shell/shell.cc

    r7750 r7757  
    6767    EventHandler::getInstance()->subscribe(this, ES_SHELL, SDLK_PAGEUP);
    6868    EventHandler::getInstance()->subscribe(this, ES_SHELL, SDLK_PAGEDOWN);
     69    EventHandler::getInstance()->subscribe(this, ES_SHELL, EV_VIDEO_RESIZE);
    6970
    7071    // BUFFER
     
    7677
    7778    // Element2D and generals
     79    this->setSizeX2D(GraphicsEngine::getInstance()->getResolutionX());
    7880    this->setAbsCoor2D(3, -400);
    7981    this->textSize = 15;
     
    136138        (*text)->setText("");
    137139    }
    138     repositionText();
     140    this->updateResolution( GraphicsEngine::getInstance()->getResolutionX());
     141    this->repositionText();
    139142  }
    140143
     
    226229  {
    227230    this->backgroundMaterial.setDiffuseMap(fileName);
     231  }
     232
     233
     234  /**
     235   * @brief updates the Shell's Width
     236   * @param width the new Width.
     237   */
     238  void Shell::updateResolution(unsigned int width)
     239  {
     240    if (width == this->getSizeX2D())
     241      return;
     242    this->setSizeX2D(width);
     243    for (std::list<MultiLineText*>::iterator textIt = this->bufferText.begin(); textIt != this->bufferText.end(); ++textIt)
     244    {
     245      (*textIt)->setLineWidth(width);
     246    }
    228247  }
    229248
     
    402421
    403422
    404       (*textIt)->setRelCoor2D(calculateLinePosition( (linePos++ > 0)? linePos : 0));
     423      (*textIt)->setRelCoor2D(calculateLinePosition( (linePos++ > 0) ? linePos : 0));
    405424      (*textIt)->setText((*it));
    406425    }
     
    446465        this->moveDisplayBuffer(-this->bufferDisplaySize+1);
    447466      }
     467      else if (event.type == EV_VIDEO_RESIZE)
     468      {
     469        this->updateResolution(event.resize.w);
     470        this->repositionText();
     471      }
    448472    }
    449473  }
     
    487511  Vector2D Shell::calculateLinePosition(unsigned int lineNumber)
    488512  {
    489     return Vector2D(5, (int)(this->textSize + this->lineSpacing)*(int)((int)this->bufferDisplaySize - (int)lineNumber - (int)2) + (int)this->textSize);
     513    return Vector2D(5.0f, (float)(this->textSize + this->lineSpacing)*(float)((int)this->bufferDisplaySize - (int)lineNumber - (int)1));
    490514  }
    491515
  • trunk/src/lib/shell/shell.h

    r7753 r7757  
    8181    void testShell() const;
    8282  private:
     83    void updateResolution(unsigned int width);
    8384    void repositionText();
    8485    void applyTextSettings(Text* text);
Note: See TracChangeset for help on using the changeset viewer.