+1
-phil.
On 10/25/16, 11:01 PM, Prasanta Sadhukhan wrote:
Please find the webrev with modified testcase
http://cr.openjdk.java.net/~psadhukhan/8162796/webrev.03/
Regards
Prasanta
On 10/26/2016 2:45 AM, Philip Race wrote:
Hi,
This looks to work properly although I have a couple of nits and a
concern that perhaps we just need to live with.
* @requires (os.family == "mac")
Why ? This test should be valid across OSes .. and SFAIK Mac is the
only place it would fail without this fix.
Both tests have this issue.
I'd like the test(s) to use [something like]
Point2D.Double p2 = new Point2D.Double(DIM/2.0, DIM/2.0);
Otherwise the size of the shape to be filled neatly matches the span
of the gradient and that can hide bugs.
I am not sure how much to be concerned that the "raster" path relies
on creating a custom paint whose
size matches the bounds of the shape to which the paint will be
applied ..
536 PaintContext context =
sg2d.paint.createContext(sg2d.getDeviceColorModel(), userBounds,
userBounds, sIdentityMatrix, sg2d.getRenderingHints());
537 WritableRaster raster = (WritableRaster)
(context.getRaster(userBounds.x, userBounds.y, userBounds.width,
userBounds.height));
If applied to a very large shape it will need a very large image.
But this seems the only way to get the gradient with the right
reflect/repeat behaviour.
-phil.
On 10/24/16, 1:38 AM, Prasanta Sadhukhan wrote:
Please find modified webrev with Linear/Radial Gradient NO_CYCLE
option catered through quartz api and REPEAT/REFLECT option catered
via raster path.
http://cr.openjdk.java.net/~psadhukhan/8162796/webrev.02/
Regards
Prasanta
On 10/22/2016 9:28 PM, Prasanta Sadhukhan wrote:
On 10/22/2016 4:50 AM, Philip Race wrote:
Well it is confusing since in particular this exact change is in
both webrevs :-
http://cr.openjdk.java.net/~psadhukhan/8162796/webrev.01/src/java.desktop/macosx/native/libawt_lwawt/awt/QuartzSurfaceData.m.sdiff.html
Yes. This is same and I had to add this in both webrevs as
TexturePaint patch is not yet approved.
One thing that I think seems less ideal about this fix, at least for
the Gradient case is that it is creating an image which shows
pixelisation
effects when I zoom in using Preview ..
I don't think the previous code showed those effects so it may be you
want a hybrid, using the original code when you can.
ok. I will make NO_CYCLE option to go through quartz and other
REPEAT/REFLECT option to go though raster texturepaint path.
Regards
Prasanta
That probably is not an issue for TexturePaint ..
-phil
On 10/20/16, 9:40 PM, Prasanta Sadhukhan wrote:
No, this webrev supports LinearGradient/RadialGradient for all 3
options. The fix seems to be almost same as in TexturePaint but
in a different else block in OSXSurfaceData.java.
Regards
Prasanta
On 10/20/2016 9:31 PM, Phil Race wrote:
Leaving aside the tests, the webrev here looks to be the one
proposed
for the TexturePaint bug. Did you get things mixed up ?
-phil.
On 10/20/2016 02:22 AM, Prasanta Sadhukhan wrote:
Hi Phil,
I have modified the webrev to support REFLECT and REPEAT albeit
via raster path and not via Quartz api, as Quartz cannot handle
REPEAT/REFLECT.
http://cr.openjdk.java.net/~psadhukhan/8162796/webrev.01/
Have tested with different fractions, stops, color.
Regards
Prasanta
On 9/28/2016 2:06 AM, Philip Race wrote:
Hi,
LinearGradientPaint has three options as to how it is extended
beyond the end point
https://docs.oracle.com/javase/8/docs/api/java/awt/MultipleGradientPaint.CycleMethod.html
So far as I can see this code (and perhaps quartz) can only
handle NO_CYCLE ..
If REFLECT or REPEAT are specified and Quartz can't handle it
we will need to
fall back to the raster path.
I think it would be helpful to extend the test with examples
that use these and
also more than just the two colours .. add a variant that
tries more like 4 ...
-phil.
On 9/22/16, 2:03 AM, Prasanta Sadhukhan wrote:
Hi All,
Please review a fix for jdk9 where it is seen that
LinearGradientPaint is not getting printed on osx.
The below webrev is only for LinearGradientPaint
and RadialGradientPaint will be handled separately.
Bug: https://bugs.openjdk.java.net/browse/JDK-8162796
webrev:
http://cr.openjdk.java.net/~psadhukhan/8162796/webrev.00/
Issue was LinearGradientPaint is not handled in osx from jdk7
onwards. It handles simple GradientPaint.
Code is added as per
https://developer.apple.com/library/content/documentation/GraphicsImaging/Conceptual/drawingwithquartz2d/dq_shadings/dq_shadings.html#//apple_ref/doc/uid/TP30001066-CH207-TPXREF101
to use "CGGradientRef" quartz datatype to support
LinearGradientPaint.
CGGradientRef is used compared to CGShadingRef because it is
mentioned in CGGradientRef, i is "Easy to define more than
two locations and colors." as we set 2 or more colors and 2
or more fractions in LinearGradientPaint.
Regards
Prasanta