mirror of
https://github.com/badvision/lawless-legends.git
synced 2025-02-14 12:30:55 +00:00
Added ability to toggle aspect correction for full-screen mode
This commit is contained in:
parent
18c77f06e0
commit
77b82992df
@ -275,6 +275,7 @@ public class EmulatorUILogic implements Reconfigurable {
|
||||
Stage stage = LawlessLegends.getApplication().primaryStage;
|
||||
stage.setFullScreenExitKeyCombination(KeyCombination.NO_MATCH);
|
||||
stage.setFullScreen(!stage.isFullScreen());
|
||||
LawlessLegends.getApplication().controller.setAspectRatioEnabled(stage.isFullScreen());
|
||||
});
|
||||
}
|
||||
|
||||
@ -406,37 +407,41 @@ public class EmulatorUILogic implements Reconfigurable {
|
||||
|| LawlessLegends.getApplication().primaryStage == null) {
|
||||
return;
|
||||
}
|
||||
Stage stage = LawlessLegends.getApplication().primaryStage;
|
||||
size++;
|
||||
if (size > 3) {
|
||||
size = 0;
|
||||
}
|
||||
int width = 0, height = 0;
|
||||
switch (size) {
|
||||
case 0: // 1x
|
||||
width = 560;
|
||||
height = 384;
|
||||
break;
|
||||
case 1: // 1.5x
|
||||
width = 840;
|
||||
height = 576;
|
||||
break;
|
||||
case 2: // 2x
|
||||
width = 560 * 2;
|
||||
height = 384 * 2;
|
||||
break;
|
||||
case 3: // 3x (retina) 2880x1800
|
||||
width = 560 * 3;
|
||||
height = 384 * 3;
|
||||
break;
|
||||
default: // 2x
|
||||
width = 560 * 2;
|
||||
height = 384 * 2;
|
||||
if (stage.isFullScreen()) {
|
||||
LawlessLegends.getApplication().controller.toggleAspectRatio();
|
||||
} else {
|
||||
int width = 0, height = 0;
|
||||
switch (size) {
|
||||
case 0: // 1x
|
||||
width = 560;
|
||||
height = 384;
|
||||
break;
|
||||
case 1: // 1.5x
|
||||
width = 840;
|
||||
height = 576;
|
||||
break;
|
||||
case 2: // 2x
|
||||
width = 560 * 2;
|
||||
height = 384 * 2;
|
||||
break;
|
||||
case 3: // 3x (retina) 2880x1800
|
||||
width = 560 * 3;
|
||||
height = 384 * 3;
|
||||
break;
|
||||
default: // 2x
|
||||
width = 560 * 2;
|
||||
height = 384 * 2;
|
||||
}
|
||||
double vgap = stage.getScene().getY();
|
||||
double hgap = stage.getScene().getX();
|
||||
stage.setWidth(hgap * 2 + width);
|
||||
stage.setHeight(vgap + height);
|
||||
}
|
||||
Stage stage = LawlessLegends.getApplication().primaryStage;
|
||||
double vgap = stage.getScene().getY();
|
||||
double hgap = stage.getScene().getX();
|
||||
stage.setWidth(hgap * 2 + width);
|
||||
stage.setHeight(vgap + height);
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -29,6 +29,11 @@ import java.util.concurrent.TimeUnit;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.Logger;
|
||||
import javafx.application.Platform;
|
||||
import javafx.beans.binding.DoubleBinding;
|
||||
import javafx.beans.binding.NumberBinding;
|
||||
import javafx.beans.binding.When;
|
||||
import javafx.beans.property.BooleanProperty;
|
||||
import javafx.beans.property.SimpleBooleanProperty;
|
||||
import javafx.event.EventHandler;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.geometry.Insets;
|
||||
@ -71,13 +76,19 @@ public class JaceUIController {
|
||||
|
||||
Computer computer;
|
||||
|
||||
private BooleanProperty aspectRatioCorrectionEnabled = new SimpleBooleanProperty(false);
|
||||
|
||||
@FXML
|
||||
void initialize() {
|
||||
assert rootPane != null : "fx:id=\"rootPane\" was not injected: check your FXML file 'JaceUI.fxml'.";
|
||||
assert stackPane != null : "fx:id=\"stackPane\" was not injected: check your FXML file 'JaceUI.fxml'.";
|
||||
assert notificationBox != null : "fx:id=\"notificationBox\" was not injected: check your FXML file 'JaceUI.fxml'.";
|
||||
assert appleScreen != null : "fx:id=\"appleScreen\" was not injected: check your FXML file 'JaceUI.fxml'.";
|
||||
appleScreen.fitWidthProperty().bind(rootPane.widthProperty());
|
||||
NumberBinding aspectCorrectedWidth = rootPane.heightProperty().multiply(3.0).divide(2.0);
|
||||
NumberBinding width = new When(
|
||||
aspectRatioCorrectionEnabled.and(aspectCorrectedWidth.lessThan(rootPane.widthProperty()))
|
||||
).then(aspectCorrectedWidth).otherwise(rootPane.widthProperty());
|
||||
appleScreen.fitWidthProperty().bind(width);
|
||||
appleScreen.fitHeightProperty().bind(rootPane.heightProperty());
|
||||
appleScreen.setVisible(false);
|
||||
rootPane.setOnDragEntered(this::processDragEnteredEvent);
|
||||
@ -85,6 +96,14 @@ public class JaceUIController {
|
||||
rootPane.setBackground(new Background(new BackgroundFill(Color.BLACK, null, null)));
|
||||
}
|
||||
|
||||
public void toggleAspectRatio() {
|
||||
setAspectRatioEnabled(aspectRatioCorrectionEnabled.not().get());
|
||||
}
|
||||
|
||||
public void setAspectRatioEnabled(boolean enabled) {
|
||||
aspectRatioCorrectionEnabled.set(enabled);
|
||||
}
|
||||
|
||||
public void connectComputer(Computer computer, Stage primaryStage) {
|
||||
if (computer == null) {
|
||||
return;
|
||||
|
Loading…
x
Reference in New Issue
Block a user