FHEM Forum

FHEM => Frontends => RSS => Thema gestartet von: betateilchen am 10 April 2014, 19:34:05

Titel: [patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: betateilchen am 10 April 2014, 19:34:05

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);
Titel: Antw:[patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: betateilchen am 10 April 2014, 19:46:03
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)
Titel: Antw:[patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: Dr. Boris Neubert am 10 April 2014, 20:31:52
Danke.

Ich checke es am Wochenende ein.

Grüße
Boris
Titel: Antw:[patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: betateilchen am 10 April 2014, 20:57:18
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
Titel: Antw:[patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: betateilchen am 10 April 2014, 21:41:33
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);
Titel: Antw:[patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: betateilchen am 10 April 2014, 22:06:55
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)
Titel: Antw:[patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: Dr. Boris Neubert am 16 April 2014, 21:14:02
eingecheckt!
bn
Titel: Antw:[patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: betateilchen am 16 April 2014, 21:23:36
Danke - ich werde testen und berichten :)
Titel: Antw:[patch] 02_RSS.pm - neuer Befehl zum Zeichnen von Rechtecken mit u. ohne Füllung
Beitrag von: betateilchen am 16 April 2014, 21:28:21
sieht gut aus...

Kommt das auch noch? http://forum.fhem.de/index.php/topic,20920.0.html

Viele Grüße
Udo