Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 5768 in orxonox.OLD for trunk/src/lib/graphics/text_engine


Ignore:
Timestamp:
Nov 24, 2005, 8:24:52 PM (19 years ago)
Author:
bensch
Message:

orxonox/trunk: font is a Texture now (this is a procedural texture)

Location:
trunk/src/lib/graphics/text_engine
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/lib/graphics/text_engine/font.cc

    r5427 r5768  
    132132  this->fontTTF = NULL;
    133133  this->glyphArray = NULL;
    134   this->fastTextureID = 0;
    135134}
    136135
     
    149148    this->fontTTF = NULL;
    150149  }
    151   if (this->fastTextureID != 0)
    152   {
    153     if(glIsTexture(this->fastTextureID))
    154       glDeleteTextures(1, &this->fastTextureID);
    155     this->fastTextureID = 0;
    156   }
     150
    157151
    158152  this->setName(fontFile);
     
    161155  if(this->fontTTF != NULL)
    162156  {
    163     this->fastTextureID = this->createFastTexture();
    164     if (this->fastTextureID != 0)
    165       return true;
    166     else
    167       return false;
     157    this->createFastTexture();
     158    return (this->getTexture() != 0);
    168159  }
    169160  else
     
    190181    this->fontTTF = NULL;
    191182  }
    192   if (this->fastTextureID != 0)
    193   {
    194     if(glIsTexture(this->fastTextureID))
    195       glDeleteTextures(1, &this->fastTextureID);
    196     this->fastTextureID = 0;
    197   }
    198 
    199   this->fastTextureID = Text::loadTexture(surface, NULL);
     183  if (this->prepareSurface(surface))
     184    this->loadTexToGL( );
    200185
    201186  // initializing the Glyphs.
     
    251236Font* Font::defaultFont = NULL;
    252237
     238/**
     239 * creates and exports an Image, that has all the characters
     240 * stored in a Array (as an image)
     241 * @param fileName the File to write the image into.
     242 */
    253243void Font::createAsciiImage(const char* fileName)
    254244{
     
    400390 * creates a Fast-Texture of this Font
    401391 */
    402 GLuint Font::createFastTexture()
     392bool Font::createFastTexture()
    403393{
    404394  /* interesting GLYPHS:
     
    500490  //   SDL_SaveBMP(tmpSurf, outName);
    501491
    502   GLuint texture;
    503   glGenTextures(1, &texture);
    504   glBindTexture(GL_TEXTURE_2D, texture);
    505   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
    506   glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
    507   glTexImage2D(GL_TEXTURE_2D,
    508                0,
    509                GL_RGBA,
    510                tmpSurf->w, tmpSurf->h,
    511                0,
    512                GL_RGBA,
    513                GL_UNSIGNED_BYTE,
    514                tmpSurf->pixels);
    515   SDL_FreeSurface(tmpSurf);
    516   return texture;
     492  if (this->setSurface(tmpSurf))
     493    loadTexToGL();
    517494}
    518495
  • trunk/src/lib/graphics/text_engine/font.h

    r5767 r5768  
    1111#define _FONT_H
    1212
    13 #include "base_object.h"
     13#include "texture.h"
    1414
    1515#include "glincl.h"
     
    5252
    5353//! A class to handle a Font of a certain ttf-File/image-file, Size.
    54 class Font : public BaseObject
     54class Font : public Texture
    5555{
    5656  public:
     
    6363    void init();
    6464
    65   // font
     65  //  font
    6666    bool loadFontFromTTF(const char* fontFile);
    6767    bool loadFontFromSDL_Surface(SDL_Surface* surface);
     
    7171    /** @returns a Pointer to the Array of Glyphs */
    7272    inline Glyph** getGlyphArray() const { return this->glyphArray; };
    73     /** @returns the texture to the fast-texture */
    74     inline GLuint getFastTextureID() const { return this->fastTextureID; };
     73    /** @returns the a pointer to the TTF */
     74    inline TTF_Font* getTTF() const { return this->fontTTF; };
     75
     76
    7577    /** @returns the default Font */
    7678    inline static Font* getDefaultFont() { if (Font::defaultFont == NULL) initDefaultFont(); return Font::defaultFont; };
    77     /** @returns the a pointer to the TTF */
    78     inline TTF_Font* getTTF() const { return this->fontTTF; };
    7979
    8080    void createAsciiImage(const char* fileName);
    8181    static void initDefaultFont();
    8282    static void removeDefaultFont();
    83 
    8483
    8584  private:
     
    8988    Glyph* getGlyphMetrics(Uint16 character);
    9089
    91     GLuint createFastTexture();
     90    bool createFastTexture();
    9291
    9392    void initGlyphs(Uint16 from, Uint16 count);
     
    104103
    105104    Glyph**       glyphArray;          //!< An Array of all the Glyphs stored in the Array of Glyphs.
    106     GLuint        fastTextureID;       //!< The fast textureID.
    107105};
    108106
  • trunk/src/lib/graphics/text_engine/text.cc

    r5767 r5768  
    3838  if (fontFile != NULL)
    3939    this->setFont(fontFile, FONT_DEFAULT_RENDER_SIZE);
    40   this->setSizeY2D(this->size = textSize);
     40  this->setSizeY2D(textSize);
    4141}
    4242
     
    6969  this->blending = TEXT_DEFAULT_BLENDING;
    7070  this->color = TEXT_DEFAULT_COLOR;
    71   this->size = TEXT_DEFAULT_SIZE;
    72 
     71  this->setSize(TEXT_DEFAULT_SIZE);
    7372  this->setText(NULL);
    7473}
     
    182181  {
    183182    glyphArray = this->font->getGlyphArray();
    184     glBindTexture(GL_TEXTURE_2D, font->getFastTextureID());
     183    glBindTexture(GL_TEXTURE_2D, font->getTexture());
    185184  }
    186185  else
     
    189188      Font::initDefaultFont();
    190189    glyphArray = Font::getDefaultFont()->getGlyphArray();
    191     glBindTexture(GL_TEXTURE_2D, Font::getDefaultFont()->getFastTextureID());
     190    glBindTexture(GL_TEXTURE_2D, Font::getDefaultFont()->getTexture());
    192191  }
    193192  const char* tmpText = this->externText;
     
    210209
    211210        glTexCoord2f(tmpGlyph->texCoord[0], tmpGlyph->texCoord[3]);
    212         glVertex2d(posX, this->size);
     211        glVertex2d(posX, this->getSizeY2D());
    213212
    214213        glTexCoord2f(tmpGlyph->texCoord[1], tmpGlyph->texCoord[3]);
    215         glVertex2d(posX+tmpGlyph->width*this->size, this->size);
     214        glVertex2d(posX+tmpGlyph->width*this->getSizeY2D(), this->getSizeY2D());
    216215
    217216        glTexCoord2f(tmpGlyph->texCoord[1], tmpGlyph->texCoord[2]);
    218         glVertex2d(posX+tmpGlyph->width*this->size, 0);
     217        glVertex2d(posX+tmpGlyph->width*this->getSizeY2D(), 0);
    219218
    220219        glEnd();
    221220        glEndList();
    222         posX += tmpGlyph->advance * this->size;
     221        posX += tmpGlyph->advance * this->getSizeY2D();
    223222      }
    224223      ++tmpText;
  • trunk/src/lib/graphics/text_engine/text.h

    r5767 r5768  
    5454    void setColor(float r, float g, float b) { this->color = Vector(r, g, b); };
    5555    /** sets the Size of the Font */
    56     void setSize(float size) { this->setSizeY2D(this->size = size); };
     56    void setSize(float size) { this->setSizeY2D(size); };
    5757    /** @returns the Size of the Text */
    5858//    void getSize(float &x, float& y) const { return this->size; };
     
    7373    Vector            color;          //!< The color of the font.
    7474    float             blending;       //!< The blending intensity.
    75     float             size;           //!< The size of the Font.
    7675};
    7776
Note: See TracChangeset for help on using the changeset viewer.