diff --git a/src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoRenderer.java b/src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoRenderer.java index 6603c060..97cdac07 100644 --- a/src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoRenderer.java +++ b/src/main/java/eu/crushedpixel/replaymod/gui/GuiVideoRenderer.java @@ -29,11 +29,9 @@ public class GuiVideoRenderer extends GuiScreen { @Override @SuppressWarnings("unchecked") // I blame forge for not re-adding generics to that list public void initGui() { - FrameRenderer frameRenderer = renderer.getFrameRenderer(); - String text = PREVIEW; buttonList.add(previewCheckBox = new GuiCheckBox(0, (width - fontRendererObj.getStringWidth(text)) / 2 - 8, - frameRenderer.getPreviewHeight(this), text, false)); + height - 20, text, false)); text = PAUSE_RENDERING; buttonList.add(pauseButton = new GuiButton(1, width / 2 - 152, height / 2 - 23, text)); @@ -88,11 +86,14 @@ public class GuiVideoRenderer extends GuiScreen { String framesProgress = I18n.format("replaymod.gui.rendering.progress", renderer.getFramesDone(), renderer.getTotalFrames()); drawCenteredString(fontRendererObj, framesProgress, centerX, centerY - 45, 0xffffffff); + int previewX = width / 4; + int previewY = height / 2 + 10; + int previewWidth = width / 2; + int previewHeight = height - 30 - previewY; if (previewCheckBox.isChecked()) { - frameRenderer.renderPreview(this); + frameRenderer.renderPreview(previewX, previewY, previewWidth, previewHeight); } else { - int previewHeight = frameRenderer.getPreviewHeight(this) - height / 2 - 10; - FrameRenderer.renderNoPreview(width, height, previewHeight); + FrameRenderer.renderNoPreview(previewX, previewY, previewWidth, previewHeight); } super.drawScreen(mouseX, mouseY, partialTicks); } diff --git a/src/main/java/eu/crushedpixel/replaymod/video/frame/FrameRenderer.java b/src/main/java/eu/crushedpixel/replaymod/video/frame/FrameRenderer.java index 2c20b833..34278991 100644 --- a/src/main/java/eu/crushedpixel/replaymod/video/frame/FrameRenderer.java +++ b/src/main/java/eu/crushedpixel/replaymod/video/frame/FrameRenderer.java @@ -2,11 +2,9 @@ package eu.crushedpixel.replaymod.video.frame; import com.google.common.base.Preconditions; import com.google.common.util.concurrent.Runnables; -import eu.crushedpixel.replaymod.gui.GuiVideoRenderer; import eu.crushedpixel.replaymod.video.entity.CustomEntityRenderer; import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Gui; -import net.minecraft.client.gui.GuiScreen; import net.minecraft.client.renderer.texture.DynamicTexture; import net.minecraft.client.renderer.texture.TextureUtil; import net.minecraft.util.ResourceLocation; @@ -174,48 +172,43 @@ public abstract class FrameRenderer { } /** - * Return the height including any borders of the preview. - * No rendering should be performed by {@link #renderPreview(GuiVideoRenderer)} below this height. - * @param guiScreen The gui screen - * @return Bottom of the preview + * Draw a preview of the current scene within the specified box. + * @param x Left border of the box + * @param y Upper border of the box + * @param width Width of the box + * @param height Height of the box */ - public int getPreviewHeight(GuiScreen guiScreen) { - int width = guiScreen.width / 2; - int height = guiScreen.height / 3; - if (width / height < getVideoWidth() / getVideoHeight()) { - height = width * getVideoHeight() / getVideoWidth(); - } - return guiScreen.height / 2 + height + 10; - } - - /** - * Draw a preview of the current scene on the lower half of the screen. - * @param guiScreen The gui screen - */ - public void renderPreview(GuiVideoRenderer guiScreen) { - int width = guiScreen.width / 2; - int height = guiScreen.height / 3; + public void renderPreview(int x, int y, int width, int height) { + int actualWidth = width; + int actualHeight = height; if (width / height > getVideoWidth() / getVideoHeight()) { - width = height * getVideoWidth() / getVideoHeight(); + actualWidth = height * getVideoWidth() / getVideoHeight(); } else { - height = width * getVideoHeight() / getVideoWidth(); + actualHeight = width * getVideoHeight() / getVideoWidth(); } - int x = guiScreen.width / 2 - width / 2; - int y = guiScreen.height / 2 + 5; + x += (width - actualWidth) / 2; + y += (height - actualHeight) / 2; bindTexture(previewTexture.getGlTextureId()); color(1, 1, 1, 1); - Gui.drawScaledCustomSizeModalRect(x, y, 0, 0, videoWidth, videoHeight, width, height, videoWidth, videoHeight); + Gui.drawScaledCustomSizeModalRect(x, y, 0, 0, videoWidth, videoHeight, actualWidth, actualHeight, videoWidth, videoHeight); } - public static void renderNoPreview(int guiWidth, int guiHeight, int height) { - int width = height * 1280 / 720; - int x = guiWidth / 2 - width / 2; - int y = guiHeight / 2 + 5; + public static void renderNoPreview(int x, int y, int width, int height) { + int actualWidth = width; + int actualHeight = height; + if (width / height > 1280 / 720) { + actualWidth = height * 1280 / 720; + } else { + actualHeight = width * 720 / 1280; + } + + x += (width - actualWidth) / 2; + y += (height - actualHeight) / 2; Minecraft.getMinecraft().getTextureManager().bindTexture(noPreviewTexture); color(1, 1, 1, 1); - Gui.drawScaledCustomSizeModalRect(x, y, 0, 0, 1280, 720, width, height, 1280, 720); + Gui.drawScaledCustomSizeModalRect(x, y, 0, 0, 1280, 720, actualWidth, actualHeight, 1280, 720); } }