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

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

?? lkeytext.cpp

?? ldraw_DOS游戲開發包
?? CPP
字號:
#include <lkey.h>
#include <stdio.h>
#include <conio.h>
#include <string.h>
#include <i86.h>
#include <stdarg.h>
#include <lsys.h>

static char *TextBuf=VideoTextBuf;

static short screen_len=80, screen_wid=25, 
             win_left=0, win_top=0,  win_right=79, win_bottom=24,
             win_len=80, win_wid=25, curse_x=0, curse_y=0, curse_mode=1,
             color_text=7, color_backgrnd=0, color_byte=0x07;

/////////////////////////
char  lk_text_init(short mode,short scr_len,short scr_wid);
void  lk_write_data(short x,short y,char data,uchar mode);
char  lk_read_data(short x,short y,uchar mode);
char  lk_copy_data(short left,short top,short right,short bottom,char *buf,char mode); // 0 screen->mem  1 mem->screen
char  lk_fill_data(short left,short top,short right,short bottom,char data,char mode); // 0 text  1 color
char  lk_write_str(short x,short y,char *s);
char  lk_scroll(short left,short top,short right,short bottom,char direction);

void  lk_gotoxy(short x,short y);
void  lk_getxy(short *x,short *y);
void  lk_putch(char ch);
void  lk_setwindow(short left,short top,short right,short bottom);
void  lk_setcolor(short textcolor,short backgrnd);
void  lk_clear(char mode); // 0 window   1 full screen
void  lk_puts(char *s);
void  lk_printf(char *fmt,...);
void  lk_set_cursor(short mode);

void  lk_draw_window(short left,short top,short right,short bottom,char *name,short type);
///////////////////////////////////////////////////////////////////////////
static void lk_text_cursorxy(short x,short y);

void lk_set_cursor(short mode)
{ union REGS r;
  r.h.ah=1; r.h.bh=0;
  switch (mode)
   { case 1: r.h.ch=6; r.h.cl=7; break;
     case 2: r.h.ch=0; r.h.cl=7; break;
     default: mode=0;
              r.h.ch=7; r.h.cl=0; break;
   }
  int386(0x10,&r,&r); curse_mode=mode;
  lk_gotoxy(curse_x,curse_y);
}
static void lk_text_cursorxy(short x,short y)
{ REGS r;
  r.h.ah=2;   r.h.bh=0;
  r.h.dl=x;   r.h.dh=y;
  if (x>=0&&y>=0&&x<screen_len&&y<screen_wid) int386(0x10,&r,&r);
}
char  lk_text_init(short mode,short scr_len,short scr_wid)
{ union REGS r;
  r.h.ah=0x0f;
  int386(0x10,&r,&r);
  if (r.h.al!=mode) {
     r.w.ax=(mode&255);
     int386(0x10,&r,&r);
  }
  r.h.ah=0x0f;
  int386(0x10,&r,&r);
  screen_len=scr_len; screen_wid=scr_wid;
  return 1;
}
void  lk_write_data(short x,short y,char data,uchar mode)
{ if (x<0||y<0||x>=screen_len||y>=screen_wid) return;
  TextBuf[ (( y * screen_len + x ) << 1 ) + mode ]=data;
}
char  lk_read_data(short x,short y,uchar mode)
{ if (x<0||y<0||x>=screen_len||y>=screen_wid) return 0;
  return TextBuf[ (( y * screen_len + x ) << 1 ) + mode ];
}
char  lk_copy_data(short left,short top,short right,short bottom,char *buf,char mode)
{ short i,line_count,bytes;
  if (left<0) left=0; if (top<0)  top=0;
  if (right>=screen_len) right=screen_len-1;
  if (bottom>=screen_wid) bottom=screen_wid-1;
  line_count=bottom-top+1; bytes=(right-left+1)*2;
  for (i=0;i<line_count;i++,buf+=bytes)
    if (mode==0) memcpy(buf,TextBuf+((top+i)*screen_len+left)*2,bytes);
       else memcpy(TextBuf+((top+i)*screen_len+left)*2,buf,bytes);
  return 0;
}
char  lk_fill_data(short left,short top,short right,short bottom,char data,char mode)
{ short x,y,pos;
  if (left<0) left=0; if (top<0)  top=0;
  if (right>=screen_len) right=screen_len-1;
  if (bottom>=screen_wid) bottom=screen_wid-1;
  pos=top*screen_len*2;
  for (y=top;y<=bottom;y++,pos+=(screen_len*2)) for (x=left;x<=right;x++) 
      TextBuf[pos+(x<<1)+mode]=data;
  return 0;
}
char  lk_scroll(short left,short top,short right,short bottom,char direction)
{ static char lines[100][200];
  short nx1,ny1,nx2,ny2,tx1,ty1,tx2,ty2,y,line_count;
  short rx1,rx2,ry1,ry2;

  if (left<0) left=0; if (top<0)  top=0;
  if (right>=screen_len) right=screen_len-1;
  if (bottom>=screen_wid) bottom=screen_wid-1;

  nx1=left,ny1=top,nx2=right,ny2=bottom,
  tx1=left,ty1=top,tx2=right,ty2=bottom;
  switch(direction)
   { case 1: if (screen_wid>1)  ny1++,ty2--; 
             rx1=nx1, ry1=ny2, rx2=nx2, ry2=ny2; break;
     case 2: if (screen_len>1)  nx2--,tx1++; 
             rx1=nx1, ry1=ny1, rx2=nx1, ry2=ny2; break;
     case 3: if (screen_wid>1)  ny2--,ty1++;
             rx1=nx1, ry1=ny1, rx2=nx2, ry2=ny1; break;
     case 4: if (screen_len>1)  nx1++,tx2--; 
             rx1=nx2, ry1=ny1, rx2=nx2, ry2=ny2; break;
   }
  line_count=ny2-ny1+1;
  for (y=0;y<line_count;y++) lk_copy_data(nx1,ny1+y,nx2,ny1+y,lines[y],0);
  for (y=0;y<line_count;y++) lk_copy_data(tx1,ty1+y,tx2,ty1+y,lines[y],1);
  lk_fill_data(rx1,ry1,rx2,ry2,' ',0);
  return 0;
}
char  lk_write_str(short x,short y,char *s)
{ for (;x<screen_len&&(*s);x++,s++) lk_write_data(x,y,*s,0);
  return 0;
}
void  lk_gotoxy(short x,short y)
{ if (x<0||y<0||x>=win_len||y>=win_wid) return;
  curse_x=x, curse_y=y;
  if (curse_mode) lk_text_cursorxy(x+win_left,y+win_top);
}
void  lk_getxy(short *x,short *y)
{ *x=curse_x; *y=curse_y;
}
static void lk_move_curse(char mode)
{ switch (mode)
   { case 0: curse_x=0; break;
     case 1:
     case 2: if (++curse_y>=win_wid) { 
                  curse_y=win_wid-1; 
                  lk_scroll(win_left,win_top,win_right,win_bottom,1);
               } if (mode==2) curse_x=0; break;
     case 3: if (++curse_x>=win_len) {
                curse_x=0;
                if (++curse_y>=win_wid) {
                   curse_y=win_wid-1;
                   lk_scroll(win_left,win_top,win_right,win_bottom,1);
                }
             }  break;
   }
 lk_gotoxy(curse_x,curse_y);
}
void  lk_putch(char ch)
{ if (ch=='\r') { lk_move_curse(0); return; }
  if (ch=='\n') { lk_move_curse(2); return; }
  lk_write_data(win_left+curse_x,win_top+curse_y,ch,0);
  lk_write_data(win_left+curse_x,win_top+curse_y,color_byte,1);
  lk_move_curse(3);
}
void  lk_setwindow(short left,short top,short right,short bottom)
{ if (left<0) left=0; if (top<0)  top=0;
  if (right>=screen_len) right=screen_len-1;
  if (bottom>=screen_wid) bottom=screen_wid-1;
  win_left=left, win_top=top, win_right=right, win_bottom=bottom;
  win_len=win_right-win_left+1, win_wid=win_bottom-win_top+1;
  lk_gotoxy(0,0);
}
void  lk_setcolor(short textcolor,short backgrnd)
{ if (textcolor>=0) color_text=textcolor;
  if (backgrnd>=0) color_backgrnd=backgrnd;
  color_text&=0x0f; color_backgrnd&=0x0f;
  color_byte=(color_backgrnd<<4)+color_text; 
}
void  lk_clear(char mode)
{ short x1,y1,x2,y2;
  switch (mode)
   { case 0: x1=win_left, y1=win_top, x2=win_right, y2=win_bottom; break;
     case 1: x1=0, y1=0, x2=screen_len-1, y2=screen_wid-1; break;
   }
  lk_fill_data(x1,y1,x2,y2,' ',0);
  lk_fill_data(x1,y1,x2,y2,color_byte,1);
}
void  lk_puts(char *s)
{ for (;*s;s++) lk_putch(*s);
}
void  lk_printf(char *fmt,...)
{ static char string[8192];
  va_list argptr;
  va_start(argptr,fmt);
  vsprintf(string,fmt,argptr);
  va_end(argptr);
  lk_puts(string);
}
///////////////////////////////////////////////////////////////////////////
static char win_template[5][10]={
 { 0xda, 0xbf, 0xc0, 0xd9,  0xc4, 0xc4, 0xb3, 0xb3, 0, 0 },
 { 0xc9, 0xbb, 0xc8, 0xbc,  0xcd, 0xcd, 0xba, 0xba, 0, 0 }
};
static void lk_draw_plate(short left,short top,short right,short bottom,char *plate)
{ short x,y;
  if (left<0) left=0; if (top<0)  top=0;
  if (right>=screen_len) right=screen_len-1;
  if (bottom>=screen_wid) bottom=screen_wid-1;

  lk_fill_data(left,top,right,bottom,color_byte,1);

  lk_write_data(left,top,plate[0],0); lk_write_data(right,top,plate[1],0);
  lk_write_data(left,bottom,plate[2],0); lk_write_data(right,bottom,plate[3],0);

  for (x=left+1;x<right;x++) {
    lk_write_data(x,top,plate[4],0); 
    lk_write_data(x,bottom,plate[5],0);
  }
  for (y=top+1;y<bottom;y++) {
    lk_write_data(left,y,plate[6],0); 
    lk_write_data(right,y,plate[7],0);    
  }

  for (x=left+1;x<=right+1;x++) lk_write_data(x,bottom+1,0x08,1);
  for (y=top+1;y<=bottom+1;y++) lk_write_data(right+1,y,0x08,1);
}
void  lk_draw_window(short left,short top,short right,short bottom,char *name,short type)
{ short x, y, len=strlen(name);

  if (left<0) left=0; if (top<0)  top=0;
  if (right>=screen_len) right=screen_len-1;
  if (bottom>=screen_wid) bottom=screen_wid-1;
  if (right-left<3) right=left+3;

  lk_draw_plate(left,top,right,bottom,win_template[type]);

  if (len==0) return;
  if (len>=right-left+1-3) len=right-left+1-3;
  x=left+2+(right-left-2-len)/2;
  for (y=0;y<len;y++) lk_write_data(x+y,top,name[y],0);
  if (len<right-len-5) { 
    lk_write_data(x-1,top,' ',0); 
    lk_write_data(x+len,top,' ',0);
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
xfplay精品久久| 亚洲激情综合网| 欧美一区二区久久| 欧美三级日韩在线| 欧美日韩中文一区| 在线精品视频小说1| 色婷婷av一区二区三区大白胸| gogogo免费视频观看亚洲一| 国产69精品一区二区亚洲孕妇| 国产一区二区福利视频| 国产剧情一区在线| 国产suv精品一区二区三区| 国产精品12区| 成人app在线| 色综合久久久久| 欧美日韩日日夜夜| 日韩免费视频线观看| 国产无一区二区| 国产精品高潮呻吟| 亚洲一级在线观看| 免费在线看成人av| 经典一区二区三区| 国产suv一区二区三区88区| 91免费观看视频| 欧美人xxxx| 精品少妇一区二区| 国产精品伦一区| 亚洲国产视频一区| 久久国产精品99久久人人澡| 国v精品久久久网| 在线免费观看日韩欧美| 欧美一卡二卡在线观看| 久久久夜色精品亚洲| 亚洲精品国产精品乱码不99| 午夜精品福利在线| 国产传媒一区在线| 欧美综合视频在线观看| 精品国产三级电影在线观看| 久久久久久久久久久久久夜| 亚洲女爱视频在线| 日韩精品亚洲专区| 成人污视频在线观看| 欧美午夜精品免费| 国产日韩v精品一区二区| 亚洲精品一二三| 精品伊人久久久久7777人| 成人h动漫精品一区二区| 欧美军同video69gay| 欧美激情一区二区| 日本三级亚洲精品| 色综合激情五月| 精品国产乱码久久久久久久久| 国产精品第五页| 久久国产精品99久久人人澡| 在线观看区一区二| 久久久亚洲欧洲日产国码αv| 亚洲影视在线播放| 粉嫩蜜臀av国产精品网站| 4438x亚洲最大成人网| 综合久久久久久| 韩国毛片一区二区三区| 欧美日韩一区二区欧美激情 | 久久亚洲精精品中文字幕早川悠里| 综合久久久久综合| 韩国欧美一区二区| 精品视频在线视频| 亚洲女人****多毛耸耸8| 国产久卡久卡久卡久卡视频精品| 欧美午夜精品一区二区三区| 最新国产精品久久精品| 久久精品国产久精国产爱| 91久久线看在观草草青青| 亚洲国产精品v| 国产一区免费电影| 欧美一区二区三区思思人| 亚洲国产乱码最新视频| 99v久久综合狠狠综合久久| 久久久蜜臀国产一区二区| 美国欧美日韩国产在线播放| 欧美日韩国产系列| 亚洲另类一区二区| 91网上在线视频| 欧美激情一区二区三区不卡| 国产精品综合网| 久久久久九九视频| 精品在线亚洲视频| 欧美videossexotv100| 人人狠狠综合久久亚洲| 91麻豆精品国产91久久久 | 五月综合激情婷婷六月色窝| 91美女在线看| 亚洲丝袜美腿综合| www.在线成人| 中文字幕中文字幕一区| gogo大胆日本视频一区| 国产精品免费视频网站| 成人的网站免费观看| 国产精品久线观看视频| 不卡大黄网站免费看| 综合久久给合久久狠狠狠97色| 成人网男人的天堂| 国产精品久久久久影院老司 | 欧洲生活片亚洲生活在线观看| 国产精品激情偷乱一区二区∴| 懂色av中文一区二区三区 | 成人免费视频视频在线观看免费| 精品国产凹凸成av人网站| 经典三级一区二区| 欧美精品一区二区蜜臀亚洲| 国产精品一区2区| 国产日韩一级二级三级| 国产69精品久久99不卡| 亚洲欧美在线另类| 91麻豆自制传媒国产之光| 一级中文字幕一区二区| 欧美日韩亚洲综合在线| 欧美aaaaa成人免费观看视频| 日韩欧美中文一区二区| 国产一区美女在线| 亚洲国产精品高清| 欧美又粗又大又爽| 男女性色大片免费观看一区二区 | 99精品久久只有精品| 亚洲精品国产无天堂网2021| 欧美色区777第一页| 五月激情综合色| 日韩精品一区二区三区视频| 国产.欧美.日韩| 亚洲乱码国产乱码精品精可以看 | 一区二区三区中文字幕在线观看| 欧美影院一区二区三区| 日韩成人av影视| 久久免费精品国产久精品久久久久| 成人黄色国产精品网站大全在线免费观看| 中文字幕亚洲一区二区va在线| 欧美在线你懂得| 九九**精品视频免费播放| 亚洲国产成人自拍| 欧美日韩黄色影视| 国产一区免费电影| 亚洲一区在线免费观看| 精品成人免费观看| k8久久久一区二区三区| 日本最新不卡在线| 国产精品免费网站在线观看| 欧美日韩国产欧美日美国产精品| 精品在线视频一区| 亚洲老司机在线| 精品国产1区二区| 在线观看91精品国产入口| 精品亚洲porn| 亚洲精品国产高清久久伦理二区| 日韩一区二区在线看| 91视频国产观看| 麻豆91在线播放免费| 亚洲欧美日韩中文字幕一区二区三区| 欧美日韩亚洲综合| 成人免费毛片app| 日韩电影免费在线| 亚洲黄色在线视频| 久久久噜噜噜久久人人看| 日本乱人伦aⅴ精品| 国产精品911| 青青草国产成人av片免费| 综合久久久久久久| 国产喷白浆一区二区三区| 欧美日韩国产系列| 91网址在线看| 高清国产一区二区| 韩国女主播成人在线观看| 亚洲a一区二区| 亚洲欧美激情插| 欧美激情一区二区三区全黄| 欧美一级一区二区| 欧美三级电影在线观看| 成人a级免费电影| 精品在线你懂的| 免费成人美女在线观看.| 亚洲电影一级黄| 亚洲欧美色综合| 中文字幕欧美激情一区| 久久久一区二区| 欧美xxxxxxxx| 91精品久久久久久久久99蜜臂| 在线观看日韩毛片| 95精品视频在线| 99这里只有精品| 波多野结衣亚洲| 成人av动漫网站| 成人a区在线观看| 成人99免费视频| 成人精品一区二区三区四区 | 99在线视频精品| 成人激情黄色小说| 国产盗摄一区二区| 狠狠色综合色综合网络| 麻豆成人av在线| 久久精品国产亚洲aⅴ | 宅男在线国产精品| 欧美麻豆精品久久久久久|