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 + -
显示快捷键?