You've already forked lazarus-ccr
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@8688 8e941d3f-bd1b-0410-a28a-d453659cc2b4
171 lines
3.8 KiB
ObjectPascal
171 lines
3.8 KiB
ObjectPascal
unit main;
|
|
|
|
{$mode objfpc}{$H+}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
|
|
ComCtrls, LCLIntf,
|
|
fpimage, fpWriteGIF,
|
|
ubarcodes;
|
|
|
|
type
|
|
TMyGifImage = class(TGifImage)
|
|
protected
|
|
class function GetWriterClass: TFPCustomImageWriterClass; override;
|
|
end;
|
|
|
|
{ TMainForm }
|
|
|
|
TMainForm = class(TForm)
|
|
btnCreateQR: TButton;
|
|
btnSaveAsGIF: TButton;
|
|
btnSaveAsBMP: TButton;
|
|
btnSaveAsSVG: TButton;
|
|
btnSaveAsPNG: TButton;
|
|
btnSaveAsJPEG: TButton;
|
|
btnSaveAsEPS: TButton;
|
|
edText: TEdit;
|
|
Label1: TLabel;
|
|
StatusBar: TStatusBar;
|
|
procedure btnCreateQRClick(Sender: TObject);
|
|
procedure btnSaveAsEPSClick(Sender: TObject);
|
|
procedure btnSaveAsGIFClick(Sender: TObject);
|
|
procedure btnSaveAsBMPClick(Sender: TObject);
|
|
procedure btnSaveAsPNGClick(Sender: TObject);
|
|
procedure btnSaveAsSVGClick(Sender: TObject);
|
|
procedure edTextChange(Sender: TObject);
|
|
procedure FormActivate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
private
|
|
QRCode: TBarcodeQR;
|
|
procedure EnableButtons(Enable: Boolean);
|
|
procedure SaveQRCodeToImage(AFileName: String; AImageClass: TFPImageBitmapClass);
|
|
|
|
public
|
|
|
|
end;
|
|
|
|
var
|
|
MainForm: TMainForm;
|
|
|
|
implementation
|
|
|
|
{$R *.lfm}
|
|
|
|
class function TMyGifImage.GetWriterClass: TFPCustomImageWriterClass;
|
|
begin
|
|
Result := TFPWriterGIF;
|
|
end;
|
|
|
|
{ TMainForm }
|
|
|
|
procedure TMainForm.btnCreateQRClick(Sender: TObject);
|
|
begin
|
|
QRCode.Free;
|
|
QRCode := TBarcodeQR.Create(self);
|
|
QRCode.Text := edText.Text;
|
|
QRCode.Top := btnCreateQR.Top;
|
|
QRCode.Left := btnCreateQR.Left + btnCreateQR.Width + 10;
|
|
QRCode.Width := 168;
|
|
QRCode.Height := 168;
|
|
QRCode.Generate;
|
|
QRCode.Parent := self;
|
|
|
|
EnableButtons(true);
|
|
StatusBar.simpleText := 'QRCode generated.';
|
|
end;
|
|
|
|
procedure TMainForm.btnSaveAsEPSClick(Sender: TObject);
|
|
var
|
|
fn: String;
|
|
begin
|
|
if QRCode = nil then
|
|
exit;
|
|
fn := 'qrcode.eps';
|
|
QRCode.SaveToEpsFile(fn);
|
|
StatusBar.SimpleText := 'QRCode saved to "' + fn + '".';
|
|
end;
|
|
|
|
procedure TMainForm.btnSaveAsGIFClick(Sender: TObject);
|
|
begin
|
|
SaveQRCodeToImage('qrcode', TMyGifImage);
|
|
end;
|
|
|
|
procedure TMainForm.btnSaveAsBMPClick(Sender: TObject);
|
|
begin
|
|
SaveQRCodeToImage('qrcode', TBitmap);
|
|
end;
|
|
|
|
procedure TMainForm.btnSaveAsPNGClick(Sender: TObject);
|
|
begin
|
|
SaveQRCodeToImage('qrcode', TPortableNetworkGraphic);
|
|
end;
|
|
|
|
procedure TMainForm.btnSaveAsSVGClick(Sender: TObject);
|
|
var
|
|
fn: String;
|
|
begin
|
|
if QRCode = nil then
|
|
exit;
|
|
fn := 'qrcode.svg';
|
|
QRCode.SaveToSvgFile(fn);
|
|
StatusBar.SimpleText := 'QRCode saved to "' + fn + '".';
|
|
end;
|
|
|
|
procedure TMainForm.edTextChange(Sender: TObject);
|
|
begin
|
|
EnableButtons(false);
|
|
end;
|
|
|
|
procedure TMainForm.FormActivate(Sender: TObject);
|
|
begin
|
|
ClientHeight := btnSaveAsEPS.Top + btnSaveAsEPS.Height + StatusBar.Height + 16;
|
|
end;
|
|
|
|
procedure TMainForm.EnableButtons(Enable: Boolean);
|
|
begin
|
|
btnSaveAsGIF.Visible := Enable;
|
|
btnSaveAsBMP.Visible := Enable;
|
|
btnSaveAsPNG.Visible := Enable;
|
|
btnSaveAsJPEG.Visible := Enable;
|
|
btnSaveAsSVG.Visible := Enable;
|
|
btnSaveAsEPS.Visible := Enable;
|
|
if not Enable then StatusBar.SimpleText := '';
|
|
end;
|
|
|
|
procedure TMainForm.FormDestroy(Sender: TObject);
|
|
begin
|
|
QRCode.Free;
|
|
end;
|
|
|
|
procedure TMainForm.SaveQRCodeToImage(AFileName: String; AImageClass: TFPImageBitmapClass);
|
|
var
|
|
ext: String;
|
|
begin
|
|
if QRCode = nil then
|
|
exit;
|
|
|
|
if AImageClass = TBitmap then
|
|
ext := '.bmp'
|
|
else if AImageClass = TMyGifImage then
|
|
ext := '.gif'
|
|
else if AImageClass = TPortableNetworkGraphic then
|
|
ext := '.png'
|
|
else if AImageClass = TJpegImage then
|
|
ext := '.jpg'
|
|
else
|
|
raise Exception.Create('Image format not supported.');
|
|
|
|
AFileName := ChangeFileExt(AFileName, ext);
|
|
QRCode.SaveToFile(AFileName, AImageClass);
|
|
|
|
StatusBar.SimpleText := 'QRCode saved to "' + AFileName + '".';
|
|
end;
|
|
|
|
initialization
|
|
TPicture.RegisterFileFormat('.gif', 'gif', TMyGifImage);
|
|
end.
|
|
|