⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 myfilter.pas

📁 themeengine6源码
💻 PAS
字号:
unit MyFilter;

interface

uses Windows, Classes, theme_se3, theme_se3objects;

const

  MySign: array [0..13] of char = 'My skin format';

type

{ TMyThemeFilter }

  TMyThemeFilter = class(TSeSkinFilter)
  public
    constructor Create; override;
    { }
    class function GetFileExtension: string; override;
    class function GetFilterName: string; override;
    { Filter }
    procedure ReadSkin(Stream: TStream); override;
    procedure WriteSkin(Stream: TStream); override;
  end;

implementation {===============================================================}

uses Lzh;

{ TMyThemeFilter =====================================================}

constructor TMyThemeFilter.Create;
begin
  inherited;
end;

class function TMyThemeFilter.GetFileExtension: string;
begin
  Result := 'mytheme';
end;

class function TMyThemeFilter.GetFilterName: string;
begin
  Result := 'MyTheme Format';
end;

procedure TMyThemeFilter.ReadSkin(Stream: TStream);
var
  MemStream: TStream;
  LzhStream: TLZHStream;
  S: array [0..13] of Char;
begin
  { Read sign }
  Stream.Read(S, SizeOf(MySign));
  if S <> MySign then Exit;

  { Read skin }
  MemStream := TMemoryStream.Create;
  try
    { UnCompress}
    LzhStream := TLZHStream.Create(Stream, MemStream);
    try
      LzhStream.UnPack;
    finally
      LzhStream.Free;
    end;
    { Read SkinSource from MemStream }
    MemStream.Position := 0;
    ReadSkinSource(MemStream);
  finally
    MemStream.Free;
  end;
end;

procedure TMyThemeFilter.WriteSkin(Stream: TStream);
var
  MemStream: TStream;
  LzhStream: TLZHStream;
  Size: integer;
begin
  { Write sign }
  Stream.Write(MySign, SizeOf(MySign));

  { Write skin }
  MemStream := TMemoryStream.Create;
  try
    { Write SkinSource to MemStream }
    WriteSkinSource(MemStream);
    { Compress}
    LzhStream := TLZHStream.Create(MemStream, Stream);
    try
      MemStream.Position := 0;
      Size := LzhStream.Pack(MemStream.Size);
    finally
      LzhStream.Free;
    end;
  finally
    MemStream.Free;
  end;
end;

initialization
  DefaultFilter := TMyThemeFilter;
  RegisterSkinFilter(TMyThemeFilter);
finalization
  UnregisterSkinFilter(TMyThemeFilter);
end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -