diff --git a/core/resources/l10n/messages.properties b/core/resources/l10n/messages.properties index 88290ee6d..f567841a7 100644 --- a/core/resources/l10n/messages.properties +++ b/core/resources/l10n/messages.properties @@ -2334,6 +2334,7 @@ PhotoSettingsConfig.lbl.lightAz = Light Azimuth PhotoSettingsConfig.lbl.lightAlt = Light Altitude PhotoSettingsConfig.lbl.sky = Sky PhotoSettingsConfig.lbl.skyColor = Sky Color +PhotoSettingsConfig.lbl.skyColorOpacity = Sky Color Opacity PhotoSettingsConfig.lbl.skyImage = Sky Image PhotoSettingsConfig.lbl.skyCredit = Image Credit diff --git a/swing/src/net/sf/openrocket/gui/figure3d/photo/PhotoSettings.java b/swing/src/net/sf/openrocket/gui/figure3d/photo/PhotoSettings.java index 2aecbe434..493cae0f0 100644 --- a/swing/src/net/sf/openrocket/gui/figure3d/photo/PhotoSettings.java +++ b/swing/src/net/sf/openrocket/gui/figure3d/photo/PhotoSettings.java @@ -24,6 +24,7 @@ public class PhotoSettings extends AbstractChangeSource implements FlameSettings private double ambiance = .3f; private Color skyColor = new Color(55, 95, 155); + private double skyColorOpacity = 1.0; private boolean motionBlurred = false; @@ -186,9 +187,20 @@ public class PhotoSettings extends AbstractChangeSource implements FlameSettings public void setSkyColor(Color skyColor) { this.skyColor = skyColor; + this.skyColorOpacity = skyColor.getAlpha() / 255f; fireChangeEvent(); } - + + public double getSkyColorOpacity() { + return skyColorOpacity; + } + + public void setSkyColorOpacity(double skyColorOpacity) { + this.skyColorOpacity = skyColorOpacity; + skyColor.setAlpha((int) (skyColorOpacity * 255)); + fireChangeEvent(); + } + public Color getFlameColor() { return flameColor; } diff --git a/swing/src/net/sf/openrocket/gui/figure3d/photo/PhotoSettingsConfig.java b/swing/src/net/sf/openrocket/gui/figure3d/photo/PhotoSettingsConfig.java index a758cc320..e78e18087 100644 --- a/swing/src/net/sf/openrocket/gui/figure3d/photo/PhotoSettingsConfig.java +++ b/swing/src/net/sf/openrocket/gui/figure3d/photo/PhotoSettingsConfig.java @@ -256,10 +256,10 @@ public class PhotoSettingsConfig extends JTabbedPane { /// Light altitude add(new JLabel(trans.get("PhotoSettingsConfig.lbl.lightAlt"))); - DoubleModel lightAltModle = new DoubleModel(p, "LightAlt", UnitGroup.UNITS_ANGLE, -Math.PI / 2, Math.PI / 2); - add(new EditableSpinner(lightAltModle.getSpinnerModel()), "growx, split 2"); - add(new UnitSelector(lightAltModle)); - add(new BasicSlider(lightAltModle.getSliderModel(-Math.PI / 2, Math.PI / 2)), "wrap"); + DoubleModel lightAltModel = new DoubleModel(p, "LightAlt", UnitGroup.UNITS_ANGLE, -Math.PI / 2, Math.PI / 2); + add(new EditableSpinner(lightAltModel.getSpinnerModel()), "growx, split 2"); + add(new UnitSelector(lightAltModel)); + add(new BasicSlider(lightAltModel.getSliderModel(-Math.PI / 2, Math.PI / 2)), "wrap"); // Sky add(new StyledLabel(trans.get("PhotoSettingsConfig.lbl.sky"), Style.BOLD), "split, span, gapright para"); @@ -269,6 +269,14 @@ public class PhotoSettingsConfig extends JTabbedPane { add(new JLabel(trans.get("PhotoSettingsConfig.lbl.skyColor"))); add(skyColorButton, "wrap"); + /// Sky color opacity + add(new JLabel(trans.get("PhotoSettingsConfig.lbl.skyColorOpacity"))); + DoubleModel skyColorOpacityModel = new DoubleModel(p, "SkyColorOpacity", UnitGroup.UNITS_RELATIVE, 0, 1); + add(new EditableSpinner(skyColorOpacityModel.getSpinnerModel()), "growx, split 2"); + add(new UnitSelector(skyColorOpacityModel)); + add(new BasicSlider(skyColorOpacityModel.getSliderModel()), "wrap"); + p.addChangeListener(skyColorOpacityModel); + /// Sky image add(new JLabel(trans.get("PhotoSettingsConfig.lbl.skyImage")));