mirror of
https://github.com/aNNiMON/HotaruFX.git
synced 2024-09-19 14:14:21 +03:00
Ability to set composition background
This commit is contained in:
parent
378cc26d49
commit
e88a1d637d
@ -6,10 +6,12 @@ import com.annimon.hotarufx.lib.NodeValue;
|
|||||||
import com.annimon.hotarufx.lib.NumberValue;
|
import com.annimon.hotarufx.lib.NumberValue;
|
||||||
import com.annimon.hotarufx.lib.Types;
|
import com.annimon.hotarufx.lib.Types;
|
||||||
import com.annimon.hotarufx.visual.Composition;
|
import com.annimon.hotarufx.visual.Composition;
|
||||||
|
import com.annimon.hotarufx.visual.PropertyType;
|
||||||
import com.annimon.hotarufx.visual.visitors.RenderVisitor;
|
import com.annimon.hotarufx.visual.visitors.RenderVisitor;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import javafx.scene.paint.Paint;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
import static com.annimon.hotarufx.bundles.FunctionInfo.of;
|
import static com.annimon.hotarufx.bundles.FunctionInfo.of;
|
||||||
import static com.annimon.hotarufx.bundles.FunctionType.COMMON;
|
import static com.annimon.hotarufx.bundles.FunctionType.COMMON;
|
||||||
@ -30,32 +32,35 @@ public class CompositionBundle implements Bundle {
|
|||||||
|
|
||||||
private static Function composition(Context context) {
|
private static Function composition(Context context) {
|
||||||
return args -> {
|
return args -> {
|
||||||
final int width, height;
|
final Composition composition;
|
||||||
final double frameRate;
|
|
||||||
switch (args.length) {
|
switch (args.length) {
|
||||||
case 0:
|
case 0:
|
||||||
width = 1280;
|
composition = new Composition();
|
||||||
height = 720;
|
|
||||||
frameRate = 30d;
|
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
width = 1280;
|
double frameRate = args[0].asNumber();
|
||||||
height = 720;
|
composition = new Composition(frameRate);
|
||||||
frameRate = args[0].asNumber();
|
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
width = args[0].asInt();
|
int width = args[0].asInt();
|
||||||
height = args[1].asInt();
|
int height = args[1].asInt();
|
||||||
frameRate = 30d;
|
composition = new Composition(width, height);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
|
width = args[0].asInt();
|
||||||
|
height = args[1].asInt();
|
||||||
|
frameRate = args[2].asNumber();
|
||||||
|
composition = new Composition(width, height, frameRate);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
default:
|
default:
|
||||||
width = args[0].asInt();
|
width = args[0].asInt();
|
||||||
height = args[1].asInt();
|
height = args[1].asInt();
|
||||||
frameRate = args[2].asNumber();
|
frameRate = args[2].asNumber();
|
||||||
|
val background = PropertyType.PAINT.<Paint>getFromHFX().apply(args[3]);
|
||||||
|
composition = new Composition(width, height, frameRate, background);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
val composition = new Composition(width, height, frameRate);
|
|
||||||
val scene = composition.getScene();
|
val scene = composition.getScene();
|
||||||
context.composition(composition);
|
context.composition(composition);
|
||||||
context.variables().put("Width", NumberValue.of(scene.getVirtualWidth()));
|
context.variables().put("Width", NumberValue.of(scene.getVirtualWidth()));
|
||||||
|
@ -3,6 +3,7 @@ package com.annimon.hotarufx.visual;
|
|||||||
import javafx.scene.Group;
|
import javafx.scene.Group;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.scene.paint.Color;
|
import javafx.scene.paint.Color;
|
||||||
|
import javafx.scene.paint.Paint;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
import lombok.val;
|
import lombok.val;
|
||||||
|
|
||||||
@ -21,9 +22,29 @@ public class Composition {
|
|||||||
@Getter
|
@Getter
|
||||||
private final VirtualScene scene;
|
private final VirtualScene scene;
|
||||||
|
|
||||||
|
@Getter
|
||||||
|
private final Paint background;
|
||||||
|
|
||||||
|
public Composition() {
|
||||||
|
this(1280, 720);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Composition(double frameRate) {
|
||||||
|
this(1280, 720, frameRate);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Composition(int sceneWidth, int sceneHeight) {
|
||||||
|
this(sceneWidth, sceneHeight, 30);
|
||||||
|
}
|
||||||
|
|
||||||
public Composition(int sceneWidth, int sceneHeight, double frameRate) {
|
public Composition(int sceneWidth, int sceneHeight, double frameRate) {
|
||||||
|
this(sceneWidth, sceneHeight, frameRate, Color.WHITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Composition(int sceneWidth, int sceneHeight, double frameRate, Paint background) {
|
||||||
this.sceneWidth = sceneWidth;
|
this.sceneWidth = sceneWidth;
|
||||||
this.sceneHeight = sceneHeight;
|
this.sceneHeight = sceneHeight;
|
||||||
|
this.background = background;
|
||||||
virtualHeight = 1080;
|
virtualHeight = 1080;
|
||||||
factor = virtualHeight / (double) sceneHeight;
|
factor = virtualHeight / (double) sceneHeight;
|
||||||
virtualWidth = (int) (sceneWidth * factor);
|
virtualWidth = (int) (sceneWidth * factor);
|
||||||
@ -41,6 +62,6 @@ public class Composition {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Scene produceAnimationScene() {
|
public Scene produceAnimationScene() {
|
||||||
return new Scene(scene.getGroup(), sceneWidth, sceneHeight);
|
return new Scene(scene.getGroup(), sceneWidth, sceneHeight, background);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user