summaryrefslogtreecommitdiffstats
path: root/perl-install/standalone/draksplash2
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/standalone/draksplash2')
-rw-r--r--perl-install/standalone/draksplash2306
1 files changed, 0 insertions, 306 deletions
diff --git a/perl-install/standalone/draksplash2 b/perl-install/standalone/draksplash2
deleted file mode 100644
index 4c17bdd08..000000000
--- a/perl-install/standalone/draksplash2
+++ /dev/null
@@ -1,306 +0,0 @@
-#!/usr/bin/perl
-
-#- convert in.png -colors 128 -treedepth 6 -dither out.gif
-
-use strict;
-
-use lib '/usr/lib/libDrakX';
-use Getopt::Long;
-use ugtk2 qw(:all);
-use Gtk2::Gdk::Keysyms;
-use MDK::Common;
-use Image::Magick;
-use bootsplash qw(:drawing);
-
-
-my $kernel_size = 1500; #- in KiB
-my $initrd_size = 130; #- in KiB
-
-my $lilo_block_size = 50; #- in KiB
-my $isolinux_block_size = 64; #- in KiB
-
-my @modes = (
- { Vesa => 0x101, X => 640, Y => 480 },
- { Vesa => 0x103, X => 800, Y => 600 },
- { Vesa => 0x105, X => 1024, Y => 768 },
- { Vesa => 0x107, X => 1280, Y => 1024 },
-);
-
-my (%image_size, $kernel_and_initrd_size);
-my ($progress_rect, $progress_color) = ([], {});
-my ($timer_pos, $timer_bg, $timer_fg) = ({}, {}, {});
-my ($entry_rect, $entry_selected_color, $entry_color) = ([], {}, {});
-my $isolinux_mode;
-
-my $magick = Image::Magick->new;
-
-my ($current_rect, $current_point);
-my ($image_area, $image_pixbuf);
-
-sub move_point {
- my ($up_down, $direction) = @_;
- my $wanted = $current_point->{$direction} + $up_down;
- if (0 <= $wanted && $wanted < $image_size{$direction}) {
- $current_point->{$direction} += $up_down;
- }
- $image_area->queue_draw;
-}
-sub create_image_area() {
- $image_area = Gtk2::DrawingArea->new;
- $image_area->can_focus(1);
- $image_area->add_events('button-press-mask');
- $image_area->signal_connect(button_press_event => \&image_button_pressed);
- $image_area->signal_connect(expose_event => \&image_expose);
- gtkmodify_font($image_area, 'Monospace 12');
-
- my $keys = {
- $Gtk2::Gdk::Keysyms{Down} => sub { move_point( ($_[0] ? 5 : 1), 'Y') },
- $Gtk2::Gdk::Keysyms{Up} => sub { move_point(-($_[0] ? 5 : 1), 'Y') },
- $Gtk2::Gdk::Keysyms{Left} => sub { move_point(-($_[0] ? 5 : 1), 'X') },
- $Gtk2::Gdk::Keysyms{Right} => sub { move_point( ($_[0] ? 5 : 1), 'X') },
- $Gtk2::Gdk::Keysyms{q} => sub { Gtk2->main_quit },
- $Gtk2::Gdk::Keysyms{Escape} => sub { Gtk2->main_quit },
- };
-
- $image_area->signal_connect(key_press_event => sub {
- my (undef, $event) = @_;
-
- if (my $f = $keys->{$event->keyval}) {
- $f->(member('control-mask', @{$event->state}));
- }
- 1;
- });
-
- $image_area->grab_focus;
- $image_area->show;
- $image_area;
-}
-sub image_expose {
- my ($widget) = @_;
- my $window = $widget->window;
- $window->draw_pixbuf($widget->style->white_gc, $image_pixbuf, 0, 0, 0, 0, -1, -1, 'none', 0, 0);
-
- if (!$isolinux_mode) {
- {
- my $layout = $widget->create_pango_layout('--:--');
- my ($width, $height) = $layout->get_pixel_size;
- $window->draw_rectangle(color_index2gc($window, $timer_bg), 1, $timer_pos->{X}, $timer_pos->{Y}, $width, $height);
- $window->draw_layout(color_index2gc($window, $timer_fg), $timer_pos->{X}, $timer_pos->{Y}, $layout);
- }
- my ($x, $y, $w, $h) = rectangle2xywh($entry_rect);
- my @std_labels = ('linux', 'failsafe', '2.6.3-7mdk', 'X' x ($w / 8));
- for (my $nb = 0; $nb < int($h / 16); $y += 16, $nb++) {
- my $label = shift(@std_labels) || 'label_' . ($nb+1);
- my $gc = color_index2gc($window, !$nb ? $entry_selected_color : $entry_color);
- my $layout = $widget->create_pango_layout($label);
- $window->draw_layout($gc, $x, $y, $layout);
- }
- }
- {
- my ($x, $y, $w, $h) = rectangle2xywh($progress_rect);
- my $w2 = $w - $w % nb_steps();
- if ($current_rect) {
- $window->draw_rectangle(color_index2gc($window, $progress_color), 1, $x, $y, $w2, $h);
- $window->draw_rectangle($widget->style->black_gc, 0, $x, $y, $w, $h);
- } else {
- $window->draw_rectangle(color_index2gc($window, $progress_color), 1, $x, $y, $w, $h);
- }
- }
- 0;
-}
-sub image_button_pressed {
- my (undef, $event) = @_;
-
- if ($event->button eq '3') {
- create_popup()->popup(undef, undef, undef, undef, '3', $event->time);
- return 1;
- }
-
- my $point = { X => $event->x, Y => $event->y };
-
- if ($current_rect) {
- if (!@$current_rect) {
- my @corners = ({ X => 0, Y => 0 },
- { X => 0, Y => $image_size{Y} - 1 },
- { X => $image_size{X} - 1, Y => 0 },
- { X => $image_size{X} - 1, Y => $image_size{Y} - 1 });
- @$current_rect = ($corners[farthest($point, @corners)], nearest($point, @corners));
- }
- $current_point = nearest($point, @$current_rect);
- } elsif ($current_point) {
- %$current_point or %$current_point = %$point;
- } else {
- return;
- }
-
- %$current_point = %$point;
- $current_point->{Color} = $magick->Get("index[$point->{X},$point->{Y}]");
-
- $image_area->queue_draw;
- 1;
-}
-
-sub image_set_file {
- my ($file) = @_;
-
- $image_pixbuf = Gtk2::Gdk::Pixbuf->new_from_file($file);
- %image_size = (X => $image_pixbuf->get_width, Y => $image_pixbuf->get_height);
- $image_area->set_size_request($image_size{X}, $image_size{Y});
- $image_area->queue_draw;
-}
-
-sub color_index2gc {
- my ($window, $color) = @_;
- my ($r, $g, $b) = split(',', $magick->Get("colormap[$color->{Color}]"));
- my $gc = Gtk2::Gdk::GC->new($window);
-
- my $gdk_color = Gtk2::Gdk::Color->new($r, $g, $b) or die "bad color for $r,$g,$b";
- $window->get_colormap->rgb_find_color($gdk_color);
- $gc->set_rgb_fg_color($gdk_color);
- $gc;
-}
-
-sub create_popup() {
- my @l = (
- 'Progress bar position' => sub { $current_rect = $progress_rect },
- 'Progress bar color' => sub { $current_point = $progress_color },
- '' => sub {},
- $isolinux_mode ? (
- 'switch to lilo mode' => sub { $isolinux_mode = 0 },
- ) : (
- 'Timer position' => sub { $current_point = $timer_pos },
- 'Timer text color' => sub { $current_point = $timer_fg },
- 'Timer background' => sub { $current_point = $timer_bg },
- '' => sub {},
- 'Entry position' => sub { $current_rect = $entry_rect },
- 'Entry text selected color' => sub { $current_point = $entry_selected_color },
- 'Entry text color' => sub { $current_point = $entry_color },
- '' => sub {},
- 'switch to isolinux mode' => sub { $isolinux_mode = 1 },
- ),
-
- );
-
- my $popup = Gtk2::Menu->new;
- foreach (group_by2(@l)) {
- my ($descr, $f) = @$_;
- gtkappend($popup,
- gtksignal_connect(Gtk2::MenuItem->new_with_label($descr),
- activate => sub {
- $current_rect = $current_point = undef;
- $f->();
- }));
- }
- $popup;
-}
-sub nb_steps() {
- $kernel_and_initrd_size / ($isolinux_mode ? $isolinux_block_size : $lilo_block_size);
-}
-
-sub read_parameters {
- my ($file) = @_;
- my %h = getVarsFromSh($file);
-
- $entry_rect->[0]{X} = $h{entry_x};
- $entry_rect->[0]{Y} = $h{entry_y};
- $entry_rect->[1]{X} = $h{entry_x} + $h{entry_w};
- $entry_rect->[1]{Y} = $h{entry_y} + $h{entry_h};
- $entry_color->{Color} = $h{entry_bg} - 64;
- $entry_selected_color->{Color} = $h{entry_fg} - 64;
-
- $timer_pos->{X} = $h{timer_x};
- $timer_pos->{Y} = $h{timer_y};
- $timer_bg->{Color} = $h{timer_bg} - 64;
- $timer_fg->{Color} = $h{timer_fg} - 64;
-
- $progress_color->{Color} = $h{progress_c} - 64;
- $progress_rect->[0]{X} = $h{progress_x};
- $progress_rect->[0]{Y} = $h{progress_y};
- $progress_rect->[1]{X} = $h{progress_x} + $h{progress_real_w};
- $progress_rect->[1]{Y} = $h{progress_y} + $h{progress_h};
-
- $isolinux_mode = $h{isolinux_mode};
-}
-
-sub save_parameters {
- my ($file) = @_;
- my %h;
-
- $h{mode} = (find { $image_size{X} eq $_->{X} } @modes)->{Vesa};
- $h{clear_h} = $image_size{X};
- $h{clear_w} = $image_size{Y};
-
- if (!$isolinux_mode) {
- ($h{entry_x}, $h{entry_y}, $h{entry_w}, $h{entry_h}) = rectangle2xywh($entry_rect);
- $h{entry_w_chr} = int($h{entry_w} / 8);
- $h{entry_h_chr} = int($h{entry_h} / 16);
- $h{entry_bg} = $entry_color->{Color} + 64;
- $h{entry_fg} = $entry_selected_color->{Color} + 64;
-
- $h{timer_x} = $timer_pos->{X};
- $h{timer_y} = $timer_pos->{Y};
- $h{timer_bg} = $timer_bg->{Color} + 64;
- $h{timer_fg} = $timer_fg->{Color} + 64;
- }
-
- $h{progress_c} = $progress_color->{Color} + 64;
- ($h{progress_x}, $h{progress_y}, $h{progress_real_w}, $h{progress_h}) = rectangle2xywh($progress_rect);
- $h{progress_w} = int($h{progress_real_w} / nb_steps());
-
- $h{isolinux_mode} = $isolinux_mode;
-
- output($file, map { "$_=$h{$_}\n" } sort keys %h);
-}
-
-# MAIN #########################################################################
-my $usage = <<EOF;
-usage: $0 [--kernel <kernel> --initrd <initrd>] [--size <size in KiB>] <image>
-(kernel and initrd are used to compute the size of data to load)
-EOF
-
-GetOptions('kernel=s' => \ (my $kernel),
- 'initrd=s' => \ (my $initrd),
- 'size=s' => \$kernel_and_initrd_size,
- 'isolinux' => \ (my $force_isolinux_mode),
- ) or die $usage;
-
-my ($file) = @ARGV;
-@ARGV == 1 && -e $file or die $usage;
-
-if ($kernel_and_initrd_size) {
- $kernel and die "give kernel and initrd or size, not both\n";
-} else {
- if ($kernel) {
- $initrd or die "give both kernel and initrd\n";
- $kernel_size = (-s $kernel) / 1024 or die "bad file $kernel: $!\n";
- $initrd_size = (-s $initrd) / 1024 or die "bad file $initrd: $!\n";
- }
- $kernel_and_initrd_size = $kernel_size + $initrd_size;
-}
-
-my $err;
-$err = $magick->Read($file) and die $err;
-
-my $bmp_file_name = $file;
-$bmp_file_name =~ s/\.\w\w\w?$//;
-$bmp_file_name .= '.bmp';
-
-if ($file ne $bmp_file_name || $magick->Get('colors') > 128) {
- warn "writing $bmp_file_name\n";
- $err = $magick->Quantize(colors => 128, dither => 'True', treedepth => 6) and die $err;
- $err = $magick->Write(filename => "bmp3:$bmp_file_name", compression => 'None') and die $err;
-}
-read_parameters("$bmp_file_name.parameters");
-$isolinux_mode ||= $force_isolinux_mode;
-
-my $window_widget = Gtk2::Window->new('toplevel');
-$window_widget->signal_connect(destroy => sub { Gtk2->main_quit });
-gtkadd($window_widget,
- gtkpack(Gtk2::VBox->new(0,0), create_image_area()));
-image_set_file($bmp_file_name);
-
-$window_widget->show;
-$image_area->window->set_cursor(Gtk2::Gdk::Cursor->new('crosshair'));
-Gtk2->main;
-
-save_parameters("$bmp_file_name.parameters");