1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
|
Interface
Type
TGLZInterfacedPersistent = class(TPersistent, IInterface)
TGLZUpdateAbleObject = Class(TGLZInterfacedPersistent, IGLZNotifyAble)
TGLZCustomDataFile = Class(TGLZUpdateAbleObject)
Private
FFullFileName: String;
Protected
Function CheckFormat(): Boolean; Virtual;
Procedure LoadFromMemory; Virtual; // ---> C'est lorsque cette procédure est appelé dans l'enfant que FFullFileName est vidée
Public
Procedure LoadFromStream(aStream: TStream); Virtual;
Procedure LoadFromFile(Const FileName: String); Virtual;
Property FullFileName: String read FFullFileName;
End;
TGLZCustomBitmap = class(TGLZCustomDataFile)
TGLZCustomImageFileIO = Class(TGLZCustomBitmap)
protected
function ReadImageProperties:Boolean;Virtual;
end;
TGLZBitmapXPMImage = class(TGLZCustomImageFileIO)
protected
procedure LoadFromMemory();override; // ---> C'est lorsque cette procédure est appelé que FFullFileName est vidée
function CheckFormat(): Boolean; override;
function ReadImageProperties:Boolean;override;
end;
TGLZPicture = class(TGLZPersistentObject)
private
FBitmap : TGLZBitmap;
procedure SetBitmap(Const aBitmap : TGLZBitmap);
protected
public
Constructor Create;override;
Destructor Destroy;override;
//procedure ReadFiler
//procedure WriteFiler
procedure LoadFromFile(Const aFileName:String); overload;
procedure SaveToFile(Const aFileName:String); overload;//aFormat : TGLZImageFileFormats; Options : Pointer);
public
property Bitmap : TGLZBitmap Read FBitmap Write SetBitmap;
end;
TGLZCustomImageView = class(TGLZCustomControl)
protected
FBackBuffer : TGLZBitmap;
procedure Paint; override;
procedure Resize; override;
public
property BackBuffer: TGLZBitmap read FBackBuffer;
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
end;
TGLZSimpleImageView = Class(TGLZCustomImageView)
Implementation
Procedure TGLZCustomDataFile.LoadFromFile(Const FileName: String);
Var
fs: TStream;
Begin
ResourceName := ExtractFileName(fileName);
FFullFileName := FileName;
fs := CreateFileStream(fileName, fmOpenRead + fmShareDenyNone);
Try
LoadFromStream(fs);
Finally
fs.Free;
End;
End;
Procedure TGLZCustomDataFile.InternalLoadFromStream(aStream: TStream);
Begin
FData := TGLZBufferedStream.Create(aStream);
Try
If CheckFormat Then LoadFromMemory;
Finally
FreeAndNil(FData);
End;
End;
Procedure TGLZCustomDataFile.LoadFromStream(aStream: TStream);
Begin
InternalLoadFromStream(aStream);
End;
Function TGLZCustomDataFile.CheckFormat(): Boolean;
Begin
Result := True;
End;
Procedure TGLZCustomDataFile.LoadFromMemory();
Begin
Assert(False, 'Import de ' + ClassName + ' vers ' + Self.ClassName + ' non supporté.');
End;
procedure TGLZBitmap.LoadFromFile(Const FileName:String);
var
BaseImageClass: TGLZBitmapClass;
tempImage: TGLZCustomBitmap;
SrcPtr, DstPtr:PGLZColor;
begin
if filename = '' then exit;
BaseImageClass := GetGLZImageFileFormats.FindFromFileName(filename);
TempImage:=nil;
tempImage := BaseImageClass.Create(0,0);
try
tempImage.LoadFromFile(fileName);
// Assign(TGLZBitmap(TempImage));
SetSize(TempImage.Width, TempImage.Height);
Clipping:=false;
ClipRect:=TempImage.ClipRect;
with RawImage do
begin
Description.Width:=TempImage.RawImage.Description.Width;
Description.Height:=TempImage.RawImage.Description.Height;
end;
With DataFormatDesc do
begin
Name := TempImage.DataFormatDesc.Name;
Desc := TempImage.DataFormatDesc.Desc;
Version := TempImage.DataFormatDesc.Version;
FileMask := TempImage.DataFormatDesc.FileMask;
Encoding := TempImage.DataFormatDesc.Encoding;
end;
SrcPtr:=PGLZColor(TempImage.getSurfaceBuffer);
DstPtr:=PGLZColor(GetSurfaceBuffer);
Move(SrcPtr^,DstPtr^,Size);
finally
FreeAndNil(tempImage);
end;
end;
procedure TGLZPicture.LoadFromFile(Const aFileName:String);
begin
FBitmap.LoadFromFile(aFileName);
end; |
Partager