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

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

?? buf2d.inc

?? 將bmf在DOS下顯示出來
?? INC
?? 第 1 頁 / 共 2 頁
字號:
{$IFNDEF buf2d}
{$DEFINE buf2d}
{$I RECT.INC}
{$I VRAM.INC}
{$IFDEF fw}
 {$I FONT8.INC}
{$ENDIF}
const
  OUT_OF_BUF2D=0; {see getPoint()}
  FLOODFILLSTACKSIZE=64;
var
  floodfillstack:array[0..FLOODFILLSTACKSIZE-1] of TPosition;
  floodfillSP:longint:=0;
type
  PBuf2d=^TBuf2d;
  TBuf2d=object(TRect)
  private
    d:pointer;
    method:longint;
    Procedure flood2(_x,_y:TCoordinate; c1:byte);
  public
    Constructor init0;
    Constructor init(_x,_y,_w,_h:TCoordinate);
    Procedure clear; virtual;
    Procedure free; virtual;
    Procedure dim;
    Procedure redim;
    Procedure resize(_w,_h:TCoordinate); virtual;
    Procedure paint(color:byte); virtual;
    Function  load(var f:TStream):boolean; virtual;
    Function  save(var f:TStream):boolean; virtual;
    Procedure copyToMe(src:PRect); virtual;
    Function  empty:boolean; virtual;
    Function  at(_x,_y:TCoordinate):pointer; virtual;
    Function  atLine(_y:longint):pointer; virtual;
    Function  contains(_x,_y:TCoordinate):boolean; virtual;
    Function  getPoint(_x,_y:TCoordinate):byte;
    Procedure setPoint(_x,_y:TCoordinate;point:byte);
    Procedure xorPoint(_x,_y:TCoordinate;point:byte);
    Procedure addPoint(_x,_y:TCoordinate;point:byte);
    Procedure paintRow(_x,_y,_w:TCoordinate; c:byte);
    Procedure paintColumn(_x,_y,_h:TCoordinate; c:byte);
    Procedure quad(_x,_y,_w,_h:TCoordinate; c:byte);
    Procedure quad_(_x,_y,_w,_h:TCoordinate; c:byte);
    Procedure border(thickness,c1,c2:byte);
    Procedure line(x0,y0,x1,y1:TCoordinate; c:byte);
    Procedure turnRight; virtual;
    Procedure flipH;
    Procedure flipV;
    Procedure pasteInMe(_x,_y:TCoordinate;host:PBuf2d);
    Procedure pasteMeTo(dest:PBuf2d;_x,_y:TCoordinate);
    Procedure paste; virtual;
    Procedure cycleH(rel:longint);
    Procedure cycleV(rel:longint);
    Procedure shiftH(rel:longint);
    Procedure shiftV(rel:longint);
    Procedure replace(old,new:byte;swap:boolean);
    Procedure neg(n:byte);
    Procedure zoom2x;
    Procedure flood(_x,_y:TCoordinate; c1:byte);
    Procedure flashLine; virtual;
    {$IFDEF fw}
    Procedure fw(_x,_y:TCoordinate;s:string;color,f:byte);
    {$ENDIF}
    Destructor done; virtual;
  end;  {TBuf2d}

Constructor TBuf2d.init0;
begin
  x:=0; y:=0;
  w:=0; h:=0;
  d:=nil;
  method:=mtMovsd;
end;  {TBuf2d.init0}

Constructor TBuf2d.init(_x,_y,_w,_h:TCoordinate);
begin
  inherited init(_x,_y,_w,_h);
  dim;
  method:=mtMovsd;
end;  {TBuf2d.init}

Procedure TBuf2d.clear;
begin
  inherited clear;
  d:=nil;
end;  {TBuf2d.clear}

Procedure TBuf2d.free;
begin
  if not empty then freemem(d,contentSize);
  clear;
end;  {TBuf2d.free}

Procedure TBuf2d.dim;
begin
  if (w=0) or (h=0) then begin
    clear;
    exit;
  end;
  getmem(d,contentSize);
  if d=nil then clear else paint(0);
end;  {TBuf2d.dim}

Procedure TBuf2d.redim;
var _w,_h:TCoordinate;
begin
  _w:=w;
  _h:=h;
  free;
  init(x,y,_w,_h);
end;  {TBuf2d.redim}

Procedure TBuf2d.copyToMe(src:PRect);
begin
  free;
  if src=nil then exit;
  init(src^.x,src^.y,src^.w,src^.h);
  if typeof(src^)=typeof(TBuf2d) then
    if not PBuf2d(src)^.empty then move(PBuf2d(src)^.d^,d^,w*h);
end;  {TBuf2d.copyToMe}

Procedure TBuf2d.resize(_w,_h:TCoordinate);
var
  _d:pointer;
  j:longint;
begin
  if (_w=0) or (_h=0) then begin free; exit; end;
  getmem(_d,_w*_h);
  if _d=nil then die(errGetmem) else fillchar(_d^,_w*_h,0);
  if d<>nil then
    for j:=0 to Min(h,_h)-1 do
      move(atline(j)^,ptr(ofs(_d^)+j*_w)^,Min(w,_w));
  free;
  d:=_d;
  w:=_w;
  h:=_h;
end;  {TBuf2d.resize}

Procedure TBuf2d.paint(color:byte);
begin
  if not empty then fillchar(d^,contentSize,color);
end;  {TBuf2d.paint}

Function  TBuf2d.load(var f:TStream):boolean;
begin
  free;
  result:=true;
  f.readOrSkip(w,sizeof(w),result);
  f.readOrSkip(h,sizeof(h),result);
  dim;
  if not empty then result:=f.read(d^,contentSize) and result;
end;  {TBuf2d.load}

Function  TBuf2d.save(var f:TStream):boolean;
begin
  result:=true;
  f.writeOrSkip(w,sizeof(w),result);
  f.writeOrSkip(h,sizeof(h),result);
  if not empty then result:=f.write(d^,contentSize) and result;
end;  {TBuf2d.save}

Function  TBuf2d.empty:boolean;
begin
  if inherited empty then d:=nil;
  result:=(d=nil);
end;  {TBuf2d.empty}

Function  TBuf2d.contains(_x,_y:longint):boolean;
begin
  result:=inherited contains(_x,_y) and not empty;
end;  {TBuf2d.contains}

Function  TBuf2d.at(_x,_y:TCoordinate):pointer;
begin
  result:=nil;
  if empty or (_x<0) or (_x>=w) or (_y<0) or (_y>=h) then exit;
  result:=d;
  inc(result,_y*w+_x);
end;  {TBuf2d.at}

Function  TBuf2d.atLine(_y:TCoordinate):pointer;
begin
  if empty or (_y<0) or (_y>=h) then result:=nil
  else begin
    result:=d;
    inc(result,_y*w);
  end;
end;  {TBuf2d.atline}

Function  TBuf2d.getPoint(_x,_y:TCoordinate):byte;
var where:pointer;
begin
  where:=at(_x,_y);
  if where=nil then result:=OUT_OF_BUF2D else result:=byte(where^);
end;  {TBuf2d.getpoint}

Procedure TBuf2d.setPoint(_x,_y:TCoordinate; point:byte);
var where:pointer;
begin
  where:=at(_x,_y);
  if where<>nil then byte(where^):=point;
end;  {TBuf2d.setpoint}

Procedure TBuf2d.xorPoint(_x,_y:TCoordinate; point:byte);
var where:pointer;
begin
  where:=at(_x,_y);
  if where<>nil then byte(where^):=byte(where^) xor point;
end;  {TBuf2d.xorpoint}

Procedure TBuf2d.addPoint(_x,_y:TCoordinate; point:byte);
var where:pointer;
begin
  where:=at(_x,_y);
  if where<>nil then byte(where^):=byte(byte(where^)+point);
end;  {TBuf2d.addpoint}

Procedure TBuf2d.paintRow(_x,_y,_w:TCoordinate; c:byte);
var p:pointer;
begin
  if empty then exit;
  if (_y<0) or (_y>=h) or (_w<=0) or (_x+_w<=0) or (_x>=w) then exit;
  if _x<0 then begin
    inc(_w,_x);
    _x:=0;
  end;
  if _x+_w>w then _w:=w-_x;
  p:=at(_x,_y);
  if p<>nil then fillchar(p^,_w,c);
end;  {TBuf2d.paintRow}

Procedure TBuf2d.paintColumn(_x,_y,_h:TCoordinate; c:byte);
var
  p:pointer;
  j:integer;
begin
  if empty then exit;
  if (_x<0) or (_x>w) or (_h<=0) or (_y+_h<=0) or (_y>=h) then exit;
  if _y<0 then begin
    inc(_h,_y);
    _y:=0;
  end;
  if _y+_h>h then _h:=h-_y;
  p:=at(_x,_y);
  if p<>nil then
    for j:=0 to pred(_h) do begin
      byte(p^):=c;
      inc(p,w);
    end;
end;  {TBuf2d.paintColumn}

Procedure TBuf2d.quad(_x,_y,_w,_h:TCoordinate; c:byte);
var j:longint;
begin
  if empty then exit;
  if (_w<=0) or (_h<=0) or (_x+_w<=0) or (_y+_h<=0) or (_x>=w) or (_y>=h) then exit;
  for j:=Max(_y,0) to _y+pred(Min(h,_h)) do
    paintRow(_x,j,_w,c);
