summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--perl-install/install_steps_gtk.pm32
-rw-r--r--perl-install/my_gtk.pm14
2 files changed, 39 insertions, 7 deletions
diff --git a/perl-install/install_steps_gtk.pm b/perl-install/install_steps_gtk.pm
index f3edb9923..1d4d7a58c 100644
--- a/perl-install/install_steps_gtk.pm
+++ b/perl-install/install_steps_gtk.pm
@@ -532,7 +532,37 @@ sub installPackages {
$change_time = time();
my $f = $install_any::advertising_images[$i++ % @install_any::advertising_images];
log::l("advertising $f");
- eval { gtkpack($box, $advertising = gtkpng($f)) };
+ eval { my $pl = $f; $pl =~ s/\.png$/\.pl/;
+ my ($width, $height, @data);
+ eval(cat_($pl));
+ my ($pix, undef) = gtkcreate_png($f);
+ my $dbl_area;
+ my $darea = new Gtk::DrawingArea
+ gtkpack($box, $advertising = gtksignal_connect(gtkset_usize($darea, $width, eight), expose_event => sub {
+ if (!defined($dbl_area)) {
+ $dbl_area = new Gtk::Gdk::Pixmap($darea->window, $width, $height);
+ $dbl_area->draw_pixmap($darea->style->bg_gc('normal'),
+ $pix, 0, 0, $width, $height);
+ my $font = $darea->style->font;
+ my $style= new Gtk::Style;
+ $style->font(Gtk::Gdk::Font->fontset_load($font));
+ my $gc_text = new Gtk::Gdk::GC($darea->window);
+ $gc_text->set_foreground(gtkcolor(255, 255, 255));
+ foreach (@data) {
+ my ($width, $height, $lines, $widths, $heights, $ascents, $descents) = get_text_coord (
+ $_->[0], $style, $_->[3], $_->[4], 0, 1, 0);
+ my $i = 0;
+ foreach (@{$lines}) {
+ $dbl_area->draw_string($style->font, $gc_text, ${$widths}[$i], ${$ascents}[$i] + ${$heights}[$i], $_);
+ $i++;
+ }
+ }
+ } else {
+ $darea->window->draw_pixmap($darea->style->bg_gc('normal'),
+ $dbl_area, 0, 0, 0, 0, $width, $height);
+ }
+ }));
+ }
} else {
$advertising = undef;
}
diff --git a/perl-install/my_gtk.pm b/perl-install/my_gtk.pm
index c83d5db97..547c18848 100644
--- a/perl-install/my_gtk.pm
+++ b/perl-install/my_gtk.pm
@@ -10,7 +10,7 @@ use vars qw(@ISA %EXPORT_TAGS @EXPORT_OK $border);
@ISA = qw(Exporter);
%EXPORT_TAGS = (
helpers => [ qw(create_okcancel createScrolledWindow create_menu create_notebook create_packtable create_hbox create_vbox create_adjustment create_box_with_title create_treeitem) ],
- wrappers => [ qw(gtksignal_connect gtkradio gtkpack gtkpack_ gtkpack__ gtkpack2 gtkpack3 gtkpack2_ gtkpack2__ gtkset_editable gtksetstyle gtkset_tip gtkappenditems gtkappend gtkset_shadow_type gtkset_layout gtkset_relief gtkadd gtkput gtktext_insert gtkset_usize gtksize gtkset_justify gtkset_active gtkset_sensitive gtkset_modal gtkset_border_width gtkmove gtkresize gtkshow gtkhide gtkdestroy gtkset_mousecursor gtkset_mousecursor_normal gtkset_mousecursor_wait gtkset_background gtkset_default_fontset gtkctree_children gtkxpm gtkpng create_pix_text fill_tiled gtkicons_labels_widget write_on_pixmap gtkcreate_xpm gtkcreate_png gtkbuttonset) ],
+ wrappers => [ qw(gtksignal_connect gtkradio gtkpack gtkpack_ gtkpack__ gtkpack2 gtkpack3 gtkpack2_ gtkpack2__ gtkset_editable gtksetstyle gtkset_tip gtkappenditems gtkappend gtkset_shadow_type gtkset_layout gtkset_relief gtkadd gtkput gtktext_insert gtkset_usize gtksize gtkset_justify gtkset_active gtkset_sensitive gtkset_modal gtkset_border_width gtkmove gtkresize gtkshow gtkhide gtkdestroy gtkset_mousecursor gtkset_mousecursor_normal gtkset_mousecursor_wait gtkset_background gtkset_default_fontset gtkctree_children gtkxpm gtkpng create_pix_text get_text_coord fill_tiled gtkicons_labels_widget write_on_pixmap gtkcreate_xpm gtkcreate_png gtkbuttonset) ],
ask => [ qw(ask_warn ask_okcancel ask_yesorno ask_from_entry) ],
);
$EXPORT_TAGS{all} = [ map { @$_ } values %EXPORT_TAGS ];
@@ -385,8 +385,8 @@ sub create_pix_text {
my $style= new Gtk::Style;
$style->font(Gtk::Gdk::Font->fontset_load($font));
- my ($width, $height, $lines, $heights, $ascents, $descents) = get_text_coord (
- $text, $style, $max_width, $max_height, $correction, $can_be_greater, $can_be_smaller);
+ my ($width, $height, $lines, $widths, $heights, $ascents, $descents) = get_text_coord (
+ $text, $style, $max_width, $max_height, $correction, $can_be_greater, $can_be_smaller, 1);
my $pix = new Gtk::Gdk::Pixmap($w->window, $width, $height);
if ($backpix) {
@@ -402,7 +402,7 @@ sub create_pix_text {
$gc_text->set_foreground($color_text);
my $i = 0;
foreach (@{$lines}) {
- $pix->draw_string($style->font, $gc_text, 0, ${$ascents}[$i] + ${$heights}[$i], $_);
+ $pix->draw_string($style->font, $gc_text, ${$widths}[$i], ${$ascents}[$i] + ${$heights}[$i], $_);
$i++;
}
($pix, $width, $height, ${$ascents}[0], ${$descents}[0]);
@@ -417,6 +417,7 @@ sub get_text_coord {
my $real_width = 0;
my $real_height = 0;
my @lines;
+ my @widths;
my @heights;
my @ascents;
my @descents;
@@ -430,11 +431,12 @@ sub get_text_coord {
my $l = $style->font->string_width($_ . if_(!$flag, " "));
if ($width + $l > $max_width2 && !$flag) {
$flag = 1;
- $width = 0;
$height += $style->font->string_height($lines[$idx]);
(undef, undef, undef, $ascents[$idx], $descents[$idx]) = $style->font->string_extents($lines[$idx]);
$height -= $correction;
$heights[$idx+1] = $height;
+ $widths[$idx] = ($max_width2-$width)/2;
+ $width = 0;
$idx++;
}
$lines[$idx] = $flag ? "$_" : $lines[$idx] . " $_";
@@ -455,7 +457,7 @@ sub get_text_coord {
$real_height < $max_height && $can_be_smaller and $height = $real_height;
$real_height > $max_height && $can_be_greater and $height = $real_height;
- ($width, $height, \@lines, \@heights, \@ascents, \@descents)
+ ($width, $height, \@lines, \@widths, \@heights, \@ascents, \@descents)
}
sub fill_tiled {