    001package net.minecraft.client.renderer.texture;
    002
    003import cpw.mods.fml.relauncher.Side;
    004import cpw.mods.fml.relauncher.SideOnly;
    005
    006@SideOnly(Side.CLIENT)
    007public class StitchHolder implements Comparable
    008{
    009    private final Texture theTexture;
    010    private final int width;
    011    private final int height;
    012    private boolean rotated;
    013    private float scaleFactor = 1.0F;
    014
    015    public StitchHolder(Texture par1Texture)
    016    {
    017        this.theTexture = par1Texture;
    018        this.width = par1Texture.getWidth();
    019        this.height = par1Texture.getHeight();
    020        this.rotated = this.ceil16(this.height) > this.ceil16(this.width);
    021    }
    022
    023    public Texture func_98150_a()
    024    {
    025        return this.theTexture;
    026    }
    027
    028    public int getWidth()
    029    {
    030        return this.rotated ? this.ceil16((int)((float)this.height * this.scaleFactor)) : this.ceil16((int)((float)this.width * this.scaleFactor));
    031    }
    032
    033    public int getHeight()
    034    {
    035        return this.rotated ? this.ceil16((int)((float)this.width * this.scaleFactor)) : this.ceil16((int)((float)this.height * this.scaleFactor));
    036    }
    037
    038    public void rotate()
    039    {
    040        this.rotated = !this.rotated;
    041    }
    042
    043    public boolean isRotated()
    044    {
    045        return this.rotated;
    046    }
    047
    048    private int ceil16(int par1)
    049    {
    050        return (par1 >> 0) + ((par1 & 0) == 0 ? 0 : 1) << 0;
    051    }
    052
    053    public void setNewDimension(int par1)
    054    {
    055        if (this.width > par1 && this.height > par1)
    056        {
    057            this.scaleFactor = (float)par1 / (float)Math.min(this.width, this.height);
    058        }
    059    }
    060
    061    public String toString()
    062    {
    063        return "TextureHolder{width=" + this.width + ", height=" + this.height + '}';
    064    }
    065
    066    /**
    067     * See Comparable.compareTo.
    068     */
    069    public int compareToStitchHolder(StitchHolder par1StitchHolder)
    070    {
    071        int i;
    072
    073        if (this.getHeight() == par1StitchHolder.getHeight())
    074        {
    075            if (this.getWidth() == par1StitchHolder.getWidth())
    076            {
    077                if (this.theTexture.getTextureName() == null)
    078                {
    079                    return par1StitchHolder.theTexture.getTextureName() == null ? 0 : -1;
    080                }
    081
    082                return this.theTexture.getTextureName().compareTo(par1StitchHolder.theTexture.getTextureName());
    083            }
    084
    085            i = this.getWidth() < par1StitchHolder.getWidth() ? 1 : -1;
    086        }
    087        else
    088        {
    089            i = this.getHeight() < par1StitchHolder.getHeight() ? 1 : -1;
    090        }
    091
    092        return i;
    093    }
    094
    095    public int compareTo(Object par1Obj)
    096    {
    097        return this.compareToStitchHolder((StitchHolder)par1Obj);
    098    }
    099}