implemented 9slice
This commit is contained in:
parent
009f80dd3a
commit
903e5246dc
11
Test.java
11
Test.java
|
@ -33,10 +33,11 @@ public class Test {
|
||||||
while(!window.shouldClose()) {
|
while(!window.shouldClose()) {
|
||||||
window.tick();
|
window.tick();
|
||||||
var renderContext = window.renderStart();
|
var renderContext = window.renderStart();
|
||||||
//renderContext.drawTextureRectangle(
|
renderContext.drawTextureRectangle(
|
||||||
// new Recti(0, 0, 1280, 720),
|
new Recti(0, 0, 1280, 720),
|
||||||
// tex
|
tex,
|
||||||
//);
|
false
|
||||||
|
);
|
||||||
//renderContext.drawTextureRectangle(
|
//renderContext.drawTextureRectangle(
|
||||||
// new Recti(new Vec2i(200, 100), tex2.getSize()),
|
// new Recti(new Vec2i(200, 100), tex2.getSize()),
|
||||||
// tex2,
|
// tex2,
|
||||||
|
@ -53,7 +54,7 @@ public class Test {
|
||||||
renderContext.drawString(new Vec2i(710, 140), "hello world mew", font2);
|
renderContext.drawString(new Vec2i(710, 140), "hello world mew", font2);
|
||||||
|
|
||||||
|
|
||||||
//renderContext.drawNineSlice(slice, new Recti(100, 100, 1080, 520));
|
renderContext.drawNineSlice(slice, new Recti(100, 100, 200, 50));
|
||||||
window.renderFinish(renderContext);
|
window.renderFinish(renderContext);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -20,12 +20,62 @@ class RenderContext extends BaseRenderContext implements IRenderContext {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void drawNineSlice(NineSlice slice, Recti rect) {
|
public void drawNineSlice(NineSlice slice, Recti rect) {
|
||||||
var centerWidth = Math.min(0, rect.getWidth() - slice.getLeft().getSize().getX() - slice.getRight().getSize().getX());
|
var centerWidth = Math.max(0, rect.getWidth() - slice.getLeft().getSize().getX() - slice.getRight().getSize().getX());
|
||||||
var centerHeight = Math.min(0, rect.getHeight() - slice.getTop().getSize().getY() - slice.getBottom().getSize().getY());
|
var centerHeight = Math.max(0, rect.getHeight() - slice.getTop().getSize().getY() - slice.getBottom().getSize().getY());
|
||||||
var pos = rect.getPos();
|
var pos = rect.getPos();
|
||||||
var size = rect.getSize();
|
var size = rect.getSize();
|
||||||
|
|
||||||
drawTexture(pos, slice.getTopLeft());
|
drawTexture(pos, slice.getTopLeft());
|
||||||
|
drawTexture(new Vec2i(pos.getX() + slice.getLeft().getWidth() + centerWidth, pos.getY()), slice.getTopRight());
|
||||||
|
drawTexture(new Vec2i(pos.getX(), pos.getY() + slice.getTop().getHeight() + centerHeight), slice.getBottomLeft());
|
||||||
|
drawTexture(Vec2i.add(pos, slice.getTopLeft().getSize(), new Vec2i(centerWidth, centerHeight)), slice.getBottomRight());
|
||||||
|
|
||||||
|
drawTextureRectangle(new Recti(Vec2i.add(pos, slice.getTopLeft().getSize()), new Vec2i(centerWidth, centerHeight)), slice.getCenter(), true);
|
||||||
|
|
||||||
|
//top
|
||||||
|
drawTextureRectangle(
|
||||||
|
new Recti(
|
||||||
|
pos.getX() + slice.getLeft().getWidth(),
|
||||||
|
pos.getY(),
|
||||||
|
centerWidth,
|
||||||
|
slice.getTop().getHeight()
|
||||||
|
),
|
||||||
|
slice.getTop(),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
//bottom
|
||||||
|
drawTextureRectangle(
|
||||||
|
new Recti(
|
||||||
|
pos.getX() + slice.getLeft().getWidth(),
|
||||||
|
pos.getY() + slice.getTop().getHeight() + centerHeight,
|
||||||
|
centerWidth,
|
||||||
|
slice.getTop().getHeight()
|
||||||
|
),
|
||||||
|
slice.getBottom(),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
//left
|
||||||
|
drawTextureRectangle(
|
||||||
|
new Recti(
|
||||||
|
pos.getX(),
|
||||||
|
pos.getY() + slice.getTop().getHeight(),
|
||||||
|
slice.getLeft().getWidth(),
|
||||||
|
centerHeight
|
||||||
|
),
|
||||||
|
slice.getLeft(),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
//right
|
||||||
|
drawTextureRectangle(
|
||||||
|
new Recti(
|
||||||
|
pos.getX() + slice.getLeft().getWidth() + centerWidth,
|
||||||
|
pos.getY() + slice.getTop().getHeight(),
|
||||||
|
slice.getLeft().getWidth(),
|
||||||
|
centerHeight
|
||||||
|
),
|
||||||
|
slice.getRight(),
|
||||||
|
true
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -86,7 +136,8 @@ class RenderContext extends BaseRenderContext implements IRenderContext {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var topleft = tex.getTexArea().getTopLeft();
|
var topleft = tex.getTexArea().getTopLeft();
|
||||||
var size = repeat ? tex.getSize() : rect.getSize();
|
//var size = repeat ? tex.getSize() : rect.getSize();
|
||||||
|
var size = repeat ? tex.getSize() : new Vec2i(100000, 100000);
|
||||||
/*var ttl = Vec2i.ZERO;
|
/*var ttl = Vec2i.ZERO;
|
||||||
var ttr = Vec2i.sub(tex.getTexArea().getTopRight(), topleft);
|
var ttr = Vec2i.sub(tex.getTexArea().getTopRight(), topleft);
|
||||||
var tbl = Vec2i.sub(tex.getTexArea().getBottomLeft(), topleft);
|
var tbl = Vec2i.sub(tex.getTexArea().getBottomLeft(), topleft);
|
||||||
|
|
|
@ -22,6 +22,17 @@ class Texture implements ITexture {
|
||||||
}
|
}
|
||||||
@Override
|
@Override
|
||||||
public Vec2i getSize() { return this.img.getSize(); }
|
public Vec2i getSize() { return this.img.getSize(); }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getWidth() {
|
||||||
|
return img.getWidth();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getHeight() {
|
||||||
|
return img.getHeight();
|
||||||
|
}
|
||||||
|
|
||||||
void setTexArea(Recti texArea) {
|
void setTexArea(Recti texArea) {
|
||||||
this.texArea = texArea;
|
this.texArea = texArea;
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,4 +4,6 @@ import com.danitheskunk.skunkworks.Vec2i;
|
||||||
|
|
||||||
public interface ITexture {
|
public interface ITexture {
|
||||||
Vec2i getSize();
|
Vec2i getSize();
|
||||||
|
int getWidth();
|
||||||
|
int getHeight();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue