From c11641cbbd6fa38cec2eac493758cc3f06ff1ce6 Mon Sep 17 00:00:00 2001 From: rudolfkoenig Date: Sun, 29 Dec 2013 18:33:49 +0000 Subject: [PATCH] SVG: Patch from betateilchen: http://forum.fhem.de/index.php?topic=18058.new#new git-svn-id: https://svn.fhem.de/fhem/trunk@4502 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/98_SVG.pm | 75 ++++++++++++++++++++++++--------------------- 1 file changed, 40 insertions(+), 35 deletions(-) diff --git a/fhem/FHEM/98_SVG.pm b/fhem/FHEM/98_SVG.pm index 3170ee93d..f85674015 100755 --- a/fhem/FHEM/98_SVG.pm +++ b/fhem/FHEM/98_SVG.pm @@ -1508,45 +1508,50 @@ SVG_pO($) ################## # this is a helper function which creates a PNG image from a given plot -sub plotAsPng(@) { - my (@plotName) = @_; - my (@webs, $mimetype, $svgdata, $rsvg, $pngImg); - - @webs=devspec2array("TYPE=FHEMWEB"); - foreach(@webs) { - if(!InternalVal($_,'TEMPORARY',undef)) { - $FW_wname=InternalVal($_,'NAME',''); - last; - } - } - #Debug "FW_wname= $FW_wname, plotName= $plotName[0]"; +sub +plotAsPng(@) +{ + my (@plotName) = @_; + my (@webs, $mimetype, $svgdata, $rsvg, $pngImg); + + @webs=devspec2array("TYPE=FHEMWEB"); + foreach(@webs) { + if(!InternalVal($_,'TEMPORARY',undef)) { + $FW_wname=InternalVal($_,'NAME',''); + last; + } + } + #Debug "FW_wname= $FW_wname, plotName= $plotName[0]"; - $FW_RET = undef; - $FW_webArgs{dev} = $plotName[0]; - $FW_webArgs{logdev} = InternalVal($plotName[0], "LOGDEVICE", ""); - $FW_webArgs{gplotfile} = InternalVal($plotName[0], "GPLOTFILE", ""); - $FW_webArgs{logfile} = InternalVal($plotName[0], "LOGFILE", "CURRENT"); - $FW_pos{zoom} = $plotName[1] if $plotName[1]; - $FW_pos{off} = $plotName[2] if $plotName[2]; + $FW_RET = undef; + $FW_webArgs{dev} = $plotName[0]; + $FW_webArgs{logdev} = InternalVal($plotName[0], "LOGDEVICE", ""); + $FW_webArgs{gplotfile} = InternalVal($plotName[0], "GPLOTFILE", ""); + $FW_webArgs{logfile} = InternalVal($plotName[0], "LOGFILE", "CURRENT"); + $FW_pos{zoom} = $plotName[1] if $plotName[1]; + $FW_pos{off} = $plotName[2] if $plotName[2]; - ($mimetype, $svgdata) = SVG_showLog("unused"); - - #Debug "MIME type= $mimetype"; - #Debug "SVG= $svgdata"; + ($mimetype, $svgdata) = SVG_showLog("unused"); + + #Debug "MIME type= $mimetype"; + #Debug "SVG= $svgdata"; - eval { - require Image::LibRSVG; - $rsvg = new Image::LibRSVG(); - $rsvg->loadImageFromString($svgdata); - $pngImg = $rsvg->getImageBitmap(); - }; - Log3 $FW_wname, 1, - "plotAsPng(): Cannot create plot as png image for \"" . - join(" ", @plotName) . "\": $@" - if($@ or !defined($pngImg) or ($pngImg eq "")); + my ($w, $h) = split(",", AttrVal($plotName[0],"plotsize","800,160")); + $svgdata =~ s/<\/svg>/<\/svg>/; - return $pngImg if $pngImg; - return; + eval { + require Image::LibRSVG; + $rsvg = new Image::LibRSVG(); + $rsvg->loadImageFromString($svgdata); + $pngImg = $rsvg->getImageBitmap(); + }; + Log3 $FW_wname, 1, + "plotAsPng(): Cannot create plot as png image for \"" . + join(" ", @plotName) . "\": $@" + if($@ or !defined($pngImg) or ($pngImg eq "")); + + return $pngImg if $pngImg; + return; } ##################