< prev index next >

src/java.desktop/macosx/native/libawt_lwawt/awt/QuartzRenderer.m

Print this page
rev 54096 : 8259651: [macOS] Replace JNF_COCOA_ENTER/EXIT macros
rev 54098 : 8260616: Removing remaining JNF dependencies in the java.desktop module
8259729: Missed JNFInstanceOf -> IsInstanceOf conversion


  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #import "java_awt_image_BufferedImage.h"
  27 #import "java_awt_geom_PathIterator.h"
  28 #import "sun_java2d_OSXSurfaceData.h"
  29 
  30 #import <stdio.h>
  31 #import <JavaNativeFoundation/JavaNativeFoundation.h>
  32 
  33 #import "ImageSurfaceData.h"
  34 
  35 
  36 //#define DEBUG 1
  37 #if defined DEBUG
  38     #define QUARTZ_RENDERER_INLINE
  39     #define PRINT(msg) {fprintf(stderr, "%s\n", msg);fflush(stderr);}
  40 #else
  41     #define QUARTZ_RENDERER_INLINE static inline
  42     #define PRINT(msg) {}
  43 #endif
  44 
  45 // Copied the following from Math.java
  46 #define PI 3.14159265358979323846f
  47 
  48 #define BATCHED_POINTS_SIZE 1024
  49 
  50 // same value as defined in Sun's own code
  51 #define XOR_ALPHA_CUTOFF 128


 619     gRoundRectCtrlpts[2][3] = -acv;
 620     gRoundRectCtrlpts[2][5] = acv;
 621     gRoundRectCtrlpts[4][1] = -acv;
 622     gRoundRectCtrlpts[4][7] = -acv;
 623     gRoundRectCtrlpts[6][3] = acv;
 624     gRoundRectCtrlpts[6][5] = -acv;
 625     gRoundRectCtrlpts[8][1] = acv;
 626     gRoundRectCtrlpts[8][7] = acv;
 627 }
 628 
 629 /*
 630  * Class:     sun_java2d_CRenderer
 631  * Method:    doLine
 632  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;FFFF)V
 633  */
 634 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doLine
 635 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x1, jfloat y1, jfloat x2, jfloat y2)
 636 {
 637 PRINT("Java_sun_java2d_CRenderer_doLine")
 638     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 639 JNF_COCOA_ENTER(env);
 640     SDRenderType renderType = SD_Stroke;
 641     qsdo->BeginSurface(env, qsdo, renderType);
 642     if (qsdo->cgRef != NULL)
 643     {
 644         doLine(qsdo, x1, y1, x2, y2);
 645     }
 646     qsdo->FinishSurface(env, qsdo);
 647 JNF_COCOA_RENDERER_EXIT(env);
 648 }
 649 
 650 /*
 651  * Class:     sun_java2d_CRenderer
 652  * Method:    doRect
 653  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;FFFF)V
 654  */
 655 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doRect
 656 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x, jfloat y, jfloat w, jfloat h, jboolean isfill)
 657 {
 658 PRINT("Java_sun_java2d_CRenderer_doRect")
 659     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 660 JNF_COCOA_ENTER(env);
 661     SDRenderType renderType    = (isfill? SD_Fill : SD_Stroke);
 662     qsdo->BeginSurface(env, qsdo, renderType);
 663     if (qsdo->cgRef != NULL)
 664     {
 665         doRect(qsdo, x, y, w, h, isfill);
 666     }
 667     qsdo->FinishSurface(env, qsdo);
 668 JNF_COCOA_RENDERER_EXIT(env);
 669 }
 670 
 671 /*
 672  * Class:     sun_java2d_CRenderer
 673  * Method:    doRoundRect
 674  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;IIIIII)V
 675  */
 676 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doRoundRect
 677 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x, jfloat y, jfloat w, jfloat h, jfloat arcWidth, jfloat arcHeight, jboolean isfill)
 678 {
 679 PRINT("Java_sun_java2d_CRenderer_doRoundRect")
 680     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 681 JNF_COCOA_ENTER(env);
 682     SDRenderType renderType    = (isfill? SD_Fill : SD_Stroke);
 683     qsdo->BeginSurface(env, qsdo, renderType);
 684     if (qsdo->cgRef != NULL)
 685     {
 686         doRoundRect(qsdo, x, y, w, h, arcWidth, arcHeight, isfill);
 687     }
 688     qsdo->FinishSurface(env, qsdo);
 689 JNF_COCOA_RENDERER_EXIT(env);
 690 }
 691 
 692 /*
 693  * Class:     sun_java2d_CRenderer
 694  * Method:    doOval
 695  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;IIII)V
 696  */
 697 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doOval
 698 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x, jfloat y, jfloat w, jfloat h, jboolean isfill)
 699 {
 700 PRINT("Java_sun_java2d_CRenderer_doOval")
 701     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 702 JNF_COCOA_ENTER(env);
 703     SDRenderType renderType    = (isfill? SD_Fill : SD_Stroke);
 704     qsdo->BeginSurface(env, qsdo, renderType);
 705     if (qsdo->cgRef != NULL)
 706     {
 707         doOval(qsdo, x, y, w, h, isfill);
 708     }
 709     qsdo->FinishSurface(env, qsdo);
 710 JNF_COCOA_RENDERER_EXIT(env);
 711 }
 712 
 713 /*
 714  * Class:     sun_java2d_CRenderer
 715  * Method:    doArc
 716  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;IIIIII)V
 717  */
 718 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doArc
 719 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x, jfloat y, jfloat w, jfloat h, jfloat angleStart, jfloat angleExtent, jint arcType, jboolean isfill)
 720 {
 721 PRINT("Java_sun_java2d_CRenderer_doArc")
 722     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 723 JNF_COCOA_ENTER(env);
 724     SDRenderType renderType    = (isfill? SD_Fill : SD_Stroke);
 725     qsdo->BeginSurface(env, qsdo, renderType);
 726     if (qsdo->cgRef != NULL)
 727     {
 728         doArc(qsdo, x, y, w, h, angleStart, angleExtent, arcType, isfill);
 729     }
 730     qsdo->FinishSurface(env, qsdo);
 731 JNF_COCOA_RENDERER_EXIT(env);
 732 }
 733 
 734 /*
 735  * Class:     sun_java2d_CRenderer
 736  * Method:    doPoly
 737  * Signature:
 738  */
 739 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doPoly
 740 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jintArray xpointsarray, jintArray ypointsarray, jint npoints, jboolean ispolygon, jboolean isfill)
 741 {
 742 PRINT("Java_sun_java2d_CRenderer_doPoly")
 743     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 744 JNF_COCOA_ENTER(env);
 745     BOOL eoFill = YES; // polys are WIND_EVEN_ODD by definition
 746     SDRenderType renderType    = (isfill? (eoFill ? SD_EOFill : SD_Fill) : SD_Stroke);
 747     qsdo->BeginSurface(env, qsdo, renderType);
 748     if (qsdo->cgRef != NULL)
 749     {
 750         doPoly(env, qsdo, xpointsarray, ypointsarray, npoints, ispolygon, isfill);
 751     }
 752     qsdo->FinishSurface(env, qsdo);
 753 JNF_COCOA_RENDERER_EXIT(env);
 754 }
 755 
 756 /*
 757  * Class:     sun_java2d_CRenderer
 758  * Method:    doShape
 759  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;ILjava/nio/FloatBuffer;Ljava/nio/IntBuffer;IZ)V
 760  */
 761 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doShape
 762 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jint length, jobject jFloatCoordinates, jobject jIntTypes, jint windingRule, jboolean isfill, jboolean shouldApplyOffset)
 763 {
 764 PRINT("Java_sun_java2d_CRenderer_doShape")
 765     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 766 JNF_COCOA_ENTER(env);
 767     BOOL eoFill = (windingRule == java_awt_geom_PathIterator_WIND_EVEN_ODD);
 768     SDRenderType renderType    = (isfill? (eoFill ? SD_EOFill : SD_Fill) : SD_Stroke);
 769     qsdo->BeginSurface(env, qsdo, renderType);
 770     if (qsdo->cgRef != NULL)
 771     {
 772         jfloat *coordinates = (jfloat*)((*env)->GetDirectBufferAddress(env, jFloatCoordinates));
 773         jint *types = (jint*)((*env)->GetDirectBufferAddress(env, jIntTypes));
 774         doShape(qsdo, types, coordinates, length, isfill, shouldApplyOffset);
 775     }
 776     qsdo->FinishSurface(env, qsdo);
 777 JNF_COCOA_RENDERER_EXIT(env);
 778 }
 779 
 780 #define invalidContext(c) \
 781     ((c) == NULL /* || (c)->identifer != CGContextIdentifier */)
 782 
 783 /*
 784  * Class:     sun_java2d_CRenderer
 785  * Method:    doImage
 786  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;Lsun/java2d/SurfaceData;ZZIIIIIIII)V
 787  */
 788 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doImage
 789 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jobject imageSurfaceData, jboolean fliph, jboolean flipv, jint w, jint h, jint sx, jint sy, jint sw, jint sh, jint dx, jint dy, jint dw, jint dh)
 790 {
 791 PRINT("Java_sun_java2d_CRenderer_doImage")
 792     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 793 JNF_COCOA_ENTER(env);
 794     qsdo->BeginSurface(env, qsdo, SD_Image);
 795     if (qsdo->cgRef != NULL)
 796     {
 797         doImage(env, qsdo, imageSurfaceData, fliph, flipv, w, h, sx, sy, sw, sh, dx, dy, dw, dh);
 798     }
 799     qsdo->FinishSurface(env, qsdo);
 800 JNF_COCOA_RENDERER_EXIT(env);
 801 }


  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 
  26 #import "java_awt_image_BufferedImage.h"
  27 #import "java_awt_geom_PathIterator.h"
  28 #import "sun_java2d_OSXSurfaceData.h"
  29 
  30 #import <stdio.h>

  31 
  32 #import "ImageSurfaceData.h"
  33 
  34 
  35 //#define DEBUG 1
  36 #if defined DEBUG
  37     #define QUARTZ_RENDERER_INLINE
  38     #define PRINT(msg) {fprintf(stderr, "%s\n", msg);fflush(stderr);}
  39 #else
  40     #define QUARTZ_RENDERER_INLINE static inline
  41     #define PRINT(msg) {}
  42 #endif
  43 
  44 // Copied the following from Math.java
  45 #define PI 3.14159265358979323846f
  46 
  47 #define BATCHED_POINTS_SIZE 1024
  48 
  49 // same value as defined in Sun's own code
  50 #define XOR_ALPHA_CUTOFF 128


 618     gRoundRectCtrlpts[2][3] = -acv;
 619     gRoundRectCtrlpts[2][5] = acv;
 620     gRoundRectCtrlpts[4][1] = -acv;
 621     gRoundRectCtrlpts[4][7] = -acv;
 622     gRoundRectCtrlpts[6][3] = acv;
 623     gRoundRectCtrlpts[6][5] = -acv;
 624     gRoundRectCtrlpts[8][1] = acv;
 625     gRoundRectCtrlpts[8][7] = acv;
 626 }
 627 
 628 /*
 629  * Class:     sun_java2d_CRenderer
 630  * Method:    doLine
 631  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;FFFF)V
 632  */
 633 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doLine
 634 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x1, jfloat y1, jfloat x2, jfloat y2)
 635 {
 636 PRINT("Java_sun_java2d_CRenderer_doLine")
 637     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 638 JNI_COCOA_ENTER(env);
 639     SDRenderType renderType = SD_Stroke;
 640     qsdo->BeginSurface(env, qsdo, renderType);
 641     if (qsdo->cgRef != NULL)
 642     {
 643         doLine(qsdo, x1, y1, x2, y2);
 644     }
 645     qsdo->FinishSurface(env, qsdo);
 646 JNI_COCOA_RENDERER_EXIT(env);
 647 }
 648 
 649 /*
 650  * Class:     sun_java2d_CRenderer
 651  * Method:    doRect
 652  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;FFFF)V
 653  */
 654 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doRect
 655 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x, jfloat y, jfloat w, jfloat h, jboolean isfill)
 656 {
 657 PRINT("Java_sun_java2d_CRenderer_doRect")
 658     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 659 JNI_COCOA_ENTER(env);
 660     SDRenderType renderType    = (isfill? SD_Fill : SD_Stroke);
 661     qsdo->BeginSurface(env, qsdo, renderType);
 662     if (qsdo->cgRef != NULL)
 663     {
 664         doRect(qsdo, x, y, w, h, isfill);
 665     }
 666     qsdo->FinishSurface(env, qsdo);
 667 JNI_COCOA_RENDERER_EXIT(env);
 668 }
 669 
 670 /*
 671  * Class:     sun_java2d_CRenderer
 672  * Method:    doRoundRect
 673  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;IIIIII)V
 674  */
 675 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doRoundRect
 676 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x, jfloat y, jfloat w, jfloat h, jfloat arcWidth, jfloat arcHeight, jboolean isfill)
 677 {
 678 PRINT("Java_sun_java2d_CRenderer_doRoundRect")
 679     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 680 JNI_COCOA_ENTER(env);
 681     SDRenderType renderType    = (isfill? SD_Fill : SD_Stroke);
 682     qsdo->BeginSurface(env, qsdo, renderType);
 683     if (qsdo->cgRef != NULL)
 684     {
 685         doRoundRect(qsdo, x, y, w, h, arcWidth, arcHeight, isfill);
 686     }
 687     qsdo->FinishSurface(env, qsdo);
 688 JNI_COCOA_RENDERER_EXIT(env);
 689 }
 690 
 691 /*
 692  * Class:     sun_java2d_CRenderer
 693  * Method:    doOval
 694  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;IIII)V
 695  */
 696 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doOval
 697 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x, jfloat y, jfloat w, jfloat h, jboolean isfill)
 698 {
 699 PRINT("Java_sun_java2d_CRenderer_doOval")
 700     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 701 JNI_COCOA_ENTER(env);
 702     SDRenderType renderType    = (isfill? SD_Fill : SD_Stroke);
 703     qsdo->BeginSurface(env, qsdo, renderType);
 704     if (qsdo->cgRef != NULL)
 705     {
 706         doOval(qsdo, x, y, w, h, isfill);
 707     }
 708     qsdo->FinishSurface(env, qsdo);
 709 JNI_COCOA_RENDERER_EXIT(env);
 710 }
 711 
 712 /*
 713  * Class:     sun_java2d_CRenderer
 714  * Method:    doArc
 715  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;IIIIII)V
 716  */
 717 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doArc
 718 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jfloat x, jfloat y, jfloat w, jfloat h, jfloat angleStart, jfloat angleExtent, jint arcType, jboolean isfill)
 719 {
 720 PRINT("Java_sun_java2d_CRenderer_doArc")
 721     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 722 JNI_COCOA_ENTER(env);
 723     SDRenderType renderType    = (isfill? SD_Fill : SD_Stroke);
 724     qsdo->BeginSurface(env, qsdo, renderType);
 725     if (qsdo->cgRef != NULL)
 726     {
 727         doArc(qsdo, x, y, w, h, angleStart, angleExtent, arcType, isfill);
 728     }
 729     qsdo->FinishSurface(env, qsdo);
 730 JNI_COCOA_RENDERER_EXIT(env);
 731 }
 732 
 733 /*
 734  * Class:     sun_java2d_CRenderer
 735  * Method:    doPoly
 736  * Signature:
 737  */
 738 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doPoly
 739 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jintArray xpointsarray, jintArray ypointsarray, jint npoints, jboolean ispolygon, jboolean isfill)
 740 {
 741 PRINT("Java_sun_java2d_CRenderer_doPoly")
 742     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 743 JNI_COCOA_ENTER(env);
 744     BOOL eoFill = YES; // polys are WIND_EVEN_ODD by definition
 745     SDRenderType renderType    = (isfill? (eoFill ? SD_EOFill : SD_Fill) : SD_Stroke);
 746     qsdo->BeginSurface(env, qsdo, renderType);
 747     if (qsdo->cgRef != NULL)
 748     {
 749         doPoly(env, qsdo, xpointsarray, ypointsarray, npoints, ispolygon, isfill);
 750     }
 751     qsdo->FinishSurface(env, qsdo);
 752 JNI_COCOA_RENDERER_EXIT(env);
 753 }
 754 
 755 /*
 756  * Class:     sun_java2d_CRenderer
 757  * Method:    doShape
 758  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;ILjava/nio/FloatBuffer;Ljava/nio/IntBuffer;IZ)V
 759  */
 760 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doShape
 761 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jint length, jobject jFloatCoordinates, jobject jIntTypes, jint windingRule, jboolean isfill, jboolean shouldApplyOffset)
 762 {
 763 PRINT("Java_sun_java2d_CRenderer_doShape")
 764     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 765 JNI_COCOA_ENTER(env);
 766     BOOL eoFill = (windingRule == java_awt_geom_PathIterator_WIND_EVEN_ODD);
 767     SDRenderType renderType    = (isfill? (eoFill ? SD_EOFill : SD_Fill) : SD_Stroke);
 768     qsdo->BeginSurface(env, qsdo, renderType);
 769     if (qsdo->cgRef != NULL)
 770     {
 771         jfloat *coordinates = (jfloat*)((*env)->GetDirectBufferAddress(env, jFloatCoordinates));
 772         jint *types = (jint*)((*env)->GetDirectBufferAddress(env, jIntTypes));
 773         doShape(qsdo, types, coordinates, length, isfill, shouldApplyOffset);
 774     }
 775     qsdo->FinishSurface(env, qsdo);
 776 JNI_COCOA_RENDERER_EXIT(env);
 777 }
 778 
 779 #define invalidContext(c) \
 780     ((c) == NULL /* || (c)->identifer != CGContextIdentifier */)
 781 
 782 /*
 783  * Class:     sun_java2d_CRenderer
 784  * Method:    doImage
 785  * Signature: (Lsun/java2d/SurfaceData;Ljava/nio/IntBuffer;Ljava/nio/FloatBuffer;[Ljava/lang/Object;Lsun/java2d/SurfaceData;ZZIIIIIIII)V
 786  */
 787 JNIEXPORT void JNICALL Java_sun_java2d_CRenderer_doImage
 788 (JNIEnv *env, jobject jthis, jobject jsurfacedata, jobject imageSurfaceData, jboolean fliph, jboolean flipv, jint w, jint h, jint sx, jint sy, jint sw, jint sh, jint dx, jint dy, jint dw, jint dh)
 789 {
 790 PRINT("Java_sun_java2d_CRenderer_doImage")
 791     QuartzSDOps *qsdo = (QuartzSDOps*)SurfaceData_GetOps(env, jsurfacedata);
 792 JNI_COCOA_ENTER(env);
 793     qsdo->BeginSurface(env, qsdo, SD_Image);
 794     if (qsdo->cgRef != NULL)
 795     {
 796         doImage(env, qsdo, imageSurfaceData, fliph, flipv, w, h, sx, sy, sw, sh, dx, dy, dw, dh);
 797     }
 798     qsdo->FinishSurface(env, qsdo);
 799 JNI_COCOA_RENDERER_EXIT(env);
 800 }
< prev index next >