| 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 | 
 */  | 
 | 
 | 
 | 
package sun.java2d.opengl;  | 
 | 
 | 
 | 
import java.awt.Composite;  | 
 | 
import sun.java2d.InvalidPipeException;  | 
 | 
import sun.java2d.SunGraphics2D;  | 
 | 
import sun.java2d.loops.GraphicsPrimitive;  | 
 | 
import sun.java2d.loops.GraphicsPrimitiveMgr;  | 
 | 
import sun.java2d.loops.CompositeType;  | 
 | 
import sun.java2d.loops.SurfaceType;  | 
 | 
import sun.java2d.pipe.BufferedMaskFill;  | 
 | 
import static sun.java2d.loops.CompositeType.*;  | 
 | 
import static sun.java2d.loops.SurfaceType.*;  | 
 | 
 | 
 | 
class OGLMaskFill extends BufferedMaskFill { | 
 | 
 | 
 | 
    static void register() { | 
 | 
        GraphicsPrimitive[] primitives = { | 
 | 
            new OGLMaskFill(AnyColor,                  SrcOver),  | 
 | 
            new OGLMaskFill(OpaqueColor,               SrcNoEa),  | 
 | 
            new OGLMaskFill(GradientPaint,             SrcOver),  | 
 | 
            new OGLMaskFill(OpaqueGradientPaint,       SrcNoEa),  | 
 | 
            new OGLMaskFill(LinearGradientPaint,       SrcOver),  | 
 | 
            new OGLMaskFill(OpaqueLinearGradientPaint, SrcNoEa),  | 
 | 
            new OGLMaskFill(RadialGradientPaint,       SrcOver),  | 
 | 
            new OGLMaskFill(OpaqueRadialGradientPaint, SrcNoEa),  | 
 | 
            new OGLMaskFill(TexturePaint,              SrcOver),  | 
 | 
            new OGLMaskFill(OpaqueTexturePaint,        SrcNoEa),  | 
 | 
        };  | 
 | 
        GraphicsPrimitiveMgr.register(primitives);  | 
 | 
    }  | 
 | 
 | 
 | 
    protected OGLMaskFill(SurfaceType srcType, CompositeType compType) { | 
 | 
        super(OGLRenderQueue.getInstance(),  | 
 | 
              srcType, compType, OGLSurfaceData.OpenGLSurface);  | 
 | 
    }  | 
 | 
 | 
 | 
    @Override  | 
 | 
    protected native void maskFill(int x, int y, int w, int h,  | 
 | 
                                   int maskoff, int maskscan, int masklen,  | 
 | 
                                   byte[] mask);  | 
 | 
 | 
 | 
    @Override  | 
 | 
    protected void validateContext(SunGraphics2D sg2d,  | 
 | 
                                   Composite comp, int ctxflags)  | 
 | 
    { | 
 | 
        OGLSurfaceData dstData;  | 
 | 
        try { | 
 | 
            dstData = (OGLSurfaceData) sg2d.surfaceData;  | 
 | 
        } catch (ClassCastException e) { | 
 | 
            throw new InvalidPipeException("wrong surface data type: " + | 
 | 
                                           sg2d.surfaceData);  | 
 | 
        }  | 
 | 
 | 
 | 
        OGLContext.validateContext(dstData, dstData,  | 
 | 
                                   sg2d.getCompClip(), comp,  | 
 | 
                                   null, sg2d.paint, sg2d, ctxflags);  | 
 | 
    }  | 
 | 
}  |