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

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

?? dibpaletteeditor.pas

?? Delphi控件
?? PAS
字號(hào):
unit DIBPaletteEditor;
{-----------------------------------------------------------------------------
The contents of this file are subject to the Mozilla Public License
Version 1.1 (the "License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.mozilla.org/MPL/MPL-1.1.html

Software distributed under the License is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either expressed or implied. See the License for
the specific language governing rights and limitations under the License.

The Original Code is: DIBAnimContainerEditor.PAS, released April 04, 2001.

The Initial Developer of the Original Code is S閎astien Merle (sylane@excite.com)
Portions created by S閎astien Merle are Copyright (C) 2001 S閎astien Merle
All Rights Reserved.

Contributor(s):
None as yet


Last Modified: April 04, 2001

You may retrieve the latest version of this file at the Project JEDI home page,
located at http://www.delphi-jedi.org
or at http://www.stuckindoors.com/dib


Known Issues:
-----------------------------------------------------------------------------}

interface
{$i OpenSource/dfs.inc}

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  {$IFDEF DFS_NO_DSGNINTF}
  DesignEditors, DesignIntf,
  {$ELSE}
  DsgnIntf,
  {$ENDIF}
  Buttons, ExtCtrls, StdCtrls, cDIBPalette;

type
  TfmDIBPaletteEditor = class(TForm)
    pnlPalette: TPanel;
    btnLoadFromBmp: TButton;
    pbPalette: TPaintBox;
    btnLoadFromRaw: TButton;
    BitBtn1: TBitBtn;
    btnCancel: TBitBtn;
    odRaw: TOpenDialog;
    odBitmap: TOpenDialog;
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure pbPalettePaint(Sender: TObject);
    procedure btnLoadFromRawClick(Sender: TObject);
    procedure btnLoadFromBmpClick(Sender: TObject);
  private
    fLocalPalette: PLogPalette;
  public
    procedure setPalette(aPal: PLogPalette);
    procedure copyPalette(aPal: PLogPalette);

    property LocalPalette: PLogPalette read fLocalPalette;
  end;

  TDIBPaletteEditor = class(TComponentEditor)
  public
    {$IFDEF DFS_NO_DSGNINTF}
    constructor Create(AComponent: TComponent; ADesigner: IDesigner); override;
    {$ELSE}
    constructor Create(AComponent: TComponent; ADesigner: IFormDesigner); override;
    {$ENDIF}
    procedure Edit; override;
    procedure ExecuteVerb(Index: Integer); override;
    function GetVerb(Index: Integer): string; override;
    function GetVerbCount: Integer; override;
  end;

var
  fmDIBPaletteEditor: TfmDIBPaletteEditor;

implementation

{$R *.DFM}

uses Math;

{$IFDEF DFS_NO_DSGNINTF}
constructor TDIBPaletteEditor.Create(AComponent: TComponent; ADesigner: IDesigner);
  {$ELSE}
  constructor TDIBPaletteEditor.Create(AComponent: TComponent; ADesigner: IFormDesigner);
    {$ENDIF}
  begin
    inherited Create(AComponent, ADesigner);
  end;

  procedure TDIBPaletteEditor.Edit;
  begin
    ExecuteVerb(0);
  end;

  function TDIBPaletteEditor.GetVerb(Index: Integer): string;
  begin
    case Index of
      0: Result := 'Load Palette';
    end;
  end;

  function TDIBPaletteEditor.GetVerbCount: Integer;
  begin
    Result := 1;
  end;

  procedure TDIBPaletteEditor.ExecuteVerb(Index: Integer);
  begin
    case Index of
      0:
        begin
          with TfmDIBPaletteEditor.Create(Application) do
            try
              setPalette((Component as TDIBPalette).PAL);
              ShowModal;
              if ModalResult = mrOk then
              begin
                copyPalette((Component as TDIBPalette).PAL);
                (Component as TDIBPalette).UpdatePalette;
                Self.Designer.Modified;
              end;
            finally
              Release;
            end;
        end;
    end;
  end;


  procedure TfmDIBPaletteEditor.FormCreate(Sender: TObject);
  var
    lIndex: Integer;
  begin
    GetMem(fLocalPalette, 4 * 255);
    if fLocalPalette = nil then
      raise Exception.Create('Could not get enough memory for a palette.');

    fLocalPalette.palVersion := $300;
    fLocalPalette.palNumEntries := 235;
    for lIndex := 0 to 234 do 
    begin
      fLocalPalette.palPalEntry[lIndex].peRed := 0;
      fLocalPalette.palPalEntry[lIndex].peGreen := 0;
      fLocalPalette.palPalEntry[lIndex].peBlue := 0;
      fLocalPalette.palPalEntry[lIndex].peFlags := 0;
    end;
  end;

  procedure TfmDIBPaletteEditor.FormDestroy(Sender: TObject);
  begin
    FreeMem(fLocalPalette);
  end;

  procedure TfmDIBPaletteEditor.copyPalette(aPal: PLogPalette);
  begin
    if (aPal <> nil) then
      Move(fLocalPalette.palPalEntry[0], aPal.palPalEntry[0],
        4 * Min(fLocalPalette.palNumEntries, aPal.palNumEntries));
  end;

  procedure TfmDIBPaletteEditor.setPalette(aPal: PLogPalette);
  begin
    if (aPal <> nil) then
      Move(aPal.palPalEntry[0], fLocalPalette.palPalEntry[0],
        4 * Min(fLocalPalette.palNumEntries, aPal.palNumEntries));
  end;

  procedure TfmDIBPaletteEditor.pbPalettePaint(Sender: TObject);
  var
    x, y, i: Integer;
  begin
    with Sender as TPaintBox do
    begin
      i := 0;
      for y := 0 to 8 do
        for x := 0 to 23 do
        begin 
          Canvas.Brush.Color := RGB(fLocalPalette.palPalEntry[i].peRed,
            fLocalPalette.palPalEntry[i].peGreen,
            fLocalPalette.palPalEntry[i].peBlue);
          Canvas.FillRect(rect(x * 10, y * 10, (x + 1) * 10, (y + 1) * 10));
          inc(i);
        end;
      for x := 0 to 18 do
      begin
        Canvas.Brush.Color := RGB(fLocalPalette.palPalEntry[i].peRed,
          fLocalPalette.palPalEntry[i].peGreen,
          fLocalPalette.palPalEntry[i].peBlue);
        Canvas.FillRect(rect(x * 10, 90, (x + 1) * 10, 100));
        inc(i);
      end;
    end;
  end;


  procedure TfmDIBPaletteEditor.btnLoadFromRawClick(Sender: TObject);
  var
    lFile: file;
    lReadCount: Integer;
    lIndex: Integer;
    lBuffer: array [0..767] of Byte;
  begin
    if odRaw.Execute then
    begin
      assignFile(lFile, odRaw.FileName);
      reset(lFile, 1);
      BlockRead(lFile, lBuffer, 768, lReadCount);
      closeFile(lFile);
      if (lReadCount <> 768) then
        raise Exception.Create('Invalid Palette File');
      for lIndex := 0 to 234 do 
      begin
        fLocalPalette.palPalEntry[lIndex].peRed := lBuffer[3 * lIndex];
        fLocalPalette.palPalEntry[lIndex].peGreen := lBuffer[3 * lIndex + 1];
        fLocalPalette.palPalEntry[lIndex].peBlue := lBuffer[3 * lIndex + 2];
        fLocalPalette.palPalEntry[lIndex].peFlags := 0;
      end;
      pbPalette.Invalidate;
    end;
  end;

  procedure TfmDIBPaletteEditor.btnLoadFromBmpClick(Sender: TObject);
  var
    lBitmap: TBitmap;
  begin
    if odBitmap.Execute then
    begin
      lBitmap := TBitmap.Create;
      try
        lBitmap.LoadFromFile(odBitmap.FileName);
        if lBitmap.PixelFormat <> pf8bit then
          raise Exception.Create('Bitmap must be 8 bit.');
        GetPaletteEntries(lBitmap.Palette, 0, 235, fLocalPalette.palPalEntry[0]);
      finally
        lBitmap.Free;
      end;
      pbPalette.Invalidate;
    end;
  end;

  end.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久午夜电影| 亚洲精品高清在线| 欧美午夜不卡在线观看免费| 久久99热99| 亚洲国产成人av好男人在线观看| 日韩一区二区三区精品视频| 99久久婷婷国产综合精品电影| 精品一区二区三区香蕉蜜桃| 亚洲成人资源在线| 国产精品入口麻豆九色| 日韩免费高清电影| 91传媒视频在线播放| 国产69精品久久99不卡| 久久se这里有精品| 日韩有码一区二区三区| 亚洲黄色小说网站| 中文字幕一区不卡| 中文字幕乱码一区二区免费| 欧美成人三级电影在线| 91精品啪在线观看国产60岁| 欧美日精品一区视频| 99r精品视频| 白白色亚洲国产精品| 国产精品亚洲成人| 精品一区二区免费看| 日本中文字幕一区二区有限公司| 一区二区三区在线高清| 亚洲视频一区二区在线观看| 国产精品视频一区二区三区不卡| 久久婷婷久久一区二区三区| 日韩欧美激情在线| 日韩一区二区电影网| 国产女主播在线一区二区| 精品国产乱码久久久久久免费| 3751色影院一区二区三区| 欧美性色黄大片| 欧美午夜一区二区三区| 欧美偷拍一区二区| 欧美日韩精品一区二区三区四区| 欧美伊人久久大香线蕉综合69| 色哦色哦哦色天天综合| 一本色道亚洲精品aⅴ| 日本韩国欧美一区| 日本高清无吗v一区| 欧美亚一区二区| 欧美精品久久天天躁| 欧美一区中文字幕| 欧美一区二区三区精品| 日韩你懂的电影在线观看| 精品日韩一区二区三区| 久久九九久精品国产免费直播| 精品国产3级a| 欧美经典三级视频一区二区三区| 国产丝袜在线精品| 中文字幕欧美一区| 亚洲一区二区三区自拍| 丝袜诱惑制服诱惑色一区在线观看 | 亚洲午夜电影在线观看| 亚洲图片欧美综合| 蜜臀精品一区二区三区在线观看 | 日韩电影免费在线观看网站| 免费看精品久久片| 国产九色精品成人porny| 成人美女视频在线观看18| 色综合天天天天做夜夜夜夜做| 色狠狠色狠狠综合| 日韩午夜av电影| 三级影片在线观看欧美日韩一区二区| 青青草一区二区三区| 成人午夜私人影院| 欧美亚洲尤物久久| 欧美大片免费久久精品三p| 国产女人水真多18毛片18精品视频| 国产精品你懂的在线欣赏| 亚洲国产一区二区a毛片| 青草国产精品久久久久久| 国产一区二区伦理片| 91在线云播放| 欧美大胆人体bbbb| 亚洲色图欧洲色图| 免费观看一级欧美片| 成人av网站在线| 宅男在线国产精品| 中文字幕国产一区| 日韩av一区二区三区四区| 成人av网站在线观看| 日韩精品在线看片z| 亚洲欧洲日韩女同| 日本不卡一区二区| 成人av一区二区三区| 欧美一区二区私人影院日本| 国产精品亲子乱子伦xxxx裸| 亚洲va天堂va国产va久| 成人综合婷婷国产精品久久蜜臀 | 中文字幕在线一区免费| 蜜桃视频一区二区三区| 日本精品视频一区二区三区| 欧美成人一区二区| 亚洲综合免费观看高清完整版在线| 久久国产乱子精品免费女| 日本高清不卡在线观看| 欧美韩日一区二区三区四区| 免费黄网站欧美| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 欧美精品99久久久**| 中文字幕一区在线观看视频| 老司机午夜精品99久久| 欧美美女视频在线观看| 中文字幕一区二区视频| 国产一区二区三区在线观看免费 | 国产成人av一区二区三区在线观看| 欧美三级欧美一级| 亚洲欧美二区三区| 懂色av中文一区二区三区| 日韩精品专区在线影院观看| 午夜一区二区三区视频| 91小视频在线免费看| 久久精品人人做人人爽人人| 另类综合日韩欧美亚洲| 日本韩国欧美一区| 亚洲欧美偷拍三级| 99久久99久久综合| 国产亚洲一区二区三区四区| 免费欧美高清视频| 51精品秘密在线观看| 午夜av一区二区三区| 欧美中文字幕一区二区三区亚洲| 亚洲色图欧洲色图婷婷| 色综合久久中文字幕综合网| 中文字幕一区二区不卡| 91在线精品一区二区| 亚洲国产高清不卡| 不卡一区在线观看| 国产精品久久网站| thepron国产精品| 国产精品超碰97尤物18| 91色在线porny| 亚洲另类春色国产| 欧美综合久久久| 三级不卡在线观看| 欧美一区二区三区视频免费| 色婷婷国产精品久久包臀| 亚洲人精品午夜| 色婷婷av久久久久久久| 午夜欧美电影在线观看| 欧美一区二区在线免费播放| 九九热在线视频观看这里只有精品| 欧美成人精品福利| 国产精一区二区三区| 国产精品国产三级国产aⅴ中文| 成人精品国产免费网站| 一区二区三区在线影院| 精品视频一区 二区 三区| 毛片av一区二区三区| 国产色产综合色产在线视频 | av资源站一区| 亚洲毛片av在线| 欧美一区国产二区| 国产福利不卡视频| 亚洲男人的天堂一区二区| 欧美丝袜丝交足nylons| 男人操女人的视频在线观看欧美| 精品成人一区二区| 不卡电影免费在线播放一区| 亚洲综合成人在线| 日韩欧美激情四射| 99在线视频精品| 视频一区视频二区中文| 亚洲精品一区二区三区精华液| 成人精品视频一区| 午夜视黄欧洲亚洲| 国产日韩精品一区二区三区| 色94色欧美sute亚洲线路一ni | 国产色一区二区| 在线观看日韩电影| 久久99精品久久久久久| 亚洲视频一区二区在线| 欧美一二三在线| 国产成人一区二区精品非洲| 亚洲一二三四区| 337p粉嫩大胆噜噜噜噜噜91av| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | 欧美一级二级三级蜜桃| 精品裸体舞一区二区三区| 99精品1区2区| 久草精品在线观看| 亚洲一区在线观看免费| 国产午夜精品一区二区三区视频| 91久久精品一区二区| 国产精品一区二区三区四区| 亚洲精品欧美二区三区中文字幕| 欧美大片在线观看一区| 欧美日韩中文字幕一区二区| 国产suv精品一区二区三区| 亚洲福利视频一区二区| 国产精品欧美久久久久无广告| 欧美sm极限捆绑bd| 欧美三级韩国三级日本三斤| 成人sese在线| 国产乱码一区二区三区|