unit1.pas 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. unit Unit1;
  2. {$mode objfpc}{$H+}
  3. interface
  4. uses
  5. Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  6. ComCtrls, Spin, ExtCtrls, BCFilters, BGRAVirtualScreen, BGRABitmap,
  7. BGRABitmapTypes, BCTypes, BGRATextFX, Math, BCEffect;
  8. type
  9. { TForm1 }
  10. TForm1 = class(TForm)
  11. fs1: TFloatSpinEdit;
  12. fs2: TFloatSpinEdit;
  13. ListBox1: TListBox;
  14. ListBox2: TListBox;
  15. ListBox3: TListBox;
  16. ListBox4: TListBox;
  17. Timer1: TTimer;
  18. TrackBar1: TTrackBar;
  19. TrackBar2: TTrackBar;
  20. TrackBar3: TTrackBar;
  21. TrackBar4: TTrackBar;
  22. vs1: TBGRAVirtualScreen;
  23. procedure FormCloseQuery(Sender: TObject; var CanClose: boolean);
  24. procedure FormCreate(Sender: TObject);
  25. procedure FormDestroy(Sender: TObject);
  26. procedure fs1Change(Sender: TObject);
  27. procedure ListBox1SelectionChange(Sender: TObject; User: boolean);
  28. procedure Timer1Timer(Sender: TObject);
  29. procedure vs1Redraw(Sender: TObject; Bitmap: TBGRABitmap);
  30. private
  31. { private declarations }
  32. public
  33. { public declarations }
  34. Fade: TFading;
  35. Image: TBGRABitmap;
  36. end;
  37. var
  38. Form1: TForm1;
  39. implementation
  40. {$R *.lfm}
  41. { TForm1 }
  42. procedure TForm1.FormCreate(Sender: TObject);
  43. begin
  44. Image := TBGRABitmap.Create(Application.Location + 'Penguins.jpg');
  45. BCSimpleFilterStrList(ListBox1.Items);
  46. BCSimpleFilterStrList(ListBox2.Items);
  47. BCSimpleFilterStrList(ListBox3.Items);
  48. BCSimpleFilterStrList(ListBox4.Items);
  49. ListBox1.Selected[20] := True;
  50. ListBox2.Selected[21] := True;
  51. ListBox3.Selected[5] := True;
  52. ListBox4.Selected[0] := True;
  53. Fade.Mode := fmFadeOut;
  54. Fade.Step := 15;
  55. Fade.Reset;
  56. end;
  57. procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: boolean);
  58. begin
  59. Timer1.Enabled := False;
  60. end;
  61. procedure TForm1.FormDestroy(Sender: TObject);
  62. begin
  63. Image.Free;
  64. end;
  65. procedure TForm1.fs1Change(Sender: TObject);
  66. begin
  67. vs1.RedrawBitmap;
  68. end;
  69. procedure TForm1.ListBox1SelectionChange(Sender: TObject; User: boolean);
  70. begin
  71. vs1.RedrawBitmap;
  72. end;
  73. procedure TForm1.Timer1Timer(Sender: TObject);
  74. begin
  75. //fs1.Value := fs1.Value + 0.0002;
  76. fs2.Value := fs2.Value + 0.0002;
  77. if (fs2.Value = 1) {and (fs1.Value = 1)} then
  78. Timer1.Enabled:=False;
  79. end;
  80. procedure TForm1.vs1Redraw(Sender: TObject; Bitmap: TBGRABitmap);
  81. var
  82. tmp: TBGRABitmap;
  83. begin
  84. Bitmap.BlendImageOver(0, 0, Image, boTransparent, TrackBar4.Position);
  85. tmp := TextShadow(vs1.Width, vs1.Height, 'Penguin TELEPORT project', 20, BGRA(255,255,255,200), BGRABlack, 1, 1, 2) as TBGRABitmap;
  86. Bitmap.BlendImage(RandomRange(0,1), RandomRange(vs1.Height div 2 - 40,vs1.Height div 2 - 38), tmp, boLinearBlend);
  87. tmp.Free;
  88. { Apply filter 1 }
  89. SimpleFilter(Bitmap, StrToTBCSimpleFilter(ListBox1.GetSelectedText));
  90. { Apply filter 2 }
  91. SimpleFilter(Bitmap, StrToTBCSimpleFilter(ListBox2.GetSelectedText));
  92. { Apply filter 3 }
  93. SimpleFilter(Bitmap, StrToTBCSimpleFilter(ListBox3.GetSelectedText));
  94. { Apply filter 4 }
  95. SimpleFilter(Bitmap, StrToTBCSimpleFilter(ListBox4.GetSelectedText));
  96. // Fade Out the black rectangle
  97. Bitmap.FillRect(0, 0, vs1.Width, vs1.Height, BGRA(0, 0, 0, Fade.Execute), dmFastBlend);
  98. FilterRGB(Bitmap, TrackBar1.Position, TrackBar2.Position, TrackBar3.Position);
  99. { Weird thing }
  100. Zoomy(Bitmap,fs1.Value,fs2.Value);
  101. end;
  102. end.