[OpenJDK 2D-Dev] [9] RFR JDK-6601097:Margins are not reset to hardware margins when width/height is 0 or -ve alongwith x, y
Philip Race
philip.race at oracle.com
Wed Jun 15 23:41:29 UTC 2016
I did say so long as the "ix/iy" are also valid. Which means not just
positive but that they
are not too large. Consider
if (iw<= 0) iw = (float)(page.getPaper().getWidth()/DPI) - (ix*2);
if we have ix = 500 and iw = -20 for a paper with width 800 this will result
in iw = 800 - (500*2) = -200 ..
-phil.
On 6/8/16, 4:42 AM, prasanta sadhukhan wrote:
> Hi Phil,
>
> As discussed offline, regarding mpa modification in both
> setAttributes() and updateAttributesWithPageFormat, I found that
> updateAttributesWithPageFormat() will be called during pageDialog()
> and setPrintable()
> whereas setAttributes() will be called during print() and
> setAttributes() called validatePaper() to validate imageable values,
> so in that regard, setAttributes() has final say in validating and
> updating invalid mpa values.
>
> Regarding bug, I found that if we have -ve width/height,
> MediaPrintable constructor throws IAE if width/height is -ve so mpa
> values set by user will not be added to pageAttributes (even if there
> was valid x,y mpa values)
> therefore we fallback to Java default paper size and so we will get
> mpa values as ix=72 iy=72 iw=451 ih=697 in validatePaper()
> so to avoid IAE and to use user-set valid values, I have modified the
> code to constrain iw/ih with requested ix/iy as you suggested.
>
> Please find the modified webrev:
> http://cr.openjdk.java.net/~psadhukhan/6601097/webrev.02/
>
> Regards
> Prasanta
> On 5/31/2016 10:12 PM, Phil Race wrote:
>> Well ... few printers can print on the entire paper. Photo printers are
>> the ones that can do this. So Paper dimension minus the "hardware
>> margins"
>> are the maximum imageable width.
>> And then supposing imageable x/y is some perfectly reasonable value
>> like 1" each
>> then you've set iw/ih such that even a printer with zero hardware
>> margins has
>> an imageable area that goes off the bottom and right off the paper.
>>
>> More reasonable would be to constrain iw/ih such that they work with the
>> requested ix/iy - assuming they are also valid.
>>
>> If all else fails then just using the "default" set of values as if
>> the application
>> had not set any values would be better.
>>
>> -phil.
>>
>> On 05/26/2016 03:26 AM, prasanta sadhukhan wrote:
>>> Hi Phil,
>>>
>>> I got it rectified.
>>>
>>> Please find the modified webrev
>>>
>>> http://cr.openjdk.java.net/~psadhukhan/6601097/webrev.01/
>>>
>>> Regarding using entire width/height pf paper, I thought since
>>> imageable width/height is invalid we should make the entire paper as
>>> the imageable area.For invalid x,y we were making it to paper's
>>> top/left.
>>> Else what option do we have, should we calculate
>>> width[height]=abs(image[width][height]) instead?
>>>
>>> Regards
>>> Prasanta
>>> On 5/25/2016 10:07 PM, Philip Race wrote:
>>>> It seems to me that you are using the wrong units.
>>>> You have not divided by DPI to get inches.
>>>>
>>>> Also I am not sure that the *entire* width/height of the paper is
>>>> what you want here
>>>> but that is secondary to the first issue
>>>>
>>>> -phil
>>>>
>>>> On 5/19/16, 2:59 AM, prasanta sadhukhan wrote:
>>>>> Hi All,
>>>>>
>>>>> Please review a fix for jdk9 which is a continuation of the fix of
>>>>> JDK-6543815.
>>>>>
>>>>> Bug: https://bugs.openjdk.java.net/browse/JDK-6601097
>>>>> webrev: http://cr.openjdk.java.net/~psadhukhan/6601097/webrev.00/
>>>>>
>>>>> 6543815 fix resets the x,y to 0 if they are negative before
>>>>> creating a MediaPrintableArea and the platform replaces it with
>>>>> hardware margins when printing.
>>>>> This works only if x/y is negative.
>>>>> But, If either width/height is negative alongwith x or y, then the
>>>>> margin is set to the java def 1 inch margin and not hardware margins.
>>>>>
>>>>> This is because width/height -ve results in IAE in
>>>>> MediaPrintableArea constructor and so values are ignored.
>>>>> Added a check for -ve width/height to make sure width/height are
>>>>> set to minimum paper width/height.
>>>>>
>>>>> Regards
>>>>> Prasanta
>>>>>
>>>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.openjdk.java.net/pipermail/2d-dev/attachments/20160615/a102072d/attachment.html>
More information about the 2d-dev
mailing list