commit 26/05/2025
Tambah Crop Setting
This commit is contained in:
@@ -1,9 +1,29 @@
|
|||||||
#Thu May 22 11:19:22 WIB 2025
|
#Mon May 26 14:20:06 WIB 2025
|
||||||
AudioPhase1=C\:\\Users\\Erha\\IdeaProjects\\ErhaCam\\audio\\phase1.mp3
|
AudioPhase1=C\:\\Users\\rdkar\\OneDrive\\Documents\\IntelliJ Project\\ErhaCam\\audio\\phase1.mp3
|
||||||
AudioPhase2=C\:\\Users\\Erha\\IdeaProjects\\ErhaCam\\audio\\phase2.mp3
|
AudioPhase2=C\:\\Users\\rdkar\\OneDrive\\Documents\\IntelliJ Project\\ErhaCam\\audio\\phase2.mp3
|
||||||
AudioPhase3=C\:\\Users\\Erha\\IdeaProjects\\ErhaCam\\audio\\phase3.mp3
|
AudioPhase3=C\:\\Users\\rdkar\\OneDrive\\Documents\\IntelliJ Project\\ErhaCam\\audio\\phase3.mp3
|
||||||
AudioPhase4=C\:\\Users\\Erha\\IdeaProjects\\ErhaCam\\audio\\phase4.mp3
|
AudioPhase4=C\:\\Users\\rdkar\\OneDrive\\Documents\\IntelliJ Project\\ErhaCam\\audio\\phase4.mp3
|
||||||
AudioPhase5=C\:\\Users\\Erha\\IdeaProjects\\ErhaCam\\audio\\phase5.mp3
|
AudioPhase5=C\:\\Users\\rdkar\\OneDrive\\Documents\\IntelliJ Project\\ErhaCam\\audio\\phase5.mp3
|
||||||
|
Cam1BottomCrop=10.0
|
||||||
|
Cam1LeftCrop=10.0
|
||||||
|
Cam1RightCrop=10.0
|
||||||
|
Cam1TopCrop=10.0
|
||||||
|
Cam2BottomCrop=10.0
|
||||||
|
Cam2LeftCrop=10.0
|
||||||
|
Cam2RightCrop=10.0
|
||||||
|
Cam2TopCrop=10.0
|
||||||
|
Cam3BottomCrop=10.0
|
||||||
|
Cam3LeftCrop=10.0
|
||||||
|
Cam3RightCrop=10.0
|
||||||
|
Cam3TopCrop=10.0
|
||||||
|
Cam4BottomCrop=10.0
|
||||||
|
Cam4LeftCrop=10.0
|
||||||
|
Cam4RightCrop=10.0
|
||||||
|
Cam4TopCrop=10.0
|
||||||
|
Cam5BottomCrop=10.0
|
||||||
|
Cam5LeftCrop=10.0
|
||||||
|
Cam5RightCrop=10.0
|
||||||
|
Cam5TopCrop=10.0
|
||||||
CameraCenter=
|
CameraCenter=
|
||||||
CameraConfigCenter={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0.0,"Gain"\:1.0,"Exposure"\:1.0,"Sharpness"\:0.0,"Gamma"\:0.0,"AutoExposure"\:true,"AutoFocus"\:true,"AutoWhiteBalance"\:true}
|
CameraConfigCenter={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0.0,"Gain"\:1.0,"Exposure"\:1.0,"Sharpness"\:0.0,"Gamma"\:0.0,"AutoExposure"\:true,"AutoFocus"\:true,"AutoWhiteBalance"\:true}
|
||||||
CameraConfigLeft45={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0.0,"Gain"\:1.0,"Exposure"\:1.0,"Sharpness"\:0.0,"Gamma"\:0.0,"AutoExposure"\:true,"AutoFocus"\:true,"AutoWhiteBalance"\:true}
|
CameraConfigLeft45={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0.0,"Gain"\:1.0,"Exposure"\:1.0,"Sharpness"\:0.0,"Gamma"\:0.0,"AutoExposure"\:true,"AutoFocus"\:true,"AutoWhiteBalance"\:true}
|
||||||
@@ -11,7 +31,7 @@ CameraConfigLeft90={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0
|
|||||||
CameraConfigRight45={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0.0,"Gain"\:1.0,"Exposure"\:1.0,"Sharpness"\:0.0,"Gamma"\:0.0,"AutoExposure"\:true,"AutoFocus"\:true,"AutoWhiteBalance"\:true}
|
CameraConfigRight45={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0.0,"Gain"\:1.0,"Exposure"\:1.0,"Sharpness"\:0.0,"Gamma"\:0.0,"AutoExposure"\:true,"AutoFocus"\:true,"AutoWhiteBalance"\:true}
|
||||||
CameraConfigRight90={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0.0,"Gain"\:1.0,"Exposure"\:1.0,"Sharpness"\:0.0,"Gamma"\:0.0,"AutoExposure"\:true,"AutoFocus"\:true,"AutoWhiteBalance"\:true}
|
CameraConfigRight90={"Brightness"\:0.0,"Contrast"\:0.0,"Saturation"\:0.0,"Hue"\:0.0,"Gain"\:1.0,"Exposure"\:1.0,"Sharpness"\:0.0,"Gamma"\:0.0,"AutoExposure"\:true,"AutoFocus"\:true,"AutoWhiteBalance"\:true}
|
||||||
CameraLeft45=
|
CameraLeft45=
|
||||||
CameraLeft90=OBSBOT Meet 2 StreamCamera
|
CameraLeft90=
|
||||||
CameraRight45=
|
CameraRight45=
|
||||||
CameraRight90=
|
CameraRight90=
|
||||||
FTPHost=192.168.10.2
|
FTPHost=192.168.10.2
|
||||||
@@ -19,10 +39,10 @@ FTPPass=password
|
|||||||
FTPPath=/
|
FTPPath=/
|
||||||
FTPPort=21
|
FTPPort=21
|
||||||
FTPUser=user
|
FTPUser=user
|
||||||
FlipCamera=true
|
FlipCamera=false
|
||||||
MirrorCamera=true
|
MirrorCamera=false
|
||||||
PhotoDirectory=C\:\\Users\\Erha\\Desktop\\ErhaCapture
|
PhotoDirectory=C\:\\Users\\rdkar\\OneDrive\\Documents\\IntelliJ Project\\ErhaCam
|
||||||
SharpnessThreshold=1000.0
|
SharpnessThreshold=300.0
|
||||||
cascadeMaxSize=500
|
cascadeMaxSize=500
|
||||||
cascadeMinNeighbors=3
|
cascadeMinNeighbors=3
|
||||||
cascadeMinSize=250
|
cascadeMinSize=250
|
||||||
|
|||||||
@@ -50,6 +50,31 @@ public class ConfigFile {
|
|||||||
|
|
||||||
private @Getter double SharpnessThreshold;
|
private @Getter double SharpnessThreshold;
|
||||||
|
|
||||||
|
private @Getter final double topcropmax = 30.0;
|
||||||
|
private @Getter final double bottomcropmax = 30.0;
|
||||||
|
private @Getter final double leftcropmax = 30.0;
|
||||||
|
private @Getter final double rightcropmax = 30.0;
|
||||||
|
private @Getter double Cam1TopCrop = 10.0;
|
||||||
|
private @Getter double Cam1BottomCrop = 10.0;
|
||||||
|
private @Getter double Cam1LeftCrop = 10.0;
|
||||||
|
private @Getter double Cam1RightCrop = 10.0;
|
||||||
|
private @Getter double Cam2TopCrop = 10.0;
|
||||||
|
private @Getter double Cam2BottomCrop = 10.0;
|
||||||
|
private @Getter double Cam2LeftCrop = 10.0;
|
||||||
|
private @Getter double Cam2RightCrop = 10.0;
|
||||||
|
private @Getter double Cam3TopCrop = 10.0;
|
||||||
|
private @Getter double Cam3BottomCrop = 10.0;
|
||||||
|
private @Getter double Cam3LeftCrop = 10.0;
|
||||||
|
private @Getter double Cam3RightCrop = 10.0;
|
||||||
|
private @Getter double Cam4TopCrop = 10.0;
|
||||||
|
private @Getter double Cam4BottomCrop = 10.0;
|
||||||
|
private @Getter double Cam4LeftCrop = 10.0;
|
||||||
|
private @Getter double Cam4RightCrop = 10.0;
|
||||||
|
private @Getter double Cam5TopCrop = 10.0;
|
||||||
|
private @Getter double Cam5BottomCrop = 10.0;
|
||||||
|
private @Getter double Cam5LeftCrop = 10.0;
|
||||||
|
private @Getter double Cam5RightCrop = 10.0;
|
||||||
|
|
||||||
private boolean needsave = false;
|
private boolean needsave = false;
|
||||||
|
|
||||||
public ConfigFile(){
|
public ConfigFile(){
|
||||||
@@ -58,6 +83,188 @@ public class ConfigFile {
|
|||||||
Load();
|
Load();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setCam1TopCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam1TopCrop && v <= topcropmax && v >= 0.0){
|
||||||
|
Cam1TopCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCam1BottomCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam1BottomCrop && v <= bottomcropmax && v >= 0.0){
|
||||||
|
Cam1BottomCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam1LeftCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam1LeftCrop && v <= leftcropmax && v >= 0.0){
|
||||||
|
Cam1LeftCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam1RightCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam1RightCrop && v <= rightcropmax && v >= 0.0){
|
||||||
|
Cam1RightCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam2TopCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam2TopCrop && v <= topcropmax && v >= 0.0){
|
||||||
|
Cam2TopCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam2BottomCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam2BottomCrop && v <= bottomcropmax && v >= 0.0){
|
||||||
|
Cam2BottomCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam2LeftCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam2LeftCrop && v <= leftcropmax && v >= 0.0){
|
||||||
|
Cam2LeftCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam2RightCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam2RightCrop && v <= rightcropmax && v >= 0.0){
|
||||||
|
Cam2RightCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam3TopCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam3TopCrop && v <= topcropmax && v >= 0.0){
|
||||||
|
Cam3TopCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam3BottomCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam3BottomCrop && v <= bottomcropmax && v >= 0.0){
|
||||||
|
Cam3BottomCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam3LeftCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam3LeftCrop && v <= leftcropmax && v >= 0.0){
|
||||||
|
Cam3LeftCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam3RightCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam3RightCrop && v <= rightcropmax && v >= 0.0){
|
||||||
|
Cam3RightCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam4TopCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam4TopCrop && v <= topcropmax && v >= 0.0){
|
||||||
|
Cam4TopCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam4BottomCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam4BottomCrop && v <= bottomcropmax && v >= 0.0){
|
||||||
|
Cam4BottomCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam4LeftCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam4LeftCrop && v <= leftcropmax && v >= 0.0){
|
||||||
|
Cam4LeftCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam4RightCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam4RightCrop && v <= rightcropmax && v >= 0.0){
|
||||||
|
Cam4RightCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam5TopCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam5TopCrop && v <= topcropmax && v >= 0.0){
|
||||||
|
Cam5TopCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam5BottomCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam5BottomCrop && v <= bottomcropmax && v >= 0.0){
|
||||||
|
Cam5BottomCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam5LeftCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam5LeftCrop && v <= leftcropmax && v >= 0.0){
|
||||||
|
Cam5LeftCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public void setCam5RightCrop(String value){
|
||||||
|
if (ValidDouble(value)){
|
||||||
|
double v = toDouble(value);
|
||||||
|
if (v != Cam5RightCrop && v <= rightcropmax && v >= 0.0){
|
||||||
|
Cam5RightCrop = v;
|
||||||
|
needsave = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setMirrorCamera(boolean value){
|
public void setMirrorCamera(boolean value){
|
||||||
if (MirrorCamera != value){
|
if (MirrorCamera != value){
|
||||||
MirrorCamera = value;
|
MirrorCamera = value;
|
||||||
@@ -596,6 +803,28 @@ public class ConfigFile {
|
|||||||
if (prop.getProperty("cascadeMinSize") == null) allcorrect = false;
|
if (prop.getProperty("cascadeMinSize") == null) allcorrect = false;
|
||||||
if (prop.getProperty("cascadeMaxSize") == null) allcorrect = false;
|
if (prop.getProperty("cascadeMaxSize") == null) allcorrect = false;
|
||||||
|
|
||||||
|
if (prop.getProperty("Cam1TopCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam1BottomCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam1LeftCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam1RightCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam2TopCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam2BottomCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam2LeftCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam2RightCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam3TopCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam3BottomCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam3LeftCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam3RightCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam4TopCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam4BottomCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam4LeftCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam4RightCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam5TopCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam5BottomCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam5LeftCrop") == null) allcorrect = false;
|
||||||
|
if (prop.getProperty("Cam5RightCrop") == null) allcorrect = false;
|
||||||
|
|
||||||
|
|
||||||
if (allcorrect){
|
if (allcorrect){
|
||||||
AudioPhase1 = prop.getProperty("AudioPhase1");
|
AudioPhase1 = prop.getProperty("AudioPhase1");
|
||||||
AudioPhase2 = prop.getProperty("AudioPhase2");
|
AudioPhase2 = prop.getProperty("AudioPhase2");
|
||||||
@@ -622,7 +851,7 @@ public class ConfigFile {
|
|||||||
ConfigRight45 = gson.fromJson(prop.getProperty(CameraConfigEnum.CameraConfigRight45.toString()), CameraConfig.class);
|
ConfigRight45 = gson.fromJson(prop.getProperty(CameraConfigEnum.CameraConfigRight45.toString()), CameraConfig.class);
|
||||||
ConfigRight90 = gson.fromJson(prop.getProperty(CameraConfigEnum.CameraConfigRight90.toString()), CameraConfig.class);
|
ConfigRight90 = gson.fromJson(prop.getProperty(CameraConfigEnum.CameraConfigRight90.toString()), CameraConfig.class);
|
||||||
|
|
||||||
cascadeScaleFactor = toDouble(prop.getProperty("cascadeScaleFactor"));
|
cascadeScaleFactor = cascadetoDouble(prop.getProperty("cascadeScaleFactor"));
|
||||||
cascadeMinNeighbors = toInt(prop.getProperty("cascadeMinNeighbors"));
|
cascadeMinNeighbors = toInt(prop.getProperty("cascadeMinNeighbors"));
|
||||||
cascadeMinSize = toInt(prop.getProperty("cascadeMinSize"));
|
cascadeMinSize = toInt(prop.getProperty("cascadeMinSize"));
|
||||||
cascadeMaxSize = toInt(prop.getProperty("cascadeMaxSize"));
|
cascadeMaxSize = toInt(prop.getProperty("cascadeMaxSize"));
|
||||||
@@ -636,6 +865,28 @@ public class ConfigFile {
|
|||||||
|
|
||||||
SharpnessThreshold = toDouble(prop.getProperty("SharpnessThreshold"));
|
SharpnessThreshold = toDouble(prop.getProperty("SharpnessThreshold"));
|
||||||
|
|
||||||
|
Cam1TopCrop = toDouble(prop.getProperty("Cam1TopCrop"));
|
||||||
|
Cam1BottomCrop = toDouble(prop.getProperty("Cam1BottomCrop"));
|
||||||
|
Cam1LeftCrop = toDouble(prop.getProperty("Cam1LeftCrop"));
|
||||||
|
Cam1RightCrop = toDouble(prop.getProperty("Cam1RightCrop"));
|
||||||
|
Cam2TopCrop = toDouble(prop.getProperty("Cam2TopCrop"));
|
||||||
|
Cam2BottomCrop = toDouble(prop.getProperty("Cam2BottomCrop"));
|
||||||
|
Cam2LeftCrop = toDouble(prop.getProperty("Cam2LeftCrop"));
|
||||||
|
Cam2RightCrop = toDouble(prop.getProperty("Cam2RightCrop"));
|
||||||
|
Cam3TopCrop = toDouble(prop.getProperty("Cam3TopCrop"));
|
||||||
|
Cam3BottomCrop = toDouble(prop.getProperty("Cam3BottomCrop"));
|
||||||
|
Cam3LeftCrop = toDouble(prop.getProperty("Cam3LeftCrop"));
|
||||||
|
Cam3RightCrop = toDouble(prop.getProperty("Cam3RightCrop"));
|
||||||
|
Cam4TopCrop = toDouble(prop.getProperty("Cam4TopCrop"));
|
||||||
|
Cam4BottomCrop = toDouble(prop.getProperty("Cam4BottomCrop"));
|
||||||
|
Cam4LeftCrop = toDouble(prop.getProperty("Cam4LeftCrop"));
|
||||||
|
Cam4RightCrop = toDouble(prop.getProperty("Cam4RightCrop"));
|
||||||
|
Cam5TopCrop = toDouble(prop.getProperty("Cam5TopCrop"));
|
||||||
|
Cam5BottomCrop = toDouble(prop.getProperty("Cam5BottomCrop"));
|
||||||
|
Cam5LeftCrop = toDouble(prop.getProperty("Cam5LeftCrop"));
|
||||||
|
Cam5RightCrop = toDouble(prop.getProperty("Cam5RightCrop"));
|
||||||
|
|
||||||
|
|
||||||
Logger.info("Config Loaded");
|
Logger.info("Config Loaded");
|
||||||
MakeDirectories();
|
MakeDirectories();
|
||||||
return;
|
return;
|
||||||
@@ -651,7 +902,7 @@ public class ConfigFile {
|
|||||||
CreateDefault();
|
CreateDefault();
|
||||||
}
|
}
|
||||||
|
|
||||||
private double toDouble(String cascadeScaleFactor) {
|
private double cascadetoDouble(String cascadeScaleFactor) {
|
||||||
try{
|
try{
|
||||||
return Double.parseDouble(cascadeScaleFactor);
|
return Double.parseDouble(cascadeScaleFactor);
|
||||||
} catch (Exception e){
|
} catch (Exception e){
|
||||||
@@ -659,6 +910,14 @@ public class ConfigFile {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private double toDouble(String value) {
|
||||||
|
try{
|
||||||
|
return Double.parseDouble(value);
|
||||||
|
} catch (Exception e){
|
||||||
|
return 0.0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private void CreateDefault(){
|
private void CreateDefault(){
|
||||||
AudioPhase1 = Path.of(currentDirectory, "audio", "phase1.mp3").toString();
|
AudioPhase1 = Path.of(currentDirectory, "audio", "phase1.mp3").toString();
|
||||||
AudioPhase2 = Path.of(currentDirectory, "audio", "phase2.mp3").toString();
|
AudioPhase2 = Path.of(currentDirectory, "audio", "phase2.mp3").toString();
|
||||||
@@ -691,6 +950,32 @@ public class ConfigFile {
|
|||||||
MirrorCamera = false;
|
MirrorCamera = false;
|
||||||
FlipCamera = false;
|
FlipCamera = false;
|
||||||
SharpnessThreshold = 300.0;
|
SharpnessThreshold = 300.0;
|
||||||
|
|
||||||
|
Cam1TopCrop = 10.0;
|
||||||
|
Cam1BottomCrop = 10.0;
|
||||||
|
Cam1LeftCrop = 10.0;
|
||||||
|
Cam1RightCrop = 10.0;
|
||||||
|
|
||||||
|
Cam2TopCrop = 10.0;
|
||||||
|
Cam2BottomCrop = 10.0;
|
||||||
|
Cam2LeftCrop = 10.0;
|
||||||
|
Cam2RightCrop = 10.0;
|
||||||
|
|
||||||
|
Cam3TopCrop = 10.0;
|
||||||
|
Cam3BottomCrop = 10.0;
|
||||||
|
Cam3LeftCrop = 10.0;
|
||||||
|
Cam3RightCrop = 10.0;
|
||||||
|
|
||||||
|
Cam4TopCrop = 10.0;
|
||||||
|
Cam4BottomCrop = 10.0;
|
||||||
|
Cam4LeftCrop = 10.0;
|
||||||
|
Cam4RightCrop = 10.0;
|
||||||
|
|
||||||
|
Cam5TopCrop = 10.0;
|
||||||
|
Cam5BottomCrop = 10.0;
|
||||||
|
Cam5LeftCrop = 10.0;
|
||||||
|
Cam5RightCrop = 10.0;
|
||||||
|
|
||||||
Logger.info("Default Config Created");
|
Logger.info("Default Config Created");
|
||||||
needsave = true;
|
needsave = true;
|
||||||
Save();
|
Save();
|
||||||
@@ -751,6 +1036,28 @@ public class ConfigFile {
|
|||||||
prop.setProperty("FlipCamera", String.valueOf(FlipCamera));
|
prop.setProperty("FlipCamera", String.valueOf(FlipCamera));
|
||||||
prop.setProperty("SharpnessThreshold", String.valueOf(SharpnessThreshold));
|
prop.setProperty("SharpnessThreshold", String.valueOf(SharpnessThreshold));
|
||||||
|
|
||||||
|
prop.setProperty("Cam1TopCrop", String.valueOf(Cam1TopCrop));
|
||||||
|
prop.setProperty("Cam1BottomCrop", String.valueOf(Cam1BottomCrop));
|
||||||
|
prop.setProperty("Cam1LeftCrop", String.valueOf(Cam1LeftCrop));
|
||||||
|
prop.setProperty("Cam1RightCrop", String.valueOf(Cam1RightCrop));
|
||||||
|
prop.setProperty("Cam2TopCrop", String.valueOf(Cam2TopCrop));
|
||||||
|
prop.setProperty("Cam2BottomCrop", String.valueOf(Cam2BottomCrop));
|
||||||
|
prop.setProperty("Cam2LeftCrop", String.valueOf(Cam2LeftCrop));
|
||||||
|
prop.setProperty("Cam2RightCrop", String.valueOf(Cam2RightCrop));
|
||||||
|
prop.setProperty("Cam3TopCrop", String.valueOf(Cam3TopCrop));
|
||||||
|
prop.setProperty("Cam3BottomCrop", String.valueOf(Cam3BottomCrop));
|
||||||
|
prop.setProperty("Cam3LeftCrop", String.valueOf(Cam3LeftCrop));
|
||||||
|
prop.setProperty("Cam3RightCrop", String.valueOf(Cam3RightCrop));
|
||||||
|
prop.setProperty("Cam4TopCrop", String.valueOf(Cam4TopCrop));
|
||||||
|
prop.setProperty("Cam4BottomCrop", String.valueOf(Cam4BottomCrop));
|
||||||
|
prop.setProperty("Cam4LeftCrop", String.valueOf(Cam4LeftCrop));
|
||||||
|
prop.setProperty("Cam4RightCrop", String.valueOf(Cam4RightCrop));
|
||||||
|
prop.setProperty("Cam5TopCrop", String.valueOf(Cam5TopCrop));
|
||||||
|
prop.setProperty("Cam5BottomCrop", String.valueOf(Cam5BottomCrop));
|
||||||
|
prop.setProperty("Cam5LeftCrop", String.valueOf(Cam5LeftCrop));
|
||||||
|
prop.setProperty("Cam5RightCrop", String.valueOf(Cam5RightCrop));
|
||||||
|
|
||||||
|
|
||||||
try{
|
try{
|
||||||
prop.store(new FileOutputStream(Path.of(currentDirectory, "config.properties").toString()), null);
|
prop.store(new FileOutputStream(Path.of(currentDirectory, "config.properties").toString()), null);
|
||||||
Logger.info("Config Saved");
|
Logger.info("Config Saved");
|
||||||
|
|||||||
@@ -144,6 +144,7 @@ public class CaptureView {
|
|||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private void TakePhotos(){
|
private void TakePhotos(){
|
||||||
|
if (audioTimeline!=null) audioTimeline.stop();
|
||||||
String directory = config.getPhotoDirectory();
|
String directory = config.getPhotoDirectory();
|
||||||
String prefix = RemoveSpaces(medicalRecordID.getText()) ;
|
String prefix = RemoveSpaces(medicalRecordID.getText()) ;
|
||||||
boolean has_face = Arrays.stream(have_face).anyMatch(AtomicBoolean::get);
|
boolean has_face = Arrays.stream(have_face).anyMatch(AtomicBoolean::get);
|
||||||
@@ -194,16 +195,18 @@ public class CaptureView {
|
|||||||
} else {
|
} else {
|
||||||
isTakingPhoto.set(false);
|
isTakingPhoto.set(false);
|
||||||
//AutoCloseAlert.show("QR Code Not Available", "", "Please scan QR before continue", 5, s -> AutoCloseAlert.show("Scan Barcode", "Silahkan Scan Barcode Anda", "Arahkan kertas barcode ke kamera", 0, null));
|
//AutoCloseAlert.show("QR Code Not Available", "", "Please scan QR before continue", 5, s -> AutoCloseAlert.show("Scan Barcode", "Silahkan Scan Barcode Anda", "Arahkan kertas barcode ke kamera", 0, null));
|
||||||
if (!Objects.equals(AutoCloseAlert.shownBanner, AutoCloseAlert.banner_01)){
|
// if (!Objects.equals(AutoCloseAlert.shownBanner, AutoCloseAlert.banner_01)){
|
||||||
if (AutoCloseAlert.banner_01!=null){
|
// if (AutoCloseAlert.banner_01!=null){
|
||||||
AutoCloseAlert.showbanner(AutoCloseAlert.banner_01,0,null);
|
// AutoCloseAlert.showbanner(AutoCloseAlert.banner_01,0,null);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
clear();
|
||||||
PlayFileWithoutEvent(audio_scan_barcode);
|
PlayFileWithoutEvent(audio_scan_barcode);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
isTakingPhoto.set(false);
|
isTakingPhoto.set(false);
|
||||||
AutoCloseAlert.show("Invalid Photo Directory","Photo Directory not set", "Please set photo directory at Setting", 5, s -> AutoCloseAlert.show("Setting", "Setting", "Please set photo directory", 0, null));
|
AutoCloseAlert.show("Invalid Photo Directory","Photo Directory not set", "Please set photo directory at Setting", 5, s -> AutoCloseAlert.show("Setting", "Setting", "Please set photo directory", 0, sx-> clear()));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -480,6 +483,14 @@ public class CaptureView {
|
|||||||
|
|
||||||
String[] files = prc.compressed();
|
String[] files = prc.compressed();
|
||||||
if (files.length>0){
|
if (files.length>0){
|
||||||
|
AutoCloseAlert.showpictures(prc.compressed(),3, (s)->{
|
||||||
|
if (AutoCloseAlert.banner_02!=null) {
|
||||||
|
AutoCloseAlert.showbanner(AutoCloseAlert.banner_02, 0, null);
|
||||||
|
|
||||||
|
UploadFiles(prc, prefix);
|
||||||
|
if (runningTask!=null) runningTask.cancel(false);
|
||||||
|
}
|
||||||
|
});
|
||||||
PlayFileWithEvent(audio_pengambilan_berhasil, new PlaybackStatus() {
|
PlayFileWithEvent(audio_pengambilan_berhasil, new PlaybackStatus() {
|
||||||
@Override
|
@Override
|
||||||
public void onPlaybackStarted(String filename) {
|
public void onPlaybackStarted(String filename) {
|
||||||
@@ -488,14 +499,7 @@ public class CaptureView {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlaybackFinished(String filename) {
|
public void onPlaybackFinished(String filename) {
|
||||||
AutoCloseAlert.showpictures(prc.compressed(),3, (s)->{
|
|
||||||
if (AutoCloseAlert.banner_02!=null) {
|
|
||||||
AutoCloseAlert.showbanner(AutoCloseAlert.banner_02, 0, null);
|
|
||||||
|
|
||||||
UploadFiles(prc, prefix);
|
|
||||||
if (runningTask!=null) runningTask.cancel(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -561,7 +565,7 @@ public class CaptureView {
|
|||||||
@FXML
|
@FXML
|
||||||
public void initialize(){
|
public void initialize(){
|
||||||
audio_posisikan_muka = ExtractResource("/posisikan_wajah.wav");
|
audio_posisikan_muka = ExtractResource("/posisikan_wajah.wav");
|
||||||
audio_pengambilan_berhasil = ExtractResource("/pengambilan_berhasil.wav");
|
audio_pengambilan_berhasil = ExtractResource("/pengambilan_berhasil_tunggu_lobby.wav");
|
||||||
audio_pengambilan_gagal = ExtractResource("/pengambilan_gagal.wav");
|
audio_pengambilan_gagal = ExtractResource("/pengambilan_gagal.wav");
|
||||||
audio_scan_barcode = ExtractResource("/scan_barcode.wav");
|
audio_scan_barcode = ExtractResource("/scan_barcode.wav");
|
||||||
audio_upload_gagal = ExtractResource("/upload_gagal.wav");
|
audio_upload_gagal = ExtractResource("/upload_gagal.wav");
|
||||||
@@ -611,11 +615,12 @@ public class CaptureView {
|
|||||||
LoadCameraDetail(cam5, 5, CameraConfigEnum.CameraConfigRight90);
|
LoadCameraDetail(cam5, 5, CameraConfigEnum.CameraConfigRight90);
|
||||||
|
|
||||||
Platform.runLater(()->{
|
Platform.runLater(()->{
|
||||||
if (!Objects.equals(AutoCloseAlert.shownBanner, AutoCloseAlert.banner_01)){
|
// if (!Objects.equals(AutoCloseAlert.shownBanner, AutoCloseAlert.banner_01)){
|
||||||
if (AutoCloseAlert.banner_01!=null){
|
// if (AutoCloseAlert.banner_01!=null){
|
||||||
AutoCloseAlert.showbanner(AutoCloseAlert.banner_01,0,null);
|
// AutoCloseAlert.showbanner(AutoCloseAlert.banner_01,0,null);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
clear();
|
||||||
|
|
||||||
int indexleft90=-1;
|
int indexleft90=-1;
|
||||||
int indexleft45=-1;
|
int indexleft45=-1;
|
||||||
@@ -707,6 +712,8 @@ public class CaptureView {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Timeline audioTimeline;
|
||||||
|
|
||||||
private void clear(){
|
private void clear(){
|
||||||
isTakingPhoto.set(false);
|
isTakingPhoto.set(false);
|
||||||
TextAreaSetText(medicalRecordID,"");
|
TextAreaSetText(medicalRecordID,"");
|
||||||
@@ -824,7 +831,7 @@ public class CaptureView {
|
|||||||
|
|
||||||
LiveCamEvent lce = new LiveCamEvent() {
|
LiveCamEvent lce = new LiveCamEvent() {
|
||||||
|
|
||||||
Timeline audioTimeline;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDetectedQRCode(String barCode) {
|
public void onDetectedQRCode(String barCode) {
|
||||||
@@ -850,71 +857,61 @@ public class CaptureView {
|
|||||||
|
|
||||||
audioTimeline = new Timeline();
|
audioTimeline = new Timeline();
|
||||||
final int file_duration = 8; // audio_posisikan_muka durasi 7 detik
|
final int file_duration = 8; // audio_posisikan_muka durasi 7 detik
|
||||||
audioTimeline.getKeyFrames().add(new KeyFrame(Duration.seconds(0), k1 ->{
|
audioTimeline.getKeyFrames().add(new KeyFrame(Duration.seconds(0), k1 -> PlayFileWithEvent(audio_posisikan_muka, new PlaybackStatus() {
|
||||||
|
@Override
|
||||||
|
public void onPlaybackStarted(String filename) {
|
||||||
|
anti_bawel.set(true);
|
||||||
|
System.out.println("Peringatan pertama audio_posisikan_muka");
|
||||||
|
}
|
||||||
|
|
||||||
PlayFileWithEvent(audio_posisikan_muka, new PlaybackStatus() {
|
@Override
|
||||||
@Override
|
public void onPlaybackFinished(String filename) {
|
||||||
public void onPlaybackStarted(String filename) {
|
anti_bawel.set(false);
|
||||||
anti_bawel.set(true);
|
}
|
||||||
System.out.println("Peringatan pertama audio_posisikan_muka");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlaybackFinished(String filename) {
|
public void onPlaybackFailure(String filename) {
|
||||||
anti_bawel.set(false);
|
anti_bawel.set(false);
|
||||||
}
|
}
|
||||||
|
})));
|
||||||
|
|
||||||
@Override
|
audioTimeline.getKeyFrames().add(new KeyFrame(Duration.seconds(file_duration+5), k2 -> PlayFileWithEvent(audio_posisikan_muka, new PlaybackStatus() {
|
||||||
public void onPlaybackFailure(String filename) {
|
|
||||||
anti_bawel.set(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}));
|
@Override
|
||||||
|
public void onPlaybackStarted(String filename) {
|
||||||
|
anti_bawel.set(true);
|
||||||
|
System.out.println("Peringatan kedua audio_posisikan_muka");
|
||||||
|
}
|
||||||
|
|
||||||
audioTimeline.getKeyFrames().add(new KeyFrame(Duration.seconds(file_duration+5), k2 -> {
|
@Override
|
||||||
PlayFileWithEvent(audio_posisikan_muka, new PlaybackStatus() {
|
public void onPlaybackFinished(String filename) {
|
||||||
|
anti_bawel.set(false);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlaybackStarted(String filename) {
|
public void onPlaybackFailure(String filename) {
|
||||||
anti_bawel.set(true);
|
anti_bawel.set(false);
|
||||||
System.out.println("Peringatan kedua audio_posisikan_muka");
|
}
|
||||||
}
|
})));
|
||||||
|
|
||||||
@Override
|
audioTimeline.getKeyFrames().add(new KeyFrame(Duration.seconds(3*file_duration+5), k3 -> PlayFileWithEvent(audio_posisikan_muka, new PlaybackStatus() {
|
||||||
public void onPlaybackFinished(String filename) {
|
|
||||||
anti_bawel.set(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlaybackFailure(String filename) {
|
public void onPlaybackStarted(String filename) {
|
||||||
anti_bawel.set(false);
|
anti_bawel.set(true);
|
||||||
}
|
System.out.println("Peringatan ketiga audio_posisikan_muka");
|
||||||
});
|
}
|
||||||
}));
|
|
||||||
|
|
||||||
audioTimeline.getKeyFrames().add(new KeyFrame(Duration.seconds(3*file_duration+5), k3 -> {
|
@Override
|
||||||
|
public void onPlaybackFinished(String filename) {
|
||||||
|
anti_bawel.set(false);
|
||||||
|
}
|
||||||
|
|
||||||
PlayFileWithEvent(audio_posisikan_muka, new PlaybackStatus() {
|
@Override
|
||||||
|
public void onPlaybackFailure(String filename) {
|
||||||
@Override
|
anti_bawel.set(false);
|
||||||
public void onPlaybackStarted(String filename) {
|
}
|
||||||
anti_bawel.set(true);
|
})));
|
||||||
System.out.println("Peringatan ketiga audio_posisikan_muka");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPlaybackFinished(String filename) {
|
|
||||||
anti_bawel.set(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPlaybackFailure(String filename) {
|
|
||||||
anti_bawel.set(false);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
}));
|
|
||||||
audioTimeline.getKeyFrames().add(new KeyFrame(Duration.seconds(5*file_duration+5), k4 ->{
|
audioTimeline.getKeyFrames().add(new KeyFrame(Duration.seconds(5*file_duration+5), k4 ->{
|
||||||
PlayFileWithEvent(audio_hubungi_staf_kami, new PlaybackStatus() {
|
PlayFileWithEvent(audio_hubungi_staf_kami, new PlaybackStatus() {
|
||||||
@Override
|
@Override
|
||||||
@@ -980,7 +977,7 @@ public class CaptureView {
|
|||||||
TextAreaSetText(PatientName, pr.name);
|
TextAreaSetText(PatientName, pr.name);
|
||||||
|
|
||||||
if (anti_bawel.get()) return; // sudah ada LiveCamEvent lain yang bunyiin, jadi tidak usah bunyiin lagi
|
if (anti_bawel.get()) return; // sudah ada LiveCamEvent lain yang bunyiin, jadi tidak usah bunyiin lagi
|
||||||
if (audioTimeline!=null) audioTimeline.play();
|
if (audioTimeline!=null) audioTimeline.playFromStart();
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,11 +30,11 @@ public class MainApplication extends Application {
|
|||||||
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
Runtime.getRuntime().addShutdownHook(new Thread(() -> {
|
||||||
if (photoCleaner!=null) photoCleaner.Stop();
|
if (photoCleaner!=null) photoCleaner.Stop();
|
||||||
System.out.println("ShutdownHook Checking running threads...");
|
System.out.println("ShutdownHook Checking running threads...");
|
||||||
Map<Thread, StackTraceElement[]> allThreads = Thread.getAllStackTraces();
|
// Map<Thread, StackTraceElement[]> allThreads = Thread.getAllStackTraces();
|
||||||
for(Thread thread : allThreads.keySet()){
|
// for(Thread thread : allThreads.keySet()){
|
||||||
System.out.println("Thread: " + thread.getName()+", State: " + thread.getState()+", Daemon: " + thread.isDaemon());
|
// System.out.println("Thread: " + thread.getName()+", State: " + thread.getState()+", Daemon: " + thread.isDaemon());
|
||||||
thread.interrupt();
|
// thread.interrupt();
|
||||||
}
|
// }
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
@@ -50,7 +50,7 @@ public class MainApplication extends Application {
|
|||||||
Screen screen = Screen.getPrimary();
|
Screen screen = Screen.getPrimary();
|
||||||
Rectangle2D screenbound = screen.getBounds();
|
Rectangle2D screenbound = screen.getBounds();
|
||||||
Scene scene = new Scene(fxmlLoader.load(), screenbound.getWidth(), screenbound.getHeight());
|
Scene scene = new Scene(fxmlLoader.load(), screenbound.getWidth(), screenbound.getHeight());
|
||||||
stage.setTitle("MultiCam Capture App for ERHA 22052025-004");
|
stage.setTitle("MultiCam Capture App for ERHA 26052025-001");
|
||||||
stage.setScene(scene);
|
stage.setScene(scene);
|
||||||
stage.setResizable(true);
|
stage.setResizable(true);
|
||||||
stage.setMaximized(true);
|
stage.setMaximized(true);
|
||||||
|
|||||||
@@ -49,6 +49,137 @@ public class SettingView {
|
|||||||
@FXML
|
@FXML
|
||||||
private CheckBox FlipCamera;
|
private CheckBox FlipCamera;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TextField Cam1TopCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam1BottomCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam1LeftCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam1RightCrop;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TextField Cam2TopCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam2BottomCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam2LeftCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam2RightCrop;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TextField Cam3TopCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam3BottomCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam3LeftCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam3RightCrop;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TextField Cam4TopCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam4BottomCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam4LeftCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam4RightCrop;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private TextField Cam5TopCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam5BottomCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam5LeftCrop;
|
||||||
|
@FXML
|
||||||
|
private TextField Cam5RightCrop;
|
||||||
|
|
||||||
|
@FXML
|
||||||
|
private void ApplyCropClick(){
|
||||||
|
// Apply crop settings for each camera
|
||||||
|
boolean[] all_correct = {true};
|
||||||
|
|
||||||
|
CheckTextField(Cam1TopCrop,all_correct);
|
||||||
|
CheckTextField(Cam1BottomCrop,all_correct);
|
||||||
|
CheckTextField(Cam1LeftCrop,all_correct);
|
||||||
|
CheckTextField(Cam1RightCrop,all_correct);
|
||||||
|
CheckTextField(Cam2TopCrop,all_correct);
|
||||||
|
CheckTextField(Cam2BottomCrop,all_correct);
|
||||||
|
CheckTextField(Cam2LeftCrop,all_correct);
|
||||||
|
CheckTextField(Cam2RightCrop,all_correct);
|
||||||
|
CheckTextField(Cam3TopCrop,all_correct);
|
||||||
|
CheckTextField(Cam3BottomCrop,all_correct);
|
||||||
|
CheckTextField(Cam3LeftCrop,all_correct);
|
||||||
|
CheckTextField(Cam3RightCrop,all_correct);
|
||||||
|
CheckTextField(Cam4TopCrop,all_correct);
|
||||||
|
CheckTextField(Cam4BottomCrop,all_correct);
|
||||||
|
CheckTextField(Cam4LeftCrop,all_correct);
|
||||||
|
CheckTextField(Cam4RightCrop,all_correct);
|
||||||
|
CheckTextField(Cam5TopCrop,all_correct);
|
||||||
|
CheckTextField(Cam5BottomCrop,all_correct);
|
||||||
|
CheckTextField(Cam5LeftCrop,all_correct);
|
||||||
|
CheckTextField(Cam5RightCrop,all_correct);
|
||||||
|
|
||||||
|
if (all_correct[0]){
|
||||||
|
config.setCam1TopCrop(Cam1TopCrop.getText());
|
||||||
|
config.setCam1BottomCrop(Cam1BottomCrop.getText());
|
||||||
|
config.setCam1LeftCrop(Cam1LeftCrop.getText());
|
||||||
|
config.setCam1RightCrop(Cam1RightCrop.getText());
|
||||||
|
config.setCam2TopCrop(Cam2TopCrop.getText());
|
||||||
|
config.setCam2BottomCrop(Cam2BottomCrop.getText());
|
||||||
|
config.setCam2LeftCrop(Cam2LeftCrop.getText());
|
||||||
|
config.setCam2RightCrop(Cam2RightCrop.getText());
|
||||||
|
config.setCam3TopCrop(Cam3TopCrop.getText());
|
||||||
|
config.setCam3BottomCrop(Cam3BottomCrop.getText());
|
||||||
|
config.setCam3LeftCrop(Cam3LeftCrop.getText());
|
||||||
|
config.setCam3RightCrop(Cam3RightCrop.getText());
|
||||||
|
config.setCam4TopCrop(Cam4TopCrop.getText());
|
||||||
|
config.setCam4BottomCrop(Cam4BottomCrop.getText());
|
||||||
|
config.setCam4LeftCrop(Cam4LeftCrop.getText());
|
||||||
|
config.setCam4RightCrop(Cam4RightCrop.getText());
|
||||||
|
config.setCam5TopCrop(Cam5TopCrop.getText());
|
||||||
|
config.setCam5BottomCrop(Cam5BottomCrop.getText());
|
||||||
|
config.setCam5LeftCrop(Cam5LeftCrop.getText());
|
||||||
|
config.setCam5RightCrop(Cam5RightCrop.getText());
|
||||||
|
|
||||||
|
config.Save();
|
||||||
|
} else {
|
||||||
|
ShowAlert(Alert.AlertType.ERROR, "Crop Setting Error", "Crop Setting Error", "Please check your crop settings, some values are invalid");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void CheckTextField(TextField tf, boolean[] value){
|
||||||
|
if (ValidCropValue(tf)){
|
||||||
|
tf.setStyle("");
|
||||||
|
} else {
|
||||||
|
tf.setStyle("-fx-border-color: red;");
|
||||||
|
value[0] = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean ValidCropValue(TextField tf){
|
||||||
|
if (tf != null){
|
||||||
|
double value;
|
||||||
|
String name = tf.getId();
|
||||||
|
try {
|
||||||
|
value = Double.parseDouble(tf.getText());
|
||||||
|
if (value >= 0.0){
|
||||||
|
if (name.contains("Top")){
|
||||||
|
return value <= config.getTopcropmax();
|
||||||
|
} else if (name.contains("Bottom")){
|
||||||
|
return value <= config.getBottomcropmax();
|
||||||
|
} else if (name.contains("Left")){
|
||||||
|
return value <= config.getLeftcropmax();
|
||||||
|
} else if (name.contains("Right")){
|
||||||
|
return value <= config.getRightcropmax();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} catch (NumberFormatException ignored) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
final FileChooser jfc = new FileChooser();
|
final FileChooser jfc = new FileChooser();
|
||||||
@@ -200,6 +331,27 @@ public class SettingView {
|
|||||||
FlipCamera.setSelected(config.isFlipCamera());
|
FlipCamera.setSelected(config.isFlipCamera());
|
||||||
|
|
||||||
TextFieldSetText(Sharpness,String.valueOf(config.getSharpnessThreshold()));
|
TextFieldSetText(Sharpness,String.valueOf(config.getSharpnessThreshold()));
|
||||||
|
TextFieldSetText(Cam1TopCrop,String.valueOf(config.getCam1TopCrop()));
|
||||||
|
TextFieldSetText(Cam1BottomCrop,String.valueOf(config.getCam1BottomCrop()));
|
||||||
|
TextFieldSetText(Cam1LeftCrop,String.valueOf(config.getCam1LeftCrop()));
|
||||||
|
TextFieldSetText(Cam1RightCrop,String.valueOf(config.getCam1RightCrop()));
|
||||||
|
TextFieldSetText(Cam2TopCrop,String.valueOf(config.getCam2TopCrop()));
|
||||||
|
TextFieldSetText(Cam2BottomCrop,String.valueOf(config.getCam2BottomCrop()));
|
||||||
|
TextFieldSetText(Cam2LeftCrop,String.valueOf(config.getCam2LeftCrop()));
|
||||||
|
TextFieldSetText(Cam2RightCrop,String.valueOf(config.getCam2RightCrop()));
|
||||||
|
TextFieldSetText(Cam3TopCrop,String.valueOf(config.getCam3TopCrop()));
|
||||||
|
TextFieldSetText(Cam3BottomCrop,String.valueOf(config.getCam3BottomCrop()));
|
||||||
|
TextFieldSetText(Cam3LeftCrop,String.valueOf(config.getCam3LeftCrop()));
|
||||||
|
TextFieldSetText(Cam3RightCrop,String.valueOf(config.getCam3RightCrop()));
|
||||||
|
TextFieldSetText(Cam4TopCrop,String.valueOf(config.getCam4TopCrop()));
|
||||||
|
TextFieldSetText(Cam4BottomCrop,String.valueOf(config.getCam4BottomCrop()));
|
||||||
|
TextFieldSetText(Cam4LeftCrop,String.valueOf(config.getCam4LeftCrop()));
|
||||||
|
TextFieldSetText(Cam4RightCrop,String.valueOf(config.getCam4RightCrop()));
|
||||||
|
TextFieldSetText(Cam5TopCrop,String.valueOf(config.getCam5TopCrop()));
|
||||||
|
TextFieldSetText(Cam5BottomCrop,String.valueOf(config.getCam5BottomCrop()));
|
||||||
|
TextFieldSetText(Cam5LeftCrop,String.valueOf(config.getCam5LeftCrop()));
|
||||||
|
TextFieldSetText(Cam5RightCrop,String.valueOf(config.getCam5RightCrop()));
|
||||||
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -30,221 +30,463 @@
|
|||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
|
||||||
<children>
|
<children>
|
||||||
<GridPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<GridPane fx:id="camerassetting" prefHeight="300.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" />
|
<ColumnConstraints percentWidth="40.0" />
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="40.0" prefWidth="100.0" />
|
<ColumnConstraints percentWidth="40.0" />
|
||||||
|
<ColumnConstraints percentWidth="20.0" />
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
|
<RowConstraints minHeight="10.0" vgrow="SOMETIMES" />
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<GridPane>
|
<AnchorPane>
|
||||||
|
<children>
|
||||||
|
<GridPane fx:id="cameraselection" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints percentWidth="25" />
|
||||||
|
<ColumnConstraints percentWidth="50" />
|
||||||
|
<ColumnConstraints percentWidth="25" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
|
||||||
|
<children>
|
||||||
|
<Label layoutX="30.0" layoutY="12.0" prefHeight="40.8" prefWidth="87.2" text="Cam 1" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="2">
|
||||||
|
<children>
|
||||||
|
<Label layoutX="44.0" layoutY="12.0" prefHeight="40.8" prefWidth="87.2" text="Cam 2" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="3">
|
||||||
|
<children>
|
||||||
|
<Label layoutX="30.0" layoutY="6.0" prefHeight="40.8" prefWidth="87.2" text="Cam 3" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="4">
|
||||||
|
<children>
|
||||||
|
<Label layoutX="24.0" layoutY="6.0" prefHeight="40.0" prefWidth="87.2" text="Cam 4" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="5">
|
||||||
|
<children>
|
||||||
|
<Label layoutX="36.0" layoutY="11.0" prefHeight="40.0" prefWidth="87.2" text="Cam 5" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||||
|
<children>
|
||||||
|
<ComboBox fx:id="CameraLeft90" layoutX="54.0" layoutY="8.0" prefHeight="40.8" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
|
||||||
|
<children>
|
||||||
|
<ComboBox fx:id="CameraLeft45" layoutX="26.0" layoutY="14.0" prefHeight="40.8" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
||||||
|
<children>
|
||||||
|
<ComboBox fx:id="CameraCenter" layoutX="88.0" layoutY="8.0" prefHeight="40.8" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="4">
|
||||||
|
<children>
|
||||||
|
<ComboBox fx:id="CameraRight45" layoutX="54.0" layoutY="8.0" prefHeight="40.0" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="5">
|
||||||
|
<children>
|
||||||
|
<ComboBox fx:id="CameraRight90" layoutX="75.0" layoutY="1.0" prefHeight="40.0" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="1">
|
||||||
|
<children>
|
||||||
|
<Button layoutY="8.0" mnemonicParsing="false" onAction="#ApplyCameraLeft90" prefHeight="40.8" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="2">
|
||||||
|
<children>
|
||||||
|
<Button layoutX="22.0" layoutY="2.0" mnemonicParsing="false" onAction="#ApplyCameraLeft45" prefHeight="40.8" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="3">
|
||||||
|
<children>
|
||||||
|
<Button layoutX="18.0" layoutY="2.0" mnemonicParsing="false" onAction="#ApplyCameraFront" prefHeight="40.8" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="4">
|
||||||
|
<children>
|
||||||
|
<Button layoutX="22.0" layoutY="8.0" mnemonicParsing="false" onAction="#ApplyCameraRight45" prefHeight="40.0" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="5">
|
||||||
|
<children>
|
||||||
|
<Button layoutX="22.0" layoutY="8.0" mnemonicParsing="false" onAction="#ApplyCameraRight90" prefHeight="40.0" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="6">
|
||||||
|
<children>
|
||||||
|
<Label layoutX="60.0" prefHeight="40.0" prefWidth="175.0" text="Mirror" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="6">
|
||||||
|
<children>
|
||||||
|
<CheckBox fx:id="MirrorCamera" layoutX="30.0" layoutY="6.0" mnemonicParsing="false" prefHeight="40.0" prefWidth="175.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="7">
|
||||||
|
<children>
|
||||||
|
<Label prefHeight="40.0" prefWidth="175.0" text="Flip" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="7">
|
||||||
|
<children>
|
||||||
|
<CheckBox fx:id="FlipCamera" mnemonicParsing="false" prefHeight="40.0" prefWidth="175.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
||||||
|
<children>
|
||||||
|
<Label layoutX="32.0" layoutY="19.0" prefHeight="37.0" prefWidth="92.0" text="Sharpness" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Sharpness" layoutX="35.0" layoutY="2.0" prefHeight="37.0" prefWidth="368.0" promptText="if Sharpness below this number, photos considered as blurred" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane GridPane.columnIndex="2">
|
||||||
|
<children>
|
||||||
|
<Button mnemonicParsing="false" onAction="#SharpnessApply" prefHeight="37.0" prefWidth="92.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane maxWidth="400.0" GridPane.columnIndex="2">
|
||||||
|
<children>
|
||||||
|
<GridPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints prefWidth="300" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints maxHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<AnchorPane GridPane.rowIndex="2">
|
||||||
|
<children>
|
||||||
|
<Button mnemonicParsing="false" onAction="#CascadeSettingApply" prefHeight="40.0" prefWidth="410.4" text="Apply" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane>
|
||||||
|
<children>
|
||||||
|
<Label alignment="CENTER" prefHeight="30.4" prefWidth="410.4" text="Detection Parameters" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane GridPane.rowIndex="1">
|
||||||
|
<children>
|
||||||
|
<GridPane prefHeight="200.0" prefWidth="300.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints percentWidth="70.0" />
|
||||||
|
<ColumnConstraints percentWidth="30.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="40.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="40.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="40.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<AnchorPane>
|
||||||
|
<children>
|
||||||
|
<Label prefHeight="40.0" text="Scale Factor" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane GridPane.rowIndex="1">
|
||||||
|
<children>
|
||||||
|
<Label prefHeight="40.0" text="Minimum Size" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane GridPane.rowIndex="2">
|
||||||
|
<children>
|
||||||
|
<Label prefHeight="40.0" text="Maximum Size" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane GridPane.columnIndex="1">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="cascadeScaleFactor" alignment="CENTER" prefHeight="40.0" prefWidth="175.0" text="1.2" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="cascadeMinSize" alignment="CENTER" prefHeight="40.0" prefWidth="175.0" text="200" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane GridPane.columnIndex="1" GridPane.rowIndex="2">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="cascadeMaxSize" alignment="CENTER" prefHeight="40.0" prefWidth="175.2" text="400" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane GridPane.columnIndex="1">
|
||||||
|
<children>
|
||||||
|
<GridPane fx:id="cropsetting" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="50.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
||||||
|
<children>
|
||||||
|
<GridPane layoutX="-21.0" layoutY="-31.0" prefHeight="30.4" prefWidth="399.2" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<columnConstraints>
|
<columnConstraints>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="25.0" prefWidth="100.0" />
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" percentWidth="15.0" prefWidth="100.0" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
</columnConstraints>
|
</columnConstraints>
|
||||||
<rowConstraints>
|
<rowConstraints>
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
|
||||||
</rowConstraints>
|
</rowConstraints>
|
||||||
<children>
|
<children>
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
||||||
<children>
|
<children>
|
||||||
<Label layoutX="30.0" layoutY="12.0" prefHeight="40.8" prefWidth="87.2" text="Left 90" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
<Label alignment="CENTER" layoutX="36.0" layoutY="6.0" prefHeight="30.4" prefWidth="100.0" text="Top" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
|
|
||||||
<children>
|
|
||||||
<Label layoutX="44.0" layoutY="12.0" prefHeight="40.8" prefWidth="87.2" text="Left 45" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="2">
|
|
||||||
<children>
|
|
||||||
<Label layoutX="30.0" layoutY="6.0" prefHeight="40.8" prefWidth="87.2" text="Center" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="3">
|
|
||||||
<children>
|
|
||||||
<Label layoutX="24.0" layoutY="6.0" prefHeight="40.0" prefWidth="87.2" text="Right 45" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="4">
|
|
||||||
<children>
|
|
||||||
<Label layoutX="36.0" layoutY="11.0" prefHeight="40.0" prefWidth="87.2" text="Right 90" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
|
||||||
<children>
|
<children>
|
||||||
<ComboBox fx:id="CameraLeft90" layoutX="54.0" layoutY="8.0" prefHeight="40.8" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
<Label alignment="CENTER" text="Bottom" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
|
||||||
<children>
|
|
||||||
<ComboBox fx:id="CameraLeft45" layoutX="26.0" layoutY="14.0" prefHeight="40.8" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="2">
|
|
||||||
<children>
|
|
||||||
<ComboBox fx:id="CameraCenter" layoutX="88.0" layoutY="8.0" prefHeight="40.8" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
|
||||||
<children>
|
|
||||||
<ComboBox fx:id="CameraRight45" layoutX="54.0" layoutY="8.0" prefHeight="40.0" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="4">
|
|
||||||
<children>
|
|
||||||
<ComboBox fx:id="CameraRight90" layoutX="75.0" layoutY="1.0" prefHeight="40.0" prefWidth="408.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</AnchorPane>
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
|
||||||
<children>
|
<children>
|
||||||
<Button layoutY="8.0" mnemonicParsing="false" onAction="#ApplyCameraLeft90" prefHeight="40.8" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
<Label alignment="CENTER" layoutX="7.0" layoutY="8.0" text="Left" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
</children>
|
</children></AnchorPane>
|
||||||
</AnchorPane>
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="1">
|
|
||||||
<children>
|
<children>
|
||||||
<Button layoutX="22.0" layoutY="2.0" mnemonicParsing="false" onAction="#ApplyCameraLeft45" prefHeight="40.8" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
<Label alignment="CENTER" layoutX="36.0" layoutY="8.0" text="Right" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
||||||
</children>
|
</children></AnchorPane>
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="2">
|
|
||||||
<children>
|
|
||||||
<Button layoutX="18.0" layoutY="2.0" mnemonicParsing="false" onAction="#ApplyCameraFront" prefHeight="40.8" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="3">
|
|
||||||
<children>
|
|
||||||
<Button layoutX="22.0" layoutY="8.0" mnemonicParsing="false" onAction="#ApplyCameraRight45" prefHeight="40.0" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2" GridPane.rowIndex="4">
|
|
||||||
<children>
|
|
||||||
<Button layoutX="22.0" layoutY="8.0" mnemonicParsing="false" onAction="#ApplyCameraRight90" prefHeight="40.0" prefWidth="88.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="5">
|
|
||||||
<children>
|
|
||||||
<Label layoutX="60.0" prefHeight="40.0" prefWidth="175.0" text="Mirror Camera" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="5">
|
|
||||||
<children>
|
|
||||||
<CheckBox fx:id="MirrorCamera" layoutX="30.0" layoutY="6.0" mnemonicParsing="false" prefHeight="40.0" prefWidth="175.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="6">
|
|
||||||
<children>
|
|
||||||
<Label prefHeight="40.0" prefWidth="175.0" text="Flip Camera" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="6">
|
|
||||||
<children>
|
|
||||||
<CheckBox fx:id="FlipCamera" mnemonicParsing="false" prefHeight="40.0" prefWidth="175.0" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="7">
|
|
||||||
<children>
|
|
||||||
<Label layoutX="32.0" layoutY="19.0" prefHeight="37.0" prefWidth="92.0" text="Sharpness Threshold" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1" GridPane.rowIndex="7">
|
|
||||||
<children>
|
|
||||||
<TextField fx:id="Sharpness" layoutX="35.0" layoutY="2.0" prefHeight="37.0" prefWidth="368.0" promptText="if Sharpness below this number, photos considered as blurred" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane GridPane.columnIndex="2" GridPane.rowIndex="7">
|
|
||||||
<children>
|
|
||||||
<Button mnemonicParsing="false" onAction="#SharpnessApply" prefHeight="37.0" prefWidth="92.0" text="Apply" AnchorPane.bottomAnchor="2.0" AnchorPane.leftAnchor="2.0" AnchorPane.rightAnchor="2.0" AnchorPane.topAnchor="2.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
<GridPane GridPane.columnIndex="1">
|
</children>
|
||||||
<columnConstraints>
|
</AnchorPane>
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="1">
|
||||||
</columnConstraints>
|
<children>
|
||||||
<rowConstraints>
|
<GridPane prefHeight="50.4" prefWidth="399.2" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<columnConstraints>
|
||||||
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
<RowConstraints maxHeight="-Infinity" prefHeight="30.0" vgrow="SOMETIMES" />
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
</rowConstraints>
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
<children>
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
<AnchorPane GridPane.rowIndex="2">
|
</columnConstraints>
|
||||||
<children>
|
<rowConstraints>
|
||||||
<Button mnemonicParsing="false" onAction="#CascadeSettingApply" prefHeight="40.0" prefWidth="410.4" text="Apply" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
</children>
|
</rowConstraints>
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane>
|
|
||||||
<children>
|
|
||||||
<Label alignment="CENTER" prefHeight="30.4" prefWidth="410.4" text="Detection Parameters" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane GridPane.rowIndex="1">
|
|
||||||
<children>
|
|
||||||
<ScrollPane layoutX="5.0" prefHeight="200.8" prefWidth="410.4" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="0.0">
|
|
||||||
<content>
|
|
||||||
<AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="200.0" minWidth="0.0" prefWidth="350.0">
|
|
||||||
<children>
|
<children>
|
||||||
<GridPane prefHeight="200.0" prefWidth="300.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
||||||
<columnConstraints>
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
|
||||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
|
||||||
</columnConstraints>
|
|
||||||
<rowConstraints>
|
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="40.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="40.0" vgrow="SOMETIMES" />
|
|
||||||
<RowConstraints maxHeight="-Infinity" minHeight="-Infinity" prefHeight="40.0" vgrow="SOMETIMES" />
|
|
||||||
</rowConstraints>
|
|
||||||
<children>
|
<children>
|
||||||
<AnchorPane>
|
<TextField fx:id="Cam1TopCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
<children>
|
|
||||||
<Label prefHeight="40.0" prefWidth="175.2" text="Scale Factor" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane GridPane.rowIndex="1">
|
|
||||||
<children>
|
|
||||||
<Label prefHeight="40.0" prefWidth="175.2" text="Minimum Size" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane GridPane.rowIndex="2">
|
|
||||||
<children>
|
|
||||||
<Label prefHeight="40.0" prefWidth="175.2" text="Maximum Size" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane GridPane.columnIndex="1">
|
|
||||||
<children>
|
|
||||||
<TextField fx:id="cascadeScaleFactor" alignment="CENTER" prefHeight="40.0" prefWidth="175.2" text="1.2" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane GridPane.columnIndex="1" GridPane.rowIndex="1">
|
|
||||||
<children>
|
|
||||||
<TextField fx:id="cascadeMinSize" alignment="CENTER" prefHeight="40.0" prefWidth="175.2" text="200" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
<AnchorPane GridPane.columnIndex="1" GridPane.rowIndex="2">
|
|
||||||
<children>
|
|
||||||
<TextField fx:id="cascadeMaxSize" alignment="CENTER" prefHeight="40.0" prefWidth="175.2" text="400" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0" />
|
|
||||||
</children>
|
|
||||||
</AnchorPane>
|
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam1BottomCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam1LeftCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam1RightCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</GridPane>
|
||||||
</content>
|
</children>
|
||||||
</ScrollPane>
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="2">
|
||||||
|
<children>
|
||||||
|
<GridPane layoutX="-27.0" layoutY="-31.0" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam2TopCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam2BottomCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam2LeftCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam2RightCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
</children></AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="3">
|
||||||
|
<children>
|
||||||
|
<GridPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam3TopCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam3BottomCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam3LeftCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam3RightCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
</children></AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="4">
|
||||||
|
<children>
|
||||||
|
<GridPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam4TopCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam4BottomCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam4LeftCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam4RightCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
</children></AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.rowIndex="5">
|
||||||
|
<children>
|
||||||
|
<GridPane AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||||
|
<columnConstraints>
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||||
|
</columnConstraints>
|
||||||
|
<rowConstraints>
|
||||||
|
<RowConstraints minHeight="10.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||||
|
</rowConstraints>
|
||||||
|
<children>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam5TopCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="1">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam5BottomCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="2">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam5LeftCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
<AnchorPane prefHeight="200.0" prefWidth="200.0" GridPane.columnIndex="3">
|
||||||
|
<children>
|
||||||
|
<TextField fx:id="Cam5RightCrop" alignment="CENTER" promptText="crop percent" text="10" AnchorPane.bottomAnchor="3.0" AnchorPane.leftAnchor="3.0" AnchorPane.rightAnchor="3.0" AnchorPane.topAnchor="3.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
|
</children>
|
||||||
|
</GridPane>
|
||||||
|
</children></AnchorPane>
|
||||||
|
<AnchorPane GridPane.rowIndex="6">
|
||||||
|
<children>
|
||||||
|
<Button fx:id="btnApplyCrop" mnemonicParsing="false" onAction="#ApplyCropClick" prefHeight="40.0" prefWidth="399.2" text="Apply Crop" AnchorPane.bottomAnchor="5.0" AnchorPane.leftAnchor="5.0" AnchorPane.rightAnchor="5.0" AnchorPane.topAnchor="5.0" />
|
||||||
|
</children>
|
||||||
|
</AnchorPane>
|
||||||
</children>
|
</children>
|
||||||
</AnchorPane>
|
</GridPane>
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</AnchorPane>
|
||||||
</children>
|
</children>
|
||||||
</GridPane>
|
</GridPane>
|
||||||
</children>
|
</children>
|
||||||
|
|||||||
Reference in New Issue
Block a user