#!/usr/bin/perl -w

package CursorView;

use QCursor;
use QFrame;
use QLabel;
use QWindow;

@ISA = qw(QWindow);

$cb_width = 32;
$cb_height = 32;

$cb_bits =
    "\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf8\x0f\x00" .
    "\x00\x06\x30\x00\x80\x01\xc0\x00\x40\x00\x00\x01" .
    "\x20\x00\x00\x02\x10\x00\x00\x04\x08\x3e\x3e\x08" .
    "\x08\x03\xe0\x08\xc4\x00\x00\x11\x04\x1e\x78\x10" .
    "\x02\x0c\x30\x20\x02\x40\x00\x20\x02\x40\x00\x20" .
    "\x02\x40\x00\x20\x02\x20\x04\x20\x02\x20\x04\x20" .
    "\x02\x10\x08\x20\x02\x08\x08\x20\x02\xf0\x07\x20" .
    "\x04\x00\x00\x10\x04\x00\x00\x10\x08\x00\xc0\x08" .
    "\x08\x3c\x30\x08\x10\xe6\x19\x04\x20\x00\x0f\x02" .
    "\x40\x00\x00\x01\x80\x01\xc0\x00\x00\x06\x30\x00" .
    "\x00\xf8\x0f\x00\x00\x00\x00\x00";

$cm_width = 32;
$cm_height = 32;

$cm_bits =
    "\x00\x00\x00\x00\x00\xf8\x1f\x00\x00\xfe\x3f\x00" .
    "\x80\x07\xf0\x00\xc0\x01\xc0\x01\x60\x00\x00\x03" .
    "\x30\x00\x00\x06\x18\x00\x00\x0c\x0c\x3e\x3e\x18" .
    "\x0e\x03\xe0\x18\xc6\x00\x00\x31\x07\x1e\x78\x30" .
    "\x03\x0c\x30\x60\x03\x40\x00\x60\x03\x40\x00\x60" .
    "\x03\x40\x00\x60\x03\x20\x04\x60\x03\x20\x04\x60" .
    "\x03\x10\x08\x60\x03\x08\x08\x60\x03\xf0\x07\x60" .
    "\x06\x00\x00\x30\x06\x00\x00\x30\x0c\x00\xc0\x18" .
    "\x0c\x3c\x30\x18\x18\xe6\x19\x0c\x30\x00\x0f\x06" .
    "\x60\x00\x00\x03\xc0\x01\xc0\x01\x80\x07\xf0\x00" .
    "\x00\xfe\x3f\x00\x00\xf8\x0f\x00";

sub new {
    my $self = shift->SUPER::new();
    my @list =
	(
	 {'cursor' => $Cursor{arrow},     'name'   => 'arrowCursor'    },
	 {'cursor' => $Cursor{upArrow},   'name'   => 'upArrowCursor'  },
	 {'cursor' => $Cursor{cross},     'name'   => 'crossCursor'    },
	 {'cursor' => $Cursor{'wait'},    'name'   => 'waitCursor'     },
	 {'cursor' => $Cursor{ibeam},     'name'   => 'ibeamCursor'    },
	 {'cursor' => $Cursor{sizeVer},   'name'   => 'sizeVerCursor'  },
	 {'cursor' => $Cursor{sizeHor},   'name'   => 'sizeHorCursor'  },
	 {'cursor' => $Cursor{sizeBDiag}, 'name'   => 'sizeBDiagCursor'},
	 {'cursor' => $Cursor{sizeFDiag}, 'name'   => 'sizeFDiagCursor'},
	 {'cursor' => $Cursor{sizeAll},   'name'   => 'sizeAllCursor'  },
	 );

    $self->setCaption('CursorView');

    my $label;
    my $i = 0;
    my($x, $y);
    for($y = 0; $y < 2; $y++) {
	for($x = 0; $x < 5; $x++) {
	    $label = new QLabel($self);
	    $label->setCursor($list[$i]{'cursor'});
	    $label->setText($list[$i]{'name'});
	    $label->setAlignment($Align{Center});
	    $label->setFrameStyle($QFrame{Box} | $QFrame{Raised});
	    $label->setGeometry(10+$x*110, 10+$y*50, 100, 40);
	    $i++;
	}
    }

    my $cb = new QBitmap($cb_width, $cb_height, $cb_bits, 1);
    my $cm = new QBitmap($cm_width, $cm_height, $cm_bits, 1);
    my $custom = new QCursor($cb, $cm);

    $label = new QLabel($self);
    $label->setCursor($custom);
    $label->setText('Custom bitmap cursor');
    $label->setAlignment($Align{Center});
    $label->setFrameStyle($QFrame{Box} | $QFrame{Raised});
    $label->setGeometry(10, 110, 540, 40);
    $label->setImmortal();

    $self->resize(20+5*110, 20+3*50);

    return $self;
}

package main;

use Qt;

$v = new CursorView;
$qApp->setMainWidget($v);
$v->show();
exit $qApp->exec();
