[Rd] Question about grid.group compositing operators in cairo

Panagiotis Skintzos @|gm@p| @end|ng |rom po@teo@net
Tue Sep 27 15:56:43 CEST 2022


Hi, sure

I attach the test code and my svg.


You can also find my current work on ggiraph in the branch ge15 on github:

https://github.com/sigmapi/ggiraph/tree/ge15


Thanks,

Panagiotis


On 27/9/22 04:44, Paul Murrell wrote:
>
> Could you also please send me the SVG code that your device is 
> generating for your example.  Thanks!
>
> Paul
>
> On 27/09/22 08:50, Paul Murrell wrote:
>> Hi
>>
>> Thanks for the report.  It certainly sounds like I have done 
>> something stupid :)  For my debugging and testing could you please 
>> share the R code from your tests ?  Thanks!
>>
>> Paul
>>
>> On 26/09/22 10:27, Panagiotis Skintzos wrote:
>>> Hello,
>>>
>>> I'm trying to update ggiraph package in graphic engine v15 
>>> (currently we support up to v14).
>>>
>>> I've implemented the group operators and when I compare the outputs 
>>> of ggiraph::dsvg with the outputs of svg/png, I noticed some weird 
>>> results.
>>>
>>> Specifically, some operators in cairo (in, out, dest.in, dest.atop) 
>>> give strange output, when any source element in the group has a 
>>> stroke color defined.
>>>
>>> I attach three example images, where two stroked rectangles are used 
>>> as source (right) and destination (left).
>>>
>>> cairo.over.png shows the result of the over operator in cairo
>>>
>>> cairo.in.png shows the result of the in operator in cairo
>>>
>>> dsvg.in.png shows the result of the in operator in dsvg
>>>
>>>
>>> You can see the difference between cairo.in.png and dsvg.in.png. I 
>>> found out why I get different results:
>>>
>>> In dsvg implementation there is one drawing operation: Draw the 
>>> source element, as whole (fill and stroke) over the destination 
>>> element (using feComposite filter)
>>>
>>> In cairo implementation though there are two operations: Apply the 
>>> fill on source and draw over the destination and then apply the 
>>> stroke and draw over the result of the previous operation.
>>>
>>> I'm not sure if this is intentional or not. Shouldn't the source 
>>> element being drawn first as whole (fill and stroke with over 
>>> operator) and then apply the group operator and draw it over the 
>>> destination? It would seem more logical that way.
>>>
>>>
>>> Thanks,
>>>
>>> Panagiotis
>>>
>>>
>>> ______________________________________________
>>> R-devel using r-project.org mailing list
>>> https://stat.ethz.ch/mailman/listinfo/r-devel
>>
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: dsvg.in.svg
Type: image/svg+xml
Size: 1401 bytes
Desc: not available
URL: <https://stat.ethz.ch/pipermail/r-devel/attachments/20220927/c7fc2ded/attachment.svg>


More information about the R-devel mailing list