📄 flexfileformats.int
字号:
/////////////////////////////////////////////////////////
// //
// FlexGraphics library //
// Copyright (c) 2002-2009, FlexGraphics software. //
// //
// FlexGraphics library file formats support //
// Base classes //
// //
/////////////////////////////////////////////////////////
unit FlexFileFormats;
{$I FlexDefs.inc}
interface
uses
Classes, SysUtils, FlexBase;
resourcestring
sUnsupportedFormat = 'Unsupported format %s';
sImportError = 'Import error: %s';
sExportError = 'Export error: %s';
sNotImplemented = 'Not implemented';
type
TFlexFileFormat = class;
TFlexFileFormatClass = class of TFlexFileFormat;
TFlexFileExtensions = class;
TFlexFileSupportKind = (
skImport,
skExport
);
TFlexFileSupportKinds = set of TFlexFileSupportKind;
TFlexFileExtension = class
public
FormatClass: TFlexFileFormatClass;
Extension: string;
Description: string;
Kinds: TFlexFileSupportKinds;
Tag: integer;
end;
TFlexFileFormat = class
protected
// FOwner initialized only when constructed via Create()
FOwner: TObject;
// Determines is the class supports streams. If False then class can
// operate with AFilename parameter only (caller should set AStream to Nil).
// True by default.
FStreamSupport: boolean;
// FExtensions initialized only when constructed via CreateAndRegister()
FExtensions: TFlexFileExtensions;
function RegisterExtension(const AExtension, ADescription: string;
AKinds: TFlexFileSupportKinds; ATag: integer = 0): integer; virtual;
procedure RegisterSupportedExtensions; virtual; abstract;
public
constructor Create(AOwner: TObject); virtual;
constructor CreateForRegister(AExtensions: TFlexFileExtensions);
destructor Destroy; override;
procedure ImportFromStream(AStream: TStream; AFlexPanel: TFlexPanel;
const Extension: TFlexFileExtension; const AFileName: string); virtual;
procedure ExportToStream(AStream: TStream; AFlexPanel: TFlexPanel;
const Extension: TFlexFileExtension; const AFileName: string); virtual;
property Owner: TObject read FOwner;
property StreamSupport: boolean read FStreamSupport;
end;
TFlexFileExtensions = class
private
FItems: TList;
function GetCount: integer;
function GetItem(Index: integer): TFlexFileExtension;
protected
function RegisterExtension(Extension: TFlexFileExtension): integer;
public
constructor Create;
destructor Destroy; override;
function RegisterFormat(AFormat: TFlexFileFormatClass): boolean;
procedure UnregisterFormat(AFormat: TFlexFileFormatClass);
procedure Delete(Index: integer);
procedure Clear;
function IndexOf(AClass: TFlexFileFormatClass): integer;
procedure ImportFromStream(ItemIndex: integer; AFlexPanel: TFlexPanel;
AStream: TStream; AFileName: string = '');
procedure ExportToStream(ItemIndex: integer; AFlexPanel: TFlexPanel;
AStream: TStream; AFileName: string = '');
procedure ImportFromFile(ItemIndex: integer; AFlexPanel: TFlexPanel;
AFilename: string);
procedure ExportToFile(ItemIndex: integer; AFlexPanel: TFlexPanel;
AFilename: string);
property Count: integer read GetCount;
property Items[Index: integer]: TFlexFileExtension read GetItem; default;
end;
function RegisteredFlexFileFormats: TFlexFileExtensions;
implementation
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -