[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 22 15:37:33 UTC 2016


+1 .. they won't get any output with a zero-width imageable area
but this is last ditch fix up of excessively bad values.

-phil.

On 6/16/16, 11:32 PM, prasanta sadhukhan wrote:
>
> Hi Phil,
>
> Ok. I have added a check for this case in which it will fall back to 
> default values since
> if ix/iy is too large then we probably will not get anything to print 
> inside printable area if we have to leave same margin on the 
> right/bottom of the paper.
> validatePaper() does not check for ix/iy too large case.
>
> Modified webrev
> http://cr.openjdk.java.net/~psadhukhan/6601097/webrev.03/
>
> Regards
> Prasanta
> On 6/16/2016 5:11 AM, Philip Race wrote:
>> 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/20160622/91cffe30/attachment.html>


More information about the 2d-dev mailing list