Skip to content

Commit

Permalink
Separated positional overlay code into regions. Added HyperlinkOverlay
Browse files Browse the repository at this point in the history
  • Loading branch information
HackusatePvP committed May 20, 2024
1 parent 0bef1db commit 6f6acda
Show file tree
Hide file tree
Showing 11 changed files with 177 additions and 82 deletions.
43 changes: 30 additions & 13 deletions src/main/java/me/piitex/renjava/gui/Element.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import javafx.scene.Node;

import javafx.scene.control.Button;
import javafx.scene.control.Hyperlink;
import javafx.scene.control.Slider;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
Expand All @@ -26,18 +27,21 @@ public class Element {
public Element(Overlay overlay) {
this.overlay = overlay;
//FIXME: When scaling the height and width the x and y positions need to be scaled to match the modified width and height.
double scaleX = overlay.scaleX();
double scaleY = overlay.scaleY();
if (scaleX > 0) {
overlay.setWidth(overlay.width() * scaleX);
overlay.setX(overlay.x() * scaleX);
}
if (scaleY > 0) {
overlay.setHeight(overlay.height() * scaleY);
overlay.setY(overlay.y() * scaleY);

if (overlay instanceof Region region) {
double scaleX = region.scaleX();
double scaleY = region.scaleY();
if (scaleX > 0) {
region.setWidth(region.width() * scaleX);
overlay.setX(overlay.x() * scaleX);
}
if (scaleY > 0) {
region.setHeight(region.height() * scaleY);
overlay.setY(overlay.y() * scaleY);
}
}
if (overlay instanceof ImageOverlay imageOverlay) {
RenLogger.LOGGER.debug("Processing " + imageOverlay.getFileName());
RenLogger.LOGGER.debug("Processing {}", imageOverlay.getFileName());
Image image = imageOverlay.getImage();
ImageView imageView = new ImageView(image);
imageView.setPreserveRatio(true);
Expand Down Expand Up @@ -70,10 +74,23 @@ public Element(Overlay overlay) {
textFlow.setTranslateY(textFlowOverlay.y());
this.node = textFlow;
} else if (overlay instanceof SliderOverlay sliderOverlay) {
Slider slider = new Slider(sliderOverlay.width(), sliderOverlay.height(), 4);
slider.setPrefSize(sliderOverlay.width(), sliderOverlay.height());
slider.setBlockIncrement(sliderOverlay.getBlockIncrement());
//TODO Finish sliders
Slider slider = new Slider(sliderOverlay.getMinValue(), sliderOverlay.getMaxValue(), sliderOverlay.getCurrentValue());
slider.setTranslateX(sliderOverlay.x());
slider.setTranslateY(sliderOverlay.y());
this.node = slider;
} else if (overlay instanceof HyperlinkOverlay hyperlinkOverlay) {
Hyperlink hyperlink = new Hyperlink(hyperlinkOverlay.getLabel());
hyperlink.setTranslateX(hyperlinkOverlay.x());
hyperlink.setTranslateY(hyperlinkOverlay.y());
if (hyperlinkOverlay.getFont() != null) {
hyperlink.setFont(hyperlinkOverlay.getFont().getFont());
}
hyperlink.setOnAction(actionEvent -> {
RenJava.getInstance().getHost().showDocument(hyperlinkOverlay.getLink());
});

this.node = hyperlink;
}

// Handle specific input
Expand Down
7 changes: 5 additions & 2 deletions src/main/java/me/piitex/renjava/gui/Menu.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import javafx.stage.Stage;
import me.piitex.renjava.RenJava;

import me.piitex.renjava.gui.overlay.Region;
import me.piitex.renjava.loggers.RenLogger;
import me.piitex.renjava.api.scenes.RenScene;
import me.piitex.renjava.api.scenes.transitions.Transitions;
Expand Down Expand Up @@ -249,8 +250,10 @@ public Pane render(@Nullable Pane root, @Nullable RenScene renScene, boolean ren

RenLogger.LOGGER.info("Rendering overlays...");
for (Overlay overlay : overlays) {
overlay.setScaleX(scaleX);
overlay.setScaleY(scaleY);
if (overlay instanceof Region region) {
region.setScaleX(scaleX);
region.setScaleY(scaleY);
}

new Element(overlay).render(root);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@

import java.util.concurrent.atomic.AtomicReference;

public class ButtonOverlay implements Overlay {
public class ButtonOverlay implements Overlay, Region {
private Button button;
private Transitions transitions;
private Menu menu;
Expand Down
93 changes: 93 additions & 0 deletions src/main/java/me/piitex/renjava/gui/overlay/HyperlinkOverlay.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
package me.piitex.renjava.gui.overlay;

import me.piitex.renjava.api.loaders.FontLoader;
import me.piitex.renjava.api.scenes.transitions.Transitions;
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

public class HyperlinkOverlay implements Overlay {
private final String label;
private final String link;
private FontLoader font;
private double x, y;

private Transitions transitions;
private IOverlayHover iOverlayHover;
private IOverlayClick iOverlayClick;

public HyperlinkOverlay(String label, String link, double x, double y) {
this.label = label;
this.link = link;
this.x = x;
this.y = y;
}

public HyperlinkOverlay(String label, String link, FontLoader font, double x, double y) {
this.label = label;
this.link = link;
this.font = font;
this.x = x;
this.y = y;
}

public String getLabel() {
return label;
}

public String getLink() {
return link;
}

public FontLoader getFont() {
return font;
}

public void setFont(FontLoader font) {
this.font = font;
}

@Override
public double x() {
return x;
}

@Override
public double y() {
return y;
}

@Override
public void setX(double x) {
this.x = x;
}

@Override
public void setY(double y) {
this.y = y;
}

@Override
public Transitions getTransition() {
return transitions;
}

@Override
public void setOnclick(IOverlayClick iOverlayClick) {
this.iOverlayClick = iOverlayClick;
}

@Override
public void setOnHover(IOverlayHover iOverlayHover) {
this.iOverlayHover = iOverlayHover;
}

@Override
public IOverlayClick getOnClick() {
return iOverlayClick;
}

@Override
public IOverlayHover getOnHover() {
return iOverlayHover;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import me.piitex.renjava.api.scenes.transitions.Transitions;
import me.piitex.renjava.gui.exceptions.ImageNotFoundException;

public class ImageOverlay implements Overlay {
public class ImageOverlay implements Overlay, Region {
private Image image;
private double x;
private double y;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

public class InputFieldOverlay implements Overlay {
public class InputFieldOverlay implements Overlay, Region {
private double x;
private double y;
private double scaleX, scaleY;
Expand Down
17 changes: 0 additions & 17 deletions src/main/java/me/piitex/renjava/gui/overlay/Overlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

public interface Overlay {

double x();

double y();
Expand All @@ -14,22 +13,6 @@ public interface Overlay {

void setY(double y);

double scaleX();

double scaleY();

void setScaleX(double scaleX);

void setScaleY(double scaleY);

double width();

double height();

void setWidth(double width);

void setHeight(double height);

Transitions getTransition();

void setOnclick(IOverlayClick iOverlayClick);
Expand Down
19 changes: 19 additions & 0 deletions src/main/java/me/piitex/renjava/gui/overlay/Region.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package me.piitex.renjava.gui.overlay;

public interface Region {
double scaleX();

double scaleY();

void setScaleX(double scaleX);

void setScaleY(double scaleY);

double width();

double height();

void setWidth(double width);

void setHeight(double height);
}
63 changes: 18 additions & 45 deletions src/main/java/me/piitex/renjava/gui/overlay/SliderOverlay.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,34 @@
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

public class SliderOverlay implements Overlay {
private final double maxValue, minValue, currentValue;
private double x, y;
private double width, height;
private double scaleX, scaleY;
private double blockIncrement;

private IOverlayHover iOverlayHover;
private IOverlayClick iOverlayClick;

public SliderOverlay(int width, int height, double x, double y) {
this.width = width;
this.height = height;
public SliderOverlay(double maxValue, double minValue, double currentValue, double x, double y) {
// Sliders don't have regions like images or buttons do.
this.maxValue = maxValue;
this.minValue = minValue;
this.currentValue = currentValue;
this.x = x;
this.y = y;
}

public double getMaxValue() {
return maxValue;
}

public double getMinValue() {
return minValue;
}

public double getCurrentValue() {
return currentValue;
}

public double getBlockIncrement() {
return blockIncrement;
}
Expand Down Expand Up @@ -48,46 +61,6 @@ public void setY(double y) {
this.y = y;
}

@Override
public double scaleX() {
return scaleX;
}

@Override
public double scaleY() {
return scaleY;
}

@Override
public void setScaleX(double scaleX) {
this.scaleX = scaleX;
}

@Override
public void setScaleY(double scaleY) {
this.scaleY = scaleY;
}

@Override
public double width() {
return width;
}

@Override
public double height() {
return height;
}

@Override
public void setWidth(double width) {
this.width = width;
}

@Override
public void setHeight(double height) {
this.height = height;
}

@Override
public Transitions getTransition() {
return null;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package me.piitex.renjava.gui.overlay;

import javafx.scene.SubScene;
import javafx.scene.control.Hyperlink;
import javafx.scene.paint.Color;
import javafx.scene.paint.Paint;
import javafx.scene.text.Font;
Expand All @@ -12,7 +14,7 @@

import java.util.LinkedList;

public class TextFlowOverlay implements Overlay {
public class TextFlowOverlay implements Overlay, Region {
private double x;
private double y;
private double scaleX, scaleY;
Expand Down Expand Up @@ -165,15 +167,20 @@ public LinkedList<Text> getTexts() {
public TextFlow build() {
TextFlow textFlow = new TextFlow();
for (Text text : texts) {
// Not the best way to go about this
text = new Text(text.getText().replace("\\n", System.lineSeparator()));

if (font != null) {
text.setFont(font);
}
text.setFill(textColor);

textFlow.getChildren().add(text);
}

textFlow.setPrefSize(width, height);

return textFlow;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import me.piitex.renjava.gui.overlay.events.IOverlayClick;
import me.piitex.renjava.gui.overlay.events.IOverlayHover;

public class TextOverlay implements Overlay {
public class TextOverlay implements Overlay, Region {
private final Text text;
private FontLoader fontLoader;
private double x;
Expand Down

0 comments on commit 6f6acda

Please sign in to comment.