Update of /cvsroot/perl-win32-gui/Win32-GUI-DIBitmap/samples
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv32157/samples

Added Files:
        INFO2.PL Zapotec.zip demo.pl demo2.pl info.pl piv.pl test1.pl 
        test10.pl test11.pl test12.pl test13.pl test14.pl test15.pl 
        test2.pl test3.pl test4.pl test5.pl test6.pl test7.pl test8.pl 
        test9.pl zipimage.PL 
Log Message:
Added to repository

--- NEW FILE: test11.pl ---
#perl -w
#
#  Test with Win32::GUI
#
# Functions Test :
#    - newFromBitmap
#    - CopyToDC
#    - AlphaCopyToDC
#    - AlphaStretchToDC

use Win32::GUI;
use Win32::GUI::DIBitmap;


$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";


$dib      = newFromFile Win32::GUI::DIBitmap ('bmp/zapotec.bmp') or die 
"newFromFile";
$dibalpha = newFromFile Win32::GUI::DIBitmap ('bmp/small.tga')   or die 
"newFromFile";

print "transparent : ", $dibalpha->IsTransaparent(), "\n";
print "BPP : ", $dibalpha->GetBPP(), "\n";

$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    Paint();
}

sub Window_Activate {
    Paint();
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}

sub Paint {

    ($width, $height) = ($W->GetClientRect)[2..3];
    $dc = new Win32::GUI::DC ($W);

    $dib->StretchToDC($dc, 10, 10, $width - 20, $height - 20);
    $dibalpha->CopyToDC($dc);
    $dibalpha->AlphaCopyToDC($dc, 200);
    $dibalpha->AlphaStretchToDC($dc, 0, 200, 260, 200 );
}


--- NEW FILE: info.pl ---
#perl -w

use Win32::GUI::DIBitmap;

print Win32::GUI::DIBitmap::GetVersion(), "\n";

print Win32::GUI::DIBitmap::GetCopyright(), "\n";

$count = Win32::GUI::DIBitmap::GetFIFCount();

print "Format\tReading\tWriting\tDescription\n";

for ($fif = 0; $fif < $count; $fif++) {

  $format = Win32::GUI::DIBitmap::GetFormatFromFIF($fif);

  $desc  = Win32::GUI::DIBitmap::FIFDescription($fif);

  $read = "N";
  $read = "Y" if (Win32::GUI::DIBitmap::FIFSupportsReading($fif));
  $write = "N";
  $write = "Y" if (Win32::GUI::DIBitmap::FIFSupportsWriting($fif));

  $export = "";
  $export .= " 1"  if (Win32::GUI::DIBitmap::FIFSupportsExportBPP($fif, 1));
  $export .= " 4" if (Win32::GUI::DIBitmap::FIFSupportsExportBPP($fif, 4));
  $export .= " 8" if (Win32::GUI::DIBitmap::FIFSupportsExportBPP($fif, 8));
  $export .= " 16" if (Win32::GUI::DIBitmap::FIFSupportsExportBPP($fif, 16));
  $export .= " 24" if (Win32::GUI::DIBitmap::FIFSupportsExportBPP($fif, 24));
  $export .= " 32" if (Win32::GUI::DIBitmap::FIFSupportsExportBPP($fif, 32));
  $export = " [Export =$export]" unless ($export eq "");

  print "$format\t$read\t$write\t$desc$export\n";  
}


--- NEW FILE: test4.pl ---
#perl -w
#
#  Test with Win32::GUI 
# 
# Functions Test :
#    - newFromFile
#    - ConvertToBitmap


use Win32::GUI;
use Win32::GUI::DIBitmap;


$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";


($width, $height) = ($W->GetClientRect)[2..3];

$dib = newFromFile Win32::GUI::DIBitmap ("bmp/zapotec.jpg") or die "Load 
zapotec.jpg";
$hbitmap = $dib->ConvertToBitmap();
undef $dib;

# $hbitmap = new Win32::GUI::Bitmap('bmp/zapotec.bmp') or die ("new Bitmap");

$BITMAP = $W->AddLabel (
    -pos     => [0 , 0],
    -size    => [$width, $height],
    -bitmap  => $hbitmap,
    -name    => "Bitmap",
    -visible => 1,
);

$BITMAP->SetImage ($hbitmap);

$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    $W->Bitmap->Resize($W->ScaleWidth, $W->ScaleHeight);
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}



--- NEW FILE: test1.pl ---
#perl -w
#
# Test standalone :  
#
# Functions Test :
#    - GetVersion
#    - GetCopyright
#    - GetFIFCount
#    - GetFormatFromFIF
#    - GetFIFFromFormat
#    - FIFExtensionList
#    - FIFDescription
#    - FIFRegExpr
#    - FIFSupportsWriting
#    - FIFSupportsReading
#    - new
#    - SaveToFile

use Win32::GUI::DIBitmap;

print Win32::GUI::DIBitmap::GetVersion(), "\n";

print Win32::GUI::DIBitmap::GetCopyright(), "\n";

$count = Win32::GUI::DIBitmap::GetFIFCount();

print "count = $count\n";

for ($i = 0; $i < $count; $i++) {

  $format = Win32::GUI::DIBitmap::GetFormatFromFIF($i);

  $fif   = Win32::GUI::DIBitmap::GetFIFFromFormat($format);

  $ext   = Win32::GUI::DIBitmap::FIFExtensionList($fif);
  $desc  = Win32::GUI::DIBitmap::FIFDescription($fif);
  $reg   = Win32::GUI::DIBitmap::FIFRegExpr($fif);
  $read  = Win32::GUI::DIBitmap::FIFSupportsReading($fif);
  $write = Win32::GUI::DIBitmap::FIFSupportsWriting($fif);

  print "$i : Format = $format FIF = $fif Extention = $ext Description = $desc 
RegExp = $reg Reading = $read Writing = $write\n";
}



$dib = new Win32::GUI::DIBitmap (100,100,24,255,255,255);

