diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm index caa0f3eaf..3d59bcd9b 100644 --- a/fhem/FHEM/98_SVG.pm +++ b/fhem/FHEM/98_SVG.pm @@ -1914,6 +1914,7 @@ SVG_render($$$$$$$$$$) my $xmul; $xmul = $w/($xmax-$xmin) if( $conf{xrange} ); my $hmul = $h/($hmax{$a}-$min); + my $hfill = $hmul*$hmax{$a}; # Fill only to the 0-line, #108858 my $ret = ""; my ($dxp, $dyp) = ($hdx[$idx], $hdy[$idx]); SVG_pO "" if(!defined($dxp)); @@ -1961,7 +1962,7 @@ SVG_render($$$$$$$$$$) } elsif($lType eq "steps" || $lType eq "fsteps" ) { - $ret .= sprintf(" %d,%d", $x+$dxp->[0], $y+$h) if($isFill && @{$dxp}); + $ret .= sprintf(" %d,%d", $x+$dxp->[0],$y+$hfill) if($isFill && @{$dxp}); if(@{$dxp} == 1) { my $y1 = $y+$h-($dyp->[0]-$min)*$hmul; $ret .= sprintf(" %d,%d %d,%d %d,%d %d,%d", @@ -1988,12 +1989,12 @@ SVG_render($$$$$$$$$$) } } } - $ret .= sprintf(" %d,%d", $lx, $y+$h) if($isFill && $lx > -1); + $ret .= sprintf(" %d,%d", $lx, $y+$hfill) if($isFill && $lx > -1); SVG_pO ""; } elsif($lType eq "histeps" ) { - $ret .= sprintf(" %d,%d", $x+$dxp->[0], $y+$h) if($isFill && @{$dxp}); + $ret .= sprintf(" %d,%d", $x+$dxp->[0],$y+$hfill) if($isFill && @{$dxp}); if(@{$dxp} == 1) { my $y1 = $y+$h-($dyp->[0]-$min)*$hmul; $ret .= sprintf(" %d,%d %d,%d %d,%d %d,%d", @@ -2008,7 +2009,7 @@ SVG_render($$$$$$$$$$) $x1,$y1, ($x1+$x2)/2,$y1, ($x1+$x2)/2,$y2, $x2,$y2); } } - $ret .= sprintf(" %d,%d", $lx, $y+$h) if($isFill && $lx > -1); + $ret .= sprintf(" %d,%d", $lx, $y+$hfill) if($isFill && $lx > -1); SVG_pO ""; } elsif( $lType eq "bars" ) { @@ -2143,7 +2144,7 @@ SVG_render($$$$$$$$$$) if($i == 0) { if($doClose) { - $ret .= sprintf("M %d,%d L %d,%d $lt", $x1,$y+$h, $x1,$y1); + $ret .= sprintf("M %d,%d L %d,%d $lt", $x1,$y+$hfill, $x1,$y1); } else { $ret .= sprintf("M %d,%d $lt", $x1,$y1); } @@ -2170,7 +2171,7 @@ SVG_render($$$$$$$$$$) #-- insert last point for filled line $ret .= sprintf(" %.1f,%.1f", $x1, $y1) if(($lt eq "T") && defined($x1)); - $ret .= sprintf(" L %d,%d Z", $x1, $y+$h) if($doClose && defined($x1)); + $ret .= sprintf(" L %d,%d Z", $x1,$y+$hfill) if($doClose && defined($x1)); if($ret =~ m/^ (\d+),(\d+)/) { # just points, no M/L $ret = sprintf("M %d,%d $lt ", $1, $2).$ret;