-
Notifications
You must be signed in to change notification settings - Fork 0
/
FontBinder.java
62 lines (56 loc) · 3.62 KB
/
FontBinder.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package io.github.dbchoco.Salawat.helpers;
import io.github.dbchoco.Salawat.Main;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.value.ChangeListener;
import javafx.beans.value.ObservableValue;
import javafx.scene.control.Label;
import javafx.scene.text.Font;
public class FontBinder {
private static final Font font = Font.loadFont( Main.class.getResourceAsStream( "fonts/IBMPlexSansArabic-Regular.ttf"), 50);
private static final ObjectProperty<Font> fontLarger = new SimpleObjectProperty<Font>(font);
private static final ObjectProperty<Font> fontLarge = new SimpleObjectProperty<Font>(font);
static final ObjectProperty<Font> fontMedium = new SimpleObjectProperty<Font>(font);
private static final ObjectProperty<Font> fontSmall = new SimpleObjectProperty<Font>(font);
private static final ObjectProperty<Font> fontSmaller = new SimpleObjectProperty<Font>(font);
private static final Integer smallerFontRatio = 50;
private static final Integer smallFontRatio = 35;
private static final Integer mediumFontRatio = 25;
private static final Integer largeFontRatio = 18;
private static final Integer largerFontRatio = 10;
public static void init(){
fontSmaller.set(FontChooser.getFont(StageController.getStage().heightProperty().doubleValue() / smallerFontRatio));
fontSmall.set(FontChooser.getFont(StageController.getStage().heightProperty().doubleValue() / smallFontRatio));
fontMedium.set(FontChooser.getFont(
StageController.getStage().heightProperty().doubleValue() / mediumFontRatio));
fontLarge.set(FontChooser.getFont(StageController.getStage().heightProperty().doubleValue() / largeFontRatio));
fontLarger.set(FontChooser.getFont(StageController.getStage().heightProperty().doubleValue() / largerFontRatio));
StageController.getStage().heightProperty().addListener(new ChangeListener<Number>() {
@Override
public void changed(ObservableValue<? extends Number> observableValue, Number number, Number t1) {
fontSmaller.set(FontChooser.getFont(t1.doubleValue() / smallerFontRatio));
fontSmall.set(FontChooser.getFont(t1.doubleValue() / smallFontRatio));
fontMedium.set(FontChooser.getFont(t1.doubleValue() / mediumFontRatio));
fontLarge.set(FontChooser.getFont(t1.doubleValue() / largeFontRatio));
fontLarger.set(FontChooser.getFont(t1.doubleValue() / largerFontRatio));
}
});
}
public static void reloadFonts(){
fontSmaller.set(FontChooser.getFont(StageController.getStage().heightProperty().doubleValue() / smallerFontRatio));
fontSmall.set(FontChooser.getFont(StageController.getStage().heightProperty().doubleValue() / smallFontRatio));
fontMedium.set(FontChooser.getFont(
StageController.getStage().heightProperty().doubleValue() / mediumFontRatio));
fontLarge.set(FontChooser.getFont(StageController.getStage().heightProperty().doubleValue() / largeFontRatio));
fontLarger.set(FontChooser.getFont(StageController.getStage().heightProperty().doubleValue() / largerFontRatio));
}
public static void bindFontSize(Label label, String size){
switch (size){
case "smaller" -> label.fontProperty().bind(fontSmaller);
case "small" -> label.fontProperty().bind(fontSmall);
case "medium" -> label.fontProperty().bind(fontMedium);
case "large" -> label.fontProperty().bind(fontLarge);
case "larger" -> label.fontProperty().bind(fontLarger);
}
}
}