Loading cesiumjs4gwt-main/src/main/java/org/cesiumjs/cs/scene/CumulusCloud.java +7 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import jsinterop.annotations.JsType; import org.cesiumjs.cs.collections.CloudCollection; import org.cesiumjs.cs.core.Cartesian2; import org.cesiumjs.cs.core.Cartesian3; import org.cesiumjs.cs.core.Color; /** * A cumulus cloud billboard positioned in the 3D scene, that is created and rendered using a CloudCollection. Loading @@ -41,6 +42,12 @@ public class CumulusCloud { */ @JsProperty public float brightness; /** * Sets the color of the cloud. * Default: {@link Color#WHITE()} */ @JsProperty public Color color; /** * Gets or sets the maximum size of the cumulus cloud rendered on the billboard. This defines a maximum ellipsoid * volume that the cloud can appear in. Rather than guaranteeing a specific size, this specifies a boundary for Loading cesiumjs4gwt-showcase/src/main/java/org/cleanlogic/cesiumjs4gwt/showcase/examples/AmbientOcclusion.java +47 −67 Original line number Diff line number Diff line Loading @@ -32,9 +32,8 @@ import org.cesiumjs.cs.scene.PostProcessStageLibrary; import org.cesiumjs.cs.widgets.ViewerPanel; import org.cleanlogic.cesiumjs4gwt.showcase.basic.AbstractExample; import org.cleanlogic.cesiumjs4gwt.showcase.components.store.ShowcaseExampleStore; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.Slider; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderListener; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.InputEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderBox; import javax.inject.Inject; Loading @@ -46,16 +45,16 @@ public class AmbientOcclusion extends AbstractExample { private CheckBox ambientOcclusionCBox; private CheckBox ambientOcclusionOnlyCBox; private Slider intensitySlider; private Slider lengthCapSlider; private Slider stepSizeSlider; private Slider biasSlider; private Slider blurStepSize; private SliderBox intensitySlider; private SliderBox lengthCapSlider; // private SliderBox stepSizeSlider; // private SliderBox biasSlider; // private SliderBox blurStepSize; @Inject public AmbientOcclusion(ShowcaseExampleStore store) { super("Ambient Occlusion", "Ambient Occlusion", new String[]{ "Showcase", "Cesium", "3d", "Post processing" "Showcase", "Cesium", "3d", "Post processing", "ambient occlusion" }, store); } Loading @@ -82,30 +81,25 @@ public class AmbientOcclusion extends AbstractExample { ambientOcclusionOnlyCBox.setValue(false); ambientOcclusionOnlyCBox.addValueChangeHandler(new MValueChangeHandler()); intensitySlider = new Slider("intensitySlider", 1, 10, 3); intensitySlider.setStep(1); intensitySlider = new SliderBox(1.0, 3.0, 10.0, 1.0); intensitySlider.setWidth("150px"); intensitySlider.addListener(new MSliderListener()); intensitySlider.addInputHandler(this::updatePostProcess); lengthCapSlider = new Slider("lengthCapSlider", 0, 100, 3); lengthCapSlider.setStep(1); lengthCapSlider = new SliderBox(0.0, 0.03, 1.0, 0.01); lengthCapSlider.setWidth("150px"); lengthCapSlider.addListener(new MSliderListener()); lengthCapSlider.addInputHandler(this::updatePostProcess); stepSizeSlider = new Slider("stepSizeSlider", 100, 1000, 1); stepSizeSlider.setStep(1); stepSizeSlider.setWidth("150px"); stepSizeSlider.addListener(new MSliderListener()); biasSlider = new Slider("biasSlider", 0, 100, 1); biasSlider.setStep(1); biasSlider.setWidth("150px"); biasSlider.addListener(new MSliderListener()); blurStepSize = new Slider("blurStepSize", 0, 400, 86); blurStepSize.setStep(1); blurStepSize.setWidth("150px"); blurStepSize.addListener(new MSliderListener()); // stepSizeSlider = new SliderBox(1.0, 1.0, 10.0, 0.01); // stepSizeSlider.setWidth("150px"); // stepSizeSlider.addInputHandler(this::updatePostProcess); // // biasSlider = new SliderBox(0.0, 0.1, 1.0, 0.01); // biasSlider.setWidth("150px"); // biasSlider.addInputHandler(this::updatePostProcess); // // blurStepSize = new SliderBox(0.0, 0.86, 4.0, 0.01); // blurStepSize.setWidth("150px"); // blurStepSize.addInputHandler(this::updatePostProcess); FlexTable flexTable = new FlexTable(); flexTable.setHTML(1, 0, "<font color=\"white\">Ambient Occlusion</font>"); Loading @@ -116,12 +110,12 @@ public class AmbientOcclusion extends AbstractExample { flexTable.setWidget(3, 1, intensitySlider); flexTable.setHTML(4, 0, "<font color=\"white\">Length Cap</font>"); flexTable.setWidget(4, 1, lengthCapSlider); flexTable.setHTML(5, 0, "<font color=\"white\">Step Size</font>"); flexTable.setWidget(5, 1, stepSizeSlider); flexTable.setHTML(6, 0, "<font color=\"white\">Bias</font>"); flexTable.setWidget(6, 1, biasSlider); flexTable.setHTML(7, 0, "<font color=\"white\">Blur Step Size</font>"); flexTable.setWidget(7, 1, blurStepSize); // flexTable.setHTML(5, 0, "<font color=\"white\">Step Size</font>"); // flexTable.setWidget(5, 1, stepSizeSlider); // flexTable.setHTML(6, 0, "<font color=\"white\">Bias</font>"); // flexTable.setWidget(6, 1, biasSlider); // flexTable.setHTML(7, 0, "<font color=\"white\">Blur Step Size</font>"); // flexTable.setWidget(7, 1, blurStepSize); AbsolutePanel absPanel = new AbsolutePanel(); absPanel.add(csVPanel); Loading @@ -131,24 +125,33 @@ public class AmbientOcclusion extends AbstractExample { contentPanel.add(absPanel); initWidget(contentPanel); updatePostProcess(); org.cesiumjs.cs.scene.Camera camera = csVPanel.getViewer().scene().camera(); camera.position = new Cartesian3(1234127.2294710164, -5086011.666443127, 3633337.0413351045); camera.direction = new Cartesian3(-0.5310064396211631, -0.30299013818088416, -0.7913464078682514); camera.right = new Cartesian3(-0.8468592075426076, 0.1574051185945647, 0.507989282604011); camera.up = Cartesian3.cross(camera.right, camera.direction, new Cartesian3()); updatePostProcess(null); } private void updatePostProcess() { private void updatePostProcess(InputEvent event) { // if (event != null) { // SliderBox source = (SliderBox) event.getSource(); // double value = Double.parseDouble(source.getValue()); // GWT.log(value + " - " + intensitySlider.getValue()); // return; // } // GWT.log(intensitySlider.getValue() + " - " + lengthCapSlider.getValue() + " - " + blurStepSize.getValue()); PostProcessStageComposite ambientOcclusion = csVPanel.getViewer().scene().postProcessStages.ambientOcclusion(); ambientOcclusion.enabled = ambientOcclusionCBox.getValue() || ambientOcclusionOnlyCBox.getValue(); ambientOcclusion.uniforms.setProperty("ambientOcclusionOnly", ambientOcclusionOnlyCBox.getValue()); ambientOcclusion.uniforms.setProperty("intensity", intensitySlider.getValue()); ambientOcclusion.uniforms.setProperty("bias", biasSlider.getValue() / 100.0); ambientOcclusion.uniforms.setProperty("lengthCap", lengthCapSlider.getValue() / 100.0); ambientOcclusion.uniforms.setProperty("stepSize", stepSizeSlider.getValue() / 100.0); ambientOcclusion.uniforms.setProperty("blurStepSize", blurStepSize.getValue() / 100.0); ambientOcclusion.uniforms.setProperty("intensity", Double.parseDouble(intensitySlider.getValue())); // ambientOcclusion.uniforms.setProperty("bias", Double.parseDouble(biasSlider.getValue())); ambientOcclusion.uniforms.setProperty("lengthCap", Double.parseDouble(lengthCapSlider.getValue())); // ambientOcclusion.uniforms.setProperty("stepSize", Double.parseDouble(stepSizeSlider.getValue())); // ambientOcclusion.uniforms.setProperty("blurStepSize", Double.parseDouble(blurStepSize.getValue())); } @Override Loading @@ -161,30 +164,7 @@ public class AmbientOcclusion extends AbstractExample { private class MValueChangeHandler implements ValueChangeHandler<Boolean> { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { updatePostProcess(); } } private class MSliderListener implements SliderListener { @Override public void onStart(SliderEvent e) { // } @Override public boolean onSlide(SliderEvent e) { updatePostProcess(); return true; } @Override public void onChange(SliderEvent e) { // } @Override public void onStop(SliderEvent e) { // updatePostProcess(null); } } } cesiumjs4gwt-showcase/src/main/java/org/cleanlogic/cesiumjs4gwt/showcase/examples/Bloom.java +30 −59 Original line number Diff line number Diff line Loading @@ -34,27 +34,21 @@ import org.cesiumjs.cs.scene.PostProcessStageComposite; import org.cesiumjs.cs.widgets.ViewerPanel; import org.cleanlogic.cesiumjs4gwt.showcase.basic.AbstractExample; import org.cleanlogic.cesiumjs4gwt.showcase.components.store.ShowcaseExampleStore; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.Slider; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderListener; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.InputEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderBox; /** * @author Serge Silaev aka iSergio */ public class Bloom extends AbstractExample { private final int numberOfBalloons = 13; private final double lonIncrement = 0.00025; private final double initialLon = -122.99875; private final double lat = 44.0503706; private final double height = 100.0; private ViewerPanel csVPanel; private CheckBox bloomCBox; private CheckBox glowOnlyCBox; private Slider contrastSlider; private Slider brightnessSlider; private Slider deltaSlider; private Slider sigmaSlider; private Slider stepSizeSlider; private SliderBox contrastSlider; private SliderBox brightnessSlider; private SliderBox deltaSlider; private SliderBox sigmaSlider; private SliderBox stepSizeSlider; @Inject public Bloom(ShowcaseExampleStore store) { Loading @@ -66,6 +60,11 @@ public class Bloom extends AbstractExample { public void buildPanel() { csVPanel = new ViewerPanel(); int numberOfBalloons = 13; double lonIncrement = 0.00025; double initialLon = -122.99875; double lat = 44.0503706; double height = 100.0; for (int i = 0; i < numberOfBalloons; i++) { double lon = initialLon + i * lonIncrement; createModel(lon, lat, height); Loading @@ -79,30 +78,25 @@ public class Bloom extends AbstractExample { glowOnlyCBox.setValue(false); glowOnlyCBox.addValueChangeHandler(new MValueChangeHandler()); contrastSlider = new Slider("contrastSlider", -25500, 25500, 12800); contrastSlider.setStep(1); contrastSlider = new SliderBox(-255, 128, 255, 0.01); contrastSlider.setWidth("150px"); contrastSlider.addListener(new MSliderListener()); contrastSlider.addInputHandler(this::updatePostProcess); brightnessSlider = new Slider("brightnessSlider", -100, 100, -30); brightnessSlider.setStep(1); brightnessSlider = new SliderBox(-1, -0.3, 1, 0.01); brightnessSlider.setWidth("150px"); brightnessSlider.addListener(new MSliderListener()); brightnessSlider.addInputHandler(this::updatePostProcess); deltaSlider = new Slider("deltaSlider", 100, 500, 100); deltaSlider.setStep(1); deltaSlider = new SliderBox(1, 1, 5, 0.01); deltaSlider.setWidth("150px"); deltaSlider.addListener(new MSliderListener()); deltaSlider.addInputHandler(this::updatePostProcess); sigmaSlider = new Slider("sigmaSlider", 100, 1000, 378); sigmaSlider.setStep(1); sigmaSlider = new SliderBox(1, 3.78, 10, 0.01); sigmaSlider.setWidth("150px"); sigmaSlider.addListener(new MSliderListener()); sigmaSlider.addInputHandler(this::updatePostProcess); stepSizeSlider = new Slider("stepSizeSlider", 0, 700, 500); stepSizeSlider.setStep(1); stepSizeSlider = new SliderBox(0, 5, 7, 0.01); stepSizeSlider.setWidth("150px"); stepSizeSlider.addListener(new MSliderListener()); stepSizeSlider.addInputHandler(this::updatePostProcess); FlexTable flexTable = new FlexTable(); flexTable.setHTML(1, 0, "<font color=\"white\">Bloom</font>"); Loading @@ -128,7 +122,7 @@ public class Bloom extends AbstractExample { contentPanel.add(absPanel); initWidget(contentPanel); updatePostProcess(); updatePostProcess(null); Cartesian3 target = Cartesian3.fromDegrees(initialLon + lonIncrement, lat, height + 7.5); Cartesian3 offset = new Cartesian3(-37.048378684557974, -24.852967044804245, 4.352023653686047); Loading @@ -148,15 +142,15 @@ public class Bloom extends AbstractExample { csVPanel.getViewer().entities().add(options); } private void updatePostProcess() { private void updatePostProcess(InputEvent event) { PostProcessStageComposite bloom = csVPanel.getViewer().scene().postProcessStages.bloom(); bloom.enabled = bloomCBox.getValue(); bloom.uniforms.setProperty("glowOnly", glowOnlyCBox.getValue()); bloom.uniforms.setProperty("contrast", contrastSlider.getValue() / 100.0); bloom.uniforms.setProperty("brightness", brightnessSlider.getValue() / 100.0); bloom.uniforms.setProperty("delta", deltaSlider.getValue() / 100.0); bloom.uniforms.setProperty("sigma", sigmaSlider.getValue() / 100.0); bloom.uniforms.setProperty("stepSize", stepSizeSlider.getValue() / 100.0); bloom.uniforms.setProperty("contrast", Double.parseDouble(contrastSlider.getValue())); bloom.uniforms.setProperty("brightness", Double.parseDouble(brightnessSlider.getValue())); bloom.uniforms.setProperty("delta", Double.parseDouble(deltaSlider.getValue())); bloom.uniforms.setProperty("sigma", Double.parseDouble(sigmaSlider.getValue())); bloom.uniforms.setProperty("stepSize", Double.parseDouble(stepSizeSlider.getValue())); } @Override Loading @@ -169,30 +163,7 @@ public class Bloom extends AbstractExample { private class MValueChangeHandler implements ValueChangeHandler<Boolean> { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { updatePostProcess(); } } private class MSliderListener implements SliderListener { @Override public void onStart(SliderEvent e) { // } @Override public boolean onSlide(SliderEvent e) { updatePostProcess(); return true; } @Override public void onChange(SliderEvent e) { // } @Override public void onStop(SliderEvent e) { // updatePostProcess(null); } } } cesiumjs4gwt-showcase/src/main/java/org/cleanlogic/cesiumjs4gwt/showcase/examples/CloudParameters.java +122 −126 File changed.Preview size limit exceeded, changes collapsed. Show changes cesiumjs4gwt-showcase/src/main/java/org/cleanlogic/cesiumjs4gwt/showcase/examples/Clustering.java +37 −62 Original line number Diff line number Diff line Loading @@ -38,9 +38,8 @@ import org.cesiumjs.cs.scene.enums.VerticalOrigin; import org.cesiumjs.cs.widgets.ViewerPanel; import org.cleanlogic.cesiumjs4gwt.showcase.basic.AbstractExample; import org.cleanlogic.cesiumjs4gwt.showcase.components.store.ShowcaseExampleStore; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.Slider; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderListener; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.InputEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderBox; import javax.inject.Inject; Loading @@ -49,13 +48,13 @@ import javax.inject.Inject; */ public class Clustering extends AbstractExample { private ViewerPanel csVPanel; private Slider pixelRangeSlider; private SliderBox pixelRangeSlider; private TextBox pixelRangeTBox; private Slider minimumClusterSizeSlider; private SliderBox minimumClusterSizeSlider; private TextBox minimumClusterSizeTBox; private Event.RemoveCallback removeListener; private KmlDataSource _dataSource; private KmlDataSource dataSource; private String pin50; private String pin40; Loading Loading @@ -102,14 +101,13 @@ public class Clustering extends AbstractExample { // start with custom style customStyle(dataSource); _dataSource = dataSource; dataSource = dataSource; } }); pixelRangeSlider = new Slider("pixelRange", 1, 200, 15); pixelRangeSlider.setStep(1); pixelRangeSlider = new SliderBox(1, 15, 200, 1); pixelRangeSlider.setWidth("150px"); pixelRangeSlider.addListener(new MSliderListener()); pixelRangeSlider.addInputHandler(this::onInput); pixelRangeTBox = new TextBox(); pixelRangeTBox.addChangeHandler(new MChangeHandler()); pixelRangeTBox.setText("" + 15); Loading @@ -122,10 +120,10 @@ public class Clustering extends AbstractExample { pixelRangeHPanel.add(pixelRangeSlider); pixelRangeHPanel.add(pixelRangeTBox); minimumClusterSizeSlider = new Slider("minimumClusterSize", 1, 20, 3); minimumClusterSizeSlider = new SliderBox(2, 3, 20, 1); minimumClusterSizeSlider.setStep(1); minimumClusterSizeSlider.setWidth("150px"); minimumClusterSizeSlider.addListener(new MSliderListener()); minimumClusterSizeSlider.addInputHandler(this::onInput); minimumClusterSizeTBox = new TextBox(); pixelRangeTBox.addChangeHandler(new MChangeHandler()); minimumClusterSizeTBox.setText("" + 3); Loading @@ -143,7 +141,7 @@ public class Clustering extends AbstractExample { enabledCBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> valueChangeEvent) { _dataSource.clustering.enabled = valueChangeEvent.getValue(); dataSource.clustering.enabled = valueChangeEvent.getValue(); } }); Loading @@ -152,7 +150,7 @@ public class Clustering extends AbstractExample { customStyleCBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> valueChangeEvent) { customStyle(_dataSource); customStyle(dataSource); } }); Loading Loading @@ -188,9 +186,7 @@ public class Clustering extends AbstractExample { removeListener.function(); removeListener = (Event.RemoveCallback) JsObject.undefined(); } else { removeListener = dataSource.clustering.clusterEvent.addEventListener(new EntityCluster.newClusterCallback() { @Override public void function(Entity[] clusteredEntities, EntityClusterObject cluster) { removeListener = dataSource.clustering.clusterEvent.addEventListener((EntityCluster.newClusterCallback) (clusteredEntities, cluster) -> { cluster.label.show = false; cluster.billboard.show = true; cluster.billboard.verticalOrigin = VerticalOrigin.BOTTOM(); Loading @@ -207,7 +203,6 @@ public class Clustering extends AbstractExample { } else { cluster.billboard.image = singleDigitPins[clusteredEntities.length - 2]; } } }); } // force a re-cluster with the new styling Loading @@ -216,36 +211,16 @@ public class Clustering extends AbstractExample { dataSource.clustering.pixelRange = pixelRange; } private class MSliderListener implements SliderListener { @Override public void onStart(SliderEvent e) { } @Override public boolean onSlide(SliderEvent e) { Slider source = e.getSource(); int value = source.getValue(); private void onInput(InputEvent event) { SliderBox source = (SliderBox) event.getSource(); double value = Double.parseDouble(source.getValue()); if (source.getElement().getId().equalsIgnoreCase("pixelRange")) { _dataSource.clustering.pixelRange = value; dataSource.clustering.pixelRange = (int) value; pixelRangeTBox.setValue("" + value); } else if (source.getElement().getId().equalsIgnoreCase("minimumClusterSize")) { _dataSource.clustering.minimumClusterSize = value; dataSource.clustering.minimumClusterSize = (int) value; minimumClusterSizeTBox.setValue("" + value); } return true; } @Override public void onChange(SliderEvent e) { } @Override public void onStop(SliderEvent e) { } } private class MChangeHandler implements ChangeHandler { Loading Loading
cesiumjs4gwt-main/src/main/java/org/cesiumjs/cs/scene/CumulusCloud.java +7 −0 Original line number Diff line number Diff line Loading @@ -21,6 +21,7 @@ import jsinterop.annotations.JsType; import org.cesiumjs.cs.collections.CloudCollection; import org.cesiumjs.cs.core.Cartesian2; import org.cesiumjs.cs.core.Cartesian3; import org.cesiumjs.cs.core.Color; /** * A cumulus cloud billboard positioned in the 3D scene, that is created and rendered using a CloudCollection. Loading @@ -41,6 +42,12 @@ public class CumulusCloud { */ @JsProperty public float brightness; /** * Sets the color of the cloud. * Default: {@link Color#WHITE()} */ @JsProperty public Color color; /** * Gets or sets the maximum size of the cumulus cloud rendered on the billboard. This defines a maximum ellipsoid * volume that the cloud can appear in. Rather than guaranteeing a specific size, this specifies a boundary for Loading
cesiumjs4gwt-showcase/src/main/java/org/cleanlogic/cesiumjs4gwt/showcase/examples/AmbientOcclusion.java +47 −67 Original line number Diff line number Diff line Loading @@ -32,9 +32,8 @@ import org.cesiumjs.cs.scene.PostProcessStageLibrary; import org.cesiumjs.cs.widgets.ViewerPanel; import org.cleanlogic.cesiumjs4gwt.showcase.basic.AbstractExample; import org.cleanlogic.cesiumjs4gwt.showcase.components.store.ShowcaseExampleStore; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.Slider; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderListener; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.InputEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderBox; import javax.inject.Inject; Loading @@ -46,16 +45,16 @@ public class AmbientOcclusion extends AbstractExample { private CheckBox ambientOcclusionCBox; private CheckBox ambientOcclusionOnlyCBox; private Slider intensitySlider; private Slider lengthCapSlider; private Slider stepSizeSlider; private Slider biasSlider; private Slider blurStepSize; private SliderBox intensitySlider; private SliderBox lengthCapSlider; // private SliderBox stepSizeSlider; // private SliderBox biasSlider; // private SliderBox blurStepSize; @Inject public AmbientOcclusion(ShowcaseExampleStore store) { super("Ambient Occlusion", "Ambient Occlusion", new String[]{ "Showcase", "Cesium", "3d", "Post processing" "Showcase", "Cesium", "3d", "Post processing", "ambient occlusion" }, store); } Loading @@ -82,30 +81,25 @@ public class AmbientOcclusion extends AbstractExample { ambientOcclusionOnlyCBox.setValue(false); ambientOcclusionOnlyCBox.addValueChangeHandler(new MValueChangeHandler()); intensitySlider = new Slider("intensitySlider", 1, 10, 3); intensitySlider.setStep(1); intensitySlider = new SliderBox(1.0, 3.0, 10.0, 1.0); intensitySlider.setWidth("150px"); intensitySlider.addListener(new MSliderListener()); intensitySlider.addInputHandler(this::updatePostProcess); lengthCapSlider = new Slider("lengthCapSlider", 0, 100, 3); lengthCapSlider.setStep(1); lengthCapSlider = new SliderBox(0.0, 0.03, 1.0, 0.01); lengthCapSlider.setWidth("150px"); lengthCapSlider.addListener(new MSliderListener()); lengthCapSlider.addInputHandler(this::updatePostProcess); stepSizeSlider = new Slider("stepSizeSlider", 100, 1000, 1); stepSizeSlider.setStep(1); stepSizeSlider.setWidth("150px"); stepSizeSlider.addListener(new MSliderListener()); biasSlider = new Slider("biasSlider", 0, 100, 1); biasSlider.setStep(1); biasSlider.setWidth("150px"); biasSlider.addListener(new MSliderListener()); blurStepSize = new Slider("blurStepSize", 0, 400, 86); blurStepSize.setStep(1); blurStepSize.setWidth("150px"); blurStepSize.addListener(new MSliderListener()); // stepSizeSlider = new SliderBox(1.0, 1.0, 10.0, 0.01); // stepSizeSlider.setWidth("150px"); // stepSizeSlider.addInputHandler(this::updatePostProcess); // // biasSlider = new SliderBox(0.0, 0.1, 1.0, 0.01); // biasSlider.setWidth("150px"); // biasSlider.addInputHandler(this::updatePostProcess); // // blurStepSize = new SliderBox(0.0, 0.86, 4.0, 0.01); // blurStepSize.setWidth("150px"); // blurStepSize.addInputHandler(this::updatePostProcess); FlexTable flexTable = new FlexTable(); flexTable.setHTML(1, 0, "<font color=\"white\">Ambient Occlusion</font>"); Loading @@ -116,12 +110,12 @@ public class AmbientOcclusion extends AbstractExample { flexTable.setWidget(3, 1, intensitySlider); flexTable.setHTML(4, 0, "<font color=\"white\">Length Cap</font>"); flexTable.setWidget(4, 1, lengthCapSlider); flexTable.setHTML(5, 0, "<font color=\"white\">Step Size</font>"); flexTable.setWidget(5, 1, stepSizeSlider); flexTable.setHTML(6, 0, "<font color=\"white\">Bias</font>"); flexTable.setWidget(6, 1, biasSlider); flexTable.setHTML(7, 0, "<font color=\"white\">Blur Step Size</font>"); flexTable.setWidget(7, 1, blurStepSize); // flexTable.setHTML(5, 0, "<font color=\"white\">Step Size</font>"); // flexTable.setWidget(5, 1, stepSizeSlider); // flexTable.setHTML(6, 0, "<font color=\"white\">Bias</font>"); // flexTable.setWidget(6, 1, biasSlider); // flexTable.setHTML(7, 0, "<font color=\"white\">Blur Step Size</font>"); // flexTable.setWidget(7, 1, blurStepSize); AbsolutePanel absPanel = new AbsolutePanel(); absPanel.add(csVPanel); Loading @@ -131,24 +125,33 @@ public class AmbientOcclusion extends AbstractExample { contentPanel.add(absPanel); initWidget(contentPanel); updatePostProcess(); org.cesiumjs.cs.scene.Camera camera = csVPanel.getViewer().scene().camera(); camera.position = new Cartesian3(1234127.2294710164, -5086011.666443127, 3633337.0413351045); camera.direction = new Cartesian3(-0.5310064396211631, -0.30299013818088416, -0.7913464078682514); camera.right = new Cartesian3(-0.8468592075426076, 0.1574051185945647, 0.507989282604011); camera.up = Cartesian3.cross(camera.right, camera.direction, new Cartesian3()); updatePostProcess(null); } private void updatePostProcess() { private void updatePostProcess(InputEvent event) { // if (event != null) { // SliderBox source = (SliderBox) event.getSource(); // double value = Double.parseDouble(source.getValue()); // GWT.log(value + " - " + intensitySlider.getValue()); // return; // } // GWT.log(intensitySlider.getValue() + " - " + lengthCapSlider.getValue() + " - " + blurStepSize.getValue()); PostProcessStageComposite ambientOcclusion = csVPanel.getViewer().scene().postProcessStages.ambientOcclusion(); ambientOcclusion.enabled = ambientOcclusionCBox.getValue() || ambientOcclusionOnlyCBox.getValue(); ambientOcclusion.uniforms.setProperty("ambientOcclusionOnly", ambientOcclusionOnlyCBox.getValue()); ambientOcclusion.uniforms.setProperty("intensity", intensitySlider.getValue()); ambientOcclusion.uniforms.setProperty("bias", biasSlider.getValue() / 100.0); ambientOcclusion.uniforms.setProperty("lengthCap", lengthCapSlider.getValue() / 100.0); ambientOcclusion.uniforms.setProperty("stepSize", stepSizeSlider.getValue() / 100.0); ambientOcclusion.uniforms.setProperty("blurStepSize", blurStepSize.getValue() / 100.0); ambientOcclusion.uniforms.setProperty("intensity", Double.parseDouble(intensitySlider.getValue())); // ambientOcclusion.uniforms.setProperty("bias", Double.parseDouble(biasSlider.getValue())); ambientOcclusion.uniforms.setProperty("lengthCap", Double.parseDouble(lengthCapSlider.getValue())); // ambientOcclusion.uniforms.setProperty("stepSize", Double.parseDouble(stepSizeSlider.getValue())); // ambientOcclusion.uniforms.setProperty("blurStepSize", Double.parseDouble(blurStepSize.getValue())); } @Override Loading @@ -161,30 +164,7 @@ public class AmbientOcclusion extends AbstractExample { private class MValueChangeHandler implements ValueChangeHandler<Boolean> { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { updatePostProcess(); } } private class MSliderListener implements SliderListener { @Override public void onStart(SliderEvent e) { // } @Override public boolean onSlide(SliderEvent e) { updatePostProcess(); return true; } @Override public void onChange(SliderEvent e) { // } @Override public void onStop(SliderEvent e) { // updatePostProcess(null); } } }
cesiumjs4gwt-showcase/src/main/java/org/cleanlogic/cesiumjs4gwt/showcase/examples/Bloom.java +30 −59 Original line number Diff line number Diff line Loading @@ -34,27 +34,21 @@ import org.cesiumjs.cs.scene.PostProcessStageComposite; import org.cesiumjs.cs.widgets.ViewerPanel; import org.cleanlogic.cesiumjs4gwt.showcase.basic.AbstractExample; import org.cleanlogic.cesiumjs4gwt.showcase.components.store.ShowcaseExampleStore; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.Slider; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderListener; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.InputEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderBox; /** * @author Serge Silaev aka iSergio */ public class Bloom extends AbstractExample { private final int numberOfBalloons = 13; private final double lonIncrement = 0.00025; private final double initialLon = -122.99875; private final double lat = 44.0503706; private final double height = 100.0; private ViewerPanel csVPanel; private CheckBox bloomCBox; private CheckBox glowOnlyCBox; private Slider contrastSlider; private Slider brightnessSlider; private Slider deltaSlider; private Slider sigmaSlider; private Slider stepSizeSlider; private SliderBox contrastSlider; private SliderBox brightnessSlider; private SliderBox deltaSlider; private SliderBox sigmaSlider; private SliderBox stepSizeSlider; @Inject public Bloom(ShowcaseExampleStore store) { Loading @@ -66,6 +60,11 @@ public class Bloom extends AbstractExample { public void buildPanel() { csVPanel = new ViewerPanel(); int numberOfBalloons = 13; double lonIncrement = 0.00025; double initialLon = -122.99875; double lat = 44.0503706; double height = 100.0; for (int i = 0; i < numberOfBalloons; i++) { double lon = initialLon + i * lonIncrement; createModel(lon, lat, height); Loading @@ -79,30 +78,25 @@ public class Bloom extends AbstractExample { glowOnlyCBox.setValue(false); glowOnlyCBox.addValueChangeHandler(new MValueChangeHandler()); contrastSlider = new Slider("contrastSlider", -25500, 25500, 12800); contrastSlider.setStep(1); contrastSlider = new SliderBox(-255, 128, 255, 0.01); contrastSlider.setWidth("150px"); contrastSlider.addListener(new MSliderListener()); contrastSlider.addInputHandler(this::updatePostProcess); brightnessSlider = new Slider("brightnessSlider", -100, 100, -30); brightnessSlider.setStep(1); brightnessSlider = new SliderBox(-1, -0.3, 1, 0.01); brightnessSlider.setWidth("150px"); brightnessSlider.addListener(new MSliderListener()); brightnessSlider.addInputHandler(this::updatePostProcess); deltaSlider = new Slider("deltaSlider", 100, 500, 100); deltaSlider.setStep(1); deltaSlider = new SliderBox(1, 1, 5, 0.01); deltaSlider.setWidth("150px"); deltaSlider.addListener(new MSliderListener()); deltaSlider.addInputHandler(this::updatePostProcess); sigmaSlider = new Slider("sigmaSlider", 100, 1000, 378); sigmaSlider.setStep(1); sigmaSlider = new SliderBox(1, 3.78, 10, 0.01); sigmaSlider.setWidth("150px"); sigmaSlider.addListener(new MSliderListener()); sigmaSlider.addInputHandler(this::updatePostProcess); stepSizeSlider = new Slider("stepSizeSlider", 0, 700, 500); stepSizeSlider.setStep(1); stepSizeSlider = new SliderBox(0, 5, 7, 0.01); stepSizeSlider.setWidth("150px"); stepSizeSlider.addListener(new MSliderListener()); stepSizeSlider.addInputHandler(this::updatePostProcess); FlexTable flexTable = new FlexTable(); flexTable.setHTML(1, 0, "<font color=\"white\">Bloom</font>"); Loading @@ -128,7 +122,7 @@ public class Bloom extends AbstractExample { contentPanel.add(absPanel); initWidget(contentPanel); updatePostProcess(); updatePostProcess(null); Cartesian3 target = Cartesian3.fromDegrees(initialLon + lonIncrement, lat, height + 7.5); Cartesian3 offset = new Cartesian3(-37.048378684557974, -24.852967044804245, 4.352023653686047); Loading @@ -148,15 +142,15 @@ public class Bloom extends AbstractExample { csVPanel.getViewer().entities().add(options); } private void updatePostProcess() { private void updatePostProcess(InputEvent event) { PostProcessStageComposite bloom = csVPanel.getViewer().scene().postProcessStages.bloom(); bloom.enabled = bloomCBox.getValue(); bloom.uniforms.setProperty("glowOnly", glowOnlyCBox.getValue()); bloom.uniforms.setProperty("contrast", contrastSlider.getValue() / 100.0); bloom.uniforms.setProperty("brightness", brightnessSlider.getValue() / 100.0); bloom.uniforms.setProperty("delta", deltaSlider.getValue() / 100.0); bloom.uniforms.setProperty("sigma", sigmaSlider.getValue() / 100.0); bloom.uniforms.setProperty("stepSize", stepSizeSlider.getValue() / 100.0); bloom.uniforms.setProperty("contrast", Double.parseDouble(contrastSlider.getValue())); bloom.uniforms.setProperty("brightness", Double.parseDouble(brightnessSlider.getValue())); bloom.uniforms.setProperty("delta", Double.parseDouble(deltaSlider.getValue())); bloom.uniforms.setProperty("sigma", Double.parseDouble(sigmaSlider.getValue())); bloom.uniforms.setProperty("stepSize", Double.parseDouble(stepSizeSlider.getValue())); } @Override Loading @@ -169,30 +163,7 @@ public class Bloom extends AbstractExample { private class MValueChangeHandler implements ValueChangeHandler<Boolean> { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { updatePostProcess(); } } private class MSliderListener implements SliderListener { @Override public void onStart(SliderEvent e) { // } @Override public boolean onSlide(SliderEvent e) { updatePostProcess(); return true; } @Override public void onChange(SliderEvent e) { // } @Override public void onStop(SliderEvent e) { // updatePostProcess(null); } } }
cesiumjs4gwt-showcase/src/main/java/org/cleanlogic/cesiumjs4gwt/showcase/examples/CloudParameters.java +122 −126 File changed.Preview size limit exceeded, changes collapsed. Show changes
cesiumjs4gwt-showcase/src/main/java/org/cleanlogic/cesiumjs4gwt/showcase/examples/Clustering.java +37 −62 Original line number Diff line number Diff line Loading @@ -38,9 +38,8 @@ import org.cesiumjs.cs.scene.enums.VerticalOrigin; import org.cesiumjs.cs.widgets.ViewerPanel; import org.cleanlogic.cesiumjs4gwt.showcase.basic.AbstractExample; import org.cleanlogic.cesiumjs4gwt.showcase.components.store.ShowcaseExampleStore; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.Slider; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderListener; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.InputEvent; import org.cleanlogic.cesiumjs4gwt.showcase.examples.slider.SliderBox; import javax.inject.Inject; Loading @@ -49,13 +48,13 @@ import javax.inject.Inject; */ public class Clustering extends AbstractExample { private ViewerPanel csVPanel; private Slider pixelRangeSlider; private SliderBox pixelRangeSlider; private TextBox pixelRangeTBox; private Slider minimumClusterSizeSlider; private SliderBox minimumClusterSizeSlider; private TextBox minimumClusterSizeTBox; private Event.RemoveCallback removeListener; private KmlDataSource _dataSource; private KmlDataSource dataSource; private String pin50; private String pin40; Loading Loading @@ -102,14 +101,13 @@ public class Clustering extends AbstractExample { // start with custom style customStyle(dataSource); _dataSource = dataSource; dataSource = dataSource; } }); pixelRangeSlider = new Slider("pixelRange", 1, 200, 15); pixelRangeSlider.setStep(1); pixelRangeSlider = new SliderBox(1, 15, 200, 1); pixelRangeSlider.setWidth("150px"); pixelRangeSlider.addListener(new MSliderListener()); pixelRangeSlider.addInputHandler(this::onInput); pixelRangeTBox = new TextBox(); pixelRangeTBox.addChangeHandler(new MChangeHandler()); pixelRangeTBox.setText("" + 15); Loading @@ -122,10 +120,10 @@ public class Clustering extends AbstractExample { pixelRangeHPanel.add(pixelRangeSlider); pixelRangeHPanel.add(pixelRangeTBox); minimumClusterSizeSlider = new Slider("minimumClusterSize", 1, 20, 3); minimumClusterSizeSlider = new SliderBox(2, 3, 20, 1); minimumClusterSizeSlider.setStep(1); minimumClusterSizeSlider.setWidth("150px"); minimumClusterSizeSlider.addListener(new MSliderListener()); minimumClusterSizeSlider.addInputHandler(this::onInput); minimumClusterSizeTBox = new TextBox(); pixelRangeTBox.addChangeHandler(new MChangeHandler()); minimumClusterSizeTBox.setText("" + 3); Loading @@ -143,7 +141,7 @@ public class Clustering extends AbstractExample { enabledCBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> valueChangeEvent) { _dataSource.clustering.enabled = valueChangeEvent.getValue(); dataSource.clustering.enabled = valueChangeEvent.getValue(); } }); Loading @@ -152,7 +150,7 @@ public class Clustering extends AbstractExample { customStyleCBox.addValueChangeHandler(new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> valueChangeEvent) { customStyle(_dataSource); customStyle(dataSource); } }); Loading Loading @@ -188,9 +186,7 @@ public class Clustering extends AbstractExample { removeListener.function(); removeListener = (Event.RemoveCallback) JsObject.undefined(); } else { removeListener = dataSource.clustering.clusterEvent.addEventListener(new EntityCluster.newClusterCallback() { @Override public void function(Entity[] clusteredEntities, EntityClusterObject cluster) { removeListener = dataSource.clustering.clusterEvent.addEventListener((EntityCluster.newClusterCallback) (clusteredEntities, cluster) -> { cluster.label.show = false; cluster.billboard.show = true; cluster.billboard.verticalOrigin = VerticalOrigin.BOTTOM(); Loading @@ -207,7 +203,6 @@ public class Clustering extends AbstractExample { } else { cluster.billboard.image = singleDigitPins[clusteredEntities.length - 2]; } } }); } // force a re-cluster with the new styling Loading @@ -216,36 +211,16 @@ public class Clustering extends AbstractExample { dataSource.clustering.pixelRange = pixelRange; } private class MSliderListener implements SliderListener { @Override public void onStart(SliderEvent e) { } @Override public boolean onSlide(SliderEvent e) { Slider source = e.getSource(); int value = source.getValue(); private void onInput(InputEvent event) { SliderBox source = (SliderBox) event.getSource(); double value = Double.parseDouble(source.getValue()); if (source.getElement().getId().equalsIgnoreCase("pixelRange")) { _dataSource.clustering.pixelRange = value; dataSource.clustering.pixelRange = (int) value; pixelRangeTBox.setValue("" + value); } else if (source.getElement().getId().equalsIgnoreCase("minimumClusterSize")) { _dataSource.clustering.minimumClusterSize = value; dataSource.clustering.minimumClusterSize = (int) value; minimumClusterSizeTBox.setValue("" + value); } return true; } @Override public void onChange(SliderEvent e) { } @Override public void onStop(SliderEvent e) { } } private class MChangeHandler implements ChangeHandler { Loading