use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class CanvasImpl method drawTextureRaw.
@Override
public void drawTextureRaw(TextureRegion texture, Rect2i region, Color color, ScaleMode mode, float ux, float uy, float uw, float uh) {
if (!state.cropRegion.overlaps(relativeToAbsolute(region))) {
return;
}
Rect2i absoluteRegion = relativeToAbsolute(region);
Rect2i cropRegion = absoluteRegion.intersect(state.cropRegion);
if (!cropRegion.isEmpty()) {
if (state.drawOnTop) {
drawOnTopOperations.add(new DrawTextureOperation(texture, color, mode, absoluteRegion, cropRegion, ux, uy, uw, uh, state.getAlpha()));
} else {
renderer.drawTexture(texture, color, mode, absoluteRegion, ux, uy, uw, uh, state.getAlpha());
}
}
}
use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class CanvasImpl method drawBackground.
@Override
public void drawBackground() {
Rect2i region = applyStyleToSize(getRegion());
drawBackground(region);
}
use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class CanvasImpl method drawWidget.
@Override
public void drawWidget(UIWidget element, Rect2i region) {
if (element == null || !element.isVisible()) {
return;
}
if (nuiManager.getFocus() == element) {
focusDrawn = true;
}
String family = (element.getFamily() != null) ? element.getFamily() : state.family;
UISkin skin = (element.getSkin() != null) ? element.getSkin() : state.skin;
UIStyle newStyle = skin.getStyleFor(family, element.getClass(), UIWidget.BASE_PART, element.getMode());
Rect2i regionArea;
try (SubRegion ignored = subRegionForWidget(element, region, false)) {
regionArea = applyStyleToSize(region, newStyle, calculateMaximumSize(element));
}
try (SubRegion ignored = subRegionForWidget(element, regionArea, false)) {
if (element.isSkinAppliedByCanvas()) {
drawBackground();
try (SubRegion withMargin = subRegionForWidget(element, newStyle.getMargin().shrink(Rect2i.createFromMinAndSize(Vector2i.zero(), regionArea.size())), false)) {
drawStyledWidget(element);
}
} else {
drawStyledWidget(element);
}
}
}
use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class MigLayout method onDraw.
@Override
public void onDraw(Canvas canvas) {
int[] bounds = { 0, 0, canvas.size().x, canvas.size().y };
layoutContainer(canvas, bounds);
for (ComponentWrapper wrapper : wrappers.values()) {
UIWidget component = (UIWidget) wrapper.getComponent();
Rect2i region = Rect2i.createFromMinAndSize(wrapper.getX(), wrapper.getY(), wrapper.getWidth(), wrapper.getHeight());
canvas.drawWidget(component, region);
}
if (debug) {
grid.paintDebug();
}
for (Rect2i region : debugRects) {
canvas.drawLine(region.minX(), region.minY(), region.maxX(), region.minY(), Color.WHITE);
canvas.drawLine(region.maxX(), region.minY(), region.maxX(), region.maxY(), Color.WHITE);
canvas.drawLine(region.maxX(), region.maxY(), region.minX(), region.maxY(), Color.WHITE);
canvas.drawLine(region.minX(), region.maxY(), region.minX(), region.minY(), Color.WHITE);
}
}
use of org.terasology.math.geom.Rect2i in project Terasology by MovingBlocks.
the class RelativeLayout method getTargetRegion.
private Rect2i getTargetRegion(String id, Canvas canvas) {
if (id != null && !id.isEmpty()) {
if (loopDetectionId.equals(id)) {
logger.warn("Infinite loop detected resolving layout of element {}", loopDetectionId);
loopDetectionId = "";
return canvas.getRegion();
} else if (loopDetectionId.isEmpty()) {
loopDetectionId = id;
}
WidgetInfo target = contentLookup.get(id);
if (target != null) {
Rect2i region = getRegion(target, canvas);
loopDetectionId = "";
return region;
}
}
loopDetectionId = "";
return canvas.getRegion();
}
Aggregations