Hallo Boris,
ich habe die textbox jetzt getestet und folgende Vorschläge (wie schon weiter oben erwähnt)
1. das text-align wird aus $params{thalign} übernommen (man kann ja auch irgendwann anders als im Blocksatz darstellen wollen!)
2. das linespacing wird aus der textbox-Definition übernommen und nicht aus einem eigenen $params{}. Da dieser Parameter nur innerhalb der textbox vorkommt, sollte er auch direkt dort mit angegeben werden (die $boxwidth ist ja auch kein eigenes Kommando)
Der Aufruf einer textbox würde damit so aussehen:
thalign "justified"
textbox 10 150 380 4 { "bla bla bla" }
Das funktioniert bei mir im Moment alles problemlos.
Ob die genaue Positionierung aller Elemente nach Deiner diesbezüglichen Änderungen funktioniert, habe ich noch nicht vollständig getestet. Aber soweit ich das jetzt getestet habe, sieht es ganz gut aus.
my @valid_halign = qw(left center right justified);
...
sub
RSS_itemTextBox {
# my ($S,$x,$y,$boxwidth,$text,%params)= @_;
my ($S,$x,$y,$boxwidth,$sp,$text,%params)= @_;
return unless(defined($text));
if($params{useTextWrap}) {
if((0 < $boxwidth) && ($boxwidth < 1)) { $boxwidth*= $S->width; }
my $wrapbox = GD::Text::Wrap->new($S,
color => RSS_color($S, $params{rgb}),
# line_space => $params{linespace},
line_space => $sp,
text => $text,
);
$wrapbox->set_font($params{font}, $params{pt});
# $wrapbox->set(align => 'justified', width => $boxwidth);
$wrapbox->set(align => $params{thalign}, width => $boxwidth);
my ($left, $top, $right, $bottom) = $wrapbox->draw($x, $y);
return $bottom;
} else {
RSS_itemText($S,$x,$y,$text,%params);
return $y;
}
}
...
} elsif($cmd eq "textbox") {
($x,$y,$boxwidth,$sp,$text)= split("[ \t]+", $def, 5);
($x,$y)= RSS_xy($S, $x,$y,%params);
my $txt= AnalyzePerlCommand(undef, $text);
#Debug "$name: ($x,$y) $txt";
$y= RSS_itemTextBox($S,$x,$y,$boxwidth,$sp,$txt,%params);
$params{x} = $x;
$params{y} = $y;
Viele Grüße
Udo