Hi Jeremias,
Jeremias Maerki <[EMAIL PROTECTED]> wrote on 10/18/2005 04:51:00 PM:
> I recently cleaned up the PDF and PS transcoders so they behave much
> more similarly. I may have broken clipping then, although I have done
> quite extensive tests.
The problem isn't really with clipping, it's with the 'create'
method of the Graphics interface. I was pushed to use 'create'
to deal with some clipping issues.
> Unfortunately, I can't quite follow your problem description. Would you
> please post an example or describe how I can reproduce the
> problem? I can then have a look at it. Thanks.
I suspect that attempting to render any SVG to PDF with
trunk Batik will cause the problem (the root SVG element
almost always has an associated clip - which causes the
use of create). I was specifically using the test file:
samples/tests/spec/paints/linearGradientOrientation.svg
from the Batik source tree (I was going to work on fixing
PDF Gradients when I noticed the problem).
> On 18.10.2005 19:28:24 thomas.deweese wrote:
> > Hi all,
> >
> > I don't know if you want to deal with this here in FOP land or over
in
> > Batik land but since the
> > code in question is currently in FOP I thought I would start here. The
> > PDF transcoder is
> > currently broken. This appears to be due to a recent change to the
way
> > clips are done.
> > Previously a new clip was done something like:
> >
> > Shape oldClip = g2d.getClip(); // get clip, in the current
> > coordinate system
> > g2d.clip(newAdditiveClip);
> >
> > // Draw things, blah blah
> >
> > g2d.setClip(oldClip); // restore clip, in current coordinate
> > system.
> >
> > ----
> > This as it turns out has problems, the basic issue is that the
> > clip can
> > 'waver' as it is gotten and restored in various coordinate systems
(shift
> > one pixel left or
> > right). To avoid the need to get and restore the clip I started
using
> > the 'create'
> > method of the Graphics. So the new code looks something like:
> >
> > g2d = g2d.create(); // create new graphics
with
> > independent drawing state
> > g2d.clip(newAdditiveClip);
> >
> > // Draw things, blah blah
> >
> > g2d.dispose(); // parent node will use 'old' graphics 2D.
> >
> > ----
> >
> > The real code is a bit more complex than this but you get the
> > idea. The problem is that the PDFGraphics2D doesn't seem to properly
> > implement 'create()'. I've tried to hack this in but I get garbage
PDF
> > out.
> >
> > So what I'm looking for is a basic analysis of how hard this
would
> > be to fix, as well as suggestions on how to fix it. There are some
other
> > potential solutions to the wavering clip issue, although I think the
above
> > is
> > by far the cleanest (and hence most desirable) of them.
>
>
>
> Jeremias Maerki
>