From 90a06c043cf17b05881f4e9e8726f3fb5858d98a Mon Sep 17 00:00:00 2001 From: Olivier Blin Date: Tue, 10 May 2005 08:42:06 +0000 Subject: move rectangle2xywh(), distance(), farthest() and nearest() from draksplash2 to bootsplash module, create xywh2rectangle() --- perl-install/bootsplash.pm | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) (limited to 'perl-install/bootsplash.pm') diff --git a/perl-install/bootsplash.pm b/perl-install/bootsplash.pm index 86d78e4fc..3b46b4a66 100644 --- a/perl-install/bootsplash.pm +++ b/perl-install/bootsplash.pm @@ -2,6 +2,11 @@ package bootsplash; use common; use Xconfig::resolution_and_depth; +use vars qw(@ISA %EXPORT_TAGS); + +@ISA = qw(Exporter); +%EXPORT_TAGS = (drawing => [qw(rectangle2xywh xywh2rectangle distance farthest nearest)]); +@EXPORT_OK = map { @$_ } values %EXPORT_TAGS; my $themes_dir = "$::prefix/usr/share/bootsplash/themes"; my $themes_config_dir = "$::prefix/etc/bootsplash/themes"; @@ -148,4 +153,54 @@ LOGO_CONSOLE=$conf->{LOGO_CONSOLE} )); } +sub rectangle2xywh { + my ($rect) = @_; + + my $x = min($rect->[0]{X} , $rect->[1]{X}); + my $y = min($rect->[0]{Y} , $rect->[1]{Y}); + my $w = abs($rect->[0]{X} - $rect->[1]{X}); + my $h = abs($rect->[0]{Y} - $rect->[1]{Y}); + ($x, $y, $w, $h); +} + +sub xywh2rectangle { + my ($x, $y, $w, $h) = @_; + [ { X => $x, Y => $y }, { X => $x+$w, Y => $y+$w } ]; +} + +sub distance { + my ($p1, $p2) = @_; + sqr($p1->{X} - $p2->{X}) + sqr($p1->{Y} - $p2->{Y}); +} + +sub farthest { + my ($point, @others) = @_; + my $i = 0; + my $dist = 0; + my $farthest; + foreach (@others) { + my $d = distance($point, $_); + if ($d >= $dist) { + $dist = $d; + $farthest = $_; + } + } + $farthest; +} + +sub nearest { + my ($point, @others) = @_; + my $i = 0; + my $dist; + my $nearest; + foreach (@others) { + my $d = distance($point, $_); + if (! defined $dist || $d < $dist) { + $dist = $d; + $nearest = $_; + } + } + $nearest; +} + 1; -- cgit v1.2.1