rgb { return "7F7F7F"; } # grau
rect 100 100 200 200
liefert:
(http://up.picr.de/17920775sw.jpg)
rgb { return "7F7F7F"; } # grau
rect 100 100 200 200 1
liefert (aufgrund des zusätzlichen "Füllen"-Parameters):
(http://up.picr.de/17920798kr.jpg)
Ich brauche die Funktion, um z.B. hinter SVG plots eine vernünftige Hintergrundfarbe legen zu können, damit die Schrift besser lesbar wird, als auf der schwarzen Grundfarbe des RSS, wenn man kein Hintergrundbild definiert.
Vorgeschlagener Patch (Doku fehlt noch):
Index: 02_RSS.pm
===================================================================
--- 02_RSS.pm (Revision 5503)
+++ 02_RSS.pm (Arbeitskopie)
@@ -384,6 +384,13 @@
$S->line($x1,$y1,$x2,$y2,RSS_color($S,$params{rgb}));
}
+sub
+RSS_itemRect {
+ my ($S,$x1,$y1,$x2,$y2,$format,%params)= @_;
+ $S->filledRectangle($x1,$y1,$x2,$y2,RSS_color($S,$params{rgb})) if $format;
+ $S->rectangle($x1,$y1,$x2,$y2,RSS_color($S,$params{rgb})) if !$format;
+}
+
##################
sub
RSS_evalLayout($$@) {
@@ -495,6 +502,11 @@
($x2,$y2)= RSS_xy($S, $x2,$y2,%params);
$format //= 1; # set format to 1 as default thickness for the line
RSS_itemLine($S,$x1,$y1,$x2,$y2, $format,%params);
+ } elsif($cmd eq "rect") {
+ ($x1,$y1,$x2,$y2,$format)= split("[ \t]+", $def, 5);
+ ($x1,$y1)= RSS_xy($S, $x1,$y1,%params);
+ ($x2,$y2)= RSS_xy($S, $x2,$y2,%params);
+ RSS_itemRect($S,$x1,$y1,$x2,$y2, $format,%params);
} elsif($cmd eq "time") {
($x,$y)= split("[ \t]+", $def, 2);
($x,$y)= RSS_xy($S, $x,$y,%params);
Hier ein Ergebnis aus der praktischen Anwendung:
(http://up.picr.de/17920944am.jpg)
Das Ganze ohne Rechteck:
(http://up.picr.de/17920978fn.jpg)
(unschön)
Danke.
Ich checke es am Wochenende ein.
Grüße
Boris
Hallo Boris,
wenn Du dann grade dabei bist, kannst Du Dir bitte mal diese Stelle im Coding anschauen?
my $S;
# let's create a blank image, we will need it in most cases.
$S= GD::Image->newTrueColor($width,$height);
$S->colorAllocate(0,0,0); # black is the background
Völlig egal, was man dort im colorAllocate angibt, der Hintergrund ist immer schwarz. Selbst wenn das colorAllocate komplett fehlt.
Ich möchte gerne eine Möglichkeit schaffen, die Hintergrundfarbe (ohne Hintergrundbild!) z.B. per neuem Attribut bgcolor definieren zu können, aber solange ich das Geheimnis des Setzen der Hintergrundfarbe nicht entschlüsselt habe, komme ich da nicht weiter.
(mir ist schon klar, dass ich das auch über die Rechteckfunktion lösen kann)
erledigt - siehe die folgenden Beiträge.
Danke & viele Grüße
Udo
So funktioniert es mit der Hintergrundfarbe, falls das erste colorAllocate() nicht zuverlässig funktioniert (das scheint ein bekanntes Problem zu sein):
#
# create the image
#
my $S;
# let's create a blank image, we will need it in most cases.
$S= GD::Image->newTrueColor($width,$height);
my $red = $S->colorAllocate(255,0,0);
$S->fill(0,0,$red);
und so funktioniert es mit der per Attribut "bgcolor" einstellbaren Hintergrundfarbe :)
my $S;
# let's create a blank image, we will need it in most cases.
$S= GD::Image->newTrueColor($width,$height);
my $bgcolor = AttrVal($name,'bgcolor','000000'); #default bg color = black
$bgcolor = RSS_color($S, $bgcolor);
$S->fill(0,0,$bgcolor);
(http://up.picr.de/17922613ho.png)
(http://up.picr.de/17922616tn.jpg)
eingecheckt!
bn
Danke - ich werde testen und berichten :)
sieht gut aus...
Kommt das auch noch? http://forum.fhem.de/index.php/topic,20920.0.html
Viele Grüße
Udo