jdk/src/macosx/classes/sun/java2d/OSXSurfaceData.java
changeset 16734 da1901d79073
parent 12813 c10ab96dcf41
equal deleted inserted replaced
16733:9267ec7004a1 16734:da1901d79073
     1 /*
     1 /*
     2  * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     5  * This code is free software; you can redistribute it and/or modify it
     6  * under the terms of the GNU General Public License version 2 only, as
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.  Oracle designates this
     7  * published by the Free Software Foundation.  Oracle designates this
    35 import sun.awt.image.*;
    35 import sun.awt.image.*;
    36 import sun.java2d.loops.*;
    36 import sun.java2d.loops.*;
    37 import sun.java2d.pipe.*;
    37 import sun.java2d.pipe.*;
    38 import sun.lwawt.macosx.*;
    38 import sun.lwawt.macosx.*;
    39 
    39 
    40 import javax.tools.annotation.GenerateNativeHeader;
    40 import java.lang.annotation.Native;
    41 
    41 
    42 /*
    42 /*
    43  * This is the SurfaceData for a CGContextRef.
    43  * This is the SurfaceData for a CGContextRef.
    44  */
    44  */
    45 /* No native methods here, but the constants are needed in the supporting JNI code */
       
    46 @GenerateNativeHeader
       
    47 public abstract class OSXSurfaceData extends BufImgSurfaceData {
    45 public abstract class OSXSurfaceData extends BufImgSurfaceData {
    48     final static float UPPER_BND = Float.MAX_VALUE / 2.0f;
    46     final static float UPPER_BND = Float.MAX_VALUE / 2.0f;
    49     final static float LOWER_BND = -UPPER_BND;
    47     final static float LOWER_BND = -UPPER_BND;
    50 
    48 
    51     protected static CRenderer sQuartzPipe = null;
    49     protected static CRenderer sQuartzPipe = null;
   196     }
   194     }
   197 
   195 
   198      // graphics primitives drawing implementation:
   196      // graphics primitives drawing implementation:
   199 
   197 
   200     // certain primitives don't care about all the states (ex. drawing an image needs not involve setting current paint)
   198     // certain primitives don't care about all the states (ex. drawing an image needs not involve setting current paint)
   201     static final int kPrimitive = 0;
   199     @Native static final int kPrimitive = 0;
   202     static final int kImage = 1;
   200     @Native static final int kImage = 1;
   203     static final int kText = 2;
   201     @Native static final int kText = 2;
   204     static final int kCopyArea = 3;
   202     @Native static final int kCopyArea = 3;
   205     static final int kExternal = 4;
   203     @Native static final int kExternal = 4;
   206 
   204 
   207     static final int kLine = 5; // belongs to kPrimitive
   205     @Native static final int kLine = 5; // belongs to kPrimitive
   208     static final int kRect = 6; // belongs to kPrimitive
   206     @Native static final int kRect = 6; // belongs to kPrimitive
   209     static final int kRoundRect = 7; // belongs to kPrimitive
   207     @Native static final int kRoundRect = 7; // belongs to kPrimitive
   210     static final int kOval = 8; // belongs to kPrimitive
   208     @Native static final int kOval = 8; // belongs to kPrimitive
   211     static final int kArc = 9; // belongs to kPrimitive
   209     @Native static final int kArc = 9; // belongs to kPrimitive
   212     static final int kPolygon = 10; // belongs to kPrimitive
   210     @Native static final int kPolygon = 10; // belongs to kPrimitive
   213     static final int kShape = 11; // belongs to kPrimitive
   211     @Native static final int kShape = 11; // belongs to kPrimitive
   214     // static final int kImage = 12; // belongs to kImage
   212     // static final int kImage = 12; // belongs to kImage
   215     static final int kString = 13; // belongs to kText
   213     @Native static final int kString = 13; // belongs to kText
   216     static final int kGlyphs = 14; // belongs to kText
   214     @Native static final int kGlyphs = 14; // belongs to kText
   217     static final int kUnicodes = 15; // belongs to kText
   215     @Native static final int kUnicodes = 15; // belongs to kText
   218     // static final int kCopyArea = 16; // belongs to kCopyArea
   216     // static final int kCopyArea = 16; // belongs to kCopyArea
   219     // static final int kExternal = 17; // belongs to kExternal
   217     // static final int kExternal = 17; // belongs to kExternal
   220 
   218 
   221     static final int kCommonParameterCount = 1 + 1 + 4 + 4; // type + change flags + color info (type(1) align(1) and
   219     @Native static final int kCommonParameterCount = 1 + 1 + 4 + 4; // type + change flags + color info (type(1) align(1) and
   222                                                             // value(2)) + parameters ((x1, y1, x2, y2) OR (x, y, w, h))
   220                                                             // value(2)) + parameters ((x1, y1, x2, y2) OR (x, y, w, h))
   223     static final int kLineParametersCount = kCommonParameterCount; // kCommonParameterCount
   221     @Native static final int kLineParametersCount = kCommonParameterCount; // kCommonParameterCount
   224     static final int kRectParametersCount = kCommonParameterCount + 1; // kCommonParameterCount + isfill
   222     @Native static final int kRectParametersCount = kCommonParameterCount + 1; // kCommonParameterCount + isfill
   225     static final int kRoundRectParametersCount = kCommonParameterCount + 2 + 1; // kCommonParameterCount + arcW + arcH +
   223     @Native static final int kRoundRectParametersCount = kCommonParameterCount + 2 + 1; // kCommonParameterCount + arcW + arcH +
   226                                                                                 // isfill
   224                                                                                 // isfill
   227     static final int kOvalParametersCount = kCommonParameterCount + 1; // kCommonParameterCount + isfill
   225     @Native static final int kOvalParametersCount = kCommonParameterCount + 1; // kCommonParameterCount + isfill
   228     static final int kArcParametersCount = kCommonParameterCount + 2 + 1 + 1;// kCommonParameterCount + startAngle +
   226     @Native static final int kArcParametersCount = kCommonParameterCount + 2 + 1 + 1;// kCommonParameterCount + startAngle +
   229                                                                              // arcAngle + isfill + type
   227                                                                              // arcAngle + isfill + type
   230     static final int kPolygonParametersCount = 0; // not supported
   228     @Native static final int kPolygonParametersCount = 0; // not supported
   231     static final int kShapeParametersCount = 0; // not supported
   229     @Native static final int kShapeParametersCount = 0; // not supported
   232     static final int kImageParametersCount = kCommonParameterCount + 2 + 2 + 4 + 4; // flip horz vert + w&h + src + dst
   230     @Native static final int kImageParametersCount = kCommonParameterCount + 2 + 2 + 4 + 4; // flip horz vert + w&h + src + dst
   233     static final int kStringParametersCount = 0; // not supported
   231     @Native static final int kStringParametersCount = 0; // not supported
   234     static final int kGlyphsParametersCount = 0; // not supported
   232     @Native static final int kGlyphsParametersCount = 0; // not supported
   235     static final int kUnicodesParametersCount = 0; // not supported
   233     @Native static final int kUnicodesParametersCount = 0; // not supported
   236     static final int kPixelParametersCount = 0; // not supported
   234     @Native static final int kPixelParametersCount = 0; // not supported
   237     static final int kExternalParametersCount = 0; // not supported
   235     @Native static final int kExternalParametersCount = 0; // not supported
   238 
   236 
   239     // for intParameters
   237     // for intParameters
   240     // states info
   238     // states info
   241     static final int kChangeFlagIndex = 0; // kBoundsChangedBit | .. | kFontChangedBit
   239     @Native static final int kChangeFlagIndex = 0; // kBoundsChangedBit | .. | kFontChangedBit
   242     // bounds info
   240     // bounds info
   243     static final int kBoundsXIndex = 1;
   241     @Native static final int kBoundsXIndex = 1;
   244     static final int kBoundsYIndex = 2;
   242     @Native static final int kBoundsYIndex = 2;
   245     static final int kBoundsWidthIndex = 3;
   243     @Native static final int kBoundsWidthIndex = 3;
   246     static final int kBoundsHeightIndex = 4;
   244     @Native static final int kBoundsHeightIndex = 4;
   247     // clip info
   245     // clip info
   248     static final int kClipStateIndex = 5;
   246     @Native static final int kClipStateIndex = 5;
   249     static final int kClipNumTypesIndex = 6;
   247     @Native static final int kClipNumTypesIndex = 6;
   250     static final int kClipNumCoordsIndex = 7;
   248     @Native static final int kClipNumCoordsIndex = 7;
   251     static final int kClipWindingRuleIndex = 8;
   249     @Native static final int kClipWindingRuleIndex = 8;
   252     static final int kClipXIndex = 9;
   250     @Native static final int kClipXIndex = 9;
   253     static final int kClipYIndex = 10;
   251     @Native static final int kClipYIndex = 10;
   254     static final int kClipWidthIndex = 11;
   252     @Native static final int kClipWidthIndex = 11;
   255     static final int kClipHeightIndex = 12;
   253     @Native static final int kClipHeightIndex = 12;
   256     // ctm info
   254     // ctm info
   257     static final int kCTMaIndex = 13;
   255     @Native static final int kCTMaIndex = 13;
   258     static final int kCTMbIndex = 14;
   256     @Native static final int kCTMbIndex = 14;
   259     static final int kCTMcIndex = 15;
   257     @Native static final int kCTMcIndex = 15;
   260     static final int kCTMdIndex = 16;
   258     @Native static final int kCTMdIndex = 16;
   261     static final int kCTMtxIndex = 17;
   259     @Native static final int kCTMtxIndex = 17;
   262     static final int kCTMtyIndex = 18;
   260     @Native static final int kCTMtyIndex = 18;
   263     // color info
   261     // color info
   264     static final int kColorStateIndex = 19; // kColorSimple or kColorGradient or kColorTexture
   262     @Native static final int kColorStateIndex = 19; // kColorSimple or kColorGradient or kColorTexture
   265     static final int kColorRGBValueIndex = 20; // if kColorSimple
   263     @Native static final int kColorRGBValueIndex = 20; // if kColorSimple
   266     static final int kColorIndexValueIndex = 21; // if kColorSystem
   264     @Native static final int kColorIndexValueIndex = 21; // if kColorSystem
   267     static final int kColorPointerIndex = 22; //
   265     @Native static final int kColorPointerIndex = 22; //
   268     static final int kColorPointerIndex2 = 23; //
   266     @Native static final int kColorPointerIndex2 = 23; //
   269     static final int kColorRGBValue1Index = 24; // if kColorGradient
   267     @Native static final int kColorRGBValue1Index = 24; // if kColorGradient
   270     static final int kColorWidthIndex = 25; // if kColorTexture
   268     @Native static final int kColorWidthIndex = 25; // if kColorTexture
   271     static final int kColorRGBValue2Index = 26; // if kColorGradient
   269     @Native static final int kColorRGBValue2Index = 26; // if kColorGradient
   272     static final int kColorHeightIndex = 27; // if kColorTexture
   270     @Native static final int kColorHeightIndex = 27; // if kColorTexture
   273     static final int kColorIsCyclicIndex = 28; // if kColorGradient (kColorNonCyclic or kColorCyclic)
   271     @Native static final int kColorIsCyclicIndex = 28; // if kColorGradient (kColorNonCyclic or kColorCyclic)
   274     static final int kColorx1Index = 29;
   272     @Native static final int kColorx1Index = 29;
   275     static final int kColortxIndex = 30;
   273     @Native static final int kColortxIndex = 30;
   276     static final int kColory1Index = 31;
   274     @Native static final int kColory1Index = 31;
   277     static final int kColortyIndex = 32;
   275     @Native static final int kColortyIndex = 32;
   278     static final int kColorx2Index = 33;
   276     @Native static final int kColorx2Index = 33;
   279     static final int kColorsxIndex = 34;
   277     @Native static final int kColorsxIndex = 34;
   280     static final int kColory2Index = 35;
   278     @Native static final int kColory2Index = 35;
   281     static final int kColorsyIndex = 36;
   279     @Native static final int kColorsyIndex = 36;
   282     // composite info
   280     // composite info
   283     static final int kCompositeRuleIndex = 37; // kCGCompositeClear or ... or kCGCompositeXor
   281     @Native static final int kCompositeRuleIndex = 37; // kCGCompositeClear or ... or kCGCompositeXor
   284     static final int kCompositeValueIndex = 38;
   282     @Native static final int kCompositeValueIndex = 38;
   285     // stroke info
   283     // stroke info
   286     static final int kStrokeJoinIndex = 39; // see BasicStroke.java
   284     @Native static final int kStrokeJoinIndex = 39; // see BasicStroke.java
   287     static final int kStrokeCapIndex = 40; // see BasicStroke.java
   285     @Native static final int kStrokeCapIndex = 40; // see BasicStroke.java
   288     static final int kStrokeWidthIndex = 41;
   286     @Native static final int kStrokeWidthIndex = 41;
   289     static final int kStrokeDashPhaseIndex = 42;
   287     @Native static final int kStrokeDashPhaseIndex = 42;
   290     static final int kStrokeLimitIndex = 43;
   288     @Native static final int kStrokeLimitIndex = 43;
   291     // hints info
   289     // hints info
   292     static final int kHintsAntialiasIndex = 44;
   290     @Native static final int kHintsAntialiasIndex = 44;
   293     static final int kHintsTextAntialiasIndex = 45;
   291     @Native static final int kHintsTextAntialiasIndex = 45;
   294     static final int kHintsFractionalMetricsIndex = 46;
   292     @Native static final int kHintsFractionalMetricsIndex = 46;
   295     static final int kHintsRenderingIndex = 47;
   293     @Native static final int kHintsRenderingIndex = 47;
   296     static final int kHintsInterpolationIndex = 48;
   294     @Native static final int kHintsInterpolationIndex = 48;
   297     // live resizing info
   295     // live resizing info
   298     static final int kCanDrawDuringLiveResizeIndex = 49;
   296     @Native static final int kCanDrawDuringLiveResizeIndex = 49;
   299 
   297 
   300     static final int kSizeOfParameters = kCanDrawDuringLiveResizeIndex + 1;
   298     @Native static final int kSizeOfParameters = kCanDrawDuringLiveResizeIndex + 1;
   301 
   299 
   302     // for objectParameters
   300     // for objectParameters
   303     static final int kClipCoordinatesIndex = 0;
   301     @Native static final int kClipCoordinatesIndex = 0;
   304     static final int kClipTypesIndex = 1;
   302     @Native static final int kClipTypesIndex = 1;
   305     static final int kTextureImageIndex = 2;
   303     @Native static final int kTextureImageIndex = 2;
   306     static final int kStrokeDashArrayIndex = 3;
   304     @Native static final int kStrokeDashArrayIndex = 3;
   307     static final int kFontIndex = 4;
   305     @Native static final int kFontIndex = 4;
   308     static final int kFontPaintIndex = 5;
   306     @Native static final int kFontPaintIndex = 5;
   309 
   307 
   310     // possible state changes
   308     // possible state changes
   311     static final int kBoundsChangedBit = 1 << 0;
   309     @Native static final int kBoundsChangedBit = 1 << 0;
   312     static final int kBoundsNotChangedBit = ~kBoundsChangedBit;
   310     @Native static final int kBoundsNotChangedBit = ~kBoundsChangedBit;
   313     static final int kClipChangedBit = 1 << 1;
   311     @Native static final int kClipChangedBit = 1 << 1;
   314     static final int kClipNotChangedBit = ~kClipChangedBit;
   312     @Native static final int kClipNotChangedBit = ~kClipChangedBit;
   315     static final int kCTMChangedBit = 1 << 2;
   313     @Native static final int kCTMChangedBit = 1 << 2;
   316     static final int kCTMNotChangedBit = ~kCTMChangedBit;
   314     @Native static final int kCTMNotChangedBit = ~kCTMChangedBit;
   317     static final int kColorChangedBit = 1 << 3;
   315     @Native static final int kColorChangedBit = 1 << 3;
   318     static final int kColorNotChangedBit = ~kColorChangedBit;
   316     @Native static final int kColorNotChangedBit = ~kColorChangedBit;
   319     static final int kCompositeChangedBit = 1 << 4;
   317     @Native static final int kCompositeChangedBit = 1 << 4;
   320     static final int kCompositeNotChangedBit = ~kCompositeChangedBit;
   318     @Native static final int kCompositeNotChangedBit = ~kCompositeChangedBit;
   321     static final int kStrokeChangedBit = 1 << 5;
   319     @Native static final int kStrokeChangedBit = 1 << 5;
   322     static final int kStrokeNotChangedBit = ~kStrokeChangedBit;
   320     @Native static final int kStrokeNotChangedBit = ~kStrokeChangedBit;
   323     static final int kHintsChangedBit = 1 << 6;
   321     @Native static final int kHintsChangedBit = 1 << 6;
   324     static final int kHintsNotChangedBit = ~kHintsChangedBit;
   322     @Native static final int kHintsNotChangedBit = ~kHintsChangedBit;
   325     static final int kFontChangedBit = 1 << 7;
   323     @Native static final int kFontChangedBit = 1 << 7;
   326     static final int kFontNotChangedBit = ~kFontChangedBit;
   324     @Native static final int kFontNotChangedBit = ~kFontChangedBit;
   327     static final int kEverythingChangedFlag = 0xffffffff;
   325     @Native static final int kEverythingChangedFlag = 0xffffffff;
   328 
   326 
   329     // possible color states
   327     // possible color states
   330     static final int kColorSimple = 0;
   328     @Native static final int kColorSimple = 0;
   331     static final int kColorSystem = 1;
   329     @Native static final int kColorSystem = 1;
   332     static final int kColorGradient = 2;
   330     @Native static final int kColorGradient = 2;
   333     static final int kColorTexture = 3;
   331     @Native static final int kColorTexture = 3;
   334 
   332 
   335     // possible gradient color states
   333     // possible gradient color states
   336     static final int kColorNonCyclic = 0;
   334     @Native static final int kColorNonCyclic = 0;
   337     static final int kColorCyclic = 1;
   335     @Native static final int kColorCyclic = 1;
   338 
   336 
   339     // possible clip states
   337     // possible clip states
   340     static final int kClipRect = 0;
   338     @Native static final int kClipRect = 0;
   341     static final int kClipShape = 1;
   339     @Native static final int kClipShape = 1;
   342 
   340 
   343     static int getRendererTypeForPrimitive(int primitiveType) {
   341     static int getRendererTypeForPrimitive(int primitiveType) {
   344         switch (primitiveType) {
   342         switch (primitiveType) {
   345             case kImage:
   343             case kImage:
   346                 return kImage;
   344                 return kImage;