for ($i = 0; $i < $count; $i++) {

  ($ext, $misc) = split /,/, Win32::GUI::DIBitmap::FIFExtensionList($i), 2;
  $f = "res$i.$ext";

  $res = $dib->SaveToFile($f, $i);
  print "save $f = $res\n";
  unlink $f;
}




--- NEW FILE: test13.pl ---
#perl -w
#
#  Test with Win32::GUI and GD
#
# Functions Test :
#    - newFromGD
#    - CopyFromGD
#    - StretchToDC

use GD;
use Win32::GUI;
use Win32::GUI::DIBitmap;

# create a new image
$im = new GD::Image(100,100);

# allocate some colors
$white = $im->colorAllocate(255,255,255);
$black = $im->colorAllocate(0,0,0);
$red   = $im->colorAllocate(255,0,0);
$blue  = $im->colorAllocate(0,0,255);
$green = $im->colorAllocate(0,255,0);

# make the background transparent and interlaced
$im->transparent($white);
$im->interlaced('true');

# Put a black frame around the picture
$im->rectangle(0,0,99,99,$black);

# Draw a blue oval
$im->arc(50,50,95,75,0,360,$blue);

$im->string(gdSmallFont,2,10,"Top",$black);

# And fill it with red
$im->fill(50,50,$red);
$color = 0;

# Allocate a DIBitmap and copy GD image (no inflate/deflate)
$dib = newFromGD Win32::GUI::DIBitmap ($im) or die "newFromData";

$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -pos      => [100, 100],
    -size     => [200, 230],
    -name     => "Window",
) or die "new Window";

$W->AddButton (
    -name     => "BtnColor",
    -pos      => [0, 0],
    -size     => [200, 20],
    -text     => "Change Color !!!"
) or die "new AddButton";


$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    ($width, $height) = ($W->GetClientRect)[2..3];
    $W->BtnColor->Resize($width, 20);
     Paint();
}

sub Window_Activate {
    Paint();
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}

sub Paint {

    ($width, $height) = ($W->GetClientRect)[2..3];
    $dc = new Win32::GUI::DC ($W);

    $dib->StretchToDC($dc, 0, 30, $width, $height - 30);
}


sub BtnColor_Click {

  # Change color
  if ($color) {
    $im->fill(50,50,$red);
    print "Color change to red \n";
  }
  else {
    $im->fill(50,50,$green);
    print "Color change to green\n";
  }

  # Copy GD data only (no allocation, no inflate/deflate)
  $dib->CopyFromGD($im);

  $color = 1 - $color;
  Paint();

}

--- NEW FILE: Zapotec.zip ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: test2.pl ---
#perl -w
#
# Test standalone :  Load and save in different format
#
# Functions Test :
#    - GetVersion
#    - GetCopyright
#    - newFromFile
#    - SaveToFile
#
use Cwd;
use Win32::GUI::DIBitmap;

  print Win32::GUI::DIBitmap::GetVersion(), "\n";
  print Win32::GUI::DIBitmap::GetCopyright(), "\n";


  $dir_in = cwd();
  $dir_in  .= "/bmp/";
  $dir_in =~ tr/\//\\/;

  $dir_out = cwd();
  $dir_out .= "/";
  $dir_out =~ tr/\//\\/;

  chdir $dir_in;
  opendir (REP, $dir_in) or die "error opendir";

  @Fichier = grep { -f $_ } readdir (REP);

  closedir (REP);

  $i = 0;

  foreach $fichier (@Fichier) {

    $i ++;
    print $dir_in.$fichier, "\n";

    $dib = Win32::GUI::DIBitmap->newFromFile ($dir_in.$fichier);
    if (defined $dib) {

      $f = $dir_out.$i.".bmp";
      $dib->SaveToFile($f);
      undef $dib;
    }
  }



--- NEW FILE: test7.pl ---
#perl -w
#
#  Test with Win32::GUI
#
# Functions Test :
#    - newFromBitmap
#    - StretchToDC


use Win32::GUI;
use Win32::GUI::DIBitmap;


$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";


$dib = newFromFile Win32::GUI::DIBitmap ('bmp/zapotec.bmp') or die 
"newFromFile";


$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    Paint();
}

sub Window_Activate {
    Paint();
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}

sub Paint {

    ($width, $height) = ($W->GetClientRect)[2..3];
    $dc = new Win32::GUI::DC ($W);

    $dib->StretchToDC($dc, 10, 10, $width - 20, $height - 20);
    $dib->StretchToDC($dc);
    $dib->StretchToDC($dc, 0, ($height / 2) - 30, 50, 50);
    $dib->StretchToDC($dc, 0, $height - 50      , 50, 50, 20, 20, 20, 20);
}


--- NEW FILE: demo2.pl ---
#perl -w
#######################################################################
#
#                           Perl Image Viewer
#
#######################################################################

use strict;
use Cwd;
use Win32::GUI;
use Win32::GUI::DIBitmap;

my @PIVReadFilter;
my $PIVDirectory;
my $PIVDib;

PIVInit ();

my $Menu =  Win32::GUI::MakeMenu(
    "&File"                   => "File",
    "   > &Open..."           => "FileOpen",
    "   > -"                  => 0,
    "   > &Directory..."      => "FileDirectory",
    "   > -"                  => 0,
    "   > E&xit"              => "FileExit",
    );

my $Window = new Win32::GUI::Window (
              -name     => "Window",
              -title    => "Perl Image Viewer Demo",
              -pos      => [100, 100],
              -size     => [400, 400],
              -menu     => $Menu,
              );

# $Window->AddGraphic (
  Win32::GUI::Graphic->new ($Window,
              -name     => "Graphic",
              -pos      => [0, 0],
              -size     => [$Window->ScaleWidth,$Window->ScaleHeight],
              );

$Window->Show();
Win32::GUI::Dialog();

#######################################################################
#
#  PIV Functions
#
#######################################################################

