Hi zusammen
Ich arbeite gegenwärtig gerade mit der GraphicEx von Mike Lischke, und da ist mir etwas begegnet, für das ich keine Erklärung habe und wofür ich auch in der Embarcadero OnlineHelp keine Andeutung gefunden habe.
Vorneweg : Die
Unit GraphicEx weist eine besonderheit auf:
Normalerweise wird in der Zeile, in der ein Prozedurkopf beginnt direkt vor dem Wort procedure ein Pluszeichen eingeblendet, über das sich die Prozedur zusammenklappen lässt - das fehlt bei allen Methoden der
Unit.
Ausserdem ist es nicht möglich, von der Prozedur-Implementierungmit <Shift+Ctrl+UP> zur Deklaration, bzw. mit <Shift+Ctrl+Down> in umgekehrter Richtung zu wechseln.
Deklaration und Implementation der Prozedur TTiffGraphic.SaveToStream:
Delphi-Quellcode:
{$ifdef NewTIFFGraphic}
// *.tif, *.tiff images
TTIFFGraphic = class(TGraphicExGraphic)
private
FMemory: PByte;
...
protected
procedure ReadContiguous(tif: PTIFF);
...
public
class function CanLoad(const Memory: Pointer; Size: Int64): Boolean; override;
...
end;
{$endif NewTIFFGraphic}
{$ifdef OldTIFFGraphic}
TIFDEntry = packed record
Tag: Word;
DataType: Word;
DataLength: Cardinal;
Offset: Cardinal;
end;
TTIFFPalette = array[0..787] of Word;
TTIFFGraphic = class(TGraphicExGraphic)
private
FBasePosition: Int64; //won't be too surprised of more than 2 Gb image...
FIFD: array of TIFDEntry; // the tags of one image file directory
....
procedure SortIFD;
procedure SwapIFD;
public
class function CanLoad(const Memory: Pointer; Size: Int64): Boolean; override;
...
...
procedure SaveToStream(Stream: TStream); override;
function ReadImageProperties(Stream: TStream; ImageIndex: Cardinal): Boolean; override;
end;
{$endif OldTIFFGraphic}
procedure TTIFFGraphic.SaveToStream(Stream: TStream);
begin
end;
Der Vorfahre von TTiffGraphic, TGraphicExGraphic, ist ein Nachkomme von TBitmap.
Im wesentlichen irritiert mich eigentlich die leere Implementation der Prozedur. Daneben stellt sich aber auch die Frage, woran TTiffGraphic erkennt, ob fr die geladene Datei die alte oder die neue Klassenstrutur anzuwenden ist...
Gruss
Delbor