home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2003 November / PCWK1103B.iso / PCWK-txt / Warsztat_Cpp_Builder / Unit1.cpp < prev    next >
C/C++ Source or Header  |  2003-10-02  |  8KB  |  296 lines

  1. //---------------------------------------------------------------------------
  2.  
  3. #include <vcl.h>
  4. #pragma hdrstop
  5.  
  6. #include "Unit1.h"
  7. #include "fotoretusz.h"
  8. #include "UnitJasnosc.h"
  9. #include "UnitKontrast.h"
  10. #include "UnitNasycenie.h"
  11. #include "UnitBalans.h"
  12. #include "UnitEdytorFiltrow.h"
  13. //---------------------------------------------------------------------------
  14. #pragma package(smart_init)
  15. #pragma link "cdiroutl"
  16. #pragma resource "*.dfm"
  17. TForm1 *Form1;
  18.  
  19. //---------------------------------------------------------------------------
  20. __fastcall TForm1::TForm1(TComponent* Owner)
  21.         : TForm(Owner)
  22. {
  23. }
  24. //---------------------------------------------------------------------------
  25.  
  26.  
  27.  
  28. void __fastcall TForm1::Otwrz1Click(TObject *Sender)
  29. {
  30.   if( op->Execute() )
  31.   {
  32.      img->Picture->LoadFromFile( op->FileName );
  33.      if( !img->Picture->Bitmap->Empty )
  34.      {
  35.        img->Picture->Bitmap->PixelFormat = pf32bit;
  36.      }
  37.   }
  38. }
  39. //---------------------------------------------------------------------------
  40.  
  41.  
  42. void __fastcall TForm1::Poprawianiekolorw1Click(TObject *Sender)
  43. {
  44.   //przygotuj i za│aduj miniaturΩ rysunku
  45.   PrzygotujMiniature(img->Picture->Bitmap,FormJasnosc->rys1->Picture->Bitmap,240,180);
  46.   //pokaz okno ustawiania jasnosci
  47.   int wynik = FormJasnosc->ShowModal();
  48.   if( IsPositiveResult( wynik) )
  49.   {
  50.     // przekszta│c orygina│
  51.     DostosujJasnosc( img->Picture->Bitmap,FormJasnosc->tbJasnosc->Position*2.55 );
  52.     img->Invalidate();
  53.   }
  54. }
  55. //---------------------------------------------------------------------------
  56.  
  57. void __fastcall TForm1::Kontrast1Click(TObject *Sender)
  58. {
  59.   //przygotuj i za│aduj miniaturΩ rysunku
  60.   PrzygotujMiniature(img->Picture->Bitmap,FormKontrast->rys1->Picture->Bitmap,240,180);
  61.   //pokaz okno ustawiania jasnosci
  62.   int wynik = FormKontrast->ShowModal();
  63.   if( IsPositiveResult( wynik) )
  64.   {
  65.     // przekszta│c orygina│
  66.     DostosujKontrast( img->Picture->Bitmap,FormKontrast->tbKontrast->Position );
  67.     img->Invalidate();
  68.   }
  69. }
  70. //---------------------------------------------------------------------------
  71.  
  72.  
  73.  
  74.  
  75.  
  76. void __fastcall TForm1::Nasyceniekolorw1Click(TObject *Sender)
  77. {
  78.   //przygotuj i za│aduj miniaturΩ rysunku
  79.   PrzygotujMiniature(img->Picture->Bitmap,FormNasycenie->rys1->Picture->Bitmap,240,180);
  80.   //pokaz okno ustawiania jasnosci
  81.   int wynik = FormNasycenie->ShowModal();
  82.   if( IsPositiveResult( wynik) )
  83.   {
  84.     // przekszta│c orygina│
  85.     DostosujNasycenie( img->Picture->Bitmap,FormNasycenie->tbNasycenie->Position );
  86.     img->Invalidate();
  87.   }
  88. }
  89. //---------------------------------------------------------------------------
  90.  
  91. void __fastcall TForm1::Balanskolor1Click(TObject *Sender)
  92. {
  93.   //przygotuj i za│aduj miniaturΩ rysunku
  94.   PrzygotujMiniature(img->Picture->Bitmap,FormBalans->rys1->Picture->Bitmap,240,180);
  95.   //pokaz okno ustawiania jasnosci
  96.   int wynik = FormBalans->ShowModal();
  97.   if( IsPositiveResult( wynik) )
  98.   {
  99.     // przekszta│c orygina│
  100.     DostosujBalans( img->Picture->Bitmap,FormBalans->tbR->Position*2.55,FormBalans->tbG->Position*2.55,FormBalans->tbB->Position*2.55 );
  101.     img->Invalidate();
  102.   }
  103. }
  104. //---------------------------------------------------------------------------
  105.  
  106. void __fastcall TForm1::Zapisz1Click(TObject *Sender)
  107. {
  108.  sd->FileName = op->FileName;
  109.  if( sd->Execute() )
  110.    img->Picture->Bitmap->SaveToFile( sd->FileName );
  111. }
  112. //---------------------------------------------------------------------------
  113.  
  114. void __fastcall TForm1::Zapiszjako1Click(TObject *Sender)
  115. {
  116.  sd->FileName = "";
  117.  if( sd->Execute() )
  118.    img->Picture->Bitmap->SaveToFile( sd->FileName );
  119. }
  120. //---------------------------------------------------------------------------
  121.  
  122. void __fastcall TForm1::Edytorfiltrw1Click(TObject *Sender)
  123. {
  124.   //przygotuj i za│aduj miniaturΩ rysunku
  125.   PrzygotujMiniature(img->Picture->Bitmap,FormEdytor->rys1->Picture->Bitmap,240,180);
  126.   //pokaz okno ustawiania jasnosci
  127.   int wynik = FormEdytor->ShowModal();
  128.   if( IsPositiveResult( wynik) )
  129.   {
  130.     //przekszta│c orygina│
  131.     double f[3][3];
  132.     for( int i=0;i<3;i++)
  133.       for( int j=0; j<3; j++)
  134.       {
  135.         if( !TryStrToFloat( Trim(FormEdytor->sgFiltr->Cells[i][j]), f[i][j]) )
  136.           f[i][j] = 0.0;
  137.  
  138.       }
  139.     TMemoryStream *pms = new TMemoryStream;
  140.     pms->Position = 0;
  141.     img->Picture->Bitmap->SaveToStream( pms );
  142.     pms->Position = 0;
  143.     simg->Picture->Bitmap->LoadFromStream( pms );
  144.     delete pms;
  145.  
  146.     Filtr3x3( simg->Picture->Bitmap,img->Picture->Bitmap, f );
  147.     img->Invalidate();
  148.   }
  149. }
  150. //---------------------------------------------------------------------------
  151.  
  152.  
  153. void __fastcall TForm1::Negatyw1Click(TObject *Sender)
  154. {
  155.     // przekszta│c orygina│
  156.     Negatyw( img->Picture->Bitmap );
  157.     img->Invalidate();
  158.  
  159. }
  160. //---------------------------------------------------------------------------
  161.  
  162. void __fastcall TForm1::Odcienieszaro1Click(TObject *Sender)
  163. {
  164.     // przekszta│c orygina│
  165.     OdcienieSzarosci( img->Picture->Bitmap );
  166.     img->Invalidate();
  167. }
  168. //---------------------------------------------------------------------------
  169.  
  170. void __fastcall TForm1::Rozmyciewyostrzenie1Click(TObject *Sender)
  171. {
  172.   //przekszta│c orygina│
  173.  
  174.   double f[3][3];
  175.   //ustaw tablicΩ filtru - rozmycia
  176.   //  1  1  1
  177.   //  1  1  1
  178.   //  1  1  1
  179.   for(int i=0;i<3;i++)
  180.     for( int j=0;j<3;j++)
  181.       f[i][j] = 1;
  182.   // przygotuj rysunek ƒr≤d│owy
  183.   TMemoryStream *pms = new TMemoryStream;
  184.   pms->Position = 0;
  185.   img->Picture->Bitmap->SaveToStream( pms );
  186.   pms->Position = 0;
  187.   simg->Width = img->Width;
  188.   simg->Height = img->Height;
  189.   simg->Picture->Bitmap->LoadFromStream( pms );
  190.  
  191.   delete pms;
  192.  
  193.   //uruchom przeksztalcenie
  194.   Filtr3x3( simg->Picture->Bitmap,img->Picture->Bitmap, f );
  195.   img->Invalidate();
  196.  
  197. }
  198. //---------------------------------------------------------------------------
  199.  
  200. void __fastcall TForm1::Wyostrzenie1Click(TObject *Sender)
  201. {
  202.   //przekszta│c orygina│
  203.  
  204.   double f[3][3];
  205.   //ustaw tablicΩ filtru - wyostrzenia
  206.   // 0     -0.2   0
  207.   // -0.2   1.8  -0.2
  208.   // 0     -0.2   0
  209.   for(int i=0;i<3;i++)
  210.     for( int j=0;j<3;j++)
  211.       f[i][j] = 0;
  212.   f[0][1] = f[1][0] = f[2][1] = f[1][2] = -0.2;
  213.   f[1][1] = 1.8;
  214.  
  215.   // przygotuj rysunek ƒr≤d│owy
  216.   TMemoryStream *pms = new TMemoryStream;
  217.   pms->Position = 0;
  218.   img->Picture->Bitmap->SaveToStream( pms );
  219.   pms->Position = 0;
  220.   simg->Width = img->Width;
  221.   simg->Height = img->Height;
  222.   simg->Picture->Bitmap->LoadFromStream( pms );
  223.  
  224.   delete pms;
  225.   //uruchom przeksztalcenie
  226.   Filtr3x3( simg->Picture->Bitmap,img->Picture->Bitmap, f );
  227.   img->Invalidate();
  228. }
  229. //---------------------------------------------------------------------------
  230.  
  231. void __fastcall TForm1::Wykryciekrawdzi1Click(TObject *Sender)
  232. {
  233.    //przekszta│c orygina│
  234.  
  235.   double f[3][3];
  236.   //ustaw tablicΩ filtru - wykrycie krawedzi
  237.   // -1  0  -1
  238.   //  0  4  0
  239.   // -1  0  -1
  240.   for(int i=0;i<3;i++)
  241.     for( int j=0;j<3;j++)
  242.       f[i][j] = 0;
  243.   f[0][0] = f[2][0] = f[0][2] = f[2][2] = -1;
  244.   f[1][1] = 4;
  245.  
  246.   // przygotuj rysunek ƒr≤d│owy
  247.   TMemoryStream *pms = new TMemoryStream;
  248.   pms->Position = 0;
  249.   img->Picture->Bitmap->SaveToStream( pms );
  250.   pms->Position = 0;
  251.   simg->Width = img->Width;
  252.   simg->Height = img->Height;
  253.   simg->Picture->Bitmap->LoadFromStream( pms );
  254.  
  255.   delete pms;
  256.  
  257.   //uruchom przeksztalcenie
  258.   Filtr3x3( simg->Picture->Bitmap,img->Picture->Bitmap, f );
  259.   img->Invalidate();
  260. }
  261. //---------------------------------------------------------------------------
  262.  
  263. void __fastcall TForm1::Relief1Click(TObject *Sender)
  264. {
  265.     //przekszta│c orygina│
  266.  
  267.   double f[3][3];
  268.   //ustaw tablicΩ filtru - relief
  269.   //  1   1   0
  270.   //  1   1   -1
  271.   //  0   -1  -1
  272.  
  273.   f[0][2] = f[2][0] = 0;
  274.   f[0][0] = f[0][1] = f[1][0] = 1;
  275.   f[2][1] = f[2][2] = f[1][2] = -1;
  276.   f[1][1] = 1;
  277.  
  278.   // przygotuj rysunek ƒr≤d│owy
  279.   TMemoryStream *pms = new TMemoryStream;
  280.   pms->Position = 0;
  281.   img->Picture->Bitmap->SaveToStream( pms );
  282.   pms->Position = 0;
  283.   simg->Width = img->Width;
  284.   simg->Height = img->Height;
  285.   simg->Picture->Bitmap->LoadFromStream( pms );
  286.  
  287.   delete pms;
  288.   
  289.   //uruchom przeksztalcenie
  290.   Filtr3x3( simg->Picture->Bitmap,img->Picture->Bitmap, f );
  291.   img->Invalidate();
  292.  
  293. }
  294. //---------------------------------------------------------------------------
  295.  
  296.