// Path: slclient/src/org/solhost/folko/uosl/slclient/views/util/Texture.java
// public class Texture {
//     private final int id, width, height;
//     private final boolean useMipMapping = false;
// 
//     public Texture(BufferedImage image) {
//         this.width = image.getWidth();
//         this.height = image.getHeight();
//         ByteBuffer buffer = BufferUtils.createByteBuffer(width * height * 4);
//         if(image.getType() != BufferedImage.TYPE_INT_ARGB) {
//             throw new RuntimeException("Can only open INT_ARGB images");
//         }
// 
//         for(int y = 0; y < height; y++) {
//             for(int x = 0; x < width; x++) {
//                 int argb = image.getRGB(x, y);
//                 buffer.put((byte) ((argb >> 16) & 0xFF));
//                 buffer.put((byte) ((argb >> 8) & 0xFF));
//                 buffer.put((byte) ((argb >> 0) & 0xFF));
//                 buffer.put((byte) ((argb >> 24) & 0xFF));
//             }
//         }
//         buffer.rewind();
// 
//         id = glGenTextures();
//         glBindTexture(GL_TEXTURE_2D, id);
//         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
//         if(useMipMapping) {
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
//             glGenerateMipmap(GL_TEXTURE_2D);
//         } else {
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
//             glTexParameteri(GL_TEXTURE_2D, GL12.GL_TEXTURE_BASE_LEVEL, 0);
//             glTexParameteri(GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, 0);
//         }
//     }
// 
//     public void bind(int textureUnit) {
//         glActiveTexture(GL_TEXTURE0 + textureUnit);
//         glBindTexture(GL_TEXTURE_2D, id);
//     }
// 
//     public void dispose() {
//         glDeleteTextures(id);
//     }
// 
//     public int getWidth() {
//         return width;
//     }
// 
//     public int getHeight() {
//         return height;
//     }
// 
//     public int getTextureId() {
//         return id;
//     }
// }


import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import org.solhost.folko.uosl.slclient.views.util.Texture;
package org.solhost.folko.uosl.slclient.models;




public class TextureAtlas {
    private static final int DISTANCE = 5;

    private final int maxWidth, maxHeight;
    private final Map<Integer, Rectangle> idMap;
    private int curX, curY, curLineHeight;
    private BufferedImage atlasImage;
// Path: slclient/src/org/solhost/folko/uosl/slclient/views/util/Texture.java
// public class Texture {
//     private final int id, width, height;
//     private final boolean useMipMapping = false;
// 
//     public Texture(BufferedImage image) {
//         this.width = image.getWidth();
//         this.height = image.getHeight();
//         ByteBuffer buffer = BufferUtils.createByteBuffer(width * height * 4);
//         if(image.getType() != BufferedImage.TYPE_INT_ARGB) {
//             throw new RuntimeException("Can only open INT_ARGB images");
//         }
// 
//         for(int y = 0; y < height; y++) {
//             for(int x = 0; x < width; x++) {
//                 int argb = image.getRGB(x, y);
//                 buffer.put((byte) ((argb >> 16) & 0xFF));
//                 buffer.put((byte) ((argb >> 8) & 0xFF));
//                 buffer.put((byte) ((argb >> 0) & 0xFF));
//                 buffer.put((byte) ((argb >> 24) & 0xFF));
//             }
//         }
//         buffer.rewind();
// 
//         id = glGenTextures();
//         glBindTexture(GL_TEXTURE_2D, id);
//         glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, buffer);
//         if(useMipMapping) {
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR_MIPMAP_LINEAR);
//             glGenerateMipmap(GL_TEXTURE_2D);
//         } else {
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
//             glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
//             glTexParameteri(GL_TEXTURE_2D, GL12.GL_TEXTURE_BASE_LEVEL, 0);
//             glTexParameteri(GL_TEXTURE_2D, GL12.GL_TEXTURE_MAX_LEVEL, 0);
//         }
//     }
// 
//     public void bind(int textureUnit) {
//         glActiveTexture(GL_TEXTURE0 + textureUnit);
//         glBindTexture(GL_TEXTURE_2D, id);
//     }
// 
//     public void dispose() {
//         glDeleteTextures(id);
//     }
// 
//     public int getWidth() {
//         return width;
//     }
// 
//     public int getHeight() {
//         return height;
//     }
// 
//     public int getTextureId() {
//         return id;
//     }
// }


// Path: slclient/src/org/solhost/folko/uosl/slclient/models/TextureAtlas.java
import java.awt.Rectangle;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.imageio.ImageIO;
import org.solhost.folko.uosl.slclient.views.util.Texture;

package org.solhost.folko.uosl.slclient.models;




public class TextureAtlas {
    private static final int DISTANCE = 5;

    private final int maxWidth, maxHeight;
    private final Map<Integer, Rectangle> idMap;
    private int curX, curY, curLineHeight;
    private BufferedImage atlasImage;
    private Texture texture;