sub PIVInit {

  #
  # Init PIVLoadFilter and PIVSaveFilter
  #

  my %ReadFilter;
  my $count = Win32::GUI::DIBitmap::GetFIFCount();
  my $liste = "";

  for (my $fif = 0; $fif < $count; $fif++) {

    my $ext   = Win32::GUI::DIBitmap::FIFExtensionList($fif);
    my $desc  = Win32::GUI::DIBitmap::FIFDescription($fif);
    my $read  = Win32::GUI::DIBitmap::FIFSupportsReading($fif);
    my $write = Win32::GUI::DIBitmap::FIFSupportsWriting($fif);

    $desc .= " (*." . join (',*.', split ( ',', $ext)) . ")";
    $ext = "*." . join (';*.', split ( ',', $ext));

    if (Win32::GUI::DIBitmap::FIFSupportsReading($fif)) {
      $ReadFilter {"$desc"} = $ext;
      $liste .= ";$ext";
    }

  }

  $ReadFilter {"All PIV Files"} = $liste;

  foreach my $i (sort keys %ReadFilter) {
    push @PIVReadFilter, $i, $ReadFilter{$i};
  }

  #
  # init PIVDirectory
  #

  $PIVDirectory = cwd();
  $PIVDirectory =~ tr/\//\\/;
}

sub PIVAdjustDisplay {

  if (defined $PIVDib) {
     my $w = $Window->Width - $Window->ScaleWidth;
     my $h = $Window->Height - $Window->ScaleHeight;
     $Window->Resize ($PIVDib->Width + $w, $PIVDib->Height + $h);
  }

}

sub PIVFinish {
  undef $PIVDib;
  return -1;
}

#######################################################################
#
#  Window Event
#
#######################################################################

sub Window_Terminate { return PIVFinish(); }

sub Window_Resize {

  $Window->Graphic->Resize ($Window->ScaleWidth, $Window->ScaleHeight);

}

#######################################################################
#
#  Graphic Event
#
#######################################################################

sub Graphic_Paint {

  my $DC = $Window->Graphic->GetDC();

  if (defined $PIVDib) {

    $PIVDib->CopyToDC($DC);
  }

  $DC->Validate();
}

#######################################################################
#
#  File Menu
#
#######################################################################

sub FileOpen_Click {

  my $ret = Win32::GUI::GetOpenFileName(
                 -title     => "Open Image File",
                 -filter    => [EMAIL PROTECTED],
                 -directory => $PIVDirectory,
                 );
  if ($ret) {
    undef $PIVDib;
    $PIVDib = newFromFile Win32::GUI::DIBitmap ($ret);
    PIVAdjustDisplay ();
  }
  elsif (Win32::GUI::CommDlgExtendedError()) {
     Win32::GUI::MessageBox (0,
                        "ERROR : ".Win32::GUI::CommDlgExtendedError(),
                        "GetOpenFileName Error");
  }

}

sub FileDirectory_Click {

  my $ret = Win32::GUI::BrowseForFolder (
                        -title     => "Select default directory",
                        -directory => $PIVDirectory,
                        -folderonly => 1,
                        );

  $PIVDirectory = $ret if ($ret);
}

sub FileExit_Click {
  return PIVFinish();
}


--- NEW FILE: test8.pl ---
#perl -w
#
#  Test with Win32::GUI and GD
#
# Functions Test :
#    - newFromData
#    - StretchToDC

use GD;
use Win32::GUI;
use Win32::GUI::DIBitmap;

# create a new image
$im = new GD::Image(100,100);

# allocate some colors
$white = $im->colorAllocate(255,255,255);
$black = $im->colorAllocate(0,0,0);
$red = $im->colorAllocate(255,0,0);
$blue = $im->colorAllocate(0,0,255);

# make the background transparent and interlaced
$im->transparent($white);
$im->interlaced('true');

# Put a black frame around the picture
$im->rectangle(0,0,99,99,$black);

# Draw a blue oval
$im->arc(50,50,95,75,0,360,$blue);

# And fill it with red
$im->fill(50,50,$red);

$dib = newFromData Win32::GUI::DIBitmap ($im->png) or die "newFromData";

undef $im;

$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -pos      => [100, 100],
    -size     => [200, 200],
    -name     => "Window",
) or die "new Window";


$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    Paint();
}

sub Window_Activate {
    Paint();
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}

sub Paint {

    ($width, $height) = ($W->GetClientRect)[2..3];
    $dc = new Win32::GUI::DC ($W);

    $dib->StretchToDC($dc, 0, 0, $width, $height);
}


--- NEW FILE: zipimage.PL ---
#perl -v
#
# Load image from a zip file.
# 
use Win32::GUI;
use Win32::GUI::DIBitmap;
use Archive::Zip;

$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap load from a zipfile",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";

($width, $height) = ($W->GetClientRect)[2..3];

# Open Zipfile
$zip = Archive::Zip->new( 'zapotec.zip' ) or die "ZipFile";
# Open image file in zipfile
$member = $zip->memberNamed( 'Zapotec.JPG' ) or die "member ZipFile";
# Load data image in memory
$data = $member->contents();
# Load  data immage in a dibbitmap
$dib = newFromData Win32::GUI::DIBitmap ($data) or die "Load zapotec.jpg";
$hbitmap = $dib->ConvertToBitmap();

undef $member;
undef $zip;
undef $data;
undef $dib;

$BITMAP = $W->AddLabel (
    -pos     => [0 , 0],
    -size    => [$width, $height],
    -bitmap  => $hbitmap,
    -name    => "Bitmap",
    -visible => 1,
);

$BITMAP->SetImage ($hbitmap);

$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    $W->Bitmap->Resize($W->ScaleWidth, $W->ScaleHeight);
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}



--- NEW FILE: test10.pl ---
#perl -w
#
#  Test with Win32::GUI
#
# Functions Test :
#    - newFromWindow
#    - SaveToFile

use Win32::GUI;
use Win32::GUI::DIBitmap;

