fix(renderer): adjust text rendering dimensions for alignment in G2DDrawFont

This commit is contained in:
extio-de
2025-12-29 22:32:39 +01:00
parent be625f9dce
commit ca420d859b
2 changed files with 9 additions and 8 deletions

View File

@@ -22,6 +22,7 @@ import de.extio.game_engine.spatial2.SpatialUtils2;
import de.extio.game_engine.spatial2.model.Area2; import de.extio.game_engine.spatial2.model.Area2;
import de.extio.game_engine.spatial2.model.CoordI2; import de.extio.game_engine.spatial2.model.CoordI2;
import de.extio.game_engine.spatial2.model.ImmutableCoordI2; import de.extio.game_engine.spatial2.model.ImmutableCoordI2;
import de.extio.game_engine.spatial2.model.MutableCoordD2;
import de.extio.game_engine.spatial2.model.MutableCoordI2; import de.extio.game_engine.spatial2.model.MutableCoordI2;
@Conditional(G2DRendererCondition.class) @Conditional(G2DRendererCondition.class)
@@ -122,20 +123,20 @@ public class G2DDrawFont extends G2DAbstractRenderingBo implements DrawFontRende
final var line = lines[i]; final var line = lines[i];
final var yOffset = this.y + i * lineHeight; final var yOffset = this.y + i * lineHeight;
final var textDimScaled = ImmutableCoordI2.create((int)(lineDims[i].getX() * scaleFactor), (int)(lineDims[i].getY() * scaleFactor));
switch (this.alignment) { switch (this.alignment) {
case LEFT: case LEFT: {
renderSingleLine(graphics, null, scaleFactor, this.x, yOffset, this.size, line); renderSingleLine(graphics, textDimScaled, scaleFactor, this.x, yOffset, this.size, line);
break; break;
}
case CENTER: { case CENTER: {
final var textDim = lineDims[i]; renderSingleLine(graphics, textDimScaled, scaleFactor, (this.width - lineDims[i].getX()) / 2 + this.x, yOffset, this.size, line);
renderSingleLine(graphics, textDim, scaleFactor, (this.width - textDim.getX()) / 2 + this.x, yOffset, this.size, line);
break; break;
} }
case RIGHT: { case RIGHT: {
final var textDim = lineDims[i]; renderSingleLine(graphics, textDimScaled, scaleFactor, this.width - lineDims[i].getX() + this.x, yOffset, this.size, line);
renderSingleLine(graphics, textDim, scaleFactor, this.width - textDim.getX() + this.x, yOffset, this.size, line);
break; break;
} }

View File

@@ -490,14 +490,14 @@ public class DemoModule extends AbstractClientModule {
.setCustomData2(HorizontalAlignment.LEFT) .setCustomData2(HorizontalAlignment.LEFT)
.setVisible(true) .setVisible(true)
.setEnabled(true) .setEnabled(true)
.withDimensionAbsolute(150, 60) .withDimensionAbsolute(100, 60)
.withPositionRelative(1, y + 2); .withPositionRelative(1, y + 2);
this.scrollArea.putRenderingBo(bo); this.scrollArea.putRenderingBo(bo);
bo = this.renderingBoPool.acquire("DemoModule_ScrollAreaWindow_Text_" + i, DrawFontRenderingBo.class) bo = this.renderingBoPool.acquire("DemoModule_ScrollAreaWindow_Text_" + i, DrawFontRenderingBo.class)
.setText(String.valueOf(i)) .setText(String.valueOf(i))
.setSize(28) .setSize(28)
.setAlignment(HorizontalAlignment.CENTER) .setAlignment(HorizontalAlignment.RIGHT)
.withDimensionAbsolute(50, 60) .withDimensionAbsolute(50, 60)
.setLayer(RenderingBoLayer.UI0) .setLayer(RenderingBoLayer.UI0)
.withPositionRelative(100, y + 22); .withPositionRelative(100, y + 22);