end;  {TBuf2d.quad}

Procedure TBuf2d.quad_(_x,_y,_w,_h:TCoordinate; c:byte);
begin
  paintRow(_x,_y,_w,c);
  paintRow(_x,pred(_y+_h),_w,c);
  paintColumn(_x,succ(_y),pred(pred(_h)),c);
  paintColumn(pred(_x+_w),succ(_y),pred(pred(_h)),c);
end;  {TBuf2d.quad_}

Procedure TBuf2d.border(thickness,c1,c2:byte);
var i:integer;
begin
  if empty or (thickness=0) then exit;
  i:=h; if w<h then i:=w;
  if thickness>i shr 1 then thickness:=i shr 1;
  quad(0,0,w,thickness,c1);
  quad(w-thickness,0,thickness,h,c2);
  quad(0,h-thickness,w,thickness,c2);
  quad(0,0,thickness,h,c1);
  if c1=c2 then exit;
  for i:=0 to thickness-1 do begin
    paintRow(i,pred(h)-i,thickness-i,c2);
    paintRow(w-thickness,i,thickness-i,c1);
  end;
end;  {TBuf2d.border}

procedure TBuf2d.line(x0,y0,x1,y1:TCoordinate; c:byte); {just the basic routine - no clipping}
var p,dx,dy,iy,ry,acc:TCoordinate;
begin
  if x1<x0 then begin
    dx:=x0; x0:=x1; x1:=dx;
    dy:=y0; y0:=y1; y1:=dy;
  end;
  if (x1<0) or (x0>=w) then exit;
  p:=y0*w+x0;
  dx:=y0; dy:=y1; if y1<y0 then begin dx:=y1; dy:=y0; end;
  if (dy<0) or (dx>=h) then exit;
  dx:=x1-x0; dy:=abs(y1-y0);
  iy:=1; ry:=w;
  if y1<y0 then begin iy:=-iy; ry:=-ry; end;
  acc:=dy; if dx>dy then acc:=dx; acc:=acc shr 1;
  if dx>dy then
    repeat
      if (x0>=0) and (x0<w) and (y0>=0) and (y0<h) then mem[ofs(d^)+p]:=c;
      if x0=x1 then break;
      inc(acc,dy);
      if acc>=dx then begin
        dec(acc,dx);
        inc(y0,iy);
        inc(p,ry);
      end;
      inc(x0); inc(p);
    until false
  else
    repeat
      if (x0>=0) and (x0<w) and (y0>=0) and (y0<h) then mem[ofs(d^)+p]:=c;
      if y0=y1 then break;
      inc(acc,dx);
      if acc>=dy then begin
        dec(acc,dy);
        inc(x0);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产日韩a在线播放| 91精品国产aⅴ一区二区| 久久久精品免费免费| 国产在线精品一区二区| 久久久一区二区三区捆绑**| 国产91富婆露脸刺激对白| 国产精品久久久久久亚洲毛片 | 国产日产精品1区| 成人av在线资源网| 一区二区在线电影| 欧美一区二区视频在线观看| 久草在线在线精品观看| 国产精品水嫩水嫩| 在线观看亚洲精品视频| 美女在线观看视频一区二区| 国产日韩精品一区| 在线视频你懂得一区二区三区| 香蕉久久一区二区不卡无毒影院| 欧美sm美女调教| 成人a免费在线看| 日韩影视精彩在线| 久久久www成人免费毛片麻豆| 99国产一区二区三精品乱码| 天天影视涩香欲综合网| 久久婷婷久久一区二区三区| 99r精品视频| 久久99国产精品免费网站| 中文一区在线播放| 91精品国产综合久久小美女| 成人小视频在线观看| 亚洲电影在线免费观看| 久久精品一区二区三区四区| 欧美日韩一区国产| 国产成人高清在线| 日韩中文字幕区一区有砖一区| 久久久精品国产免大香伊 | 三级影片在线观看欧美日韩一区二区| 精品国产乱码久久久久久久 | 成人动漫精品一区二区| 天堂成人免费av电影一区| 国产精品国产三级国产aⅴ入口 | 91美女精品福利| 精东粉嫩av免费一区二区三区| 亚洲精品视频在线看| 久久精品人人做| 91精品国产91综合久久蜜臀| 色老汉av一区二区三区| 成人美女在线观看| 狠狠网亚洲精品| 亚洲高清久久久| 5858s免费视频成人| 91在线丨porny丨国产| 国产麻豆一精品一av一免费| 欧美a级一区二区| 亚洲一区在线观看免费观看电影高清| 国产亚洲制服色| 精品免费国产一区二区三区四区| 欧美综合一区二区三区| 成人avav在线| 懂色av一区二区三区免费观看 | 亚洲欧美自拍偷拍色图| 日韩精品一区二区三区四区视频 | 精品处破学生在线二十三| 欧美综合一区二区| 色www精品视频在线观看| 99久久精品免费精品国产| 国产成人av电影免费在线观看| 精东粉嫩av免费一区二区三区| 欧美aⅴ一区二区三区视频| 午夜成人免费电影| 亚洲综合在线免费观看| 伊人色综合久久天天| 亚洲免费观看高清完整版在线观看熊 | 亚洲欧洲国产专区| 中文字幕第一区第二区| 久久久99精品久久| 国产喷白浆一区二区三区| 国产亚洲欧美日韩俺去了| 久久蜜臀精品av| 欧美激情一区二区| 欧美激情一区在线| 综合在线观看色| 亚洲精品亚洲人成人网| 亚洲影视在线播放| 亚洲成人高清在线| 日本免费新一区视频| 麻豆免费精品视频| 国产麻豆精品久久一二三| 风间由美性色一区二区三区| 91小视频免费观看| 在线视频欧美区| 欧美一区二区三区视频在线| 欧美一二三区在线观看| 久久综合久色欧美综合狠狠| 亚洲国产精品黑人久久久| 综合欧美亚洲日本| 一区二区成人在线| 首页国产欧美日韩丝袜| 精品一二线国产| 播五月开心婷婷综合| 欧美主播一区二区三区| 69久久夜色精品国产69蝌蚪网| 精品国产伦一区二区三区观看方式 | 麻豆国产精品官网| 国产不卡免费视频| 欧美唯美清纯偷拍| xfplay精品久久| 亚洲欧洲精品天堂一级 | 一区二区日韩电影| 蜜桃视频一区二区| www.欧美.com| 911精品国产一区二区在线| 久久精品亚洲麻豆av一区二区| 成人欧美一区二区三区白人| 无码av中文一区二区三区桃花岛| 韩国三级在线一区| 91美女片黄在线| 日韩精品在线网站| 亚洲另类中文字| 精品一区二区在线看| av成人动漫在线观看| 91精品国产综合久久福利| 国产精品国产三级国产aⅴ原创| 视频精品一区二区| 99久久99精品久久久久久| 精品久久久久99| 亚洲午夜久久久| 国产精品18久久久久久久久久久久| 色系网站成人免费| 久久精品亚洲精品国产欧美kt∨| 亚洲在线观看免费| 国产成人精品免费在线| 欧美一区二区在线不卡| 国产精品久久久久久亚洲伦| 久久99蜜桃精品| 欧美日韩精品高清| 亚洲欧洲国产日韩| 国产成人在线电影| 欧美一级日韩一级| 亚洲成人精品在线观看| 91在线看国产| 国产女人水真多18毛片18精品视频| 亚洲午夜视频在线观看| 成人精品一区二区三区四区| 日韩精品一区二区三区四区| 午夜电影一区二区| 欧美性猛片aaaaaaa做受| 国产精品超碰97尤物18| 国产一区二区伦理片| 欧美大片国产精品| 日本不卡一二三区黄网| 欧美男男青年gay1069videost | 午夜日韩在线观看| 一本色道久久综合狠狠躁的推荐 | 91精品国产色综合久久不卡蜜臀| 亚洲免费av高清| 91在线精品一区二区三区| 国产精品不卡一区| 国产精品综合久久| 欧美va亚洲va香蕉在线| 麻豆视频一区二区| 欧美v日韩v国产v| 老司机免费视频一区二区三区| 91精品国产综合久久精品| 日韩影院在线观看| 91精品久久久久久久91蜜桃| 秋霞影院一区二区| 日韩小视频在线观看专区| 美女视频第一区二区三区免费观看网站| 欧美日韩国产首页在线观看| 午夜精品福利一区二区三区蜜桃| 在线观看亚洲一区| 三级成人在线视频| 日韩色在线观看| 国产一区999| 欧美国产精品一区二区三区| 粉嫩久久99精品久久久久久夜| 国产精品三级av在线播放| 99久久精品免费看国产| 亚洲一区二区三区三| 91精选在线观看| 国内精品嫩模私拍在线| 国产精品三级视频| 色婷婷综合五月| 日本美女视频一区二区| 欧美电影免费观看高清完整版在线 | 成人免费看片app下载| 中文字幕二三区不卡| 色又黄又爽网站www久久| 日韩在线观看一区二区| 久久午夜老司机| 91小视频免费观看| 日韩黄色免费电影| 久久精品免费在线观看| 色婷婷亚洲一区二区三区| 奇米影视7777精品一区二区| 欧美激情一区二区三区蜜桃视频| 一本到高清视频免费精品| 奇米精品一区二区三区四区| 国产农村妇女毛片精品久久麻豆 |