// Path: src/main/java/team/chisel/ctm/api/texture/ISubmap.java
// @ParametersAreNonnullByDefault
// public interface ISubmap {
// 
//     float getYOffset();
// 
//     float getXOffset();
// 
//     float getWidth();
// 
//     float getHeight();
// 
//     float getInterpolatedU(TextureAtlasSprite sprite, float u);
// 
//     float getInterpolatedV(TextureAtlasSprite sprite, float v);
// 
//     float[] toArray();
// 
//     ISubmap normalize();
// 
//     ISubmap relativize();
// }


import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import team.chisel.ctm.api.texture.ISubmap;
package team.chisel.ctm.client.util;


@Getter
@AllArgsConstructor
public class Submap implements ISubmap {
    
    public static final ISubmap X1 = new Submap(16, 16, 0, 0);
    
    public static final ISubmap[][] X2 = new ISubmap[][] {
        { new Submap(8, 8, 0, 0), new Submap(8, 8, 8, 0) },
        { new Submap(8, 8, 0, 8), new Submap(8, 8, 8, 8) }
    };
    
    private static final float DIV3 = 16 / 3f;
    public static final ISubmap[][] X3 = new ISubmap[][] {
        { new Submap(DIV3, DIV3, 0, 0),         new Submap(DIV3, DIV3, DIV3, 0),        new Submap(DIV3, DIV3, DIV3 * 2, 0) },
        { new Submap(DIV3, DIV3, 0, DIV3),      new Submap(DIV3, DIV3, DIV3, DIV3),     new Submap(DIV3, DIV3, DIV3 * 2, DIV3) },
        { new Submap(DIV3, DIV3, 0, DIV3 * 2),  new Submap(DIV3, DIV3, DIV3, DIV3 * 2), new Submap(DIV3, DIV3, DIV3 * 2, DIV3 * 2) },
    };
    
// Path: src/main/java/team/chisel/ctm/api/texture/ISubmap.java
// @ParametersAreNonnullByDefault
// public interface ISubmap {
// 
//     float getYOffset();
// 
//     float getXOffset();
// 
//     float getWidth();
// 
//     float getHeight();
// 
//     float getInterpolatedU(TextureAtlasSprite sprite, float u);
// 
//     float getInterpolatedV(TextureAtlasSprite sprite, float v);
// 
//     float[] toArray();
// 
//     ISubmap normalize();
// 
//     ISubmap relativize();
// }


// Path: src/main/java/team/chisel/ctm/client/util/Submap.java
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.RequiredArgsConstructor;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import team.chisel.ctm.api.texture.ISubmap;

package team.chisel.ctm.client.util;


@Getter
@AllArgsConstructor
public class Submap implements ISubmap {
    
    public static final ISubmap X1 = new Submap(16, 16, 0, 0);
    
    public static final ISubmap[][] X2 = new ISubmap[][] {
        { new Submap(8, 8, 0, 0), new Submap(8, 8, 8, 0) },
        { new Submap(8, 8, 0, 8), new Submap(8, 8, 8, 8) }
    };
    
    private static final float DIV3 = 16 / 3f;
    public static final ISubmap[][] X3 = new ISubmap[][] {
        { new Submap(DIV3, DIV3, 0, 0),         new Submap(DIV3, DIV3, DIV3, 0),        new Submap(DIV3, DIV3, DIV3 * 2, 0) },
        { new Submap(DIV3, DIV3, 0, DIV3),      new Submap(DIV3, DIV3, DIV3, DIV3),     new Submap(DIV3, DIV3, DIV3 * 2, DIV3) },
        { new Submap(DIV3, DIV3, 0, DIV3 * 2),  new Submap(DIV3, DIV3, DIV3, DIV3 * 2), new Submap(DIV3, DIV3, DIV3 * 2, DIV3 * 2) },
    };
    
    public static final ISubmap[][] X4 = new ISubmap[][] {