001 package net.minecraft.client.gui;
002
003 import cpw.mods.fml.relauncher.Side;
004 import cpw.mods.fml.relauncher.SideOnly;
005 import net.minecraft.client.renderer.Tessellator;
006 import org.lwjgl.opengl.GL11;
007
008 @SideOnly(Side.CLIENT)
009 public class Gui
010 {
011 protected float zLevel = 0.0F;
012
013 protected void drawHorizontalLine(int par1, int par2, int par3, int par4)
014 {
015 if (par2 < par1)
016 {
017 int var5 = par1;
018 par1 = par2;
019 par2 = var5;
020 }
021
022 drawRect(par1, par3, par2 + 1, par3 + 1, par4);
023 }
024
025 protected void drawVerticalLine(int par1, int par2, int par3, int par4)
026 {
027 if (par3 < par2)
028 {
029 int var5 = par2;
030 par2 = par3;
031 par3 = var5;
032 }
033
034 drawRect(par1, par2 + 1, par1 + 1, par3, par4);
035 }
036
037 /**
038 * Draws a solid color rectangle with the specified coordinates and color.
039 */
040 public static void drawRect(int par0, int par1, int par2, int par3, int par4)
041 {
042 int var5;
043
044 if (par0 < par2)
045 {
046 var5 = par0;
047 par0 = par2;
048 par2 = var5;
049 }
050
051 if (par1 < par3)
052 {
053 var5 = par1;
054 par1 = par3;
055 par3 = var5;
056 }
057
058 float var10 = (float)(par4 >> 24 & 255) / 255.0F;
059 float var6 = (float)(par4 >> 16 & 255) / 255.0F;
060 float var7 = (float)(par4 >> 8 & 255) / 255.0F;
061 float var8 = (float)(par4 & 255) / 255.0F;
062 Tessellator var9 = Tessellator.instance;
063 GL11.glEnable(GL11.GL_BLEND);
064 GL11.glDisable(GL11.GL_TEXTURE_2D);
065 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
066 GL11.glColor4f(var6, var7, var8, var10);
067 var9.startDrawingQuads();
068 var9.addVertex((double)par0, (double)par3, 0.0D);
069 var9.addVertex((double)par2, (double)par3, 0.0D);
070 var9.addVertex((double)par2, (double)par1, 0.0D);
071 var9.addVertex((double)par0, (double)par1, 0.0D);
072 var9.draw();
073 GL11.glEnable(GL11.GL_TEXTURE_2D);
074 GL11.glDisable(GL11.GL_BLEND);
075 }
076
077 /**
078 * Draws a rectangle with a vertical gradient between the specified colors.
079 */
080 protected void drawGradientRect(int par1, int par2, int par3, int par4, int par5, int par6)
081 {
082 float var7 = (float)(par5 >> 24 & 255) / 255.0F;
083 float var8 = (float)(par5 >> 16 & 255) / 255.0F;
084 float var9 = (float)(par5 >> 8 & 255) / 255.0F;
085 float var10 = (float)(par5 & 255) / 255.0F;
086 float var11 = (float)(par6 >> 24 & 255) / 255.0F;
087 float var12 = (float)(par6 >> 16 & 255) / 255.0F;
088 float var13 = (float)(par6 >> 8 & 255) / 255.0F;
089 float var14 = (float)(par6 & 255) / 255.0F;
090 GL11.glDisable(GL11.GL_TEXTURE_2D);
091 GL11.glEnable(GL11.GL_BLEND);
092 GL11.glDisable(GL11.GL_ALPHA_TEST);
093 GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
094 GL11.glShadeModel(GL11.GL_SMOOTH);
095 Tessellator var15 = Tessellator.instance;
096 var15.startDrawingQuads();
097 var15.setColorRGBA_F(var8, var9, var10, var7);
098 var15.addVertex((double)par3, (double)par2, (double)this.zLevel);
099 var15.addVertex((double)par1, (double)par2, (double)this.zLevel);
100 var15.setColorRGBA_F(var12, var13, var14, var11);
101 var15.addVertex((double)par1, (double)par4, (double)this.zLevel);
102 var15.addVertex((double)par3, (double)par4, (double)this.zLevel);
103 var15.draw();
104 GL11.glShadeModel(GL11.GL_FLAT);
105 GL11.glDisable(GL11.GL_BLEND);
106 GL11.glEnable(GL11.GL_ALPHA_TEST);
107 GL11.glEnable(GL11.GL_TEXTURE_2D);
108 }
109
110 /**
111 * Renders the specified text to the screen, center-aligned.
112 */
113 public void drawCenteredString(FontRenderer par1FontRenderer, String par2Str, int par3, int par4, int par5)
114 {
115 par1FontRenderer.drawStringWithShadow(par2Str, par3 - par1FontRenderer.getStringWidth(par2Str) / 2, par4, par5);
116 }
117
118 /**
119 * Renders the specified text to the screen.
120 */
121 public void drawString(FontRenderer par1FontRenderer, String par2Str, int par3, int par4, int par5)
122 {
123 par1FontRenderer.drawStringWithShadow(par2Str, par3, par4, par5);
124 }
125
126 /**
127 * Draws a textured rectangle at the stored z-value. Args: x, y, u, v, width, height
128 */
129 public void drawTexturedModalRect(int par1, int par2, int par3, int par4, int par5, int par6)
130 {
131 float var7 = 0.00390625F;
132 float var8 = 0.00390625F;
133 Tessellator var9 = Tessellator.instance;
134 var9.startDrawingQuads();
135 var9.addVertexWithUV((double)(par1 + 0), (double)(par2 + par6), (double)this.zLevel, (double)((float)(par3 + 0) * var7), (double)((float)(par4 + par6) * var8));
136 var9.addVertexWithUV((double)(par1 + par5), (double)(par2 + par6), (double)this.zLevel, (double)((float)(par3 + par5) * var7), (double)((float)(par4 + par6) * var8));
137 var9.addVertexWithUV((double)(par1 + par5), (double)(par2 + 0), (double)this.zLevel, (double)((float)(par3 + par5) * var7), (double)((float)(par4 + 0) * var8));
138 var9.addVertexWithUV((double)(par1 + 0), (double)(par2 + 0), (double)this.zLevel, (double)((float)(par3 + 0) * var7), (double)((float)(par4 + 0) * var8));
139 var9.draw();
140 }
141 }