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); }