package speiger.src.coreengine.ui.gui.renderer;

import speiger.src.coreengine.math.vector.quaternion.Quaternion;
import speiger.src.coreengine.platform.graphics.api.utils.SampledTexture;
import speiger.src.coreengine.ui.gui.layout.box.IGuiBox;
import speiger.src.coreengine.ui.gui.utils.Align;

public interface IUIRenderer {
	boolean isClipping(IGuiBox box);
	void pushClip(IGuiBox box);
	void popClip();
	
	void pushTransform();
	void popTransform();
	
	void translate(float z);
	void translate(float x, float y);
	
	void scale(float scale);
	void scale(float x, float y);
	
	void rotate(Quaternion rotation);
	
	void align(Align vertical, Align horizontal);
	void alignV(Align align);
	void alignH(Align align);
	
	void pushLayer(LayerType type);
	void popLayer(LayerType type);
	
	
	void drawLine(float startX, float startY, float endX, float endY, float lineWidth, int color);
	void drawFrame(IGuiBox box, int color);
	void drawRect(IGuiBox box, int color);
	void drawImage(IGuiBox box, SampledTexture texture, int color);
	void drawImage(IGuiBox box, SampledTexture texture, float minU, float minV, float maxU, float maxV, int color);
	void drawCustom(UIDrawer drawer);
}
