Tk-Canvas-GradientColor
view release on metacpan or search on metacpan
lib/Tk/Canvas/GradientColor.pm view on Meta::CPAN
package Tk::Canvas::GradientColor;
use warnings;
use strict;
use Carp;
#=============================================================================
# $Author : Djibril Ousmanou $
# $Copyright : 2014 $
# $Update : 30/04/2014 $
# $AIM : Create gradient background color on a button in Canvas widget $
#=============================================================================
use vars qw($VERSION);
$VERSION = '1.06';
use base qw/Tk::Derived Tk::Canvas/;
use POSIX qw( ceil );
Construct Tk::Widget 'GradientColor';
my $COLOR_TAG = 'bg_gradient_color_canvas';
my $MIN_START = 0;
my $MIDDLE_START = 50;
my $MAX_START = 100;
my $NBR_COLOR = 100;
my $PERCENT = 100;
sub Populate {
my ( $cw, $ref_parameters ) = @_;
$cw->SUPER::Populate($ref_parameters);
$cw->Advertise( 'canvas' => $cw );
$cw->Advertise( 'Canvas' => $cw );
# remove highlightthickness if necessary
if ( !exists $ref_parameters->{-highlightthickness} ) {
$cw->configure( -highlightthickness => 0 );
}
$cw->Delegates( DEFAULT => $cw );
$cw->{GradientColorCanvas}{activation} = 1;
foreach my $key (qw{ Down End Home Left Next Prior Right Up }) {
$cw->Tk::bind( 'Tk::Canvas::GradientColor', "<Key-$key>", undef );
$cw->Tk::bind( 'Tk::Canvas::GradientColor', "<Control-Key-$key>", undef );
}
$cw->Tk::bind( '<Configure>' => \&set_gradientcolor );
return;
}
sub get_gradientcolor {
my $cw = shift;
return $cw->{GradientColorCanvas}{gradient};
}
sub disabled_gradientcolor {
my $cw = shift;
$cw->{GradientColorCanvas}{activation} = '0';
if ( $cw->find( 'withtag', $COLOR_TAG ) ) { $cw->delete($COLOR_TAG); }
return 1;
}
sub enabled_gradientcolor {
my $cw = shift;
$cw->{GradientColorCanvas}{activation} = 1;
$cw->set_gradientcolor;
return 1;
}
sub set_gradientcolor {
my ( $cw, %gradient ) = @_;
if ( $cw->{GradientColorCanvas}{activation} == 0 ) { return; }
my $ref_gradient = $cw->_treat_parameters_bg( \%gradient );
( run in 0.641 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )