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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? wil.pas.svn-base

?? Asphyre的傳奇WIL,可以用Asphyre來寫傳奇了
?? SVN-BASE
?? 第 1 頁 / 共 2 頁
字號:
unit WIL;

interface

uses
  Windows, Classes, Graphics, SysUtils, Dialogs,
  wmUtil, HUtil32,
  Direct3D, DIB, AsphyreDef, AsphyreDevices, AsphyreImages, DXTextures;

const
   UseDIBSurface : Boolean = FALSE;
   BoWilNoCache : Boolean = FALSE;

   WilVersion: integer = 20020;
   WixVersion: integer = 20021;

   WilTaiwan = 20030;
   WixTaiwan = 20031;

   WilChinesse = 20040;
   WixChinesse = 20041;

   WilEnglish = 20050;
   WixEnglish = 20051;

   WilMagicCode = $C02a1173;
   WixMagicCode = $B13a11F0;


type
   TLibType = (ltLoadBmp, ltLoadMemory, ltLoadMunual, ltUseCache);
   TInternationalVersion = (ivKorean, ivTaiwan, ivChinesse, ivEnglish);

   TBmpImage = record
      bmp: TBitmap;
      LatestTime: integer;
   end;
   PTBmpImage = ^TBmpImage;

   TBmpImageArr = array[0..MaxListSize div 4] of TBmpImage;
   TDxImageArr = array[0..MaxListSize div 4] of TDxImage;
   PTBmpImageArr = ^TBmpImageArr;
   PTDxImageArr = ^TDxImageArr;

   TWMImages = class (TComponent)
   private
      FFileName: string;
      FImageCount: integer;
      FLibType: TLibType;
      FDxDevice: TAsphyreDevice;

      FMaxMemorySize: integer;
      OldVersionWil: Boolean;
      procedure LoadAllData;
      procedure LoadAllDataBmp;
      procedure LoadIndex (idxfile: string);
      procedure LoadDxImage (position: integer; pdximg: PTDxImage);
      procedure LoadBmpImage (position: integer; pbmpimg: PTBmpImage);
      procedure FreeOldMemorys;
      function  FGetImageSurface (index: integer): TAsphyreImage;
      procedure FSetDxDevice (fdd: TAsphyreDevice);
      procedure FreeOldBmps;
      function  FGetImageBitmap (index: integer): TBitmap;
   protected
      //MemorySize: integer;
      lsDib: TDib;
      memchecktime: longword;
   public
      ImgArr: PTDxImageArr;
      BmpArr: PTBmpImageArr;
      IndexList: TList;
      //BmpList: TList;
      Stream: TFileStream;
      //MainSurfacePalette: TDirectDrawPalette;
      MainPalette: TRgbQuads;
      InternationalVersion: TInternationalVersion;

      constructor Create (AOwner: TComponent); override;
      destructor Destroy; override;

      procedure Initialize;
      procedure Finalize;
      procedure ClearCache;
      procedure LoadPalette;
      procedure FreeBitmap (index: integer);
      function  GetImage (index: integer; var px, py: integer): TAsphyreImage;
      function  GetCachedImage (index: integer; var px, py: integer): TAsphyreImage;
      function  GetCachedSurface (index: integer): TAsphyreImage;
      function  GetCachedBitmap (index: integer): TBitmap;
      procedure DrawZoom (paper: TCanvas; x, y, index: integer; zoom: Real);
      procedure DrawZoomEx (paper: TCanvas; x, y, index: integer; zoom: Real; leftzero: Boolean);
      property Images[index: integer]: TAsphyreImage read FGetImageSurface;
    	property Bitmaps[Index: Integer]: TBitmap read FGetImageBitmap;
   published
      property FileName: string read FFileName write FFileName;
      property ImageCount: integer read FImageCount;
      property DxDxDevice: TAsphyreDevice read FDxDevice write FSetDxDevice;
      property LibType: TLibType read FLibType write FLibType;
      property MaxMemorySize: integer read FMaxMemorySize write FMaxMemorySize;
   end;

function TDXDrawRGBQuadsToPaletteEntries(const RGBQuads: TRGBQuads; AllowPalette256: Boolean): TPaletteEntries;

procedure Register;


implementation

//uses
//   ClMain;  //唱吝俊 瘤匡 巴.

procedure Register;
begin
   RegisterComponents('Zura', [TWmImages]);
end;

constructor TWMImages.Create (AOwner: TComponent);
begin
   inherited Create (AOwner);
   FFileName := '';
   FLibType := ltLoadBmp;
   FImageCount := 0;
   //MemorySize := 0;
   FMaxMemorySize := 1024*1000; //1M

   FDxDevice := nil;
   Stream := nil;
   ImgArr := nil;
   BmpArr := nil;
   IndexList := TList.Create;
   lsDib := TDib.Create;
   lsDib.BitCount := 8;
   //BmpList := TList.Create;  //Bmp儈欄肺 葷儈且 錠鞏 葷儈

   memchecktime := GetTickCount;
   OldVersionWil := FALSE;
   InternationalVersion := ivKorean;
end;

destructor TWMImages.Destroy;
begin
   IndexList.Free;
//   BmpList.Free;
   if Stream <> nil then Stream.Free;
   lsDib.Free;
   inherited Destroy;
end;

procedure TWMImages.Initialize;
var
   idxfile: string;
   headerEx: TWMImageHeaderEx;
begin
   if not (csDesigning in ComponentState) then begin
      if FFileName = '' then begin
         raise Exception.Create ('FileName not assigned..');
         exit;
      end;
      if (LibType <> ltLoadBmp) and (FDxDevice = nil) then begin
         raise Exception.Create ('AsphyreDevice not assigned..');
         exit;
      end;
      if FileExists (FFileName) then begin
         if Stream = nil then
            Stream := TFileStream.Create (FFileName, fmOpenRead or fmShareDenyNone);
         Stream.Read (headerex, sizeof(TWMImageHeaderex));

         case InternationalVersion of
            //ivKorean: wilv := WilVersion;
            ivTaiwan:
               begin
                  WilVersion := WilTaiwan;
                  WixVersion := WixTaiwan;
               end;
            ivChinesse:
               begin
                  WilVersion := WilChinesse;
                  WixVersion := WixChinesse;
               end;
            ivEnglish:
               begin
                  WilVersion := WilEnglish;
                  WixVersion := WixEnglish;
               end;
         end;
         if longword(headerex.VersionInfo) <> longword(WilVersion + headerex.ImageCount) xor WilMagicCode then begin //撈傈 滾傈 牢 版快
            OldVersionWil := TRUE;
            Stream.Seek (- sizeof(integer), soFromCurrent);
         end;

         FImageCount := headerex.ImageCount;

         if LibType = ltLoadBmp then begin
            BmpArr := AllocMem (sizeof(TBmpImage) * FImageCount);
            if BmpArr = nil then
               raise Exception.Create (self.Name + ' BmpArr = nil');
         end else begin
            ImgArr := AllocMem (sizeof(TDxImage) * FImageCount);
            if ImgArr = nil then

               raise Exception.Create (self.Name + ' ImgArr = nil');
         end;

         idxfile := ExtractFilePath(FFileName) + ExtractFileNameOnly(FFileName) + '.WIX';
         LoadPalette;
         if LibType = ltLoadMemory then
            LoadAllData
         else begin
            LoadIndex (idxfile);
         end;

      end else begin
         MessageDlg (FFileName + ' Cannot find file.', mtWarning, [mbOk], 0);
      end;
   end;
end;

procedure TWMImages.Finalize;
var
   i: integer;
begin
  if ImgArr <> nil then begin
    for i:=0 to FImageCount-1 do begin
      if ImgArr[i].Surface <> nil then begin
        ImgArr[i].Surface.Free;
        ImgArr[i].Surface := nil;
      end;
    end;
  end;
  if Stream <> nil then begin
    Stream.Free;
    Stream := nil;
  end;
end;

function TDXDrawRGBQuadsToPaletteEntries(const RGBQuads: TRGBQuads;
  AllowPalette256: Boolean): TPaletteEntries;
var
  Entries: TPaletteEntries;
  dc: THandle;
  i: Integer;
begin
  Result := RGBQuadsToPaletteEntries(RGBQuads);

  if not AllowPalette256 then
  begin
    dc := GetDC(0);
    GetSystemPaletteEntries(dc, 0, 256, Entries);
    ReleaseDC(0, dc);

    for i:=0 to 9 do
      Result[i] := Entries[i];

    for i:=256-10 to 255 do
      Result[i] := Entries[i];
  end;

  for i:=0 to 255 do
    Result[i].peFlags := D3DPAL_READONLY;
end;

//Cache絕撈 茄波鍋俊 肺爹竊.
procedure TWMImages.LoadAllData;
var
   i: integer;
   imgi: TWMImageInfo;
   imgiEx: TWMImageInfoEx;
   dib: TDIB;
   dximg: TDxImage;
begin
   dib := TDIB.Create;
   for i:=0 to FImageCount-1 do begin
      if OldVersionWil then begin
         Stream.Read (imgi, sizeof(TWMImageInfo) - 4);

         dib.Width := imgi.Width;
         dib.Height := imgi.Height;
         dib.ColorTable := MainPalette;
         dib.UpdatePalette;
         Stream.Read (dib.PBits^, imgi.Width * imgi.Height);

         dximg.px := imgi.px;
         dximg.py := imgi.py;
         dximg.surface := TAsphyreImage.Create;
         dximg.surface.Quality      := aqLow;
         dximg.surface.AlphaLevel   := alNone;
         dximg.surface.PatternSize  := Point(imgi.Width, imgi.Height);
         dximg.surface.Size         := Point(256, 256);//TextureSize;
         dximg.surface.VisibleSize  := Point(imgi.Width, imgi.Height);
         {dximg.surface := TDirectDrawSurface.Create (FDDraw);
         dximg.surface.SystemMemory := TRUE;
         dximg.surface.SetSize (imgi.Width, imgi.Height);
         dximg.surface.Canvas.Draw (0, 0, dib);
         dximg.surface.Canvas.Release;}
         dib.Clear; //FreeImage;

         //dximg.surface.TransparentColor := 0;
         ImgArr[i] := dximg;
      end else begin
         Stream.Read (imgiex, sizeof(TWMImageInfoEx) - 4);

         dib.Width := imgiex.Width;
         dib.Height := imgiex.Height;
         dib.ColorTable := MainPalette;
         dib.UpdatePalette;
         Stream.Read (dib.PBits^, imgiex.Width * imgiex.Height);

         dximg.px := imgiex.px;
         dximg.py := imgiex.py;
         {dximg.surface := TDirectDrawSurface.Create (FDDraw);
         dximg.surface.SystemMemory := TRUE;
         dximg.surface.SetSize (imgiex.Width, imgiex.Height);
         dximg.surface.Canvas.Draw (0, 0, dib);
         dximg.surface.Canvas.Release;}
         dib.Clear; //FreeImage;

         //dximg.surface.TransparentColor := 0;
         ImgArr[i] := dximg;
      end;
   end;
   dib.Free;
end;

procedure TWMImages.LoadPalette;
var
   Entries: TPaletteEntries;
begin
   if OldVersionWil then
      Stream.Seek (sizeof(TWMImageHeader), 0)
   else
      Stream.Seek (sizeof(TWMImageHeaderEx), 0);

   Stream.Read (MainPalette, sizeof(TRgbQuad) * 256); //迫貳飄

   //Entries := TDXDrawRGBQuadsToPaletteEntries (MainPalette, TRUE);
   //MainSurfacePalette := TDirectDrawPalette.Create (FDDraw);
   ////MainSurfacePalette.SetEntries(0, 256, Entries);
   //MainSurfacePalette.CreatePalette(DDPCAPS_8BIT, Entries);
end;

//Cache絕撈 茄波鍋俊 Bmp肺 肺爹竊.
procedure TWMImages.LoadAllDataBmp;
var
   i: integer;
   pbuf: PByte;
   imgi: TWMImageInfo;
   bmp: TBitmap;
begin
{   GetMem (pbuf, 1024*768);  //傍儈 滾欺積己, 漂喊茄 撈蠟啊 樂瀾
   Stream.Seek (sizeof(TWMImageHeader), 0);
   Stream.Read (MainPalette, sizeof(TRgbQuad) * 256); //迫貳飄
   for i:=0 to ImageCount-1 do begin
      Stream.Read (imgi, sizeof(TWMImageInfo)-4);
      Stream.Read (pbuf^, imgi.Width * imgi.Height);
      bmp := MakeBmp (imgi.Width, imgi.Height, pbuf, MainPalette);
      BmpList.Add (bmp);     //BMP府膠飄甫 悼矯俊 包府.. (弊府靛俊 弊府扁儈)
   end;
   FreeMem (pbuf); }
end;

procedure TWMImages.LoadIndex (idxfile: string);
var
   fhandle, i, value: integer;
   header: TWMIndexHeader;
   headerex: TWMIndexHeaderex;
   pidx: PTWMIndexInfo;
   pvalue: PInteger;
begin
   indexlist.Clear;
   if FileExists (idxfile) then begin
      fhandle := FileOpen (idxfile, fmOpenRead or fmShareDenyNone);
      if fhandle > 0 then begin
         if OldVersionWil then begin
            FileRead (fhandle, header, sizeof(TWMIndexHeader));

            GetMem (pvalue, 4*header.IndexCount);
            FileRead (fhandle, pvalue^, 4*header.IndexCount);
            for i:=0 to header.IndexCount-1 do begin
               new (pidx);
               value := PInteger(integer(pvalue) + 4*i)^;
               IndexList.Add (pointer(value));
            end;
         end else begin
            FileRead (fhandle, headerex, sizeof(TWMIndexHeaderEx));

            GetMem (pvalue, 4*headerex.IndexCount);
            FileRead (fhandle, pvalue^, 4*headerex.IndexCount);
            for i:=0 to headerex.IndexCount-1 do begin
               new (pidx);
               value := PInteger(integer(pvalue) + 4*i)^;
               IndexList.Add (pointer(value));
            end;
         end;
         FreeMem (pvalue);
         FileClose (fhandle);
      end;
   end;
end;

{----------------- Private Variables ---------------------}

function  TWMImages.FGetImageSurface (index: integer): TAsphyreImage;
begin
   Result := nil;
   if LibType = ltUseCache then begin
      Result := GetCachedSurface (index);
   end else
      if LibType = ltLoadMemory then begin
         if (index >= 0) and (index < ImageCount) then
            Result := ImgArr[index].Surface;
      end;
         
end;

function  TWMImages.FGetImageBitmap (index: integer): TBitmap;
begin
   if LibType <> ltLoadBmp then exit;
   Result := GetCachedBitmap (index);
   {if index in [0..BmpList.Count-1] then begin
      Result := TBitmap (BmpList[index]);
   end else
      Result := nil;}
end;

procedure TWMImages.FSetDxDevice (fdd: TAsphyreDevice);
begin
   FDxDevice := fdd;
end;

// *** DirectDrawSurface Functions

