亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? anifile.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
{*******************************************************}
{                                                       }
{         Delphi VCL Extensions (RX)                    }
{                                                       }
{         Copyright (c) 1997, 1998 Master-Bank          }
{                                                       }
{*******************************************************}

unit AniFile;

{$I RX.INC}

interface

uses SysUtils, Windows, RTLConsts, Classes, Graphics;

type
  TFourCC = array[0..3] of Char;

  PAniTag = ^TAniTag;
  TAniTag = packed record
    ckID: TFourCC;
    ckSize: Longint;
  end;

  TAniHeader = packed record
    cbSizeOf: Longint;
    cSteps: Longint;
    cFrames: Longint;
    cReserved: array[0..3] of Longint;
    jifRate: Longint; { 1 Jiffy = 1/60 sec }
    fl: Longint;
  end;

const
  AF_ICON     = $00000001;
  AF_SEQUENCE = $00000002;

{ TIconFrame }

type
  TIconFrame = class(TPersistent)
  private
    FIcon: TIcon;
    FIsIcon: Boolean;
    FTag: TAniTag;
    FHotSpot: TPoint;
    FJiffRate: Longint;
    FSeq: Integer;
  public
    constructor Create(Index: Integer; Jiff: Longint);
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    property JiffRate: Longint read FJiffRate;
    property Seq: Integer read FSeq;
  end;

{ TAnimatedCursorImage }

  TANINAME = array[0..255] of Char;

  TAnimatedCursorImage = class(TPersistent)
  private
    FHeader: TAniHeader;
    FTitle: TANINAME;
    FCreator: TANINAME;
    FIcons: TList;
    FOriginalColors: Word;
    procedure NewImage;
    procedure RiffReadError;
    function ReadCreateIcon(Stream: TStream; ASize: Longint;
      var HotSpot: TPoint; var IsIcon: Boolean): TIcon;
    function GetIconCount: Integer;
    function GetIcon(Index: Integer): TIcon;
    function GetFrame(Index: Integer): TIconFrame;
    function GetTitle: string;
    function GetCreator: string;
    function GetDefaultRate: Longint;
    procedure ReadAniStream(Stream: TStream);
    procedure ReadStream(Size: Longint; Stream: TStream);
    procedure WriteStream(Stream: TStream; WriteSize: Boolean);
  protected
    procedure AssignTo(Dest: TPersistent); override;
    procedure Draw(ACanvas: TCanvas; const ARect: TRect);
  public
    constructor Create;
    destructor Destroy; override;
    procedure Assign(Source: TPersistent); override;
    procedure Clear;
    procedure LoadFromStream(Stream: TStream); virtual;
    procedure SaveToStream(Stream: TStream); virtual;
    procedure LoadFromFile(const Filename: string); virtual;
    procedure AssignToBitmap(Bitmap: TBitmap; BackColor: TColor;
      DecreaseColors, Vertical: Boolean);
    property DefaultRate: Longint read GetDefaultRate;
    property IconCount: Integer read GetIconCount;
    property Icons[Index: Integer]: TIcon read GetIcon;
    property Frames[Index: Integer]: TIconFrame read GetFrame;
    property Title: string read GetTitle;
    property Creator: string read GetCreator;
    property OriginalColors: Word read FOriginalColors;
  end;

implementation

{ This implementation based on animated cursor editor source code
  (ANIEDIT.C, copyright (C) Microsoft Corp., 1993-1996) }

uses Consts, VCLUtils, MaxMin, RxGraph, IcoList, ClipIcon;

const
  FOURCC_ACON = 'ACON';
  FOURCC_RIFF = 'RIFF';
  FOURCC_INFO = 'INFO';
  FOURCC_INAM = 'INAM';
  FOURCC_IART = 'IART';
  FOURCC_LIST = 'LIST';
  FOURCC_anih = 'anih';
  FOURCC_rate = 'rate';
  FOURCC_seq  = 'seq ';
  FOURCC_fram = 'fram';
  FOURCC_icon = 'icon';

function PadUp(Value: Longint): Longint;
  { Up Value to nearest word boundary }
begin
  Result := Value + (Value mod 2);
end;

procedure DecreaseBMPColors(Bmp: TBitmap; Colors: Integer);
var
  Stream: TStream;
