⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qt_spec.cpp

📁 Linux/windows 环境下跨平台开发程序
💻 CPP
📖 第 1 页 / 共 5 页
字号:
}boolRLPGraphDrag::provides(const char *mimeType){	if(go1 && 0 == strcmp(mimeType, MIME_RLPGRAPH)) return true;	if(go2 && 0 == strcmp(mimeType, MIME_RLPOBJ)) return true;	return false;}voidRLPGraphDrag::setGraphData(GraphObj *g){	go1 = g;	if(CurrGraph && CurrGraph != g) go2 = CurrGraph;	else go2 = 0L;}QByteArrayRLPGraphDrag::encodedData(const char* mime) const{	static QByteArray b;	char *ptr = 0L;	long cb;	if(0 == strcmp(mime, "text/plain")) return 0L;	else if(go1 && 0 == strcmp(mime, MIME_RLPGRAPH)) ptr = GraphToMem(go1, &cb);	else if(go2 && 0 == strcmp(mime, MIME_RLPOBJ)) ptr = GraphToMem(go2, &cb);	else return 0L;	if(ptr && b.resize(cb+1)) {		memcpy(b.data(), ptr, cb+1);		free (ptr);		return (b);		}	return 0L;}const char*RLPGraphDrag::format(int i) const{	switch(i) {	case 0:		return("text/plain");	case 1:		return MIME_RLPGRAPH;	case 2:		return MIME_RLPOBJ;	default:	return 0L;		}}boolRLPGraphDrag::canDecode(QMimeSource *e){	if(e->provides(MIME_RLPGRAPH)) return true;	if(e->provides(MIME_RLPOBJ)) return true;	return false;}const char*RLPGraphDrag::selectionMimeType(){	return(MIME_RLPGRAPH);}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// Process paste command: check for clipboard contentsvoid TestClipboard(GraphObj *g){	QClipboard *cb;	QDragObject *mime;	if(!(cb = QAppl->clipboard()))return;
	if(!(mime = (QDragObject *)cb->data()))return;
	if(g->Id == GO_SPREADDATA) {		if(mime->provides(MIME_RLPLOT)){
			QByteArray b = mime->encodedData(MIME_RLPLOT);			if(b) g->Command(CMD_PASTE_XML, (void*)b.data(), 0L);			return;			}		else if(mime->provides(MIME_KSPREAD)){			QByteArray b = mime->encodedData(MIME_KSPREAD);			if(b) g->Command(CMD_PASTE_XML, (void*)b.data(), 0L);			return;			}		else if(QByteArray b = mime->encodedData(MIME_RLPOBJ)){			OpenGraph(g, 0L, (unsigned char*)b.data());			return;			}		else if(QByteArray b = mime->encodedData(MIME_RLPGRAPH)){			OpenGraph(g, 0L, (unsigned char*)b.data());			return;			}		else if(mime->provides("text/plain")){			QString _text = cb->text();			ProcMemData(g, (unsigned char*)_text.latin1(), true);			return;			}		}	else if(g->Id == GO_PAGE){		if(QByteArray b = mime->encodedData(MIME_RLPOBJ)){			OpenGraph(g, 0L, (unsigned char*)b.data());			return;			}		else if(QByteArray b = mime->encodedData(MIME_RLPGRAPH)){			OpenGraph(g, 0L, (unsigned char*)b.data());			return;			}		}	else if(g->Id == GO_GRAPH)TestClipboard(g->parent);}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// Copy spreadsheet or graph to clipboardvoid CopyData(GraphObj *g){	EmptyClip();	KSpreadTextDrag *kd = new KSpreadTextDrag(0L);	kd->setText(QString("RLPlot snippet"));	kd->setSpreadData(g);#ifdef Q_CHECK_PTR				//n.a. in Qt version 2	if(QAppl->clipboard()->supportsSelection())		QAppl->clipboard()->setSelectionMode(TRUE);#endif	QAppl->clipboard()->setData(kd);}void CopyGraph(GraphObj *g){	EmptyClip();	RLPGraphDrag *gd = new RLPGraphDrag(0L);	gd->setText(QString("RLPlot graph"));	gd->setGraphData(g);	//no support for X11 clipboard possible	QAppl->clipboard()->setData(gd);}void EmptyClip(){	HideCopyMark();	QAppl->clipboard()->clear();}