procedure TWMImages.LoadDxImage (position: integer; pdximg: PTDxImage);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品电影在线播放| 午夜一区二区三区在线观看| 制服丝袜一区二区三区| 一本色道久久加勒比精品| 国产**成人网毛片九色| 九九精品一区二区| 国产精品中文字幕日韩精品| 激情五月婷婷综合网| 国产精品 日产精品 欧美精品| 日本不卡一区二区三区高清视频| 午夜精品福利一区二区蜜股av| 五月激情综合网| 日韩成人伦理电影在线观看| 亚洲bdsm女犯bdsm网站| 日本sm残虐另类| 国产成人一区在线| 91麻豆国产福利在线观看| 色呦呦国产精品| 欧美日韩国产中文| 久久综合久色欧美综合狠狠| 久久精品亚洲一区二区三区浴池| 久久久不卡影院| 亚洲免费看黄网站| 日韩精品欧美精品| 国产高清不卡二三区| 99精品久久99久久久久| 欧美在线不卡一区| 精品嫩草影院久久| 亚洲欧美激情一区二区| 日韩高清欧美激情| av综合在线播放| 在线电影欧美成精品| 国产精品亲子乱子伦xxxx裸| 一区二区三区日韩精品视频| 日本少妇一区二区| 岛国一区二区在线观看| 欧美图区在线视频| 中文文精品字幕一区二区| 亚洲成人午夜影院| 懂色av一区二区三区免费看| 7777精品伊人久久久大香线蕉的 | caoporen国产精品视频| 欧美日韩国产高清一区二区 | 久久蜜桃一区二区| 一区二区三区四区不卡在线| 蜜臀91精品一区二区三区| 丰满白嫩尤物一区二区| 欧美一级一级性生活免费录像| 国产精品沙发午睡系列990531| 天天影视涩香欲综合网| 99久久精品免费观看| 久久综合999| 日韩国产欧美三级| av一二三不卡影片| 2017欧美狠狠色| 亚洲成人动漫在线免费观看| 国产电影一区二区三区| 91行情网站电视在线观看高清版| 日韩一区二区影院| 亚洲欧美日韩国产一区二区三区 | 国产精品免费视频观看| 丝袜美腿成人在线| 一本色道久久加勒比精品| 欧美国产欧美综合| 国产综合色产在线精品| 91精品中文字幕一区二区三区| 一区二区三区精品在线| 97精品久久久久中文字幕 | 色嗨嗨av一区二区三区| 亚洲另类春色国产| 99久久久国产精品| 国产精品久久久久久亚洲伦| 日韩av电影天堂| 欧美日韩久久久一区| 亚洲精品日日夜夜| 日本韩国欧美一区| 亚洲视频一区在线| 在线一区二区三区四区五区 | 久久成人免费电影| 日韩免费视频一区二区| 日韩精品久久久久久| 日韩一区二区三区在线观看| 视频一区国产视频| 91精品欧美综合在线观看最新 | 99精品国产热久久91蜜凸| 欧美激情资源网| 成a人片国产精品| 亚洲精品乱码久久久久久久久 | 2020国产成人综合网| 国产精品夜夜爽| 一区二区久久久久| 欧美三级一区二区| 日本91福利区| 欧美va亚洲va国产综合| 国产成人av资源| 亚洲色图欧美在线| 欧美久久久久久久久久| 美国毛片一区二区| 国产婷婷色一区二区三区| 91在线播放网址| 亚洲第一会所有码转帖| 日韩亚洲欧美中文三级| 国产大陆精品国产| 亚洲综合精品久久| 精品久久人人做人人爱| 成人丝袜18视频在线观看| 一区二区三区成人| 精品国产乱码久久久久久牛牛| 国产99久久久国产精品潘金网站| 亚洲精品自拍动漫在线| 日韩一级免费观看| 99re6这里只有精品视频在线观看| 亚洲国产sm捆绑调教视频| 精品盗摄一区二区三区| 日本黄色一区二区| 国产成人av电影在线播放| 亚洲一区av在线| 国产欧美一区二区三区在线看蜜臀| 91网站视频在线观看| 久久成人精品无人区| 一区二区三区在线观看网站| 精品久久久久香蕉网| 91精品国产综合久久香蕉麻豆 | 欧美高清dvd| eeuss影院一区二区三区| 日韩高清一区二区| 亚洲人成7777| 国产欧美一区二区精品婷婷 | 中文字幕不卡一区| 日韩视频在线永久播放| 色一区在线观看| 国产高清精品久久久久| 美女一区二区在线观看| 一区二区三区四区在线播放| 中文字幕不卡在线观看| 久久久午夜精品理论片中文字幕| 91精彩视频在线| 色综合久久天天| 国产成人在线网站| 国产精品亚洲专一区二区三区| 五月天久久比比资源色| 亚洲影视资源网| 一区二区三区四区不卡视频| 国产精品久久99| 国产精品色哟哟| 久久久亚洲精品一区二区三区| 精品免费国产一区二区三区四区| 51精品秘密在线观看| 欧美视频在线观看一区二区| 色欧美88888久久久久久影院| 成+人+亚洲+综合天堂| 欧美色视频在线观看| 色88888久久久久久影院野外| 不卡的av中国片| 99热99精品| 9l国产精品久久久久麻豆| 成人激情电影免费在线观看| 国产一区二区h| 国产激情一区二区三区桃花岛亚洲| 国产精品资源站在线| 成人综合婷婷国产精品久久免费| 国产精品2024| 成人在线综合网| 99re热这里只有精品免费视频| 99re在线精品| 欧美伦理影视网| 日韩精品中文字幕一区二区三区| 欧美一级专区免费大片| 久久久久久久久久久黄色| 国产农村妇女精品| 综合网在线视频| 亚洲图片欧美一区| 免费在线观看一区| 国产乱码精品一品二品| 丁香一区二区三区| 97se亚洲国产综合自在线观| 欧美色倩网站大全免费| 欧美一区欧美二区| 欧美激情综合在线| 一区二区三区高清| 国产麻豆成人传媒免费观看| 成人午夜电影小说| 欧美在线观看禁18| 久久久久9999亚洲精品| 亚洲欧美视频在线观看视频| 日本在线不卡视频| 国产盗摄精品一区二区三区在线| 日本高清免费不卡视频| 日韩欧美一二区| 亚洲女同ⅹxx女同tv| 久久精品噜噜噜成人88aⅴ| 成人免费视频app| 欧美精品在欧美一区二区少妇| 日韩一级片在线观看| 中文字幕在线一区免费| 欧美aⅴ一区二区三区视频| 成人夜色视频网站在线观看| 欧美人妇做爰xxxⅹ性高电影| 久久午夜色播影院免费高清| 亚洲国产日韩a在线播放性色|