1 /*
2 * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
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
87
88 protected XRMaskFill(SurfaceType srcType, CompositeType compType,
89 SurfaceType surfaceType) {
90 super(srcType, compType, surfaceType);
91 }
92
93 protected native void maskFill(long xsdo, int x, int y, int w, int h,
94 int maskoff, int maskscan, int masklen, byte[] mask);
95
96 public void MaskFill(SunGraphics2D sg2d, SurfaceData sData, Composite comp,
97 final int x, final int y, final int w, final int h,
98 final byte[] mask, final int maskoff, final int maskscan) {
99 try {
100 SunToolkit.awtLock();
101
102 XRSurfaceData x11sd = (XRSurfaceData) sData;
103 x11sd.validateAsDestination(null, sg2d.getCompClip());
104
105 XRCompositeManager maskBuffer = x11sd.maskBuffer;
106 maskBuffer.validateCompositeState(comp, sg2d.transform, sg2d.paint, sg2d);
107
108 int maskPict = maskBuffer.getMaskBuffer().uploadMask(w, h, maskscan, maskoff, mask);
109 maskBuffer.XRComposite(XRUtils.None, maskPict, x11sd.picture, x, y, 0, 0, x, y, w, h);
110 maskBuffer.getMaskBuffer().clearUploadMask(maskPict, w, h);
111 } finally {
112 SunToolkit.awtUnlock();
113 }
114 }
115 }
|
1 /*
2 * Copyright (c) 2010, 2018 Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
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
7 * published by the Free Software Foundation. Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
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
87
88 protected XRMaskFill(SurfaceType srcType, CompositeType compType,
89 SurfaceType surfaceType) {
90 super(srcType, compType, surfaceType);
91 }
92
93 protected native void maskFill(long xsdo, int x, int y, int w, int h,
94 int maskoff, int maskscan, int masklen, byte[] mask);
95
96 public void MaskFill(SunGraphics2D sg2d, SurfaceData sData, Composite comp,
97 final int x, final int y, final int w, final int h,
98 final byte[] mask, final int maskoff, final int maskscan) {
99 try {
100 SunToolkit.awtLock();
101
102 XRSurfaceData x11sd = (XRSurfaceData) sData;
103 x11sd.validateAsDestination(null, sg2d.getCompClip());
104
105 XRCompositeManager maskBuffer = x11sd.maskBuffer;
106 maskBuffer.validateCompositeState(comp, sg2d.transform, sg2d.paint, sg2d);
107 maskBuffer.XRMaskedComposite(XRUtils.None, x11sd.picture, x, y, x, y, w, h, maskscan, maskoff, mask);
108 } finally {
109 SunToolkit.awtUnlock();
110 }
111 }
112 }
|