Größenanpassung bei SVGs

Begonnen von RoBra81, 15 September 2014, 11:13:34

Vorheriges Thema - Nächstes Thema

RoBra81

Hallo,

ich weiß nicht, ob ich hier an der richtigen Stelle poste, aber ich würde gern mal eine Änderung an der 01_FHEMWEB.pm vorstellen, die ich in meinem FHEM gemacht habe. Ich habe nach einer Möglichkeit gesucht, einzelne SVG-Symbole in der Readingsgroup in der Größe anzupassen. Da ich so richtig nix gefunden habe, habe ich die Funktion FW_makeImage dahingehend angepasst, dass ich neben der Farbe mittels zweitem angehängtem @ auch einen Faktor angeben kann, mit welchem der Scale im SVG multipliziert wird:

##############################
sub
FW_makeImage(@)
{
  my ($name, $txt, $class)= @_;

  $txt = $name if(!defined($txt));
  $class = "" if(!$class);
  $class = "$class $name";
  $class =~ s/\./_/g;
  $class =~ s/@/ /g;

  my $p = FW_iconPath($name);
  return $name if(!$p);
  if($p =~ m/\.svg$/i) {
    if(open(FH, "$FW_icondir/$p")) {
      <FH>; <FH>; <FH>; # Skip the first 3 lines;
      my $data = join("", <FH>);
      close(FH);
      $data =~ s/[\r\n]/ /g;
      $data =~ s/ *$//g;
      $data =~ s/<svg/<svg class="$class"/;
      my @atts = split(/@/,$name);
      my $col = $atts[1] if($atts[1]);
      my $resize = $atts[2] if($atts[2]);
      if($col) {
        $col =~ s/@//;
        $col = "#$col" if($col =~ m/^([A-F0-9]{6})$/);
        $data =~ s/fill="#000000"/fill="$col"/g;
        $data =~ s/fill:#000000/fill:$col/g;
      } else {
        $data =~ s/fill="#000000"//g;
        $data =~ s/fill:#000000//g;
      }
      if($resize) {
        my @scale = split(/scale\(/,$data);
        if ($scale[1])
        {
          @scale = split(/\)/,$scale[1]);
          @scale = split(/,/,$scale[0]);
          my $newScale1 = $scale[0]*$resize;
          my $newScale2 = $scale[1]*$resize;

          $data =~ s/scale\(.*,.*\)/scale\($newScale1,$newScale2)/g;
        }
      }
      return $data;
    } else {
      return $name;
    }
  } else {
    $class = "class='$class'" if($class);
    return "<img $class src=\"$FW_ME/images/$p\" alt=\"$txt\" title=\"$txt\">";
  }
}


Vielleicht ist das ja nützlich und wird mal ins FHEM übernommen...

Ronny