Tk-Win32RotLabel

 view release on metacpan or  search on metacpan

Win32RotLabel.pm  view on Meta::CPAN

package Tk::Win32RotLabel;

our $VERSION = 0.4;

use Tk;
use Tk::widgets qw/Label/;
use base qw/Tk::Derived Tk::Label/;
use Win32::API;

use strict;
use Carp;

our (
     $CreateFont,
     $SelectObject,
     $DeleteObject,
     $GetDC,
     $ReleaseDC,
     $ExtTextOut,
     $GetTextExtent,
     $SetBkColor,
     $SetTextColor,

     %configured,
    );

Construct Tk::Widget 'Win32RotLabel';

# load the proper Win32::API suroutines at init.
sub ClassInit {
  my ($class, $mw) = @_;

  $class->SUPER::ClassInit($mw);

  $CreateFont    = new Win32::API('gdi32' , 'CreateFont',   [('N') x 13,
							     'P'], 'N');
  $SelectObject  = new Win32::API('gdi32' , 'SelectObject', [qw/N N/], 'N');
  $DeleteObject  = new Win32::API('gdi32' , 'DeleteObject', ['P'], 'I');
  $GetDC         = new Win32::API('user32', 'GetDC',        ['N'], 'N');
  $ReleaseDC     = new Win32::API('user32', 'ReleaseDC',    [qw/N N/], 'I');
  $ExtTextOut    = new Win32::API('gdi32' , 'ExtTextOut',   [qw/N I I N P P
							     I P/], 'I');
  $GetTextExtent = new Win32::API('user32', 'GetTabbedTextExtent', [qw/N P N
								    N P/], 'I');
  $SetBkColor    = new Win32::API('gdi32', 'SetBkColor', [qw/N N/], 'N');
  $SetTextColor  = new Win32::API('gdi32', 'SetTextColor', [qw/N N/], 'N');
}

sub Populate {
  my ($w, $args) = @_;

  # clean up any images the user adds .. that's not the point.
  delete $args->{-image};
  $args->{-bitmap} = 'transparent';

  $w->SUPER::Populate($args);

  $w->ConfigSpecs(
    -angle        => [qw/METHOD angle Angle/, 0],
    -text         => [qw/METHOD text Text/, ''],
    -textvariable => [qw/METHOD textvariabel Textvariable/, undef],
    -font         => [qw/PASSIVE font Font/, ['Times New Roman']],
   );

  my $top = $w->toplevel;
  unless ($configured{$top}) {
    $top->bind('<Configure>'  => [\&_updateDescendants, $top]);



( run in 0.404 second using v1.01-cache-2.11-cpan-d7a12ab2c7f )