[OpenJDK 2D-Dev] [9] RFR JDK-8162796: [macosx] LinearGradientPaint and RadialGradientPaint are not printed on OS X.

Philip Race philip.race at oracle.com
Fri Oct 21 23:20:45 UTC 2016


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

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.
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
>>>>>
>>>
>>
>



More information about the 2d-dev mailing list