Package fr.tchocolate.qbe

Source Code of fr.tchocolate.qbe.FontManager

package fr.tchocolate.qbe;

import org.lwjgl.util.Point;
import static org.lwjgl.opengl.GL11.*;

public class FontManager {

  private static float FONT_SIZE = 16F;
  private static float TEXTURE_SIZE = 256F;
 
  public static void drawString(int x, int y, String s){
    int lastx = x;
    for(int i = 0; i<s.length(); i++){
      char c = s.charAt(i);
      int newx = lastx;
      if(c == 't'){
        newx += FONT_SIZE-3;
      }else if(c == ' '){
        newx += FONT_SIZE-7;
      }else if(c == 'i'){
        newx += FONT_SIZE-5;
      }else{
        newx += FONT_SIZE-1;
      }
      lastx = newx;
      drawChar(getCharLocation(c), newx, y);
    }
  }
 
  private static void drawChar(Point p, int x, int y){
    float uvx = FONT_SIZE*(p.getX()-1);
    float uvy = FONT_SIZE*(p.getY()-1);
    float uvx2 = uvx+FONT_SIZE;
    float uvy2 = uvy+FONT_SIZE;

    uvx /= TEXTURE_SIZE;
    uvy /= TEXTURE_SIZE;
    uvx2 /= TEXTURE_SIZE;
    uvy2 /= TEXTURE_SIZE;
   
    glEnable(GL_TEXTURE_2D);
    glBindTexture(GL_TEXTURE_2D, TextureManager.font.getTextureID());
   
    glPushMatrix();
      glBegin(GL_QUADS);
     
      glTexCoord2f(uvx, uvy2);  glVertex2f((float)x,       (float)y);
      glTexCoord2f(uvx2, uvy2);  glVertex2f((float)x+FONT_SIZE,   (float)y);
      glTexCoord2f(uvx2, uvy);  glVertex2f((float)x+FONT_SIZE,   (float)y+FONT_SIZE);
      glTexCoord2f(uvx, uvy);    glVertex2f((float)x,       (float)y+FONT_SIZE);
     
      glEnd();
    glPopMatrix();
   
    glBindTexture(GL_TEXTURE_2D, 0);
  }
 
  private static Point getCharLocation(char c){
    Point p = new Point(1, 11);
   
    if(c > '0'-1 && c < '9'+1){//number
      int x = 0, y = 4;
      int diff = c-'0';
      return new Point(x+diff+1, y);
    }else if(c > 'A'-1 && c < 'O'+1){
      int x = 1, y = 5;
      int diff = c-'A';
      return new Point(x+diff+1, y);
    }else if(c > 'P'-1 && c < 'Z'+1){
      int x = 0, y = 6;
      int diff = c-'p';
      return new Point(x+diff+1, y);
    }else if(c > 'a'-1 && c < 'o'+1){
      int x = 1, y = 7;
      int diff = c-'a';
      return new Point(x+diff+1, y);
    }else if(c > 'p'-1 && c < 'z'+1){
      int x = 0, y = 8;
      int diff = c-'p';
      return new Point(x+diff+1, y);
    }else if(c == ' '){
      return new Point(0, 0);
    }
   
    return p;
  }
 
}
TOP

Related Classes of fr.tchocolate.qbe.FontManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.