DO NOT REPLY [Bug 47311] [PATCH] Support for bleed, trim and crop box and scaling

2009-07-28 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=47311





--- Comment #20 from Peter Coppens pc.subscripti...@gmail.com  2009-07-28 
00:02:42 PST ---
Created an attachment (id=24048)
 -- (https://issues.apache.org/bugzilla/attachment.cgi?id=24048)
Box implementation for Java2d now uses pdf box settings

The attached patch fixes the previous comment

There is an inconsistency between PDF and Java2D regarding the coordinates of
the boxes: in PDF the x and y coordinates are relative to the left and bottom
sides, in Java2D they are relative to the left and /top/ sides. One of the two
possibilities will have to be chosen, probably the PDF way.

The boxes for the Java2D renderer now also follows the PDF way

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


DO NOT REPLY [Bug 47311] [PATCH] Support for bleed, trim and crop box and scaling

2009-07-28 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=47311





--- Comment #21 from Jeremias Maerki jerem...@apache.org  2009-07-28 01:39:04 
PST ---
Hi Peter,
incidentally, I need this functionality myself in a project I'm currently
working on. I've locally applied your patch to play with it. I apologize for
the late feedback.

I notice you chose the page size of the simple-page-master as the baseline for
the MediaBox. I would have expected the SPM's size to define the TrimBox
instead. Bleed and cut marks would then lie outside the actual logical page.
I've checked what other FO implementations do and they seem to follow that
pattern rather than your approach.

I'm also finding the specification of the areas a bit counter-intuitive. A
simple value only sets the left side, rather than the value for all four sides
as with other FO properties. I guess that also points to Andreas' comment about
reusing property infrastructure where this is already handled. Granted, it is
not easy to use. I'm not even sure myself if this can easily be reused with
some serious refactoring. At any rate, a print shop will usually just give you
the information that you should use 2 or 3 mm for the bleed area. Just
specifying one simple value is quite handy.

Rather than just criticizing, I'm willing to invest some time to help with
this. I would like to make a counter-proposal for the extensions:

The simple-page-master's width and height properties shall define the TrimBox.
If there is no bleed and crop mark area, the MediaBox will be equal to the
TrimBox, or rather just the MediaBox is generated in this case, like it happens
today.

fox:bleed: length{1,4}
Default: 0pt
If there is only one value, it applies to all sides. If there are two values,
the top and bottom bleed widths are set to the first value and the right and
left bleed widths are set to the second. If there are three values, the top is
set to the first value, the left and right are set to the second, and the
bottom is set to the third. If there are four values, they apply to the top,
right, bottom, and left, respectively. (Corresponds to
http://www.w3.org/TR/xsl11/#padding)
The BleedBox is calculated by expanding the TrimBox by the bleed widths.
(I'd prefer to call the property fox:bleed rather than fox:bleed-box as we
don't set the BleedBox values directly. We specify the bleed amount.)

fox:crop-offset: length{1,4}
Default: 0pt
Same behaviour as with fox:bleed.
The MediaBox is calculated by expanding the BleedBox by the crop offsets.

BTW, the naming above pretty much matches other FO implementations, so should
we ever have a standard for these properties (like by reviving exslfo.sf.net),
it's likely we probably don't have to change much besides the namespace prefix.

fox:crop-box: (trim-box|bleed-box|media-box)
Default: media-box
The crop box controls how Acrobat display the page or how the Java2DRenderer
sizes the output media. The PDF spec defines that the CropBox defaults to the
MediaBox, so it makes sense to do the same here. We could define a fox:crop-box
extension which could take three magic values: trim-box, bleed-box and
media-box to set the CropBox to one of those three other boxes. That should
cover 95% of all use cases. If anyone needs more control, that could easily
added later.

I don't have much feedback on fox:scale. I guess it can be useful but I don't
see a big use case for an extension. I'd rather want to control that from
application code. But it shouldn't get in the way of anything so I have not
problem with it.

WDYT?

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


DO NOT REPLY [Bug 47311] [PATCH] Support for bleed, trim and crop box and scaling

2009-07-28 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=47311





--- Comment #22 from Vincent Hennebert vhenneb...@gmail.com  2009-07-28 
04:28:01 PST ---
Hi Jeremias,

I can't afford to spend much time on this patch so I'm happy to hand over the
job to you. I'm attaching a new patch with my own modifications as I had
started to prepare it for commit. Not sure it's going to be any useful given
the different approach you'd like to take, but who knows.

A note about the patch: it seemed more sensible to me to deal with integer
values rather than double. Indeed every length value is internally converted
into a whole number expressed in mpt (AFAICT). That means that I'm using
Rectangle instead of Rectangle2D, and I changed some parameters into some
classes accordingly (mainly, o.a.f.layoutmgr.Page.java,
o.a.f.area.PageViewport.java). But then I noticed that the AreaTreeParser reads
the value of the bounds attribute as double instead of integer. AFAIK, the
XML area tree is produced with whole numbers for the page boundaries; I don't
see why a user would change that into decimal numbers (which would mean a
precision below the mpt!). So I also modified the AreaTreeParser. I don't think
this may create any problem?

Also, a few questions:

(In reply to comment #21)
snip/
 
 The simple-page-master's width and height properties shall define the TrimBox.
 If there is no bleed and crop mark area, the MediaBox will be equal to the
 TrimBox, or rather just the MediaBox is generated in this case, like it 
 happens
 today.
 
 fox:bleed: length{1,4}
 Default: 0pt
 If there is only one value, it applies to all sides. If there are two values,
 the top and bottom bleed widths are set to the first value and the right and
 left bleed widths are set to the second. If there are three values, the top is
 set to the first value, the left and right are set to the second, and the
 bottom is set to the third. If there are four values, they apply to the top,
 right, bottom, and left, respectively. (Corresponds to
 http://www.w3.org/TR/xsl11/#padding)
 The BleedBox is calculated by expanding the TrimBox by the bleed widths.
 (I'd prefer to call the property fox:bleed rather than fox:bleed-box as we
 don't set the BleedBox values directly. We specify the bleed amount.)
 
 fox:crop-offset: length{1,4}
 Default: 0pt
 Same behaviour as with fox:bleed.
 The MediaBox is calculated by expanding the BleedBox by the crop offsets.

Just to be sure: values will be allowed to be negative, right?

It would make more sense to me to set the default value of crop-offset to the
value of bleed.


 BTW, the naming above pretty much matches other FO implementations, so should
 we ever have a standard for these properties (like by reviving exslfo.sf.net),
 it's likely we probably don't have to change much besides the namespace 
 prefix.
 
 fox:crop-box: (trim-box|bleed-box|media-box)
 Default: media-box
 The crop box controls how Acrobat display the page or how the Java2DRenderer
 sizes the output media. The PDF spec defines that the CropBox defaults to the
 MediaBox, so it makes sense to do the same here. We could define a 
 fox:crop-box
 extension which could take three magic values: trim-box, bleed-box and
 media-box to set the CropBox to one of those three other boxes. That should
 cover 95% of all use cases. If anyone needs more control, that could easily
 added later.

I'm really not sure about that one. Calling it 'crop-box' is likely to create
confusion with the 'crop-offset' property above. Apparently the CropBox is not
used in prepress at all, so I would suggest to forget about that for the
moment. That is, make the CropBox match with the MediaBox.


 I don't have much feedback on fox:scale. I guess it can be useful but I don't
 see a big use case for an extension. I'd rather want to control that from
 application code. But it shouldn't get in the way of anything so I have not
 problem with it.
 
 WDYT?


Vincent

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


DO NOT REPLY [Bug 47311] [PATCH] Support for bleed, trim and crop box and scaling

2009-07-28 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=47311





--- Comment #24 from Peter Coppens pc.subscripti...@gmail.com  2009-07-28 
04:42:22 PST ---
We were just about to start to rework the patch according to the suggestions
made by Jeremias which seem to make a lot of sense, but I am not so sure
anymore that is still useful given Vincent's alternative implementation/efforts
which we were unaware of.

It's a bit unclear right now how we can continue to contribute given the
different implementation efforts

We still have a bit of bandwith to spare on this (it is important for us) but
we'd rather make sure those efforts are part of a consolidated action

Can someone advice?

Thanks

Peter

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


DO NOT REPLY [Bug 47311] [PATCH] Support for bleed, trim and crop box and scaling

2009-07-28 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=47311





--- Comment #25 from Jeremias Maerki jerem...@apache.org  2009-07-28 04:54:14 
PST ---
Peter, I'll respond to Vincent's comments shortly. I think his changes
shouldn't affect your changes too much. I think Vincent's comments make sense
and I'll see to it that they can be committed separately (they don't really
have much to do with the issue at hand). Then it will ideally just be a svn
up on your side to resolve this. And a minor SVN conflict in the worst case. I
suggest you just continue as intended.

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


DO NOT REPLY [Bug 47311] [PATCH] Support for bleed, trim and crop box and scaling

2009-07-28 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=47311





--- Comment #26 from Jeremias Maerki jerem...@apache.org  2009-07-28 05:03:05 
PST ---
Hi Vincent,

(In reply to comment #22)
 I can't afford to spend much time on this patch so I'm happy to hand over the
 job to you. I'm attaching a new patch with my own modifications as I had
 started to prepare it for commit. Not sure it's going to be any useful given
 the different approach you'd like to take, but who knows.

I'm glad to take over.

 A note about the patch: it seemed more sensible to me to deal with integer
 values rather than double. Indeed every length value is internally converted
 into a whole number expressed in mpt (AFAICT). That means that I'm using
 Rectangle instead of Rectangle2D, and I changed some parameters into some
 classes accordingly (mainly, o.a.f.layoutmgr.Page.java,
 o.a.f.area.PageViewport.java). But then I noticed that the AreaTreeParser 
 reads
 the value of the bounds attribute as double instead of integer. AFAIK, the
 XML area tree is produced with whole numbers for the page boundaries; I don't
 see why a user would change that into decimal numbers (which would mean a
 precision below the mpt!). So I also modified the AreaTreeParser. I don't 
 think
 this may create any problem?

I don't think so. I'll extract your changes from your patch and apply that
separately. That should make it easier for Peter, too.

 Also, a few questions:
snip/
  fox:crop-offset: length{1,4}
  Default: 0pt
  Same behaviour as with fox:bleed.
  The MediaBox is calculated by expanding the BleedBox by the crop offsets.
 
 Just to be sure: values will be allowed to be negative, right?

Negative values don't make much sense, if I didn't miss anything.

 It would make more sense to me to set the default value of crop-offset to the
 value of bleed.

Right.

  BTW, the naming above pretty much matches other FO implementations, so 
  should
  we ever have a standard for these properties (like by reviving 
  exslfo.sf.net),
  it's likely we probably don't have to change much besides the namespace 
  prefix.
  
  fox:crop-box: (trim-box|bleed-box|media-box)
  Default: media-box
  The crop box controls how Acrobat display the page or how the Java2DRenderer
  sizes the output media. The PDF spec defines that the CropBox defaults to 
  the
  MediaBox, so it makes sense to do the same here. We could define a 
  fox:crop-box
  extension which could take three magic values: trim-box, bleed-box and
  media-box to set the CropBox to one of those three other boxes. That 
  should
  cover 95% of all use cases. If anyone needs more control, that could easily
  added later.
 
 I'm really not sure about that one. Calling it 'crop-box' is likely to create
 confusion with the 'crop-offset' property above. Apparently the CropBox is not
 used in prepress at all, so I would suggest to forget about that for the
 moment. That is, make the CropBox match with the MediaBox.

Yes, I thought about that naming closeness, too. Not sure if that's so easy to
resolve. If Peter is OK with this, I guess the fox:crop-box could be left out
for the moment. I personally don't need it although at some point, such a
property might be useful to some.

snip/

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


DO NOT REPLY [Bug 47311] [PATCH] Support for bleed, trim and crop box and scaling

2009-07-28 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=47311





--- Comment #27 from Jeremias Maerki jerem...@apache.org  2009-07-28 05:57:22 
PST ---
Partially applied Vincent's patch (from today). I've also applied the
undisputed parts of Peter's patch. So the next patch by Peter will only need to
be about the extensions and their integration into the renderers. I hope the
result will merge as painlessly as possible.
http://svn.apache.org/viewvc?rev=798511view=rev

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


DO NOT REPLY [Bug 47311] [PATCH] Support for bleed, trim and crop box and scaling

2009-07-28 Thread bugzilla
https://issues.apache.org/bugzilla/show_bug.cgi?id=47311





--- Comment #28 from Peter Coppens pc.subscripti...@gmail.com  2009-07-28 
06:46:26 PST ---

   
   fox:crop-box: (trim-box|bleed-box|media-box)
   Default: media-box
   The crop box controls how Acrobat display the page or how the 
   Java2DRenderer
   sizes the output media. The PDF spec defines that the CropBox defaults to 
   the
   MediaBox, so it makes sense to do the same here. We could define a 
   fox:crop-box
   extension which could take three magic values: trim-box, bleed-box 
   and
   media-box to set the CropBox to one of those three other boxes. That 
   should
   cover 95% of all use cases. If anyone needs more control, that could 
   easily
   added later.
  
  I'm really not sure about that one. Calling it 'crop-box' is likely to 
  create
  confusion with the 'crop-offset' property above. Apparently the CropBox is 
  not
  used in prepress at all, so I would suggest to forget about that for the
  moment. That is, make the CropBox match with the MediaBox.
 
 Yes, I thought about that naming closeness, too. Not sure if that's so easy to
 resolve. If Peter is OK with this, I guess the fox:crop-box could be left out
 for the moment. I personally don't need it although at some point, such a
 property might be useful to some.
 
 snip/

Hmmm...not entirely happy with this unfortunately. We have a webapp that using
a flex wysiwyg editor allows creation of print materials but that uses adobe's
pdf browser plugin for end-user proofing and approval. In some cases we'd
rather display the trimbox iso the mediabox so my guess is we should be able to
control the CropBox setting, no?

Perhaps a name change for the attribute is sufficient? E.g. something like
crop-box-selector, or crop-box-source or something similar?

-- 
Configure bugmail: https://issues.apache.org/bugzilla/userprefs.cgi?tab=email
--- You are receiving this mail because: ---
You are the assignee for the bug.


Re: Work on ChangingIPDHack Finished

2009-07-28 Thread Vincent Hennebert
Hi,

Vincent Hennebert wrote:
 Hi Simon,
 
 Thank you for giving a go at testing the branch. I could reproduce the
 hyphenation and flow_changing-ipd_4.xml problems. Regarding the stretch
 issue, could you send me a sample FO file? I suspect that this may be
 normal in the sense that the layout policy is slightly different when
 there is changing IPD: Instead of being full total-fit, it’s ‘n-pages
 total fit’ i.e., total-fit over the number of pages that have the same
 ipd. When the ipd changes, the best node /so far/ is selected, which may
 be different from the node that is part of the optimal solution, had the
 ipd remained the same.

I had a look at the file Simon sent me off-list, and this is indeed what
happens. Basically, the first page contains n lines with the ChangingIPD
version, and n + 2 with the Trunk. The n-lines version is the one that
is closest to the spaces’ natural lengths. In the n + 2 version spaces
are shrunk quite a bit. The n-lines version has less demerits than the
n + 2 one, so it’s the one that is chosen by the algorithm before
re-generating the Knuth elements for the next page with a different
width. But it appears that chosing the n + 2 version leads to less total
demerits, so this is why it is selected by the Trunk.

I committed yesterday fixes for the other bugs that Simon rose.

snip/

Thanks again for testing,
Vincent