Viewing file: dwm_blur.pl (1.51 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
=pod
=head1 NAME
examples/dwm.pl - win32 DWM blur demo
=cut
use strict; use warnings; use Prima qw(Application);
die "Your system doesn't support DWM blur - sorry. You'll need Window 7 or above\n" if $::application->get_system_value(sv::DWM) <= 0;
my $angle = 0;
use constant PI => 4.0 * atan2 1, 1; use constant D2R => PI / 180; use constant Cos_120 => cos(D2R*(-120)); use constant Sin_120 => sin(D2R*(-120));
sub dwm_reset { my $win = shift; my @sz = $win->size;
my ($w, $h) = @sz; my $sz = ($w > $h ? $h : $w) * 0.8 * 0.5; my ($x, $y) = (25*$sz/34,$sz); my ($fx, $fy) = ($x,$y); ($w,$h) = ($w/2,$h/2); my $cos = cos(D2R*$angle); my $sin = sin(D2R*$angle); my @lines = (); ($x,$y) = ($fx, $fy); push @lines, $cos*$x-$sin*$y+$w, $sin*$x+$cos*$y+$h; $x = Cos_120*$fx - Sin_120*$fy; $y = Sin_120*$fx + Cos_120*$fy; push @lines, $cos*$x-$sin*$y+$w, $sin*$x+$cos*$y+$h; ($x, $y) = ($x+sqrt(3)*$y,0); push @lines, $cos*$x-$sin*$y+$w, $sin*$x+$cos*$y+$h;
$win->effects({ dwm_blur => { enable => 1, mask => Prima::Region->new( polygon => \@lines ), }}); }
my $w = Prima::MainWindow->new( text => "Hello, world!", backColor => cl::Black, onSize => sub { dwm_reset(shift) }, onPaint => sub { my $w = shift; my $W = $w->width / 4; my $H = $w->height / 4; $w->clear; $w->color(cl::Yellow); $w->bar( $W, $H, $w->width - $W, $w->height - $H); }, );
$w-> insert( Timer => timeout => 50, onTick => sub { $angle += 10; $angle -= 360 if $angle >= 360; dwm_reset($w); }, ) -> start;
run Prima;
|