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

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

?? spreadwi.cpp

?? Linux/windows 環境下跨平臺開發程序
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
//spreadwin.cpp, (c)2000, 2001, 2002, 2003, 2004, 2005 by R. Lackner////    This file is part of RLPlot.////    RLPlot is free software; you can redistribute it and/or modify//    it under the terms of the GNU General Public License as published by//    the Free Software Foundation; either version 2 of the License, or//    (at your option) any later version.////    RLPlot is distributed in the hope that it will be useful,//    but WITHOUT ANY WARRANTY; without even the implied warranty of//    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the//    GNU General Public License for more details.////    You should have received a copy of the GNU General Public License//    along with RLPlot; if not, write to the Free Software//    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA//#include "rlplot.h"#include <stdio.h>#include <stdlib.h>#include <string.h>#include <time.h>#include <fcntl.h>				//file open flags#include <sys/stat.h>			//I/O flags#ifdef _WINDOWS	#include <io.h>					//for read/write#else	#define O_BINARY 0x0	#include <unistd.h>#endifextern const LineDEF GrayLine;extern EditText *CurrText;extern char *LoadFile;extern char TmpTxt[];extern Default defs;extern UndoObj Undo;
static ReadCache *Cache = 0L;static TextDEF ssText;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// Get item from *.csv filebool GetItemCSV(char *Text, int cbText){	char c;	int i;	for (i = 0,	*Text = 0; i < cbText; ) {		c = Cache->Getc();		switch(c) {		case ',':			//column separator			Text[i] = 0;			return true;		case 0x0a:			//end of line: mark by false return but text o.k.			Text[i] = 0;			return false;		default:			if(c > 0x20) Text[i++] = c;	//printable character			else if(i >0 && c == 0x20) Text[i++] = c;			else if(!c && Cache->IsEOF()) {				Text[i] = 0;				return false;				}			else Text[i] = 0;	//ignore non printing characters			}		}	return false;}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// process a memory block (i.e. clipboard data) as if file inputint ProcMemData(GraphObj *g, unsigned char *ptr, bool dispatch){	int i, RetVal = FF_UNKNOWN, nt, nl, nc, ns;	if(ptr) {		for(i = nt = nl = nc = ns = 0; ptr[i] && nl<100; i++) {			switch(ptr[i]) {			case 0x09:				//tab				nt++;				break;			case 0x0a:				//LF				nl++;				break;			case ',':				nc++;				break;
			case ' ':				ns++;
				break;
				}			}		if(dispatch && i && !nt && !nl) {			if(CurrText){
				g->Command(CMD_SETFOCUS, 0L, 0L);
				for(i = 0; ptr[i]; i++)	CurrText->AddChar(ptr[i], i? 0L : Undo.cdisp, 0L);				g->Command(CMD_REDRAW, 0L, 0L);
				}
			}		else if(nt) RetVal = FF_TSV;		else if(nl && ptr[0] == '<') RetVal = FF_XML;		else if(nc == nl && defs.DecPoint[0] == ',') RetVal = FF_TSV;		else if(nl && nc && 0 == (nc % nl)) RetVal = FF_CSV;		else if(nl && ns && 0 == (ns % nl)) RetVal = FF_SSV;
		else if(nl) RetVal = FF_TSV;		if(dispatch) switch(RetVal) {		case FF_CSV:	g->Command(CMD_PASTE_CSV, ptr, 0L);	break;		case FF_TSV:	g->Command(CMD_PASTE_TSV, ptr, 0L);	break;		case FF_SSV:	g->Command(CMD_PASTE_SSV, ptr, 0L);	break;
		case FF_XML:	g->Command(CMD_PASTE_XML, ptr, 0L); break;			}		}	return RetVal;}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// This graphic object displays a spreadsheet//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~class SpreadWin:public GraphObj{public:	anyOutput *w;	POINT ssOrg;	RECT currRC;	SpreadWin(GraphObj *par, DataObj *Data);	~SpreadWin();	void DoPlot(anyOutput *target);	bool Command(int cmd, void *tmpl, anyOutput *o);	bool ShowGrid(int CellWidth, int CellHeight, int FirstWidth, POINT *cpos);	bool PrintData(anyOutput *o);
	void WriteGraphXML(unsigned char **ptr, long *cbd);private:	int ch, cw, fw;				//cell height and width, row button width
	bool is_modified;	char *filename;	ssButton **cButtons, **rButtons;
	ssButton *aButton;
	POINT cpos;	DataObj *d;	int NumGraphs;	Graph **g;};SpreadWin::SpreadWin(GraphObj *par, DataObj *Data):GraphObj(par, Data){	d = Data;	g = 0L;		ssOrg.x =  ssOrg.y = 0;		NumGraphs = 0;	ch = 19;	cw = 76;	fw = 32;	filename=0L;	aButton = 0L;
	w = 0L;	if(w = NewDispClass(this)){		w->hasHistMenu = true;		ssText.RotBL = ssText.RotCHAR = 0.0;		ssText.fSize = 0.0f;#ifdef _WINDOWS		ssText.iSize = w->un2iy(defs.GetSize(SIZE_CELLTEXT));#else		ssText.iSize = w->un2iy(defs.GetSize(SIZE_CELLTEXT)*.7);#endif		ssText.Align = TXA_VCENTER | TXA_HLEFT;		ssText.Mode = TXM_TRANSPARENT;		ssText.Style = TXS_NORMAL;					ssText.ColBg = 0x00e8e8e8L;		ssText.ColTxt = 0x00000000L;				ssText.text = 0L;		ssText.Font = FONT_HELVETICA;				w->SetTextSpec(&ssText);		w->SetMenu(MENU_SPREAD);					w->FileHistory();		w->Erase(0x00e8e8e8L);						w->Caption("RLPlot data");		cw = w->un2ix(defs.GetSize(SIZE_CELLWIDTH));		ch = w->un2iy(defs.GetSize(SIZE_CELLTEXT)/defs.ss_txt) + 2;		fw = 32;		}	cButtons = rButtons = 0L;	Id = GO_SPREADDATA;
	is_modified = false;}SpreadWin::~SpreadWin(){	int i;
	if(parent) {		if(cButtons) {			for(i = 0; cButtons[i]; i++) if(cButtons[i]) delete(cButtons[i]);			free(cButtons);			}		if(rButtons) {			for(i = 0; rButtons[i]; i++) if(rButtons[i]) delete(rButtons[i]);			free(rButtons);			}
		if (aButton) delete(aButton);		if (w) delete w;		if (g && NumGraphs) {			for(i = 0; i < NumGraphs; i++) if(g[i]) {				g[i]->Command(CMD_CAN_DELETE, 0L, 0L);				delete(g[i]);				}
			free (g);
			}
		if(filename) free(filename);	filename=0L;
		}
}

void
SpreadWin::DoPlot(anyOutput *o){	o->ActualSize(&currRC);	o->StartPage();	d->Command(CMD_DOPLOT, (void*)this, o);	o->EndPage();}boolSpreadWin::Command(int cmd, void *tmpl, anyOutput *o){	char *Name;	Graph **g1, *g2;	int i, j, k;	MouseEvent *mev;
	POINT p1;	if(d) {		switch(cmd) {
		case CMD_CURRPOS:
			if(tmpl && cButtons && rButtons) {
				int ac = 1, na =  0;
				RECT urc;
				if(((POINT*)tmpl)->x != cpos.x) {
					for(cpos.x = ((POINT*)tmpl)->x, i = 0; cButtons[i]; i++) {
						cButtons[i]->Command(CMD_SELECT, (cpos.x == (i+ssOrg.x)) ? &ac : &na, w);
						}
					urc.left = cButtons[0]->rDims.left;		urc.bottom = cButtons[0]->rDims.bottom;
					urc.top = cButtons[0]->rDims.top;		urc.right = urc.left + cw * (i-1);
					w->UpdateRect(&urc, false);
					}
				if(((POINT*)tmpl)->y != cpos.y) {
					for(cpos.y = ((POINT*)tmpl)->y, i = 0; rButtons[i]; i++) {
						rButtons[i]->Command(CMD_SELECT, (cpos.y == (i+ssOrg.y)) ? &ac : &na, w);
						}
					urc.left = rButtons[0]->rDims.left;		urc.right = rButtons[0]->rDims.right;
					urc.top = rButtons[0]->rDims.top;		urc.bottom = urc.top + ch * (i-1);
					w->UpdateRect(&urc, false);
					}
				}
			return true;		case CMD_CAN_CLOSE:
			HideTextCursor();
			for(i = 0; i < NumGraphs; i++) {
				if((g[i]) && !g[i]->Command(cmd, tmpl, o)) return false;
				}
			if(is_modified) {
				is_modified=false;
				i = YesNoCancelBox("The spreadsheet has been modified!\n\nDo you want to save it now?");
				if(i == 2) return false;
				else if(i == 1) return Command(CMD_SAVEDATAAS, tmpl, o);
				}
			//fall through
		case CMD_CAN_DELETE:
			HideTextCursor();
			if(is_modified && YesNoBox("The spreadsheet has been modified!\n\nDo you want to save it now?")){
				is_modified=false;
				return Command(CMD_SAVEDATAAS, tmpl, o);
				}
			Undo.KillDisp(w);
			is_modified=false;
			return true;
		case CMD_MRK_DIRTY:
			return is_modified = true;
		case CMD_WRITE_GRAPHS:
			if (g && NumGraphs) WriteGraphXML((unsigned char**)tmpl, (long*)o);
			return true;
		case CMD_DROP_GRAPH:			if(o) o->FileHistory();			if(!g) g = (Graph **)calloc(2, sizeof(Graph*));			else {				g1 = (Graph **)calloc(NumGraphs+2, sizeof(Graph*));				if(!g1) return false;				for(i = 0; i < NumGraphs; i++) g1[i] = g[i];				free(g);				g = g1; 				}			if(!g) return false;			g[NumGraphs] = (Graph *)tmpl;			if(g[NumGraphs]){				g[NumGraphs]->parent = this;				NumGraphs++;				g[NumGraphs-1]->Command(CMD_SET_DATAOBJ, (void *)d, 0L);				g[NumGraphs-1]->DoPlot(NULL);				}			return true;		case CMD_NEWGRAPH:			if((g2 = new Graph(this, d, 0L)) && g2->PropertyDlg() && 				Command(CMD_DROP_GRAPH, g2, o))return Command(CMD_REDRAW, 0L, o);			else if(g2) DeleteGO(g2);
			Undo.SetDisp(w);			return false;		case CMD_NEWPAGE:			if((g2 = new Page(this, d)) && 				Command(CMD_DROP_GRAPH, g2, o))return Command(CMD_REDRAW, 0L, o);			else if(g2) DeleteGO(g2);			Undo.SetDisp(w);
			return false;		case CMD_DELGRAPH:			if (g && NumGraphs) {				for(i = 0; i < NumGraphs; i++) if(g[i]){					g[i]->Command(CMD_CAN_DELETE, 0L, 0L);					DeleteGO(g[i]);					}				free (g);				}			g = 0L;			NumGraphs = 0;			Undo.Flush();			return true;		case CMD_DELOBJ:			if (g) {				for(i = 0; i <= NumGraphs; i++) {					if(g[i] == (Graph *)tmpl) {						delete (g[i]);						g[i] = 0L;						return true;						}					}				}			return false;		case CMD_SAVEDATAAS:
			is_modified=false;			if((Name = SaveDataAsName(filename)) && Name[0]){				if(o) o->FileHistory();				if(Name && d->WriteData(Name)) {					if(filename) free(filename);					filename = strdup(Name);					}
				else return false;				}
			else return false;			return true;		case CMD_DROPFILE:
			if(!Command(CMD_CAN_CLOSE, 0L, o)) return false;
			if(IsRlpFile((char*)tmpl)) return OpenGraph(this, (char*)tmpl, 0L);			else if(d->ReadData((char*)tmpl, 0L, FF_UNKNOWN)){				if(filename) free(filename);				filename = strdup((char*)tmpl);
				return Command(CMD_SETSCROLL, 0L, w);				}			return false;		case CMD_OPEN:			if(!Command(CMD_CAN_CLOSE, 0L, o)) return false;
			if((Name = OpenDataName(filename)) && Name[0]){				if(o) o->FileHistory();				if(IsRlpFile(Name)) return OpenGraph(this, Name, 0L);				else if(d->ReadData(Name, 0L, FF_UNKNOWN)){					if(filename) free(filename);					filename = strdup(Name);					return Command(CMD_SETSCROLL, 0L, w);					}				}			return false;		case CMD_ADDROWCOL:			if(DoSpShSize(d)) DoPlot(o);
			return true;		case CMD_MOUSE_EVENT:			if(o && (mev = (MouseEvent*)tmpl) && mev->y > o->MenuHeight) {
				if(mev->x < fw && mev->y < (o->MenuHeight + ch) && aButton) {
					aButton->Command(cmd, tmpl, o);
					}				else if(mev->x < fw && rButtons) {					i = (mev->y - o->MenuHeight - ch)/ch;					if(rButtons[i]) rButtons[i]->Command(cmd, tmpl, o);					}				else if(mev->y < (o->MenuHeight + ch) && cButtons) {					i = (mev->x - fw)/cw;					if(cButtons[i]) cButtons[i]->Command(cmd, tmpl, o);					}				else if(o->MrkMode == MRK_SSB_DRAW) o->HideMark();				}
			return	d->Command(cmd, tmpl, o);
		case CMD_PASTE_TSV:		case CMD_PASTE_CSV:		case CMD_PASTE_SSV:
			Undo.DataObject(this, w, d, 0L, 0L);
		case CMD_COPY_SYLK:		case CMD_ADDCHAR:		case CMD_SHIFTUP:		case CMD_COPY_TSV:		case CMD_COPY_XML:		case CMD_QUERY_COPY:		case CMD_TAB:			case CMD_SHTAB:			case CMD_SHIFTDOWN:		case CMD_CURRLEFT:		case CMD_CURRIGHT:		case CMD_CURRUP:		case CMD_CURRDOWN:		case CMD_SHIFTRIGHT:	case CMD_POS_FIRST:		case CMD_POS_LAST:		case CMD_SHIFTLEFT:		case CMD_DELETE:		case CMD_TOOLMODE:		case CMD_FILLRANGE:		case CMD_CUT:
		case CMD_PASTE_XML:		case CMD_DELROW:		case CMD_INSROW:
		case CMD_INSCOL:		case CMD_DELCOL:		case CMD_UNDO:		case CMD_SHPGUP:		case CMD_SHPGDOWN:
			return d->Command(cmd, tmpl, o);
		case CMD_REDRAW:
			Undo.SetDisp(w);
			d->Command(cmd, tmpl, o);
			return true;		case CMD_SETSCROLL:			HideTextCursor();			o->ActualSize(&currRC);			k = (currRC.bottom-currRC.top)/ch;			d->GetSize(&i, &j);			o->SetScroll(true, 0, j, k, ssOrg.y);			k = (currRC.right-currRC.left)/cw;			o->SetScroll(false, 0, i, k, ssOrg.x);			DoPlot(o);			return true;		case CMD_PAGEUP:		case CMD_PAGEDOWN:			k = (currRC.bottom-currRC.top)/ch;			k = k > 3 ? k-2 : 1;
			p1.x = fw + 2;		p1.y = ch + 2;
			if(CurrText){
				p1.x = CurrText->GetX()+2;	p1.y = CurrText->GetY()+12;
				}
			d->GetSize(&i, &j);
			if(cmd == CMD_PAGEUP) ssOrg.y = ssOrg.y > k ? ssOrg.y-k : 0;
			else ssOrg.y = ssOrg.y < j-k*2 ? ssOrg.y+k : j > k ? j-k : 0;
			Command(CMD_SETSCROLL, tmpl, o);
			CurrText = 0L;		d->Select(&p1);
			return true;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
三级久久三级久久久| 国产欧美一二三区| 成人黄色网址在线观看| 国产成人在线视频免费播放| 麻豆一区二区99久久久久| 男男gaygay亚洲| 久久成人麻豆午夜电影| 国内精品伊人久久久久影院对白| 麻豆精品国产91久久久久久| 激情综合网av| 成人小视频免费在线观看| 成人a级免费电影| 一本色道久久综合狠狠躁的推荐| 91浏览器在线视频| 制服丝袜av成人在线看| 精品99一区二区| 中文字幕精品一区二区精品绿巨人| 国产日产精品一区| 亚洲精品乱码久久久久| 石原莉奈在线亚洲二区| 久久国产三级精品| 国产高清不卡二三区| 一本一道久久a久久精品| 欧美精品日日鲁夜夜添| 久久网站热最新地址| 亚洲女人的天堂| 理论片日本一区| 99re热视频精品| 日韩一二三区视频| 国产精品欧美精品| 久久草av在线| 99久久精品免费看| 日韩视频一区二区| 国产精品久久久久久亚洲毛片| 国产欧美一区二区精品性色超碰| 亚洲码国产岛国毛片在线| 日韩精品久久理论片| 福利91精品一区二区三区| 欧美日韩免费观看一区三区| 久久久久久97三级| 偷拍亚洲欧洲综合| 93久久精品日日躁夜夜躁欧美| 9191国产精品| 亚洲欧美日韩小说| 国产美女精品在线| 69av一区二区三区| 亚洲精品国产高清久久伦理二区| 国产一区不卡在线| 5858s免费视频成人| 亚洲欧洲精品一区二区三区| 久久超碰97人人做人人爱| 欧美欧美午夜aⅴ在线观看| 亚洲视频一区在线| 国产成人精品亚洲午夜麻豆| 日韩欧美国产三级电影视频| 亚洲午夜私人影院| 91免费在线看| 国产精品成人一区二区艾草| 美女一区二区三区| 91精品婷婷国产综合久久性色| 亚洲欧美精品午睡沙发| 国产精品综合av一区二区国产馆| 欧美一区二区视频在线观看2020 | 91麻豆精品国产自产在线观看一区| 国产日本欧洲亚洲| 久草在线在线精品观看| 日韩无一区二区| 午夜亚洲福利老司机| 4438亚洲最大| 亚洲妇女屁股眼交7| 在线免费观看日韩欧美| 亚洲人成网站色在线观看| jizz一区二区| 亚洲欧美一区二区视频| 成人午夜在线播放| 国产精品国产三级国产aⅴ无密码| 国内精品久久久久影院一蜜桃| 欧美大胆人体bbbb| 国内久久精品视频| 欧美激情一区二区三区在线| 成人午夜激情在线| 国产精品毛片久久久久久| 成人av免费在线播放| 中文字幕亚洲精品在线观看| 91麻豆成人久久精品二区三区| 亚洲乱码国产乱码精品精小说| 色视频一区二区| 亚洲一二三区视频在线观看| 777亚洲妇女| 另类的小说在线视频另类成人小视频在线 | 91九色最新地址| 一区二区在线观看视频 | 欧美久久一区二区| 日日摸夜夜添夜夜添精品视频| 欧美一区二区日韩一区二区| 久久精品理论片| 国产午夜精品一区二区三区嫩草| 成人精品高清在线| 亚洲自拍都市欧美小说| 这里只有精品视频在线观看| 激情伊人五月天久久综合| 国产精品卡一卡二卡三| 欧美综合欧美视频| 精品中文字幕一区二区| 亚洲欧洲av色图| 91精品国产综合久久国产大片 | 欧美韩日一区二区三区四区| 色综合网色综合| 免费成人在线视频观看| 国产午夜亚洲精品羞羞网站| 欧洲色大大久久| 色综合久久中文综合久久97| 亚洲国产精品影院| 久久婷婷色综合| 日本福利一区二区| 国内成人免费视频| 亚洲一本大道在线| 国产精品麻豆99久久久久久| 欧美性感一区二区三区| 国产一区二区影院| 亚洲一区视频在线| 国产精品女主播av| 日韩小视频在线观看专区| 91网站在线观看视频| 久久国产精品第一页| 亚洲综合丁香婷婷六月香| www成人在线观看| 在线成人免费观看| 欧美在线一区二区三区| 国产盗摄一区二区| 美女一区二区久久| 亚洲国产视频在线| 亚洲视频免费观看| 欧美国产综合色视频| 精品日韩一区二区三区免费视频| 色婷婷久久综合| 9i看片成人免费高清| 国产乱淫av一区二区三区| 五月天一区二区| 中文字幕一区三区| 国产三级精品三级在线专区| 日韩女优视频免费观看| 91精选在线观看| 欧美高清视频在线高清观看mv色露露十八 | 国产精品系列在线| 欧美sm极限捆绑bd| 日韩欧美精品三级| 91精品国产全国免费观看| 欧美日韩视频在线一区二区| 欧美在线免费播放| 欧美在线免费播放| 欧美视频一区二区三区在线观看| 91原创在线视频| 色美美综合视频| 在线观看国产91| 欧美在线一二三| 欧美三区在线观看| 欧美人狂配大交3d怪物一区| 欧美日韩亚洲综合| 国产亚洲综合在线| 久久久亚洲综合| 国产精品免费丝袜| 亚洲欧洲av一区二区三区久久| 亚洲欧洲精品一区二区精品久久久 | 欧美精品在线视频| 欧美高清hd18日本| 日韩免费看的电影| 国产欧美日韩视频一区二区| 国产精品乱人伦| 亚洲一区二区av在线| 日韩在线a电影| 国产老女人精品毛片久久| 成人综合激情网| 91黄色激情网站| 日韩一二三区视频| 国产日韩欧美综合一区| 亚洲女同ⅹxx女同tv| 丝袜国产日韩另类美女| 国产最新精品精品你懂的| 成人av集中营| 51精品视频一区二区三区| 久久精品男人的天堂| 一区二区三区四区五区视频在线观看| 亚洲成人自拍一区| 国产精品羞羞答答xxdd| 欧美在线不卡视频| 久久综合九色综合97婷婷| 中文字幕一区在线观看视频| 视频精品一区二区| 国产suv一区二区三区88区| 欧美在线|欧美| 精品国产一区二区亚洲人成毛片 | 欧美一a一片一级一片| 精品国产免费人成电影在线观看四季| 国产精品视频九色porn| 日本中文字幕一区| 91色在线porny| 精品国产乱码久久久久久蜜臀| 成人免费在线播放视频| 精品一区二区久久久|