FormMain.pas 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  1. unit FormMain;
  2. interface
  3. uses
  4. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5. Dialogs, ExtCtrls, StdCtrls, Buttons, ExtDlgs,
  6. ImagingTypes,
  7. Imaging,
  8. ImagingClasses,
  9. ImagingComponents,
  10. hq2x;
  11. type
  12. TMainForm = class(TForm)
  13. Panel1: TPanel;
  14. Image: TImage;
  15. Label1: TLabel;
  16. EdFileName: TEdit;
  17. Button1: TButton;
  18. Btn2x: TButton;
  19. Btn3x: TButton;
  20. Btn4x: TButton;
  21. Button2: TButton;
  22. DlgOpen: TOpenPictureDialog;
  23. procedure Button2Click(Sender: TObject);
  24. procedure Btn2xClick(Sender: TObject);
  25. procedure Btn3xClick(Sender: TObject);
  26. procedure Btn4xClick(Sender: TObject);
  27. procedure FormCreate(Sender: TObject);
  28. procedure FormDestroy(Sender: TObject);
  29. procedure Button1Click(Sender: TObject);
  30. private
  31. { Private declarations }
  32. public
  33. { Public declarations }
  34. Source: TSingleImage;
  35. Resampled: TSingleImage;
  36. FileName: string;
  37. Bitmap: TImagingBitmap;
  38. procedure ResampleFile(Magnification: Integer);
  39. procedure ShowImage;
  40. end;
  41. var
  42. MainForm: TMainForm;
  43. const
  44. AboutMsg = 'Original hq2x, hq3x, hq4x: Maxim Stepin' + SLineBreak +
  45. 'Pascal translation: Jeremy Darling' + SLineBreak +
  46. 'Imaging hq demo: Marek Mauder';
  47. implementation
  48. uses FormView;
  49. {$R *.dfm}
  50. procedure TMainForm.Btn2xClick(Sender: TObject);
  51. begin
  52. ResampleFile(2);
  53. end;
  54. procedure TMainForm.Btn3xClick(Sender: TObject);
  55. begin
  56. ResampleFile(3);
  57. end;
  58. procedure TMainForm.Btn4xClick(Sender: TObject);
  59. begin
  60. ResampleFile(4);
  61. end;
  62. procedure TMainForm.Button1Click(Sender: TObject);
  63. var
  64. ValidFile: Boolean;
  65. begin
  66. DlgOpen.Filter := GetImageFileFormatsFilter(True);
  67. if DlgOpen.Execute then
  68. begin
  69. EdFileName.Text := DlgOpen.FileName;
  70. FileName := DlgOpen.FileName;
  71. ValidFile := FileExists(FileName) and
  72. (Imaging.DetermineFileFormat(FileName) <> '');
  73. Btn2x.Enabled := ValidFile;
  74. Btn3x.Enabled := ValidFile;
  75. Btn4x.Enabled := ValidFile;
  76. if ValidFile then
  77. begin
  78. Source.LoadFromFile(FileName);
  79. Image.SetBounds(Image.Left, Image.Top, Source.Width, Source.Height);
  80. Image.Picture.Bitmap.Assign(Source);
  81. end;
  82. end;
  83. end;
  84. procedure TMainForm.Button2Click(Sender: TObject);
  85. begin
  86. ShowMessage(AboutMsg);
  87. end;
  88. procedure TMainForm.FormCreate(Sender: TObject);
  89. begin
  90. Source := TSingleImage.Create;
  91. Resampled := TSingleImage.Create;
  92. Bitmap := TImagingBitmap.Create;
  93. Image.Picture.Bitmap := Bitmap;
  94. end;
  95. procedure TMainForm.FormDestroy(Sender: TObject);
  96. begin
  97. Source.Free;
  98. Resampled.Free;
  99. Bitmap.Free;
  100. end;
  101. procedure TMainForm.ResampleFile(Magnification: Integer);
  102. begin
  103. if not (Magnification in [2, 3, 4]) then
  104. begin
  105. ShowMessage('Requested magnification not supported');
  106. Exit;
  107. end;
  108. if Magnification in [3, 4] then
  109. begin
  110. ShowMessage('Requested magnification not YET supported');
  111. Exit;
  112. end;
  113. Source.Format := ifR5G6B5;
  114. Resampled.CreateFromParams(Source.Width * Magnification, Source.Height * Magnification, ifX8R8G8B8);
  115. try
  116. case Magnification of
  117. 2: hq2x_32(Source.Bits, Resampled.Bits, Source.Width, Source.Height, Resampled.Width * 4);
  118. 3: ;
  119. 4: ;
  120. end;
  121. except
  122. ShowMessage('Error during resampling');
  123. end;
  124. ShowImage;
  125. end;
  126. procedure TMainForm.ShowImage;
  127. begin
  128. ViewForm.Image.SetBounds(0, ViewForm.Image.Top, Resampled.Width, Resampled.Height);
  129. ViewForm.Image.Picture.Bitmap.Assign(Resampled);
  130. ViewForm.ShowModal;
  131. end;
  132. end.