Mir ist aufgefallen, dass in einigen Beiträgen hier im RSS-Unterforum die Frage aufgetaucht ist, ob man SVG Grafiken in RSS einbinden kann, was scheinbar negativ beantwortet wurde. Mich hat genau die gleiche Fragestellung interessiert, nämlich würde ich gerne farbige SVG Icons in ein mit dem RSS-Modul erzeugtes PNG einbinden, mit einer Syntax der Form "sani_heating@red", also "<ICON>@<COLOR>", wie das ja auch z.B. bei devStateIcon funktioniert. Und siehe da - es geht recht einfach. Zunächst in 99_myUtils.pm:
sub
icon_as_png($)
{
my ($name) = @_;
my $svg = FW_makeImage($name);
my $png;
eval
{
require Image::LibRSVG;
my $rsvg = new Image::LibRSVG();
$rsvg->loadImageFromString($svg);
$png = $rsvg->getImageBitmap();
};
return $png if $png;
return;
}
Dabei nehme ich die bewährte
FW_makeImage Funktion, die ein SVG Icon lädt und einfärbt, und habe danach etwas Code aus der Funktion plotAsPng in 98_SVG.pm übernommen, um das Ergebnis in PNG umzuwandeln. Im RSS Layout lässt sich dann sowas einbauen:
img <x> <y> <size> png data {icon_as_png('<ICON>@<COLOR>')}
Also z.B.:
img 60 60 h32 png data {icon_as_png('sani_heating@red')}
Da das eigentlich ziemlich simpel ist, würde es Sinn machen, die Funktionalität direkt in 02_RSS.pm zu integrieren? Mein Code lässt sich vielleicht auch noch eleganter umsetzen - ich habe mangels Erfahrung mit Perl einfach mal kopiert
