Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package net.minecraft.client.renderer;
- import cpw.mods.fml.relauncher.Side;
- import cpw.mods.fml.relauncher.SideOnly;
- import java.awt.Graphics;
- import java.awt.image.BufferedImage;
- import java.awt.image.DataBufferInt;
- import java.awt.image.ImageObserver;
- @SideOnly(Side.CLIENT)
- public class ImageBufferDownload implements IImageBuffer
- {
- private int[] imageData;
- private int imageWidth;
- private int imageHeight;
- public BufferedImage parseUserSkin(BufferedImage par1BufferedImage)
- {
- if (par1BufferedImage == null)
- {
- return null;
- }
- else
- {
- this.imageWidth = par1BufferedImage.getWidth();
- this.imageHeight = par1BufferedImage.getHeight();
- if(this.imageHeight != this.imageWidth/2){
- return null;
- }
- BufferedImage var2 = new BufferedImage(this.imageWidth, this.imageHeight, 2);
- Graphics var3 = var2.getGraphics();
- var3.drawImage(par1BufferedImage, 0, 0, (ImageObserver)null);
- var3.dispose();
- this.imageData = ((DataBufferInt)var2.getRaster().getDataBuffer()).getData();
- this.setAreaOpaque(0, 0, this.imageHeight, this.imageHeight/2);
- this.setAreaTransparent(this.imageHeight, 0, this.imageWidth, this.imageHeight);
- this.setAreaOpaque(0, this.imageHeight / 2, this.imageWidth, this.imageHeight);
- return var2;
- }
- }
- /**
- * Makes the given area of the image transparent if it was previously completely opaque (used to remove the outer
- * layer of a skin around the head if it was saved all opaque; this would be redundant so it's assumed that the skin
- * maker is just using an image editor without an alpha channel)
- */
- private void setAreaTransparent(int par1, int par2, int par3, int par4)
- {
- if (!this.hasTransparency(par1, par2, par3, par4))
- {
- for (int i1 = par1; i1 < par3; ++i1)
- {
- for (int j1 = par2; j1 < par4; ++j1)
- {
- this.imageData[i1 + j1 * this.imageWidth] &= 16777215;
- }
- }
- }
- }
- /**
- * Makes the given area of the image opaque
- */
- private void setAreaOpaque(int par1, int par2, int par3, int par4)
- {
- for (int i1 = par1; i1 < par3; ++i1)
- {
- for (int j1 = par2; j1 < par4; ++j1)
- {
- this.imageData[i1 + j1 * this.imageWidth] |= -16777216;
- }
- }
- }
- /**
- * Returns true if the given area of the image contains transparent pixels
- */
- private boolean hasTransparency(int par1, int par2, int par3, int par4)
- {
- for (int i1 = par1; i1 < par3; ++i1)
- {
- for (int j1 = par2; j1 < par4; ++j1)
- {
- int k1 = this.imageData[i1 + j1 * this.imageWidth];
- if ((k1 >> 24 & 255) < 128)
- {
- return true;
- }
- }
- }
- return false;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement