@@ -100,6 +100,7 @@ public class SymbolRepresentation extends RegionBaseRepresentation<StackPane, Sy
100100 private final UntypedWidgetPropertyListener contentListener = this ::contentChanged ;
101101 private final UntypedWidgetPropertyListener geometryListener = this ::geometryChanged ;
102102 private final UntypedWidgetPropertyListener styleListener = this ::styleChanged ;
103+ private final UntypedWidgetPropertyListener svgRenderingResolutionFactorChangedListener = this ::svgRenderingResolutionFactorChanged ;
103104 private final WidgetPropertyListener <VType > valueListener = this ::valueChanged ;
104105 private final WidgetPropertyListener <List <WidgetProperty <String >>> symbolsListener = this ::symbolsChanged ;
105106 private final WidgetPropertyListener <Integer > indexListener = this ::initialIndexChanged ;
@@ -610,6 +611,7 @@ protected void registerListeners()
610611 model_widget .propEnabled ().addUntypedPropertyListener (styleListener );
611612 model_widget .propShowIndex ().addUntypedPropertyListener (styleListener );
612613 model_widget .propTransparent ().addUntypedPropertyListener (styleListener );
614+ model_widget .propSVGRenderingResolutionFactor ().addUntypedPropertyListener (svgRenderingResolutionFactorChangedListener );
613615
614616 if (!toolkit .isEditMode ())
615617 model_widget .runtimePropValue ().addPropertyListener (valueListener );
@@ -639,6 +641,7 @@ protected void unregisterListeners()
639641 model_widget .propEnabled ().removePropertyListener (styleListener );
640642 model_widget .propShowIndex ().removePropertyListener (styleListener );
641643 model_widget .propTransparent ().removePropertyListener (styleListener );
644+ model_widget .propSVGRenderingResolutionFactor ().removePropertyListener (svgRenderingResolutionFactorChangedListener );
642645
643646 if (!toolkit .isEditMode ())
644647 model_widget .runtimePropValue ().removePropertyListener (valueListener );
@@ -788,6 +791,11 @@ void setSymbolSize ( double width, double height, boolean preserveRatio ) {
788791 }
789792 }
790793
794+ private void svgRenderingResolutionFactorChanged (final WidgetProperty <?> property , final Object oldValue , Object newValue ) {
795+ // Update the rendered SVG:
796+ symbolChanged (null , null , null );
797+ }
798+
791799 private void styleChanged ( final WidgetProperty <?> property , final Object oldValue , final Object newValue ) {
792800 dirtyStyle .mark ();
793801 toolkit .scheduleUpdate (this );
@@ -1027,7 +1035,20 @@ void resize(double width, double height, boolean preserveRatio){
10271035 * @return An {@link Image} or <code>null</code>.
10281036 */
10291037 Image loadSVG (final String imageFileName , double width , double height ){
1030- return SVGHelper .loadSVG (imageFileName , width , height );
1038+ double svg_rendering_resolution_factor = model_widget .propSVGRenderingResolutionFactor ().getValue ();
1039+
1040+ double renderingWidth ;
1041+ double renderingHeight ;
1042+ if (!Double .isNaN (svg_rendering_resolution_factor ) && svg_rendering_resolution_factor > 0 ) {
1043+ renderingWidth = svg_rendering_resolution_factor * width ;
1044+ renderingHeight = svg_rendering_resolution_factor * height ;
1045+ } else {
1046+ logger .log (Level .WARNING , "The SVG Rendering Factor is not set to a value greater than 0.0! Setting it to 1.0." );
1047+ renderingWidth = width ;
1048+ renderingHeight = height ;
1049+ }
1050+
1051+ return SVGHelper .loadSVG (imageFileName , renderingWidth , renderingHeight );
10311052 }
10321053 }
10331054}
0 commit comments