qtgraphics.cpp

来自「This is a resource based on j2me embedde」· C++ 代码 · 共 774 行 · 第 1/2 页

CPP
774
字号
        if((QtGraphDescPool[qtGraphDesc].currentalpha & 0x80) != 0) {            c = Qt::color1;            r = true;        }        break;			    case java_awt_AlphaComposite_SRC:        c = (QtGraphDescPool[qtGraphDesc].currentalpha & 0x80) ?             Qt::color1 : Qt::color0;        r = true;        break;			    case java_awt_AlphaComposite_CLEAR:        c = Qt::color0;        r = true;        break;			    default:        r = false;	}		if(r)	{		QPen qp(p.pen());		QBrush qb(p.brush());		qp.setColor(c);		qb.setColor(c);				if(p.isActive()) p.end();		p.begin((QPaintDevice *)(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].mask));							p.setPen(qp);		p.setBrush(qb);		        setPainterClip(&p, qtGraphDesc) ;	}		return r;}#else#define maskPainter(desc, painter) (FALSE)#endif// Note : All the methods that clones a QPainter should use the locking//        as follows // AWT_QT_LOCK; // {//   code that clones and uses QPainter// }// AWT_QT_UNLOCK;//// This will ensure that the deletion of QPainter local variable is// done with the lock held.JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pFillRect (JNIEnv * env, jclass cls,                                     jint qtGraphDesc, jint x, jint y,                                     jint w, jint h){    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setPen(Qt::NoPen);		p.setBrush(*((QBrush *)(QtGraphDescPool[qtGraphDesc].qb)));	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);    setPainterClip(&p, qtGraphDesc);	p.drawRect(x, y, w, h);		if(maskPainter(qtGraphDesc, p))		p.drawRect(x, y, w, h);    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pClearRect (JNIEnv * env, jclass cls,                                      jint qtGraphDesc, jint x, jint y,                                      jint width, jint height, jint rgb){	QColor qc(rgb);	    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);    setPainterClip(&p, qtGraphDesc);	p.fillRect(x, y, width, height, qc);	if(maskPainter(qtGraphDesc, p))		p.fillRect(x, y, width, height, qc);    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pDrawRect (JNIEnv * env, jclass cls,                                     jint qtGraphDesc, jint x, jint y,                                     jint w, jint h){    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setPen(*((QPen *)(QtGraphDescPool[qtGraphDesc].qp)));	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);    setPainterClip(&p, qtGraphDesc);	p.drawRect(x, y, w, h);		if(maskPainter(qtGraphDesc, p))		p.drawRect(x, y, w, h);    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pCopyArea (JNIEnv * env, jclass cls,                                     jint qtGraphDesc, jint x, jint y,                                     jint w, jint h,                                    jint dx, jint dy){    AWT_QT_LOCK;	QPaintDevice *qpd = QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd;	bitBlt(qpd, x + dx, y + dy, 		   qpd, x, y, w, h, 		   QtGraphDescPool[qtGraphDesc].rasterOp, FALSE);    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pDrawLine (JNIEnv * env, jclass cls,                                     jint qtGraphDesc, jint x1, jint y1,                                     jint x2, jint y2){	    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(*((QPen *)(QtGraphDescPool[qtGraphDesc].qp)));    setPainterClip(&p, qtGraphDesc);	p.drawLine(x1, y1, x2, y2);			if(maskPainter(qtGraphDesc, p))		p.drawLine(x1, y1, x2, y2);	    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pDrawPolygon (JNIEnv * env, jclass cls,                                        jint qtGraphDesc, jint originX,                                        jint originY,                                       jintArray xp, jintArray yp,                                        jint nPoints, jboolean close){	jint *xpoints = env->GetIntArrayElements (xp, NULL);	jint *ypoints = env->GetIntArrayElements (yp, NULL);	    AWT_QT_LOCK; {	QPointArray qpa(nPoints+1);		for(int i=0; i<nPoints; i++)		qpa.setPoint(i, xpoints[i]+originX, ypoints[i]+originY);		if(close)		qpa.setPoint(nPoints, xpoints[0]+originX, ypoints[0]+originY);		QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(*((QPen *)(QtGraphDescPool[qtGraphDesc].qp)));    setPainterClip(&p, qtGraphDesc);		if(close) {		p.drawPolyline(qpa);		if(maskPainter(qtGraphDesc, p))			p.drawPolyline(qpa);	}	else	{		p.drawPolyline(qpa, 0, nPoints);		if(maskPainter(qtGraphDesc, p))			p.drawPolyline(qpa, 0, nPoints);	}    }    AWT_QT_UNLOCK;		env->ReleaseIntArrayElements (xp, xpoints, JNI_ABORT);	env->ReleaseIntArrayElements (yp, ypoints, JNI_ABORT);}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pFillPolygon (JNIEnv * env, jclass cls,                                        jint qtGraphDesc, jint originX,                                        jint originY,                                       jintArray xp, jintArray yp,                                        jint nPoints){	jint *xpoints = env->GetIntArrayElements (xp, NULL);	jint *ypoints = env->GetIntArrayElements (yp, NULL);	    AWT_QT_LOCK; {	QPointArray qpa(nPoints);		for(int i=0; i<nPoints; i++)		qpa.setPoint(i, xpoints[i]+originX, ypoints[i]+originY);			QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(Qt::NoPen);		p.setBrush(*((QBrush *)(QtGraphDescPool[qtGraphDesc].qb)));    setPainterClip(&p, qtGraphDesc);	p.drawPolygon(qpa);		if(maskPainter(qtGraphDesc, p))		p.drawPolygon(qpa);    }    AWT_QT_UNLOCK;		env->ReleaseIntArrayElements (xp, xpoints, JNI_ABORT);	env->ReleaseIntArrayElements (yp, ypoints, JNI_ABORT);}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pDrawArc (JNIEnv * env, jclass cls,                                    jint qtGraphDesc, jint x, jint y,                                    jint width, jint height,                                    jint start, jint sweep){    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(*((QPen *)(QtGraphDescPool[qtGraphDesc].qp)));    setPainterClip(&p, qtGraphDesc);	p.drawArc(x, y, width, height, start*16, sweep*16);		if(maskPainter(qtGraphDesc, p))		p.drawArc(x, y, width, height, start*16, sweep*16);    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pFillArc (JNIEnv * env, jclass cls,                                    jint qtGraphDesc, jint x, jint y,                                    jint width, jint height, jint start,                                    jint sweep){    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(Qt::NoPen);		p.setBrush(*((QBrush *)(QtGraphDescPool[qtGraphDesc].qb)));    setPainterClip(&p, qtGraphDesc);	p.drawPie(x, y, width, height, start*16, sweep*16);	 	if(maskPainter(qtGraphDesc, p)) 		p.drawPie(x, y, width, height, start*16, sweep*16);    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pDrawOval (JNIEnv * env, jclass cls,                                     jint qtGraphDesc, jint x, jint y,                                     jint width,                                    jint height){    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(*((QPen *)(QtGraphDescPool[qtGraphDesc].qp)));    setPainterClip(&p, qtGraphDesc);	p.drawEllipse(x, y, width, height);		if(maskPainter(qtGraphDesc, p))		p.drawEllipse(x, y, width, height);    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pFillOval (JNIEnv * env, jclass cls,                                     jint qtGraphDesc, jint x, jint y,                                     jint width, jint height){    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(Qt::NoPen);		p.setBrush(*((QBrush *)(QtGraphDescPool[qtGraphDesc].qb)));    setPainterClip(&p, qtGraphDesc);	p.drawPie(x, y, width, height, 0, 16*360);		if(maskPainter(qtGraphDesc, p))		p.drawPie(x, y, width, height, 0, 16*360);    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pDrawRoundRect (JNIEnv * env, jclass cls,                                          jint qtGraphDesc, jint x, jint y,                                          jint w, jint h,                                         jint arcW, jint arcH){    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(*((QPen *)(QtGraphDescPool[qtGraphDesc].qp)));    setPainterClip(&p, qtGraphDesc);	p.drawRoundRect(x, y, w, h, arcW, arcH);		if(maskPainter(qtGraphDesc, p))		p.drawRoundRect(x, y, w, h, arcW, arcH);    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pFillRoundRect (JNIEnv * env, jclass cls,                                          jint qtGraphDesc, jint x, jint y,                                          jint w, jint h,                                         jint arcW, jint arcH){    AWT_QT_LOCK; {	QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);	p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);	p.setPen(Qt::NoPen);		p.setBrush(*((QBrush *)(QtGraphDescPool[qtGraphDesc].qb)));    setPainterClip(&p, qtGraphDesc);	p.drawRoundRect(x, y, w, h, arcW, arcH);	if(maskPainter(qtGraphDesc, p))		p.drawRoundRect(x, y, w, h, arcW, arcH);	    }    AWT_QT_UNLOCK;}JNIEXPORT void JNICALLJava_java_awt_QtGraphics_pDrawString (JNIEnv * env, jclass cls,                                       jint qtGraphDesc, jstring string,                                       jint x, jint y){	const char *chars;	jboolean isCopy;	jsize length;	chars = env->GetStringUTFChars (string, &isCopy);	if (chars == NULL) return;	length = env->GetStringUTFLength (string);    AWT_QT_LOCK;	if (length > 0)	{		QPainter p(QtImageDescPool[QtGraphDescPool[qtGraphDesc].qid].qpd);		p.setRasterOp(QtGraphDescPool[qtGraphDesc].rasterOp);		p.setPen(*((QPen *)(QtGraphDescPool[qtGraphDesc].qp)));		p.setFont(*((QFont *)(QtGraphDescPool[qtGraphDesc].font)));        setPainterClip(&p, qtGraphDesc);		p.drawText(x, y, QString::fromUtf8(chars, length));				if(maskPainter(qtGraphDesc, p)) {			p.setFont(*((QFont *)(QtGraphDescPool[qtGraphDesc].font)));			p.drawText(x, y, QString::fromUtf8(chars, length));		}	}    AWT_QT_UNLOCK;	env->ReleaseStringUTFChars (string, chars);}JNIEXPORT jobject JNICALLJava_java_awt_QtGraphics_getBufferedImagePeer(JNIEnv *env, jclass cls,                                               jobject BufferedImage){	return env->GetObjectField(BufferedImage,                 QtCachedIDs.java_awt_image_BufferedImage_peerFID);}

⌨️ 快捷键说明

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