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

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

?? codearea.c

?? linux 下類似于TC功能的編譯器,但還沒有完成,希望大家共同研究
?? C
?? 第 1 頁 / 共 3 頁
字號:
#include "codearea.h"#define DEBUGPAGE \{\	PageList p;\	int k=0;\	p=pagelist;\	endwin();\	do\	{\		fprintf(stderr,"index:%d ptr:%x\n\r",k++,p);\		p=p->next;\	}while (p!=pagelist);\	fprintf(stderr,"begin:%x\n\r",beginpage);\	fprintf(stderr,"totalrow:%d  curpage:%d  currow:%d\n\r",totalrow,curpage,currow);\	exit(0);\}#define DEBUGBLOCK \{\	endwin();\	fprintf(stderr,"starty:%d startx:%d endy:%d endx:%d\n\r",seltext.begline,seltext.begcol,seltext.endline,seltext.endcol);\	exit(0);\}#define DEBUGMSG \{\	int fd=open("/dev/console",O_WRONLY);\	write(fd,"Hello world!",12);\	close(fd);\}int CodeArea::InitCodeArea(int Y,int X,int Height,int Width,int Color,int FontStyle,int WinType){	int ret=FALSE;	if(InitBaseWindow(Y,X+1,Height,Width-1,Color,0,FontStyle,WinType,"")==FALSE)		goto failure;	keypad(basewin,TRUE);	draw_box(0,0,Height,Width, COLOR_PAIR(Color)|' ',COLOR_PAIR(Color));	wmove(basewin,0,0);	curs_set(1);	wrefresh(basewin);	if(InitLocalVar()==FALSE)		goto failure;	ret=TRUE;failure:	return ret;}BOOL CodeArea::InitLocalVar(){	int ret=FALSE;	insertmode=TRUE;	currow=0;	curcol=0;	offline=0;	offcol=0;	totalrow=1;			//in order to process untitled file	totalcol=0;	maxcol=0;	curpage=0;	totalpage=0;	pagelist=NULL;	beginpage=NULL;	multiremark=FALSE;	sym=SYM_NULL;	modified=FALSE;	seltext.selected=FALSE;		//the selected code area	/*alloc the first page*/	if ((pagelist=AllocPage())==NULL)		goto failure;	pagelist->next=pagelist;	pagelist->prev=pagelist;	beginpage=pagelist;	memset(filenm,0,sizeof(char)*MAXFIELDLEN);	wmove(basewin,0,0);	ret=TRUE;failure:	return ret;}int CodeArea::CodeAreaDriver(int key){	int ret=0;	int i=0;	int tempy,tempx;	tempy=tempx=0; 	switch(key)        {		case KEY_LEFT:			if(curcol>0)			{				getyx(basewin,tempy,tempx);				curcol--;				if(tempx<=0 && offcol>0)				{					offcol--;					ShowPage(offcol*TABSIZE);					wmove(basewin,tempy,tempx+TABSIZE-1);				}				else				{					wmove(basewin,tempy,tempx-1);				}				ret = UPDATE_STATUS;			}			break;		case KEY_RIGHT:			if(curcol<totalcol)			{				getyx(basewin,tempy,tempx);				curcol++;				if(tempx+1>=GetWidth())				{					offcol++;					ShowPage(offcol*TABSIZE);					wmove(basewin,tempy,tempx-TABSIZE+1);				}				else				{					wmove(basewin,tempy,tempx+1);				}				ret = UPDATE_STATUS;			}			break;		case KEY_UP:			if(currow>0)			{				getyx(basewin,tempy,tempx);				currow--;				tempy--;				totalcol=GetCurColWidth(NULL,currow);				if( tempy < 0 )				{					tempy++;					if( (int)((currow-tempy)/GetHeight()) !=curpage)					{						if (beginpage->prev!=pagelist->prev)						{							beginpage=beginpage->prev;							curpage--;						}					}					if(offcol>0)					{						curcol=0;						offcol=0;						tempx=curcol;					}					else					{						if (curcol>totalcol)						{							tempx=totalcol;							curcol=totalcol;						}					}					ShowPage();				}				else				{					if(offcol>0)					{						currow++;						curcol=0;						offcol=0;						ShowPage();						currow--;						tempx=curcol;					}					else					{						if (curcol>totalcol)						{							tempx=totalcol;							curcol=totalcol;						}					}				}				wmove(basewin,tempy,tempx);									ret = UPDATE_STATUS;			}			break;		case KEY_DOWN:			if(currow+1<totalrow)			{				getyx(basewin,tempy,tempx);				currow++;				tempy++;				totalcol=GetCurColWidth(NULL,currow);				if(tempy>=GetHeight())				{					tempy--;					if( (int)((currow-tempy)/GetHeight()) !=curpage)					{						if (beginpage->next!=pagelist)						{							beginpage=beginpage->next;							curpage++;						}					}					if(offcol>0)					{						curcol=0;						offcol=0;						tempx=curcol;					}					else					{						if (curcol>totalcol)						{							tempx=totalcol;							curcol=totalcol;						}					}					ShowPage();				}				else				{					if(offcol>0)					{						currow--;						curcol=0;						offcol=0;						ShowPage();						currow++;						tempx=curcol;					}					else					{						if (curcol>totalcol)						{							tempx=totalcol;							curcol=totalcol;						}					}				}				wmove(basewin,tempy,tempx);				ret = UPDATE_STATUS;			}			break;		case KEY_HOME:			curcol=0;			getyx(basewin,tempy,tempx);			if(offcol>0)			{				offcol=0;				ShowPage();			}			wmove(basewin,tempy,curcol);			ret =UPDATE_STATUS;			break;		case KEY_END:			getyx(basewin,tempy,tempx);			curcol=totalcol;			if(totalcol>=GetWidth())			{				offcol=(int)((totalcol-GetWidth())/TABSIZE)+1;				ShowPage(offcol*TABSIZE);				wmove(basewin,tempy,totalcol-offcol*TABSIZE);			}			else			{				if(offcol>0)				{					offcol=0;					ShowPage(0);				}				wmove(basewin,tempy,curcol);			}			ret = UPDATE_STATUS;			break;		case 10://KEY_ENTER:			getyx(basewin,tempy,tempx);			if(totalrow%GetHeight()==0)		//need a new page			{				PageList newp=NULL;				PageList dptr=pagelist->prev;				newp=AllocPage();				InsertPage(dptr,newp);			}			ShiftLinesDown(LocatePage(NULL,currow),currow%CODE_QSET,1);			CopyLineDown(NULL,offcol*TABSIZE+tempx,totalcol-offcol*TABSIZE-tempx,NULL,0,1,TRUE);			offcol=0;			if(tempy+1>=CODE_QSET)			{				currow++;				if( (int)((currow-tempy)/GetHeight()) !=curpage)				{					if (beginpage->next!=pagelist)					{						beginpage=beginpage->next;						curpage++;					}				}				ShowPage();			}			else			{				ShowPage();				currow++;				tempy=tempy+1;			}			curcol=0;			totalrow=totalrow+1;			totalcol=GetCurColWidth(NULL,currow);			wmove(basewin,tempy,curcol);			ret = UPDATE_STATUS;			modified=TRUE;			break;		case KEY_F(1):			break;		case KEY_F(2):			LostActive();			ret = ACTIVE_TOPMENU;			break;		case KEY_F(3)://open file			LostActive();			msg.fileobj.type=DIALOG_FILEOPEN;			ret=UPDATE_CODEAREA|FILE_DIALOG|UPDATE_STATUS;			break;		case KEY_F(4)://save file			LostActive();			msg.fileobj.type=DIALOG_FILESAVE;			ret=UPDATE_CODEAREA|FILE_DIALOG|UPDATE_STATUS;			break;		case KEY_F(5):			break;		case KEY_F(6):			break;		case KEY_F(7):			LostActive();			msg.fileobj.type=DIALOG_EDITFIND;			ret=UPDATE_CODEAREA|EDIT_DIALOG|UPDATE_STATUS;			break;		case KEY_F(8):			LostActive();			msg.fileobj.type=DIALOG_EDITREPLACE;			ret=UPDATE_CODEAREA|EDIT_DIALOG|UPDATE_STATUS;			break;		case KEY_BACKSPACE:		{			int ln;			PageList pg;			getyx(basewin,tempy,tempx);			pg=LocatePage(NULL,currow);			ln=currow % CODE_QSET;			ret = UPDATE_STATUS;			if(tempx>0)			{				for(i=0;i<totalcol-curcol;i++)				{					pg->data[ln][curcol-1+i]=pg->data[ln][curcol+i];				}				pg->data[ln][totalcol-1]='\0';				totalcol--;/***Strictly speaking,maxcol should be set according to the maxium columns of the whole file.**However, in order to get exact value after "backspace" a character,width comparision action**must be taken among all lines in the file. It is time consuming very much. I just ignore it.**The result of doing so may lays that the scale of hscroll is rough in some circumstances.*///				maxcol=(maxcol>totalcol)?(maxcol):(totalcol);				tempx--;				curcol--;				ShowLine(pg->data[ln],curcol,GetWidth()-tempx,tempy,tempx);				wmove(basewin,tempy,tempx);				modified=TRUE;			}			else if(offcol>0)			{				for(i=0;i<totalcol-curcol;i++)				{					pg->data[ln][curcol-1+i]=pg->data[ln][curcol+i];				}				pg->data[ln][totalcol-1]='\0';				totalcol--;				curcol--;				offcol--;				ShowPage(offcol*TABSIZE);				wmove(basewin,tempy,tempx+TABSIZE-1);				modified=TRUE;			}			else if(currow>0)			{				int t=GetCurColWidth(NULL,currow-1);				offcol=(t<width)?(0):(  (int)((t-width)/TABSIZE)+1  );				CopyLineUp(NULL,tempx,totalcol-tempx,NULL,t,1,TRUE);				ShiftLinesUp(LocatePage(NULL,currow+1),currow+1,1);				if(tempy<=0)				{					currow--;//after shiftlinesup,beginpage has already pointed to the correct page//					if( (int)((currow-tempy)/GetHeight()) !=curpage)//					{//						if (beginpage->prev!=pagelist->prev)//						{//							beginpage=beginpage->prev;//							curpage--;//						}//					}					ShowPage(offcol*TABSIZE);				}				else				{					ShowPage(offcol*TABSIZE);					currow--;					tempy=tempy-1;				}				//shiftlinesup may free page,so need recalculate curpage				curpage=(int)((currow-tempy)/CODE_QSET);				curcol=t;				totalrow=totalrow-1;				totalcol=GetCurColWidth(NULL,currow);				maxcol=(maxcol>totalcol)?(maxcol):(totalcol);				wmove(basewin,tempy,t-offcol*TABSIZE);				modified=TRUE;			}			else			{				ret = NO_TRANSPORT;			}			break;		}		case KEY_DC:		{			int ln;			PageList pg,ppg;			getyx(basewin,tempy,tempx);			pg=LocatePage(NULL,currow);			ppg=pg;			ln=currow % CODE_QSET;			ret = UPDATE_STATUS;			if(curcol<totalcol)			{				for(i=curcol+1;i<totalcol;i++)				{					pg->data[ln][i-1]=pg->data[ln][i];				}				pg->data[ln][totalcol-1]='\0';				totalcol--;//				maxcol=(maxcol>totalcol)?(maxcol):(totalcol);				ShowLine(pg->data[ln],curcol,GetWidth()-tempx,tempy,tempx);				wmove(basewin,tempy,tempx);				modified=TRUE;			}			else if(currow+1<totalrow)//at end of line & not end line of file			{				int end=GetCurColWidth(NULL,currow+1);				ppg=(ln+1>=CODE_QSET)?(ppg->next):(ppg);				CopyLineUp(ppg->data[(ln+1)%CODE_QSET],0,end,pg->data[ln],curcol,1,TRUE);				if(currow+2<totalrow)				{					//shiftlinesup may free page,so need recalculate curpage					ShiftLinesUp(LocatePage(NULL,currow+2),currow+2,1);					curpage=(int)((currow-tempy)/CODE_QSET);				}				ShowPage(offcol*TABSIZE);				totalrow=totalrow-1;				totalcol=(end+curcol>=CODE_QUANTUM)?(CODE_QUANTUM-1):(end+curcol);				maxcol=(maxcol>totalcol)?(maxcol):(totalcol);				wmove(basewin,tempy,tempx);				modified=TRUE;			}			else			{				ret = NO_TRANSPORT;			}			break;		}		case KEY_PPAGE:						if(beginpage->prev!=pagelist->prev)			{				getyx(basewin,tempy,tempx);				currow=currow-GetHeight();				if(currow<0)					currow=0;				beginpage=beginpage->prev;				curpage--;				offcol=0;				curcol=0;				totalcol=GetCurColWidth(NULL,currow);				ShowPage();				wmove(basewin,tempy,curcol);				ret = UPDATE_STATUS;			}			break;		case KEY_NPAGE:			getyx(basewin,tempy,tempx);			if(beginpage->next!=pagelist && (currow-tempy+GetHeight())<totalrow)			{				int endline=currow-tempy+GetHeight()*2-1;				int nextpgl=currow-tempy+GetHeight();				currow=currow+GetHeight();				beginpage=beginpage->next;				curpage++;				offcol=0;				curcol=0;				ShowPage();				if(endline<totalrow || currow<totalrow)				{					wmove(basewin,tempy,curcol);				}				else				{					currow=totalrow-1;					wmove (basewin, totalrow-nextpgl-1, curcol);				}				totalcol=GetCurColWidth(NULL,currow);				ret = UPDATE_STATUS;			}			break;		case KEY_TAB:		{			int ln;			PageList pg;			getyx(basewin,tempy,tempx);			pg=LocatePage(NULL,currow);			ln=currow % CODE_QSET;			ret = NO_TRANSPORT;			if(totalcol+TABSIZE<CODE_QUANTUM)			{				for(i=totalcol-1;i>=curcol;i--)					pg->data[ln][i+TABSIZE]=pg->data[ln][i];				for(i=0;i<TABSIZE;i++)					pg->data[ln][curcol+i]=' '|COLOR_PAIR(color);				pg->data[ln][totalcol+TABSIZE]='\0';				totalcol+=TABSIZE;				ShowLine(pg->data[ln],curcol,GetWidth()-tempx,tempy,tempx);				curcol+=TABSIZE;				wmove(basewin,tempy,tempx+TABSIZE);				modified=TRUE;				ret = UPDATE_STATUS;			}			break;		}		case KEY_INSERT:		{			if (insertmode)			{				curs_set(2);				insertmode=FALSE;				msg.statusobj.type=STATUS_REPLACE;				ret=UPDATE_STATUS;			}			else			{				curs_set(1);				insertmode=TRUE;				msg.statusobj.type=STATUS_INSERT;				ret=UPDATE_STATUS;			}			break;		}		case 13:endwin();fprintf(stderr,"ctrl+s");exit(0);			break;		default:			int line;			PageList page;			getyx(basewin,tempy,tempx);			page=LocatePage(NULL,currow);			line=currow % CODE_QSET;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
在线观看视频91| 精品国产区一区| 国内外成人在线| 亚洲国产欧美日韩另类综合 | 亚洲图片另类小说| 3751色影院一区二区三区| 91一区二区在线| 国产乱子轮精品视频| 五月婷婷另类国产| 最新不卡av在线| 日本一区二区三区电影| 欧美一区二区精品在线| 欧美在线综合视频| 一本色道久久综合精品竹菊| 韩国一区二区在线观看| 亚洲成人在线观看视频| 亚洲精品乱码久久久久久| 国产亚洲一本大道中文在线| 91精品国产91久久综合桃花| 在线观看区一区二| 91年精品国产| 97久久超碰国产精品| 国产乱码精品一品二品| 精品一区二区在线看| 国产不卡视频在线播放| 紧缚捆绑精品一区二区| 美女视频一区在线观看| 婷婷综合另类小说色区| 亚洲国产另类精品专区| 亚洲精品伦理在线| 亚洲人成人一区二区在线观看| 国产女人18毛片水真多成人如厕| 久久亚洲一级片| 精品88久久久久88久久久| 日韩欧美国产1| 欧美大片一区二区| 久久亚洲一区二区三区四区| 久久久影视传媒| 国产婷婷色一区二区三区四区 | 日韩欧美国产午夜精品| 欧美一三区三区四区免费在线看| 欧美另类z0zxhd电影| 欧美日韩成人在线| 91精品国产麻豆| 日韩午夜av电影| 精品久久人人做人人爱| 国产亚洲欧美激情| 中文av一区二区| 一区二区三区在线视频观看 | 亚洲一二三四在线| 亚洲成人激情av| 五月婷婷久久丁香| 精品一区二区三区在线视频| 国产精品一区二区黑丝 | 欧美老人xxxx18| 日韩欧美专区在线| 久久综合丝袜日本网| 国产精品嫩草久久久久| 一区二区日韩av| 久久国内精品视频| 成人午夜av电影| 欧美色综合网站| 日韩午夜在线观看视频| 国产欧美日韩另类视频免费观看| 日韩一区在线看| 午夜久久久久久久久久一区二区| 久久国产麻豆精品| 成人综合在线观看| 欧美伊人精品成人久久综合97| 日韩欧美中文字幕精品| 欧美激情一区二区三区四区| 亚洲综合在线第一页| 精品亚洲国产成人av制服丝袜 | av电影天堂一区二区在线观看| 欧美主播一区二区三区美女| 精品久久久久久久人人人人传媒| 国产欧美一区二区精品久导航| 亚洲日本在线观看| 蜜桃91丨九色丨蝌蚪91桃色| 成人小视频免费观看| 欧美美女黄视频| 久久久久99精品一区| 国产伦理精品不卡| 欧美午夜精品电影| 久久你懂得1024| 亚洲h在线观看| 国产91富婆露脸刺激对白| 欧美亚洲日本一区| 欧美国产日韩亚洲一区| 亚洲成av人影院在线观看网| 粉嫩一区二区三区性色av| 91麻豆精品国产91久久久久久久久| 中文子幕无线码一区tr| 日韩国产成人精品| 91污片在线观看| 精品91自产拍在线观看一区| 亚洲综合av网| av电影一区二区| 26uuu欧美| 青草av.久久免费一区| 在线观看网站黄不卡| 国产欧美一区二区三区在线老狼| 免费人成精品欧美精品| 在线观看成人小视频| 国产日韩高清在线| 精品一区二区三区不卡 | 国产一区二区0| 91麻豆精品国产91久久久更新时间| 中文字幕人成不卡一区| 国产一区999| 欧美第一区第二区| 天天色 色综合| 91国内精品野花午夜精品| 中文文精品字幕一区二区| 精品一区二区免费看| 欧美日韩精品欧美日韩精品一| 亚洲六月丁香色婷婷综合久久| 粉嫩嫩av羞羞动漫久久久 | 色婷婷综合久久久| 最新欧美精品一区二区三区| 国产成人福利片| 久久久天堂av| 国产精品一区久久久久| 26uuu国产日韩综合| 精品一区二区免费在线观看| 精品女同一区二区| 经典三级在线一区| 欧美mv日韩mv国产| 国产曰批免费观看久久久| 精品国产一区二区在线观看| 精品亚洲国内自在自线福利| 欧美精品一区二区蜜臀亚洲| 狠狠色综合播放一区二区| 欧美mv日韩mv国产网站app| 精品一二三四在线| 久久嫩草精品久久久精品| 国产精品一区在线| 中文字幕精品三区| 成人动漫视频在线| 亚洲免费在线电影| 欧美性受xxxx| 水野朝阳av一区二区三区| 欧美一区日韩一区| 国产尤物一区二区| 日本一区免费视频| 91免费版在线| 亚洲国产一区视频| 91精品国产色综合久久不卡蜜臀| 老司机精品视频在线| 2020国产精品| aaa亚洲精品| 极品美女销魂一区二区三区| 久久蜜桃av一区精品变态类天堂| 高潮精品一区videoshd| 亚洲欧洲精品一区二区三区| 欧美亚洲禁片免费| 久久99精品久久只有精品| 欧美激情自拍偷拍| 欧美视频第二页| 黄页视频在线91| 中文字幕一区二区三区不卡在线 | 国产午夜精品一区二区三区嫩草| 99久久精品免费看国产免费软件| 亚洲五码中文字幕| 久久毛片高清国产| 91九色最新地址| 奇米精品一区二区三区在线观看| 久久精品欧美一区二区三区不卡| 99精品视频在线免费观看| 爽好多水快深点欧美视频| 久久色视频免费观看| 色999日韩国产欧美一区二区| 蜜桃久久av一区| 日韩毛片视频在线看| 日韩一区二区电影| 91女厕偷拍女厕偷拍高清| 欧美a级一区二区| 亚洲丝袜另类动漫二区| 日韩三级伦理片妻子的秘密按摩| caoporn国产精品| 欧美aaa在线| 日韩毛片一二三区| 精品国产髙清在线看国产毛片| 成人91在线观看| 精品在线一区二区三区| 亚洲一区在线观看免费 | 亚洲情趣在线观看| 精品久久久久久最新网址| 91久久精品网| 国产精品77777竹菊影视小说| 亚洲国产精品久久艾草纯爱| 国产日韩三级在线| 欧美一区二区黄色| 色婷婷综合久久久久中文一区二区| 狠狠狠色丁香婷婷综合激情 | 美日韩一区二区| 亚洲美女视频一区| 欧美经典一区二区三区| 日韩一区二区高清| 欧美日韩小视频|