void CopyText(char *txt, int len)
{
	QClipboard *cb;
	char tmp_txt[90];

	if(!(cb = QAppl->clipboard()) || !txt || !txt[0])return;
	EmptyClip();
	if(!len) len = strlen(txt);
	memcpy(tmp_txt, txt, len);		tmp_txt[len] = 0;
#ifdef Q_CHECK_PTR				//n.a. in Qt version 2
	cb->setText(tmp_txt, QClipboard::Clipboard);
	cb->setText(tmp_txt, QClipboard::Selection);
#else
	cb->setText(tmp_txt);
#endif
}

unsigned char* PasteText()
{
	QClipboard *cb;
	QMimeSource *mime;
	unsigned char *tmp_txt = 0L;

	if(!(cb = QAppl->clipboard())) return 0L;
#ifdef Q_CHECK_PTR				//n.a. in Qt version 2
	QString qstr = cb->text(QClipboard::Clipboard);
#else
	QString qstr = cb->text();
#endif
	if(qstr.length()) tmp_txt = (unsigned char*) strdup(qstr);
	else {
#ifdef Q_CHECK_PTR				//n.a. in Qt version 2
		qstr = cb->text(QClipboard::Selection);
#else
		QString qstr = cb->text();
#endif
		if(qstr.length()) tmp_txt = (unsigned char*) strdup(qstr);
		}
	return tmp_txt;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// Get display (desktop) size//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~void GetDesktopSize(int *width, int *height){	QWidget *d = QApplication::desktop();	*width = d->width();	*height = d->height();}//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// Swap red and blue in RGB value//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~DWORD SwapRB(DWORD col){	DWORD nc = col & 0x0000ff00L;	nc |= (col>>16)&0x000000ffL;	nc |= (col<<16)&0x00ff0000L;	return nc;}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Common code for all QT output classes
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
bool com_TextOut(int x, int y, char *ctxt, TextDEF *TxtSet, QPainter *qP, anyOutput *o)
{
	int i, w, h, ix, iy;
	QBrush oldBrush;
	QPen oldPen, currPen;
	QWMatrix xf, dxf;
	QString txt(ctxt);

	if(!ctxt || !ctxt[0] || !TxtSet || !qP || !o) return false;
	if(TxtSet->Font==FONT_GREEK) {
		txt.truncate(0);
		for(i = 0; ctxt[i]; i++) {
			if((ctxt[i] >= 'A' && ctxt[i] <= 'Z')) txt.append(QChar(ctxt[i] - 'A' + 0x391));
			else if((ctxt[i] >= 'a' && ctxt[i] <= 'z')) txt.append(QChar(ctxt[i] - 'a' + 0x3B1));
			else txt.append(QChar(ctxt[i]));
			}
		}
	oldBrush = qP->brush();		dxf = qP->worldMatrix();
	oldPen = currPen = qP->pen();
	o->oGetTextExtent(ctxt, -1, &w, &h);
	if(TxtSet->Align & TXA_VCENTER) iy = y + iround(TxtSet->iSize *0.4);
	else if(TxtSet->Align & TXA_VBOTTOM) iy = y;
	else iy = y + TxtSet->iSize + 1;
	if(TxtSet->Align & TXA_HCENTER) ix = x - (w >> 1);
	else if(TxtSet->Align & TXA_HRIGHT) ix = x - w;
	else ix = x;
	currPen.setColor(SwapRB(TxtSet->ColTxt));
	qP->setPen(currPen);
	if(fabs(TxtSet->RotBL) >.01 || fabs(TxtSet->RotCHAR) >.01) {
		xf.translate(x, y);
		xf.rotate(-TxtSet->RotBL);
		qP->setWorldMatrix(xf, TRUE);
		if(TxtSet->Mode == TXM_OPAQUE){
			currPen.setColor(SwapRB(TxtSet->ColBg));
			qP->setPen(currPen);
			qP->setBrush(QColor(SwapRB(TxtSet->ColBg)));
			qP->drawRect(0, - iround(h*.8), w, h);
			currPen.setColor(SwapRB(TxtSet->ColTxt));
			qP->setPen(currPen);
			}
		if(TxtSet->Style & TXS_SUB) iy += o->un2iy(TxtSet->fSize*0.4);
		else if(TxtSet->Style & TXS_SUPER) iy -= o->un2iy(TxtSet->fSize*0.4);
		qP->drawText(ix-x, iy-y, txt, -1);
		}
	else {
		if(TxtSet->Mode == TXM_OPAQUE){
			currPen.setColor(SwapRB(TxtSet->ColBg));
			qP->setPen(currPen);
			qP->setBrush(QColor(SwapRB(TxtSet->ColBg)));
			qP->drawRect(ix, iy - iround(h*.8), w, h);
			currPen.setColor(SwapRB(TxtSet->ColTxt));
			qP->setPen(currPen);
			}
		if(TxtSet->Style & TXS_SUB) iy += o->un2iy(TxtSet->fSize*0.4);
		else if(TxtSet->Style & TXS_SUPER) iy -= o->un2iy(TxtSet->fSize*0.4);
		qP->drawText(ix, iy, txt, -1);
		}
	qP->setPen(oldPen);
	qP->setBrush(oldBrush);
	qP->setWorldMatrix(dxf, FALSE);
	return true;
}

bool com_SetTextSpec(TextDEF *set, TextDEF *TxtSet, anyOutput *o, QFont qF, QPainter *qP)
{
	bool IsModified, RetVal;

	if(!set->iSize && set->fSize > 0.0) set->iSize = o->un2iy(set->fSize);
	if(!set->iSize) return false;
	if(TxtSet->iSize != set->iSize || TxtSet->Style != set->Style ||
		TxtSet->RotBL != set->RotBL || TxtSet->RotCHAR != set->RotCHAR ||
		TxtSet->Font != set->Font || TxtSet->Mode != set->Mode)
		IsModified = true;
	else IsModified = false;
	RetVal = o->anyOutput::SetTextSpec(set);
	if(IsModified) {
		qF.setBold((TxtSet->Style & TXS_BOLD) ? true : false);
		qF.setItalic((TxtSet->Style & TXS_ITALIC) ? true : false);
		qF.setUnderline((TxtSet->Style &TXS_UNDERLINE) ? true : false);
		if((TxtSet->Style & TXS_SUPER) || (TxtSet->Style & TXS_SUB))
			 qF.setPointSize(o->un2iy(set->fSize*0.71));
		else qF.setPointSize((TxtSet->iSize > 8) ? TxtSet->iSize : 8);
		switch(TxtSet->Font){
		case FONT_HELVETICA:
		default:			qF.setFamily("Helvetica");			break;
		case FONT_GREEK:
		case FONT_TIMES:	qF.setFamily("Times");				break;
		case FONT_COURIER:	qF.setFamily("Courier");			break;
			}
		qP->setFont(qF);
		}
	return RetVal;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// Icon definitions//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~//this icon has been taken from trolltech's Qt: qmessagebox.cppstatic char *information_xpm[]={"32 32 5 1",". c None","c c #000000","* c #999999","a c #ffffff","b c #0000ff","...........********.............","........***aaaaaaaa***..........","......**aaaaaaaaaaaaaa**........",".....*aaaaaaaaaaaaaaaaaa*.......","....*aaaaaaaabbbbaaaaaaaac......","...*aaaaaaaabbbbbbaaaaaaaac.....","..*aaaaaaaaabbbbbbaaaaaaaaac....",".*aaaaaaaaaaabbbbaaaaaaaaaaac...",".*aaaaaaaaaaaaaaaaaaaaaaaaaac*..","*aaaaaaaaaaaaaaaaaaaaaaaaaaaac*.","*aaaaaaaaaabbbbbbbaaaaaaaaaaac*.","*aaaaaaaaaaaabbbbbaaaaaaaaaaac**","*aaaaaaaaaaaabbbbbaaaaaaaaaaac**","*aaaaaaaaaaaabbbbbaaaaaaaaaaac**","*aaaaaaaaaaaabbbbbaaaaaaaaaaac**","*aaaaaaaaaaaabbbbbaaaaaaaaaaac**",".*aaaaaaaaaaabbbbbaaaaaaaaaac***",".*aaaaaaaaaaabbbbbaaaaaaaaaac***","..*aaaaaaaaaabbbbbaaaaaaaaac***.","...caaaaaaabbbbbbbbbaaaaaac****.","....caaaaaaaaaaaaaaaaaaaac****..",".....caaaaaaaaaaaaaaaaaac****...","......ccaaaaaaaaaaaaaacc****....",".......*cccaaaaaaaaccc*****.....","........***cccaaaac*******......","..........****caaac*****........",".............*caaac**...........","...............caac**...........","................cac**...........",".................cc**...........","..................***...........","...................**..........."};//this icon has been taken from trolltech's Qt: qmessagebox.cppstatic char *critical_xpm[]={"32 32 4 1",". c None","a c #999999","* c #ff0000","b c #ffffff","...........********.............",".........************...........",".......****************.........","......******************........",".....********************a......","....**********************a.....","...************************a....","..*******b**********b*******a...","..******bbb********bbb******a...",".******bbbbb******bbbbb******a..",".*******bbbbb****bbbbb*******a..","*********bbbbb**bbbbb*********a.","**********bbbbbbbbbb**********a.","***********bbbbbbbb***********aa","************bbbbbb************aa","************bbbbbb************aa","***********bbbbbbbb***********aa","**********bbbbbbbbbb**********aa","*********bbbbb**bbbbb*********aa",".*******bbbbb****bbbbb*******aa.",".******bbbbb******bbbbb******aa.","..******bbb********bbb******aaa.","..*******b**********b*******aa..","...************************aaa..","....**********************aaa...","....a********************aaa....",".....a******************aaa.....","......a****************aaa......",".......aa************aaaa.......",".........aa********aaaaa........","...........aaaaaaaaaaa..........",".............aaaaaaa............"};
//thanks to Markus Bongard for the following iconstatic char *RLPlot_xpm[]={/* width height ncolors chars_per_pixel */
"32 32 169 2",
/* colors */
"AA c #FFFFFFFFFFFF",
"BA c #FFFFF7F79494",
"CA c #FFFFF7F78484",
"DA c #FFFFF7F77373",
"EA c #FFFFF7F75252",
"FA c #FFFFF7F74242",
"GA c #FFFFF7F73939",
"HA c #FFFFEFEF8C8C",
"IA c #FFFFEFEF4A4A",
"JA c #FFFFEFEF2929",
"KA c #F7F7E7E77B7B",
"LA c #F7F7C6C6ADAD",
"MA c #F7F7B5B59C9C",
"NA c #F7F7ADAD9494",
"OA c #EFEFF7F7F7F7",
"PA c #EFEFF7F7EFEF",
"AB c #EFEFEFEFEFEF",
"BB c #EFEFEFEFDEDE",
"CB c #EFEFE7E7A5A5",
"DB c #EFEFDEDE7373",
"EB c #EFEFDEDE3939",
"FB c #EFEFDEDE2929",
"GB c #EFEFD6D64242",
"HB c #EFEFA5A58C8C",
"IB c #EFEF94947B7B",
"JB c #EFEF84847373",
"KB c #EFEF84846363",
"LB c #EFEF7B7B7373",
"MB c #E7E7E7E7CECE",
"NB c #E7E7E7E79494",
"OB c #E7E7DEDE6B6B",
"PB c #E7E7DEDE5252",
"AC c #E7E7CECE5252",
"BC c #E7E77B7B6363",
"CC c #E7E773735A5A",
"DC c #E7E76B6B5252",
"EC c #E7E75A5A4A4A",
"FC c #DEDEE7E7F7F7",
"GC c #DEDEE7E7EFEF",
"HC c #DEDEDEDEDEDE",
"IC c #DEDEDEDEBDBD",
"JC c #DEDECECE4A4A",
"KC c #DEDE4A4A3939",
"LC c #D6D6EFEFCECE",
"MC c #D6D6DEDEEFEF",
"NC c #D6D6DEDECECE",
"OC c #CECEDEDEDEDE",
"PC c #CECED6D6CECE",
"AD c #CECECECEB5B5",
"BD c #CECECECE5A5A",
"CD c #C6C6E7E7C6C6",
"DD c #C6C6DEDEEFEF",
"ED c #C6C6D6D67373",
"FD c #C6C6CECE4A4A",
"GD c #BDBDDEDEB5B5",
"HD c #BDBDCECEE7E7",
"ID c #BDBDCECECECE",
"JD c #BDBDC6C6D6D6",
"KD c #BDBD39394242",
"LD c #B5B5DEDEADAD",
"MD c #B5B5BDBDCECE",
"ND c #B5B5BDBD4242",
"OD c #B5B5B5B59C9C",
"PD c #ADADD6D6ADAD",
"AE c #ADADCECEDEDE",
"BE c #ADADBDBDB5B5",
"CE c #ADADB5B54242",
"DE c #ADAD4A4A5252",
"EE c #A5A5BDBDDEDE",
"FE c #A5A5BDBDCECE",
"GE c #A5A5ADADB5B5",
"HE c #A5A5ADAD4242",
"IE c #A5A563637B7B",
"JE c #9C9CD6D6A5A5",
"KE c #9C9CBDBDD6D6",
"LE c #9C9CBDBDBDBD",
"ME c #9C9CADADCECE",
"NE c #9C9CADADA5A5",
"OE c #9C9C52525252",
"PE c #9C9C4A4A5252",
"AF c #9494CECE9C9C",
"BF c #9494B5B5CECE",
"CF c #9494ADAD5A5A",

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -