package ca.blarg.gdx.graphics.atlas;

import ca.blarg.gdx.math.MathHelpers;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.math.MathUtils;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.Array;
import ca.blarg.gdx.math.MathHelpers;

public abstract class TextureAtlas {
	public static final float TEXCOORD_EDGE_BLEED_OFFSET = 0.02f;

	public final Texture texture;

	protected final float edgeCoordOffset;
	protected Array<TextureRegion> tiles = new Array<TextureRegion>(TextureRegion.class);

	public TextureAtlas(Texture texture, float edgeCoordOffset) {
		this.texture = texture;
		this.edgeCoordOffset = edgeCoordOffset;
	}

	public TextureRegion get(int index) {
		return tiles.items[index];
	}

	public int count() {
		return tiles.size;
	}

	public static void scaleTexCoord(Vector2 texCoord, TextureRegion tile, Vector2 out) {
		out.x = scaleTexCoordU(texCoord.x, tile);
		out.y = scaleTexCoordV(texCoord.y, tile);
	}

	public static void scaleTexCoord(Vector2 texCoord, float srcMin, float srcMax, TextureRegion tile, Vector2 out) {
		out.x = scaleTexCoordU(texCoord.x, srcMin, srcMax, tile);
		out.y = scaleTexCoordV(texCoord.y, srcMin, srcMax, tile);
	}

	public static float scaleTexCoordU(float u, TextureRegion tile) {
		return MathHelpers.scaleRange(u, 0.0f, 1.0f, tile.getU(), tile.getU2());
	}

	public static float scaleTexCoordU(float u, float srcMinU, float srcMaxU, TextureRegion tile) {
		return MathHelpers.scaleRange(u, srcMinU, srcMaxU, tile.getU(), tile.getU2());
	}

	public static float scaleTexCoordV(float v, TextureRegion tile) {
		return MathHelpers.scaleRange(v, 0.0f, 1.0f, tile.getV(), tile.getV2());
	}

	public static float scaleTexCoordV(float v, float srcMinV, float srcMaxV, TextureRegion tile) {
		return MathHelpers.scaleRange(v, srcMinV, srcMaxV, tile.getV(), tile.getV2());
	}
}

@@ -167,48 +167,8 @@
 on;%0A
-import com.badlogic.gdx.math.MathUtils;%0A
 impo
@@ -250,36 +250,39 @@
 rt c
-a.blarg.gdx.math.MathHelpers
+om.badlogic.gdx.utils.ObjectMap
 ;%0A%0Ap
@@ -539,16 +539,121 @@
 .class);
+%0A%09protected ObjectMap%3CString, AnimationSequence%3E animations = new ObjectMap%3CString, AnimationSequence%3E();
 %0A%0A%09publi
@@ -896,24 +896,198 @@
 s.size;%0A%09%7D%0A%0A
+%09public boolean hasAnimations() %7B%0A%09%09return animations.size %3E 0;%0A%09%7D%0A%0A%09public ObjectMap.Entries%3CString, AnimationSequence%3E getAnimations() %7B%0A%09%09return animations.entries();%0A%09%7D%0A%0A
 %09public stat

add animations collection to TextureAtlas