unit bitmapconv; {$mode objfpc}{$h+} interface uses Classes, SysUtils, FileUtil, bitmaps, LResources, Forms, Controls, Graphics, Dialogs, StdCtrls, EditBtn, ExtDlgs, ExtCtrls; type { TBitmapConvForm } TBitmapConvForm = class(TForm) GroupBox: TGroupBox; ToStringButton: TButton; OpenButton: TButton; PadOutput: TCheckBox; ImagePreview: TImage; OpenPictureDialog: TOpenPictureDialog; procedure OpenButtonClick(Sender: TObject); procedure ToStringButtonClick(Sender: TObject); private { private declarations } public dispPic : TMufasaBitmap; { public declarations } end; var BitmapConvForm: TBitmapConvForm; implementation uses SimbaUnit; const BmpSizeTxt = '(%dx%d)'; {$R *.lfm} { TBitmapConvForm } procedure TBitmapConvForm.OpenButtonClick(Sender: TObject); var x : TMufasaBitmap; begin if OpenPictureDialog.Execute then begin try ImagePreview.Picture.LoadFromFile(OpenPictureDialog.FileName); GroupBox.Caption:= Format(BmpSizeTxt,[ImagePreview.Picture.Width,ImagePreview.Picture.Height]); x := TMufasaBitmap.Create; x.LoadFromFile(OpenPictureDialog.FileName); if dispPic <> nil then dispPic.Free; dispPic := x; except formWritelnEx('ERROR loading the file: ' + OpenPictureDialog.FileName); ImagePreview.Picture := nil; if dispPic <> nil then FreeAndNil(dispPic); end; end; end; procedure TBitmapConvForm.ToStringButtonClick(Sender: TObject); var str : string; strend : string; len : integer; begin if dispPic <> nil then begin str := ' Bmp := BitmapFromString('+ inttostr(disppic.Width)+ ', ' + inttostr(disppic.height) +', '#39 + dispPic.ToString; strend := #39 +');'; len := length(str); if PadOutput.Checked then while Len > 65 do begin formWritelnEx(Copy(str,1,62) + #39 + ' +'); delete(str,1,62); str := StringOfChar(' ',8) + #39 + str; len := length(str); end; formWritelnEx(str + strend); end; end; end.