[Date Prev][Date Next][Thread Prev][Thread Next][Thread Index]

RE: [XaraXtreme-dev] Printing on Linux

> Exporting from Xara. I'd like to implement Xara filters for 
> exporting designs as PNG, PDF, or SVG through Cairo (of 
> course, all three of those come with a single investment of effort). 

This has got to be the easiest approach, to use our nice new filter
system - designed specifically to make it as easy as possible for third
parties to create new import / export filters.  Filters are plug-ins
(and the recent work has moved them from being COM components to be
stand-alone processes).

Filter writers need understand nothing about RenderRegions or any
internal Camelot stuff.  It's just a matter of taking .xar file records
and converting them to Cairo (or whatever). What's more we have library
and example code all put online in the last few days:

The smart bit about our filter plug-in is that, via a little bit of
'capabilities' XML you can tell the system to down-convert all higher
level complex objects to simple bitmaps or paths.  So at the simplest
level you can instruct our system to output simple paths for almost
everything (e.g. text, rectangles, ellipses, blends) is converted to
paths, and then you only need convert our bezier path structure into
Cairo bezier path structure, and you'd have a pretty functional

Same works with our fills. You can say 'I understand linear and radial
fills but nothing else' and our filter system rasterises more complex
fills as bitmap fills inside bezier paths.

Building something from our examples filters is probably the quickest
way to start experimenting with this.

Carl, when Cairo talks to its PDF and SVG backends do you pass through
transparency and blend mode information. If so this would this would be
very interesting indeed, as it would be a means to producing
un-flattened vector output (whereas our existing EPS and PS printing
solution will rasterise all transparency).  That would be very cool
because we'd get not just three filters for the price of one, but it
would be nice clean vector objects with vector grad fills and