Package com.mojang.minecraft.gui

Source Code of com.mojang.minecraft.gui.FontRenderer

package com.mojang.minecraft.gui;

import com.mojang.minecraft.GameSettings;
import com.mojang.minecraft.render.ShapeRenderer;
import com.mojang.minecraft.render.TextureManager;
import java.awt.image.BufferedImage;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.lwjgl.opengl.GL11;

public final class FontRenderer {

   private int[] widthmap = new int[256];
   private int fontTexture = 0;
   private GameSettings settings;


   public FontRenderer(GameSettings var1, String var2, TextureManager var3) {
      this.settings = var1;

      BufferedImage var14;
      try {
         var14 = ImageIO.read(TextureManager.class.getResourceAsStream(var2));
      } catch (IOException var13) {
         throw new RuntimeException(var13);
      }

      int var4 = var14.getWidth();
      int var5 = var14.getHeight();
      int[] var6 = new int[var4 * var5];
      var14.getRGB(0, 0, var4, var5, var6, 0, var4);

      for(int var15 = 0; var15 < 128; ++var15) {
         var5 = var15 % 16;
         int var7 = var15 / 16;
         int var8 = 0;

         for(boolean var9 = false; var8 < 8 && !var9; ++var8) {
            int var10 = (var5 << 3) + var8;
            var9 = true;

            for(int var11 = 0; var11 < 8 && var9; ++var11) {
               int var12 = ((var7 << 3) + var11) * var4;
               if((var6[var10 + var12] & 255) > 128) {
                  var9 = false;
               }
            }
         }

         if(var15 == 32) {
            var8 = 4;
         }

         this.widthmap[var15] = var8;
      }

      this.fontTexture = var3.load(var2);
   }

   public final void render(String var1, int var2, int var3, int var4) {
      this.render(var1, var2 + 1, var3 + 1, var4, true);
      this.renderNoShadow(var1, var2, var3, var4);
   }

   public final void renderNoShadow(String var1, int var2, int var3, int var4) {
      this.render(var1, var2, var3, var4, false);
   }

   private void render(String var1, int var2, int var3, int var4, boolean var5) {
      if(var1 != null) {
         char[] var12 = var1.toCharArray();
         if(var5) {
            var4 = (var4 & 16579836) >> 2;
         }

         GL11.glBindTexture(3553, this.fontTexture);
         ShapeRenderer var6 = ShapeRenderer.instance;
         ShapeRenderer.instance.begin();
         var6.color(var4);
         int var7 = 0;

         for(int var8 = 0; var8 < var12.length; ++var8) {
            int var9;
            if(var12[var8] == 38 && var12.length > var8 + 1) {
               if((var4 = "0123456789abcdef".indexOf(var12[var8 + 1])) < 0) {
                  var4 = 15;
               }

               var9 = (var4 & 8) << 3;
               int var10 = (var4 & 1) * 191 + var9;
               int var11 = ((var4 & 2) >> 1) * 191 + var9;
               var4 = ((var4 & 4) >> 2) * 191 + var9;
               if(this.settings.anaglyph) {
                  var9 = (var4 * 30 + var11 * 59 + var10 * 11) / 100;
                  var11 = (var4 * 30 + var11 * 70) / 100;
                  var10 = (var4 * 30 + var10 * 70) / 100;
                  var4 = var9;
                  var11 = var11;
                  var10 = var10;
               }

               var4 = var4 << 16 | var11 << 8 | var10;
               var8 += 2;
               if(var5) {
                  var4 = (var4 & 16579836) >> 2;
               }

               var6.color(var4);
            }

            var4 = var12[var8] % 16 << 3;
            var9 = var12[var8] / 16 << 3;
            float var13 = 7.99F;
            var6.vertexUV((float)(var2 + var7), (float)var3 + var13, 0.0F, (float)var4 / 128.0F, ((float)var9 + var13) / 128.0F);
            var6.vertexUV((float)(var2 + var7) + var13, (float)var3 + var13, 0.0F, ((float)var4 + var13) / 128.0F, ((float)var9 + var13) / 128.0F);
            var6.vertexUV((float)(var2 + var7) + var13, (float)var3, 0.0F, ((float)var4 + var13) / 128.0F, (float)var9 / 128.0F);
            var6.vertexUV((float)(var2 + var7), (float)var3, 0.0F, (float)var4 / 128.0F, (float)var9 / 128.0F);
            var7 += this.widthmap[var12[var8]];
         }

         var6.end();
      }
   }

   public final int getWidth(String var1) {
      if(var1 == null) {
         return 0;
      } else {
         char[] var4 = var1.toCharArray();
         int var2 = 0;

         for(int var3 = 0; var3 < var4.length; ++var3) {
            if(var4[var3] == 38) {
               ++var3;
            } else {
               var2 += this.widthmap[var4[var3]];
            }
         }

         return var2;
      }
   }

   public static String stripColor(String var0) {
      char[] var3 = var0.toCharArray();
      String var1 = "";

      for(int var2 = 0; var2 < var3.length; ++var2) {
         if(var3[var2] == 38) {
            ++var2;
         } else {
            var1 = var1 + var3[var2];
         }
      }

      return var1;
   }
}
TOP

Related Classes of com.mojang.minecraft.gui.FontRenderer

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.