begin
  if (Bmp <> nil) and (Colors > 0) then begin
    Stream := BitmapToMemory(Bmp, Colors);
    try
      Bmp.LoadFromStream(Stream);
    finally
      Stream.Free;
    end;
  end;
end;

function GetDInColors(BitCount: Word): Integer;
begin
  case BitCount of
    1, 4, 8: Result := 1 shl BitCount;
    else Result := 0;
  end;
end;

{ ReadTag, ReadChunk, SkipChunk. Some handy functions for reading RIFF files. }

function ReadTag(S: TStream; pTag: PAniTag): Boolean;
begin
  pTag^.ckID := #0#0#0#0;
  pTag^.ckSize := 0;
  Result := S.Read(pTag^, SizeOf(TAniTag)) = SizeOf(TAniTag);
end;

function ReadChunk(S: TStream; pTag: PAniTag; Data: Pointer): Boolean;
begin
  Result := S.Read(Data^, pTag^.ckSize) = pTag^.ckSize;
  if Result then
    Result := S.Seek(pTag^.ckSize mod 2, soFromCurrent) <> -1;
end;

function ReadChunkN(S: TStream; pTag: PAniTag; Data: Pointer;
  cbMax: Longint): Boolean;
var
  cbRead: Longint;
begin
  cbRead := pTag^.ckSize;
  if cbMax < cbRead then cbRead := cbMax;
  Result := S.Read(Data^, cbRead) = cbRead;
  if Result then begin
    cbRead := PadUp(pTag^.ckSize) - cbRead;
    Result := S.Seek(cbRead, soFromCurrent) <> -1;
  end;
end;

function SkipChunk(S: TStream; pTag: PAniTag): Boolean;
begin
  { Round pTag^.ckSize up to nearest word boundary to maintain alignment }
  Result := S.Seek(PadUp(pTag^.ckSize), soFromCurrent) <> -1;
end;

{ Icon and cursor types }

const
  rc3_StockIcon = 0;
  rc3_Icon = 1;
  rc3_Cursor = 2;

type
  PCursorOrIcon = ^TCursorOrIcon;
  TCursorOrIcon = packed record
    Reserved: Word;
    wType: Word;
    Count: Word;
  end;

  PIconRec = ^TIconRec;
  TIconRec = packed record
    Width: Byte;
    Height: Byte;
    Colors: Word;
    xHotspot: Word;
    yHotspot: Word;
    DIBSize: Longint;
    DIBOffset: Longint;
  end;

{ TIconFrame }

constructor TIconFrame.Create(Index: Integer; Jiff: Longint);
begin
  inherited Create;
  FSeq := Index;
  FJiffRate := Jiff;
end;

destructor TIconFrame.Destroy;
begin
  if FIcon <> nil then FIcon.Free;
  inherited Destroy;
end;

procedure TIconFrame.Assign(Source: TPersistent);
begin
  if Source is TIconFrame then begin
    with TIconFrame(Source) do begin
      if Self.FIcon = nil then Self.FIcon := TIcon.Create;
      Self.FIcon.Assign(FIcon);
      Self.FIsIcon := FIsIcon;
      Move(FTag, Self.FTag, SizeOf(TAniTag));
      Self.FHotSpot.X := FHotSpot.X;
      Self.FHotSpot.Y := FHotSpot.Y;
      Self.FJiffRate := FJiffRate;
      Self.FSeq := FSeq;
    end;
  end
  else inherited Assign(Source);
end;

{ TAnimatedCursorImage }

constructor TAnimatedCursorImage.Create;
begin
  inherited Create;
  FIcons := TList.Create;
end;

destructor TAnimatedCursorImage.Destroy;
begin
  NewImage;
  FIcons.Free;
  inherited Destroy;
end;

procedure TAnimatedCursorImage.Clear;
begin
  NewImage;
end;

procedure TAnimatedCursorImage.NewImage;
var
  I: Integer;
begin
  for I := 0 to FIcons.Count - 1 do TIconFrame(FIcons[I]).Free;
  FIcons.Clear;
  FillChar(FTitle, SizeOf(FTitle), 0);
  FillChar(FCreator, SizeOf(FCreator), 0);
  FillChar(FHeader, SizeOf(FHeader), 0);
  FOriginalColors := 0;
end;

procedure TAnimatedCursorImage.RiffReadError;
begin
  raise EReadError.Create(ResStr(SReadError));
end;

function TAnimatedCursorImage.GetTitle: string;
begin
  Result := StrPas(FTitle);
end;

function TAnimatedCursorImage.GetCreator: string;
begin
  Result := StrPas(FCreator);
end;

function TAnimatedCursorImage.GetIconCount: Integer;
begin
  Result := FIcons.Count;
end;

function TAnimatedCursorImage.GetIcon(Index: Integer): TIcon;
begin
  Result := TIconFrame(FIcons[Index]).FIcon;
end;

function TAnimatedCursorImage.GetFrame(Index: Integer): TIconFrame;
begin
  Result := TIconFrame(FIcons[Index]);
end;

function TAnimatedCursorImage.GetDefaultRate: Longint;
begin
  Result := Max(0, Min((FHeader.jifRate * 100) div 6, High(Result)));
end;

procedure TAnimatedCursorImage.Assign(Source: TPersistent);
var
  I: Integer;
  Frame: TIconFrame;
begin
  if Source = nil then begin
    Clear;
  end
  else if Source is TAnimatedCursorImage then begin
    NewImage;
    try
      with TAnimatedCursorImage(Source) do begin
        Move(FHeader, Self.FHeader, SizeOf(FHeader));
        Self.FTitle := FTitle;
        Self.FCreator := FCreator;
        Self.FOriginalColors := FOriginalColors;
        for I := 0 to FIcons.Count - 1 do begin
          Frame := TIconFrame.Create(-1, FHeader.jifRate);
          try
            Frame.Assign(TIconFrame(FIcons[I]));
            Self.FIcons.Add(Frame);
          except
            Frame.Free;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲久草在线视频| 91精品国产一区二区三区香蕉 | 国产成人精品综合在线观看| 亚洲柠檬福利资源导航| 久久久久久一二三区| 欧美猛男男办公室激情| av不卡免费电影| 狠狠色丁香婷综合久久| 日韩不卡在线观看日韩不卡视频| 中文字幕日韩av资源站| 久久夜色精品国产噜噜av| 久久精品男人天堂av| 欧美日韩久久不卡| 99久久精品免费看| 国内精品写真在线观看| 青青草成人在线观看| 一区二区三区产品免费精品久久75| 久久蜜桃av一区精品变态类天堂 | 久久久一区二区| 国产精品欧美久久久久一区二区| 91一区二区在线观看| 日本成人超碰在线观看| 国产亚洲精品中文字幕| 欧美午夜精品电影| 国产乱码精品一区二区三区忘忧草| 国产精品免费人成网站| 91精品久久久久久久91蜜桃| 国产成人精品亚洲日本在线桃色| 一个色综合网站| 久久日韩粉嫩一区二区三区| 在线观看日韩国产| 国内精品国产成人国产三级粉色| 中文字幕亚洲欧美在线不卡| 欧美一卡在线观看| 99麻豆久久久国产精品免费优播| 青青青伊人色综合久久| 国产精品福利在线播放| 欧美大片顶级少妇| 欧美探花视频资源| 国产成人av电影在线播放| 日韩精品一区第一页| 国产精品不卡视频| 精品国产污污免费网站入口| 色94色欧美sute亚洲线路一ni| 精品午夜久久福利影院| 亚洲va国产va欧美va观看| 国产精品久久久爽爽爽麻豆色哟哟| 欧美一二三在线| 欧美日韩在线播放一区| 91色视频在线| 国产成人99久久亚洲综合精品| 欧美aaaaa成人免费观看视频| 亚洲男同性恋视频| 国产精品久久久久久久久搜平片| 精品卡一卡二卡三卡四在线| 欧美另类z0zxhd电影| 99久久精品情趣| 成人动漫中文字幕| 国产精品综合一区二区| 久久精品国产**网站演员| 日韩不卡在线观看日韩不卡视频| 亚洲午夜久久久久| 亚洲黄网站在线观看| 亚洲欧美日韩小说| 亚洲丝袜美腿综合| 国产精品丝袜黑色高跟| 中文文精品字幕一区二区| 国产亚洲综合在线| 亚洲精品一区二区三区福利| 欧美电影免费观看高清完整版在线 | 一区二区三区免费看视频| 亚洲成人777| 国产成人精品免费| 欧美视频在线播放| 久久免费的精品国产v∧| 一区二区三区在线观看动漫| 日韩va亚洲va欧美va久久| 欧洲精品一区二区三区在线观看| 日韩欧美一级二级| 亚洲三级电影网站| 久久福利视频一区二区| 97se亚洲国产综合自在线观| 欧美丰满美乳xxx高潮www| 亚洲国产高清aⅴ视频| 亚洲成人免费看| 国产欧美精品一区二区色综合| 久久尤物电影视频在线观看| 国产亚洲综合在线| ㊣最新国产の精品bt伙计久久| 亚洲欧美日韩一区| 五月婷婷久久综合| 韩国在线一区二区| 波多野结衣精品在线| 欧美亚洲免费在线一区| 日韩欧美国产一区二区在线播放| 精品av综合导航| 国产精品卡一卡二卡三| 亚洲成人一二三| 狠狠色丁香久久婷婷综| 99久久久久久99| 欧美丝袜丝交足nylons| 欧美va亚洲va香蕉在线 | 久久噜噜亚洲综合| 国产精品不卡一区| 亚洲成在人线免费| 久久99国产乱子伦精品免费| 久久成人免费日本黄色| 成人av在线播放网站| 欧美肥妇bbw| 国产午夜精品福利| 亚洲国产成人va在线观看天堂| 九色综合国产一区二区三区| 成人午夜电影久久影院| 欧美视频日韩视频在线观看| 精品国产免费一区二区三区香蕉| 日韩理论片网站| 日本vs亚洲vs韩国一区三区| 高清不卡在线观看av| 欧美日韩一二三区| 国产欧美在线观看一区| 亚洲18色成人| 国产成人夜色高潮福利影视| 欧美精品v国产精品v日韩精品 | 精品亚洲成a人| 在线精品国精品国产尤物884a| 欧美一激情一区二区三区| 中文字幕一区日韩精品欧美| 美女久久久精品| 91免费小视频| 国产日韩精品一区| 麻豆久久一区二区| 欧美午夜精品久久久久久超碰| 中文字幕成人在线观看| 日韩1区2区日韩1区2区| 日本精品裸体写真集在线观看| 久久久久国产精品麻豆ai换脸| 天堂在线亚洲视频| 99久久精品国产一区二区三区| 精品久久久久久最新网址| 夜夜嗨av一区二区三区四季av| 高清不卡在线观看| 精品国产伦一区二区三区观看方式 | 国产一区二区三区四| 久久精品亚洲麻豆av一区二区 | 欧美精品日韩一区| 热久久久久久久| 欧美不卡视频一区| 国产乱码精品一区二区三| 日韩国产欧美一区二区三区| 宅男在线国产精品| 久久成人免费网站| 欧美国产1区2区| 99国产欧美另类久久久精品| 樱桃国产成人精品视频| 欧美日韩成人综合| 激情图片小说一区| 中文字幕在线观看不卡| 在线免费观看视频一区| 精品国产91乱码一区二区三区 | 国产欧美精品日韩区二区麻豆天美| 久久精品国产久精国产爱| 欧美日韩国产不卡| 亚洲国产色一区| 欧美专区在线观看一区| 一区二区三区在线观看动漫| 91网站黄www| 亚洲欧洲av在线| 色综合久久综合中文综合网| 亚洲三级理论片| 色拍拍在线精品视频8848| 亚洲蜜臀av乱码久久精品蜜桃| 93久久精品日日躁夜夜躁欧美| 综合激情网...| 色综合久久88色综合天天免费| 18成人在线观看| 91国在线观看| 日韩国产精品久久| 精品女同一区二区| 国产成人高清在线| 亚洲乱码中文字幕综合| 欧美无人高清视频在线观看| 午夜一区二区三区视频| 欧美一级欧美一级在线播放| 精品在线观看免费| 中文字幕欧美日韩一区| 色屁屁一区二区| 日韩成人一区二区三区在线观看| 欧美一区二区成人| 国产不卡一区视频| 亚洲人成网站在线| 在线成人av网站| 精品午夜一区二区三区在线观看| 亚洲国产精品t66y| 欧美中文字幕一区二区三区亚洲| 青青国产91久久久久久| 中文在线免费一区三区高中清不卡| 91老师片黄在线观看| 日本va欧美va精品| 国产精品美女久久福利网站| 欧美吞精做爰啪啪高潮|