$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test : newFromWindow",
    -pos      => [100, 100],
    -size     => [200, 200],
    -name     => "Window",
) or die "new Window";

$button = $W->AddButton (
    -name => "Capture1",
    -text => "Click here for capture this button",
    -pos  => [20, 40],
);

$W->AddButton (
    -name => "Capture2",
    -text => "Click here for capture this window",
    -pos  => [20, 80],
);

$W->AddButton (
    -name => "Capture3",
    -text => "Click here for capture the screen",
    -pos  => [20, 120],
);

$W->Show();
Win32::GUI::Dialog();


sub Window_Terminate {
    -1
}

sub Capture1_Click {

  my $dib = newFromWindow Win32::GUI::DIBitmap ($button) or die "newFromWindow";
  $dib->SaveToFile ('button0.bmp');
}

sub Capture2_Click {

  my $dib = newFromWindow Win32::GUI::DIBitmap ($W) or die "newFromWindow";
  $dib->SaveToFile ('window0.bmp');

  $dib = newFromWindow Win32::GUI::DIBitmap ($W, 1) or die "newFromWindow";
  $dib->SaveToFile ('window1.bmp');
}

sub Capture3_Click {

  my $hwnd = Win32::GUI::GetDesktopWindow();
  my $dib = newFromWindow Win32::GUI::DIBitmap ($hwnd) or die "newFromWindow";
  $dib->SaveToFile ('screen.bmp');
  $dib->SaveToFile ('screen.png');
  $dib->SaveToFile ('screen.jpg');
  $dib->SaveToFile ('screen.tif');
}

--- NEW FILE: test5.pl ---
#perl -w
#
#  Test with Win32::GUI
#
# Functions Test :
#    - newFromBitmap
#    - ConvertToBitmap
#    - ConvertTo24Bits
#    - SaveToFile  with fif and flag


use Win32::GUI;
use Win32::GUI::DIBitmap;


$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";


($width, $height) = ($W->GetClientRect)[2..3];


$hbitmap = new Win32::GUI::Bitmap('bmp/zapotec.bmp') or die ("new Bitmap");

$dib = newFromBitmap Win32::GUI::DIBitmap ($hbitmap) or die "newFromBitmap";
undef $hbitmap;
$hbitmap = $dib->ConvertToBitmap() or die "ConvertToBitmap";

$dib->SaveToFile ("test5_1.jpg", FIF_JPEG, JPEG_QUALITYSUPERB ) or die 
"SaveToFile";
$dib->SaveToFile ("test5_2.jpg", FIF_JPEG, JPEG_QUALITYGOOD ) or die 
"SaveToFile";
$dib->SaveToFile ("test5_3.jpg", FIF_JPEG, JPEG_QUALITYNORMAL ) or die 
"SaveToFile";
$dib->SaveToFile ("test5_4.jpg", FIF_JPEG, JPEG_QUALITYAVERAGE) or die 
"SaveToFile";
$dib->SaveToFile ("test5_5.jpg", FIF_JPEG, JPEG_QUALITYBAD ) or die 
"SaveToFile";
undef $dib;

$BITMAP = $W->AddLabel (
    -pos     => [0 , 0],
    -size    => [$width, $height],
    -bitmap  => $hbitmap,
    -name    => "Bitmap",
    -visible => 1,
);

$BITMAP->SetImage ($hbitmap);

$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    $W->Bitmap->Resize($W->ScaleWidth, $W->ScaleHeight);
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}



--- NEW FILE: test12.pl ---
#perl -w
#
#  Test with Win32::GUI and Multi-Page system
#
# Functions Test :
#    - newFromFile
#    - AppendPage
#    - GetPageCount
#    - LockPage 
#    - UnlockPage
#    - GetLockedPageNumbers 


use Win32::GUI;
use Win32::GUI::DIBitmap;

$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";


($width, $height) = ($W->GetClientRect)[2..3];

# Create a MDIB bitmap

$mdib = new Win32::GUI::MDIBitmap ("mdib.tiff", FIF_TIFF,) or die "new";

for $i (1..5) {
  my $dib = newFromFile Win32::GUI::DIBitmap ("bmp/$i.bmp");
  $mdib->AppendPage ($dib);
}

undef $mdib;

# Load a MDIB bitmap

$mdib = newFromFile Win32::GUI::MDIBitmap ("mdib.tiff") or die "newFromFile";

print "Nb page :", $mdib->GetPageCount(), "\n";

my $i = 0;

$Button = $W->AddButton (
    -name    => "Button",
    -text    => "Next",
    -visible => 1,
    -pos     => [0 , 0],
);

$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    Paint();
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}

sub Button_Click {

  $i = $i + 1;
  $i = 0 if ($i >= $mdib->GetPageCount());

  print "Current page :", $i, "\n";
  Paint();
}

sub Paint {

    ($width, $height) = ($W->GetClientRect)[2..3];
    $dc = new Win32::GUI::DC ($W);

    my $dib = $mdib->LockPage($i);

    print $mdib->GetLockedPageNumbers(), "\n";

    $dib->AlphaCopyToDC($dc, 50, 50);
    $dib->SaveToFile ("test.bmp");

    $mdib->UnlockPage($dib);
}

--- NEW FILE: INFO2.PL ---
# perl -v

#
# Chech save bit support.
# 16-32 bits JPEG automaticly converted in SaveToFile
# 16 bits PNG automaticly converted in SaveToFile

use Win32::GUI::DIBitmap;

print "FreeImage ", Win32::GUI::DIBitmap::GetVersion(), "\n";

$count = Win32::GUI::DIBitmap::GetFIFCount();

print "Format\tWriting info\n";

$dib1  = new Win32::GUI::DIBitmap (100,100,1);
$dib4  = new Win32::GUI::DIBitmap (100,100,4);
$dib8  = new Win32::GUI::DIBitmap (100,100,8);
$dib16 = new Win32::GUI::DIBitmap (100,100,16);
$dib24 = new Win32::GUI::DIBitmap (100,100,24);
$dib32 = new Win32::GUI::DIBitmap (100,100,32);
$f = "tmp";

for ($fif = 0; $fif < $count; $fif++) {

  $format = Win32::GUI::DIBitmap::GetFormatFromFIF($fif);

  $desc  = Win32::GUI::DIBitmap::FIFDescription($fif);

  if (Win32::GUI::DIBitmap::FIFSupportsWriting($fif)) {
    $write = '';
    $write .= "1 "  if ( $dib1->SaveToFile($f, $fif)  ); unlink $f;
    $write .= "4 "  if ( $dib4->SaveToFile($f, $fif)  ); unlink $f;
    $write .= "8 "  if ( $dib8->SaveToFile($f, $fif)  ); unlink $f;
    $write .= "16 " if ( $dib16->SaveToFile($f, $fif) ); unlink $f;
    $write .= "24 " if ( $dib24->SaveToFile($f, $fif) ); unlink $f;
    $write .= "32 " if ( $dib32->SaveToFile($f, $fif) ); unlink $f;
    print "$format\t$write\n";  
  }
}


--- NEW FILE: test14.pl ---
#perl -w
#
#  Test some effects
#

use strict;
use Win32::GUI;
use Win32::GUI::DIBitmap;

my $Menu =  Win32::GUI::MakeMenu(
    "&Effect"                  => "Effect",
    "   > &Restore"            => "EffectRestore",
    "   > -"                   => 0,
    "   > Dither"              => "EffectDither",
    "   > Threshold (50)"      => "EffectThreshold",
    "   > -"                   => 0,
    "   > AdjustGamma (0.5)"      => "EffectAdjustGamma1",
    "   > AdjustGamma (1.5)"      => "EffectAdjustGamma2",
    "   > AdjustBrightness (-50)" => "EffectAdjustBrightness1",
    "   > AdjustBrightness (50)"  => "EffectAdjustBrightness2",
    "   > AdjustContrast (-50)"   => "EffectAdjustContrast1",
    "   > AdjustContrast (50)"    => "EffectAdjustContrast2",
    "   > Invert"            => "EffectInvert",
    "   > -"                 => 0,
    "   > Copy"              => "EffectCopy",
    "   > Paste"             => "EffectPaste",
    "   > -"                 => 0,
    "   > Rotate(45)"        => "EffectRotate",
    "   > RotateEx(45, 10, 10, 10, 10, 1)"        => "EffectRotateEx",
    "   > FlipHorizontal"    => "EffectFlipHorizontal",
    "   > FlipVertical"      => "EffectFlipVertical",
    "   > -"                 => 0,
    "   > Rescale (W+10, H+10)" => "EffectRescaleUp",
    "   > Rescale (W-10, H-10)" => "EffectRescaleDown",
    "   > -"                  => 0,
    "   > E&xit"              => "EffectExit",
    );

my $W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
    -menu     => $Menu,
) or die "new Window";

my $G = Win32::GUI::Graphic->new ($W,
              -name     => "Graphic",
              -pos      => [0, 0],
              -size     => [$W->ScaleWidth,$W->ScaleHeight],
              );

my $dib;
EffectRestore_Click();


$W->Show();
Win32::GUI::Dialog();


sub Window_Terminate {
    return -1;
}

sub Window_Resize {
  $G->Resize ($W->ScaleWidth, $W->ScaleHeight);
}

sub Graphic_Paint {

  my $dc = $G->GetDC();
  my ($width, $height) = ($G->GetClientRect)[2..3];

  $dib->StretchToDC($dc, 0, 0, $width, $height) if defined $dib;

  $dc->Validate();
}

sub EffectExit_Click {
    return -1;
}

sub EffectRestore_Click {
  $dib = newFromFile Win32::GUI::DIBitmap ('bmp/zapotec.bmp') or die 
"newFromFile";
  $dib = $dib->ConvertTo32Bits();
  $G->InvalidateRect(1);
}

sub EffectDither_Click {
  $dib = $dib->Dither() if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectThreshold_Click {
  $dib = $dib->Threshold(50) if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectAdjustGamma1_Click {
  $dib->AdjustGamma(0.5) if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectAdjustGamma2_Click {
  $dib->AdjustGamma(1.5) if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectAdjustBrightness1_Click {
  $dib->AdjustBrightness(-50) if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectAdjustBrightness2_Click {
  $dib->AdjustBrightness(50) if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectAdjustContrast1_Click {
  $dib->AdjustContrast(-50) if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectAdjustContrast2_Click {
  $dib->AdjustContrast(50) if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectInvert_Click {
  $dib->Invert() if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectCopy_Click {
  if (defined $dib and $dib->Width > 20 and $dib->Height > 20) 
  {
    $dib = $dib->Copy(10,10,$dib->Width-10,$dib->Height-10) or die "Copy";
  }
  $G->InvalidateRect(1);
}

sub EffectPaste_Click {
  if (defined $dib and $dib->Width > 20 and $dib->Height > 20) 
  {
     my $dib2 = newFromFile Win32::GUI::DIBitmap ('bmp/zapotec.bmp') or die 
"newFromFile";
     $dib2 = $dib2->Copy(10,10,30,30);
     $dib->Paste($dib2, 10, 10, 500);
  }
  $G->InvalidateRect(1);
}

sub EffectFlipHorizontal_Click {

  $dib->FlipHorizontal() if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectFlipVertical_Click {

  $dib->FlipVertical() if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectRotate_Click {

  $dib = $dib->Rotate(45) or die "Rotate" if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectRotateEx_Click {

  $dib = $dib->RotateEx(45,10,10,10,10,1) or die "RotateEx" if defined $dib;
  $G->InvalidateRect(1);
}

sub EffectRescaleUp_Click 
{
  $dib = $dib->Rescale($dib->Width+10,$dib->Height+10) or die "Rescale" if 
defined $dib;
  $G->InvalidateRect(1);
}

sub EffectRescaleDown_Click {
  if (defined $dib and $dib->Width > 20 and $dib->Height > 20) 
  {
    $dib = $dib->Rescale($dib->Width-10,$dib->Height-10) or die "Rescale";
  }
  $G->InvalidateRect(1);
}

--- NEW FILE: test9.pl ---
#perl -w
#
#  Test with Win32::GUI
#
# Functions Test :
#    - newFromDC
#    - SaveToFile

use Win32::GUI;
use Win32::GUI::DIBitmap;

$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test: NewFromDC",
    -pos      => [100, 100],
    -size     => [200, 200],
    -name     => "Window",
) or die "new Window";

$button = $W->AddButton (
    -name => "Capture1",
    -text => "Click here for capture this button",
    -pos  => [20, 40],
);

$W->AddButton (
    -name => "Capture2",
    -text => "Click here for capture this window",
    -pos  => [20, 80],
);

$W->AddButton (
    -name => "Capture3",
    -text => "Click here for capture the screen",
    -pos  => [20, 120],
);

$W->Show();
Win32::GUI::Dialog();


sub Window_Terminate {
    -1
}

sub Capture1_Click {

  my $dc = new Win32::GUI::DC ($W);
  my $dib = newFromDC Win32::GUI::DIBitmap ($dc, 20, 40, $button->Width(), 
$button->Height()) or die "newFromDC";
  $dib->SaveToFile ('button.bmp');
}

sub Capture2_Click {

  my $dc = new Win32::GUI::DC ($W);
  my $dib = newFromDC Win32::GUI::DIBitmap ($dc) or die "newFromDC";
  $dib->SaveToFile ('window.bmp');
}

sub Capture3_Click {

  my $dc = new Win32::GUI::DC ('DISPLAY');
  my $dib = newFromDC Win32::GUI::DIBitmap ($dc) or die "newFromDC";
  $dib->SaveToFile ('screen.jpg');
}

--- NEW FILE: test3.pl ---
#perl -w
#
# Test standalone : 
#
# Functions Test :
#    - newFromFile
#    - GetFIFCount
#    - FIFSupportsWriting
#    - FIFSupportsReading
#    - SaveToData
#    - newFromData
#    - SaveToFile


use Win32::GUI::DIBitmap;

$dib = Win32::GUI::DIBitmap->newFromFile ("bmp/zapotec.jpg") or die "Load 
zapotec.jpg";
$dib = $dib->ConvertTo24Bits();

for ($i = 0; $i < Win32::GUI::DIBitmap::GetFIFCount(); $i++) {

  if (Win32::GUI::DIBitmap::FIFSupportsWriting($i) && 
      Win32::GUI::DIBitmap::FIFSupportsReading($i) &&    
      Win32::GUI::DIBitmap::FIFSupportsExportBPP($i, 24) &&
      $i != 7 && $i != 8 && $i != 11 && $i != 12 && $i != 14 && $i != 15 && $i 
!= 17) {

     $format = Win32::GUI::DIBitmap::GetFormatFromFIF($i);
     print "Test format = $format\n";

     $data = $dib->SaveToData($i) or die " SaveToData $i $format";
     $dib2 = Win32::GUI::DIBitmap->newFromData($data) or die " newFromData $i 
$format";

     $dib2->SaveToFile($i.'.bmp') or die "SaveToFile dib2 $i $format";
     undef $dib2;
     undef $data;
  }
}

--- NEW FILE: demo.pl ---
#perl -w

  use Win32::GUI;
  use Win32::GUI::DIBitmap;

  $W = new Win32::GUI::Window (
              -title    => "Win32::GUI::DIBitmap test",
              -pos      => [100, 100],
              -size     => [400, 400],
              -name     => "Window",
              );

  $dib = newFromFile Win32::GUI::DIBitmap ('bmp\Zapotec.jpg');
  $hbitmap = $dib->ConvertToBitmap();
  undef $dib;

  $W->AddButton (
    -pos     => [100, 100],
    -size    => [200, 200],
    -bitmap  => $hbitmap,
    -name    => "Button",
    -visible => 1,
    );

  $W->Show();
  Win32::GUI::Dialog();
  sub Window_Terminate { -1 }

--- NEW FILE: test15.pl ---
#perl -w
#
#  Test with Win32::GUI
#

use Win32::GUI;
use Win32::GUI::DIBitmap;


$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";

  $dib = newFromFile Win32::GUI::DIBitmap ('bmp/zapotec.bmp') or die 
"newFromFile";

  $bcolor = $dib->HasBackgroundColor();
print "hascolor = $bcolor\n";

  $color = $dib->GetPixel(10,10);

  $color = $dib->GetPixel(10,10);
  print "Color = $color\n";
  $dib->SetPixel(10, 10, 255);
  $color = $dib->GetPixel(10,10);
  print "Color = $color\n";
  $dib = $dib->ConvertTo24Bits();
print "hascolor = $bcolor\n";

  @color = $dib->GetPixel(11,10);
  print "Color = @color\n";

  $dib->SetPixel(11, 10, 255, 0, 0);
  @color = (0, 255, 0);
  $dib->SetPixel(12, 10, @color);
  @color = (0, 0, 255);
  $dib->SetPixel(13, 10, [EMAIL PROTECTED]);

$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    Paint();
}

sub Window_Activate {
    Paint();
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}

sub Paint {

    ($width, $height) = ($W->GetClientRect)[2..3];
    $dc = new Win32::GUI::DC ($W);

    $dib->StretchToDC($dc, 0, 0, $width, $height);
}


--- NEW FILE: piv.pl ---
#perl -v
#######################################################################
#
#                           Perl Image Viewer
#
#######################################################################

use strict;
use Cwd;
use Win32::GUI;
use Win32::GUI::DIBitmap;

my @PIVReadFilter;
my @PIVSaveFilter;
my $PIVDirectory;
my $PIVDib;
my $PIVFile = "";

PIVInit ();

my $Menu =  Win32::GUI::MakeMenu(
    "&File"                   => "File",
    "   > &Open..."           => "FileOpen",
    "   > -"                      => 0,
    "   > &Save"              => "FileSave",
    "   > &Save As..."        => "FileSaveAs",
    "   > -"                  => 0,
    "   > &Directory..."      => "FileDirectory",
    "   > -"                  => 0,
    "   > E&xit"              => "FileExit",
    "&Image"                  => "Image",
    "   > &Properties..."     => "ImageProperties",
    "   > -"                  => 0,
    "   > &Convert"           => "ImageConvert",
    "   >> &8bits"            => "ImageConvert8bits",
    "   >> &16bits"           => "ImageConvert16bits",
    "   >> &24bits"           => "ImageConvert24bits",
    "   >> &32bits"           => "ImageConvert32bits",
    "   > -"                  => 0,
    "   > Color &Quantize"    => "ImageColor",
    "   >> Methode WUQUANT"   => "ImageColor1",
    "   >> Methode NNQUANT"   => "ImageColor2",
    "&Help"                   => "Help",
    "   > &About PIV"         => "HelpAbout",
    );

my $Window = new Win32::GUI::Window (
              -name     => "Window",
              -title    => "Perl Image Viewer",
              -pos      => [100, 100],
              -size     => [400, 400],
              -menu     => $Menu,
              );

# $Window->AddGraphic (
  Win32::GUI::Graphic->new ($Window,
              -name     => "Graphic",
              -pos      => [0, 0],
              -size     => [$Window->ScaleWidth,$Window->ScaleHeight],
              );

my $WProp = new Win32::GUI::DialogBox(
    -title  => "Image Properties",
    -left   => 110,
    -top    => 110,
    -width  => 400,
    -height => 200,
    -name   => "WProp",
);

$WProp->AddLabel (
        -name => "pFile",
        -text => "File   :",
        -pos  => [10, 25],
        -size => [280, 20]
        );

$WProp->AddLabel (
        -name => "pWidth",
        -text => "Width  :",
        -pos  => [10, 50],
        -size => [200, 20]
        );

$WProp->AddLabel (
        -name => "pHeight",
        -text => "Height :",
        -pos  => [10, 75],
        -size => [200, 20]
        );

$WProp->AddLabel (
        -name => "pBPP",
        -text => "BPP    :",
        -pos  => [10, 100],
        -size => [200, 20]
        );

$WProp->AddButton (
        -name => "WPropClose",
        -text => "Close",
        -pos  => [125, 125],
        );


PIVMenu();

$Window->Show();
Win32::GUI::Dialog();

#######################################################################
#
#  PIV Functions
#
#######################################################################

sub PIVInit {

  #
  # Init PIVLoadFilter and PIVSaveFilter
  #

  my %ReadFilter;
  my %SaveFilter;

  my $count = Win32::GUI::DIBitmap::GetFIFCount();
  my $liste = "";

  for (my $fif = 0; $fif < $count; $fif++) {

    my $ext   = Win32::GUI::DIBitmap::FIFExtensionList($fif);
    my $desc  = Win32::GUI::DIBitmap::FIFDescription($fif);
    my $read  = Win32::GUI::DIBitmap::FIFSupportsReading($fif);
    my $write = Win32::GUI::DIBitmap::FIFSupportsWriting($fif);

    $desc .= " (*." . join (',*.', split ( ',', $ext)) . ")";
    $ext = "*." . join (';*.', split ( ',', $ext));

    if (Win32::GUI::DIBitmap::FIFSupportsReading($fif)) {
      $ReadFilter {"$desc"} = $ext;
      $liste .= ";$ext";
    }

    if (Win32::GUI::DIBitmap::FIFSupportsWriting($fif)) {
      $SaveFilter {"$desc"} = $ext;
    }
  }

#  $ReadFilter {"All PIV Files"} = $liste;

  push @PIVReadFilter, "All PIV Files", $liste;
  foreach my $i (sort keys %ReadFilter) {
    push @PIVReadFilter, $i, $ReadFilter{$i};
  }

  foreach my $i (sort keys %SaveFilter) {
    push @PIVSaveFilter, $i, $SaveFilter{$i};
  }

  #
  # init PIVDirectory
  #

  $PIVDirectory = cwd();
  $PIVDirectory =~ tr/\//\\/;
}

sub PIVMenu {

  if (defined $PIVDib) {
    $Menu->{ImageProperties}->Enabled(1);
    $Menu->{ImageConvert}->Enabled(1);

    my $bpp = $PIVDib->GetBPP();
    $Menu->{ImageColor}->Enabled($bpp == 24);
    $Menu->{ImageConvert8bits}->Enabled($bpp != 8);
    $Menu->{ImageConvert16bits}->Enabled($bpp != 16);
    $Menu->{ImageConvert24bits}->Enabled($bpp != 24);
    $Menu->{ImageConvert32bits}->Enabled($bpp != 32);

    $Menu->{FileSave}->Enabled(1);
    $Menu->{FileSaveAs}->Enabled(1);
  }
  else {
    $Menu->{ImageProperties}->Enabled(0);
    $Menu->{ImageConvert}->Enabled(0);
    $Menu->{ImageColor}->Enabled(0);
    $Menu->{FileSave}->Enabled(0);
    $Menu->{FileSaveAs}->Enabled(0);
  }
}

sub PIVAdjustDisplay {

  if (defined $PIVDib) {
     my $w = $Window->Width - $Window->ScaleWidth;
     my $h = $Window->Height - $Window->ScaleHeight;
     $Window->Resize ($PIVDib->Width + $w, $PIVDib->Height + $h);
  }

}

sub PIVFinish {
  undef $PIVDib;
  return -1;
}

#######################################################################
#
#  Window Event
#
#######################################################################

sub Window_Terminate {

  return PIVFinish();
}

sub Window_Resize {

  $Window->Graphic->Resize($Window->ScaleWidth, $Window->ScaleHeight);

}

#######################################################################
#
#  Graphic Event
#
#######################################################################

sub Graphic_Paint {

  my $DC = $Window->Graphic->GetDC();

  if (defined $PIVDib) {

    # $PIVDib->CopyToDC($DC);
    $PIVDib->AlphaCopyToDC($DC);
  }

  $DC->Validate();
}

#######################################################################
#
#  File Menu
#
#######################################################################

sub FileOpen_Click {

  my $ret = Win32::GUI::GetOpenFileName(
                 -title     => "Open Image File",
                 -filter    => [EMAIL PROTECTED],
                 -directory => $PIVDirectory,
                 );
  if ($ret) {
    undef $PIVDib;
    $PIVDib = newFromFile Win32::GUI::DIBitmap ($ret);
    $PIVFile = $ret;
    PIVAdjustDisplay ();
    PIVAdjustDisplay ();
    PIVMenu();
  }
  elsif (Win32::GUI::CommDlgExtendedError()) {
     Win32::GUI::MessageBox (0, "ERROR : ".Win32::GUI::CommDlgExtendedError(),
                            "GetOpenFileName Error");
  }

}

sub FileSave_Click {

  my $ret = Win32::GUI::MessageBox (0, "Overwrite existing file ?",
                         "About",MB_ICONQUESTION | MB_YESNOCANCEL);


  if ($ret == 6) {
    $ret = $PIVDib->SaveToFile ($PIVFile);
    unless ($ret) {
      Win32::GUI::MessageBox (0, "ERROR : SaveToFile ", "Save Error");
    }
  }
  elsif ($ret == 7) {
    FileSaveAs_Click();
  }
}

sub FileSaveAs_Click {


  my $ret = Win32::GUI::GetSaveFileName(
                 -title     => "Save Image File As",
                 -filter    => [EMAIL PROTECTED],
                 -directory => $PIVDirectory,
                 );

  if ($ret) {
    $PIVFile = $ret;
    $ret = $PIVDib->SaveToFile ($PIVFile);
    unless ($ret) {
      Win32::GUI::MessageBox (0, "ERROR : SaveToFile ", "Save Error");
    }

  }
  elsif (Win32::GUI::CommDlgExtendedError()) {
     Win32::GUI::MessageBox (0, "ERROR : ".Win32::GUI::CommDlgExtendedError(),
                            "GetSaveFileName Error");
  }

}

sub FileDirectory_Click {

  my $ret = Win32::GUI::BrowseForFolder (
                        -title     => "Select default directory",
                        -directory => $PIVDirectory,
                        -folderonly => 1,
                        );
  $PIVDirectory = $ret if ($ret);

}

sub FileExit_Click {

  return PIVFinish();
}

#######################################################################
#
#  Image Menu
#
#######################################################################

sub ImageProperties_Click {

  if (defined $PIVDib) {
    $Window->Disable();
    $WProp->pFile->Text("File    : ".$PIVFile);
    $WProp->pWidth->Text("Width   : ".$PIVDib->Width());
    $WProp->pHeight->Text("Height  : ".$PIVDib->Height());
    $WProp->pBPP->Text("BPP,Colors useds,Color type : ".$PIVDib->GetBPP().
                                ",".$PIVDib->GetColorsUsed().
                                ",".$PIVDib->GetColorType());
    $WProp->Show();
  }
}

sub ImageConvert8bits_Click {

  $PIVDib = $PIVDib->ConvertTo8Bits();
  Graphic_Paint();
  PIVMenu();
}

sub ImageConvert16bits_Click {

  $PIVDib = $PIVDib->ConvertTo16Bits555();
  Graphic_Paint();
  PIVMenu();
}

sub ImageConvert24bits_Click {

  $PIVDib = $PIVDib->ConvertTo24Bits();
  Graphic_Paint();
  PIVMenu();
}

sub ImageConvert32bits_Click {

  $PIVDib = $PIVDib->ConvertTo32Bits();
  Graphic_Paint();
  PIVMenu();
}


sub ImageColor1_Click {

  $PIVDib = $PIVDib->ColorQuantize(FIQ_WUQUANT);
  Graphic_Paint();
  PIVMenu();
}

sub ImageColor2_Click {

  $PIVDib = $PIVDib->ColorQuantize(FIQ_NNQUANT);
  Graphic_Paint();
  PIVMenu();
}

#######################################################################
#
#  Help Menu
#
#######################################################################

sub HelpAbout_Click {

  Win32::GUI::MessageBox (0, "Perl Image Viewer 1.0 by Laurent Rocher",
                         "About",MB_ICONINFORMATION);

}

#######################################################################
#
#  Image Properties
#
#######################################################################

sub WPropClose_Click {

  $WProp->Hide();
  $Window->Enable();
  $Window->SetForegroundWindow();
}

--- NEW FILE: test6.pl ---
#perl -w
#
#  Test with Win32::GUI
#
# Functions Test :
#    - newFromBitmap
#    - CopyToDC


use Win32::GUI;
use Win32::GUI::DIBitmap;


$W = new Win32::GUI::Window (
    -title    => "Win32::GUI::DIBitmap test",
    -left     => 100,
    -top      => 100,
    -width    => 400,
    -height   => 400,
    -name     => "Window",
) or die "new Window";


$dib = newFromFile Win32::GUI::DIBitmap ('bmp/zapotec.bmp') or die 
"newFromFile";


$W->Show();
Win32::GUI::Dialog();

sub Window_Resize {
    Paint();
}

sub Window_Activate {
    Paint();
}

sub Window_Terminate {
    $W->PostQuitMessage(0);
}

sub Paint {

    ($width, $height) = ($W->GetClientRect)[2..3];
    $dc = new Win32::GUI::DC ($W);

    $dib->CopyToDC($dc);
    $dib->CopyToDC($dc, ($width / 2) - 30, ($height / 2) - 30 , 60, 60);
    $dib->CopyToDC($dc, $width - 50, $height - 50, 50, 50, 20, 10);
}



Reply via email to