[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openjdk-2d-dev
Subject:    Re: [OpenJDK 2D-Dev] [9] RFR: JDK-6966350:Empty pages when printing on Lexmark E352dn PS3 with "1200
From:       Jayathirth D V <jayathirth.d.v () oracle ! com>
Date:       2016-06-17 11:02:36
Message-ID: ee335e7e-f302-4230-bc9a-1e24a0166470 () default
[Download RAW message or body]

Hi Prasanta,

  

Changes are fine.

  

Thanks,

Jay

  

From: prasanta sadhukhan 
Sent: Friday, June 17, 2016 3:37 PM
To: Jayathirth D V
Cc: 2d-dev@openjdk.java.net
Subject: Re: [OpenJDK 2D-Dev] [9] RFR: JDK-6966350:Empty pages when printing on \
Lexmark E352dn PS3 with "1200 IQ" setting

  

Hi Jay,

I have modified the testcase to select the proper printable, description (it seems \
for dell 5310 it is Properties->Print Quality whereas for lexmark it is as you \
mentioned) is changed to include both printers, increased timeout, removed unused \
imports and rectified indents. \
http://cr.openjdk.java.net/~psadhukhan/6966350/webrev.02/

Regards
Prasanta

On 6/17/2016 2:47 PM, Jayathirth D V wrote:

Hi Prasanta,

  

One more thing I missed, there are many unneeded imports in test case. Please remove \
them also.

  

Thanks,

Jay

  

From: Jayathirth D V 
Sent: Friday, June 17, 2016 2:45 PM
To: Prasanta Sadhukhan
Cc: HYPERLINK "mailto:2d-dev@openjdk.java.net"2d-dev@openjdk.java.net
Subject: Re: [OpenJDK 2D-Dev] [9] RFR: JDK-6966350:Empty pages when printing on \
Lexmark E352dn PS3 with "1200 IQ" setting

  

Hi Prasanta,

  

I tried to run the test but it looks like you are not creating object for proper \
class in test case :

88                 pj.setPrintable(new PrintableDemo(), pf);

  

  

I think it should be test class name : 

88                 pj.setPrintable(new PrintTestLexmarkIQ(), pf);

  

After we change it to test class name it is working fine.

  

In the description of test JTextArea, I found Print quality setting under Properties \
-> Advanced -> Graphic -> Print Quality. Please verify the same.

Also please increase timeout for test case as I was looking for Print Quality setting \
and it came out.

In test case jtreg multiline comment are not indented properly.

  

Regarding code change, if we can be sure that in future image quality setting will \
not increase more than 6000IQ then changes are fine. Also in comments related to code \
change we can make it multiline comment instead of multiple single line comments.

  

Thanks,

Jay

  

  

From: Philip Race 
Sent: Thursday, June 16, 2016 5:05 AM
To: prasanta sadhukhan
Cc: HYPERLINK "mailto:2d-dev@openjdk.java.net"2d-dev@openjdk.java.net
Subject: Re: [OpenJDK 2D-Dev] [9] RFR: JDK-6966350:Empty pages when printing on \
Lexmark E352dn PS3 with "1200 IQ" setting

  



On 6/14/16, 10:09 PM, prasanta sadhukhan wrote: 

Hi Phil,

  

On 6/15/2016 12:21 AM, Phil Race wrote:

This sound fishy. "2" does not sound like a valid value per the Microsoft spec
but this driver is apparently considering it as something like a multiplier although
presumably not to the actual resolution.
  
I see that we are checking that the DM_YRESOLUTION bit of the dmFields member is set \
:  
1002                                 int xRes = devmode->dmPrintQuality;
1003                                 int yRes = (devmode->dmFields & DM_YRESOLUTION) \
? 1004                                     devmode->dmYResolution : \
devmode->dmPrintQuality; 1005                                 
1006                                 // For some printers, printer quality can \
specify 1200IQ 1007                                 // In this case, dmPrintQuality \
comes out 600 and 1008                                 // dmYResolution comes out 2 \
which is not a valid resolution 1009                                 // so for IQ \
setting, we specify yresolution same as xRes 1010                                 if \
(yRes < 10) yRes = xRes;


.. so really they ought to return a DPI value as the spec says. I can't
find anything that grants the apparent latitude being taken here.

Note that your change here looks like it may break "quality" - where
the pre-defined values are negative - as you will overwrite "-1" (for example) with \
10. Actual breakage depends on whether we bother to read yRes in the case that
xRes is negative but it still should not be over-written.

If "quality" or dmPrintQuality is pre-defined negative value (like DMRES_HIGH, \
DMRES_MEDIUM, DMRES_LOW, DMRES_DRAFT) then it will be handled in the "if" block
and my modification is in "else" .


Not following that but in any case ...

At a minimum you need to fix the code to look like :-

int yRes = (devmode->dmFields & DM_YRESOLUTION) && (devmode->dmYResolution < 10)
                               ? devmode->dmYResolution : devmode->dmPrintQuality;

I guess you mean

devmode->dmYResolution > 10


.. yes

  
  
Anyways, I have updated webrev to accomodate your comment.
HYPERLINK "http://cr.openjdk.java.net/%7Epsadhukhan/6966350/webrev.01/"http://cr.openjdk.java.net/~psadhukhan/6966350/webrev.01/



approved since we have a comment explaining the "logic" but still puzzled.

-phil.

  

  
But I find it a little unsatisfactory to have to make this kind of workaround
and wonder what we are missing ... 

I could not find anything but this will help in getting printing to be working in \
those printers. If we find anything in near future, we will update this code .

Regards
Prasanta

  

-phil.

On 06/09/2016 04:35 AM, prasanta sadhukhan wrote:

Hi All,

Bug: https://bugs.openjdk.java.net/browse/JDK-6966350

The issue was if we select 1200IQ Normal (default) setting in Lexmark E352dn PS3 or \
Dell 5310n printer, it does not print the output and we get empty pages.

It was because DEVMODE windows structure returns 600 for "dmPrintQuality" and 2 for \
"dmYResolution". For 2400IQ, it returns 600 dmPrintQuality and 4 as dmYResolution so \
awt_printControl.cpp#AwtPrintControl::UpdateAttributes() calls \
WPrinterJob#setResolutionDPI(xres=600, yres=2) and RasterPrinterJob#print() gets \
0.027 as yscale(=getYRes()/72 and yres = 2) so devicetransform for normal 1200IQ dpi \
becomes [8.33, 0.0, -108.0][0.0, 0.027, -108.0] so WPathGraphics#drawString() gets \
devPos x= 725.33, y = -105.22. so nothing gets printed.

I tried finding the significance of 1200IQ setting which just says it enhances the \
images sent to the printer. From \
http://www.smallbusinesscomputing.com/testdrive/article.php/1585581/Lexmark-T420d-Printer-Review-Both-Sides-Now.htm \
(although it's not the same printer) says "To be fair, the LaserJet offers sharper \
resolution — 1,200 by 1,200 dpi, while the T420d is a 600 by 600 dpi printer with \
what Lexmark calls "1,200 Image Quality" dot placement for photos"

I modified the code to set yres to xres value if yres is less than 10 . Although it \
seems to be a workaround, it prints the output.

webrev: HYPERLINK "http://cr.openjdk.java.net/%7Epsadhukhan/6966350/webrev.00/"http://cr.openjdk.java.net/~psadhukhan/6966350/webrev.00/


Regards
Prasanta

  

  

  


[Attachment #3 (text/html)]

<html xmlns:v="urn:schemas-microsoft-com:vml" \
xmlns:o="urn:schemas-microsoft-com:office:office" \
xmlns:w="urn:schemas-microsoft-com:office:word" \
xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" \
xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type \
content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 \
(filtered medium)"><style><!-- /* Font Definitions */
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:Consolas;
	panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	margin-bottom:.0001pt;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;
	color:black;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
	{mso-style-priority:99;
	color:purple;
	text-decoration:underline;}
p
	{mso-style-priority:99;
	mso-margin-top-alt:auto;
	margin-right:0in;
	mso-margin-bottom-alt:auto;
	margin-left:0in;
	font-size:12.0pt;
	font-family:"Times New Roman",serif;
	color:black;}
pre
	{mso-style-priority:99;
	mso-style-link:"HTML Preformatted Char";
	margin:0in;
	margin-bottom:.0001pt;
	font-size:10.0pt;
	font-family:"Courier New";
	color:black;}
span.HTMLPreformattedChar
	{mso-style-name:"HTML Preformatted Char";
	mso-style-priority:99;
	mso-style-link:"HTML Preformatted";
	font-family:Consolas;
	color:black;}
span.new
	{mso-style-name:new;}
span.link-summary
	{mso-style-name:link-summary;}
span.EmailStyle22
	{mso-style-type:personal;
	font-family:"Calibri",sans-serif;
	color:#1F497D;}
span.EmailStyle23
	{mso-style-type:personal;
	font-family:"Calibri",sans-serif;
	color:#1F497D;}
span.EmailStyle25
	{mso-style-type:personal-reply;
	font-family:"Calibri",sans-serif;
	color:#1F497D;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body bgcolor=white lang=EN-US link=blue \
vlink=purple><div class=WordSection1><p class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Hi \
Prasanta,<o:p></o:p></span></p><p class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p>&nbsp;</o:p></span></p><p \
class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Changes are \
fine.<o:p></o:p></span></p><p class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p>&nbsp;</o:p></span></p><p \
class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Thanks,<o:p></o:p></span></p><p \
class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>Jay<o:p></o:p></span></p><p \
class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'><o:p>&nbsp;</o:p></span></p><div><div \
style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p \
class=MsoNormal><b><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'>From:</span></b><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'> prasanta \
sadhukhan <br><b>Sent:</b> Friday, June 17, 2016 3:37 PM<br><b>To:</b> Jayathirth D \
V<br><b>Cc:</b> 2d-dev@openjdk.java.net<br><b>Subject:</b> Re: [OpenJDK 2D-Dev] [9] \
RFR: JDK-6966350:Empty pages when printing on Lexmark E352dn PS3 with &quot;1200 \
IQ&quot; setting<o:p></o:p></span></p></div></div><p \
class=MsoNormal><o:p>&nbsp;</o:p></p><p>Hi Jay,<o:p></o:p></p><p class=MsoNormal>I \
have modified the testcase to select the proper printable, description (it seems for \
dell 5310 it is Properties-&gt;Print Quality whereas for lexmark it is as you \
mentioned) is changed to include both printers,<br>increased timeout, removed unused \
imports and rectified indents.<br><a \
href="http://cr.openjdk.java.net/~psadhukhan/6966350/webrev.02/">http://cr.openjdk.jav \
a.net/~psadhukhan/6966350/webrev.02/</a><br><br>Regards<br>Prasanta<o:p></o:p></p><div><p \
class=MsoNormal>On 6/17/2016 2:47 PM, Jayathirth D V \
wrote:<o:p></o:p></p></div><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>Hi \
Prasanta,</span><o:p></o:p></p><p class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span style='font-family:"Calibri",sans-serif;color:windowtext'>One \
more thing I missed, there are many unneeded imports in test case. Please remove them \
also.</span><o:p></o:p></p><p class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>Thanks,</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>Jay</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>&nbsp;</span><o:p></o:p></p><div><div \
style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p \
class=MsoNormal><b><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'>From:</span></b><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'> \
Jayathirth D V <br><b>Sent:</b> Friday, June 17, 2016 2:45 PM<br><b>To:</b> Prasanta \
Sadhukhan<br><b>Cc:</b> <a \
href="mailto:2d-dev@openjdk.java.net">2d-dev@openjdk.java.net</a><br><b>Subject:</b> \
Re: [OpenJDK 2D-Dev] [9] RFR: JDK-6966350:Empty pages when printing on Lexmark E352dn \
PS3 with &quot;1200 IQ&quot; setting</span><o:p></o:p></p></div></div><p \
class=MsoNormal>&nbsp;<o:p></o:p></p><p class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>Hi \
Prasanta,</span><o:p></o:p></p><p class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span style='font-family:"Calibri",sans-serif;color:windowtext'>I \
tried to run the test but it looks like you are not creating object for proper class \
in test case :</span><o:p></o:p></p><p class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
pj.setPrintable(new PrintableDemo(), pf);</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span style='font-family:"Calibri",sans-serif;color:windowtext'>I \
think it should be test class name : </span><o:p></o:p></p><pre><span \
style='font-size:12.0pt;font-family:"Calibri",sans-serif;color:windowtext'>88&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
pj.setPrintable(new PrintTestLexmarkIQ(), pf);</span><o:p></o:p></pre><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span style='font-family:"Calibri",sans-serif;color:windowtext'>After \
we change it to test class name it is working fine.</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span style='font-family:"Calibri",sans-serif;color:windowtext'>In \
the description of test JTextArea, I found Print quality setting under Properties \
-&gt; Advanced -&gt; Graphic -&gt; Print Quality. Please verify the \
same.</span><o:p></o:p></p><p class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>Also please increase \
timeout for test case as I was looking for Print Quality setting and it came \
out.</span><o:p></o:p></p><p class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>In test case jtreg \
multiline comment are not indented properly.</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>Regarding code change, if \
we can be sure that in future image quality setting will not increase more than \
6000IQ then changes are fine. Also in comments related to code change we can make it \
multiline comment instead of multiple single line comments.</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>Thanks,</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-family:"Calibri",sans-serif;color:windowtext'>Jay</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>&nbsp;</span><o:p></o:p></p><p \
class=MsoNormal><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D'>&nbsp;</span><o:p></o:p></p><div><div \
style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p \
class=MsoNormal><b><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'>From:</span></b><span \
style='font-size:11.0pt;font-family:"Calibri",sans-serif;color:windowtext'> Philip \
Race <br><b>Sent:</b> Thursday, June 16, 2016 5:05 AM<br><b>To:</b> prasanta \
sadhukhan<br><b>Cc:</b> <a \
href="mailto:2d-dev@openjdk.java.net">2d-dev@openjdk.java.net</a><br><b>Subject:</b> \
Re: [OpenJDK 2D-Dev] [9] RFR: JDK-6966350:Empty pages when printing on Lexmark E352dn \
PS3 with &quot;1200 IQ&quot; setting</span><o:p></o:p></p></div></div><p \
class=MsoNormal>&nbsp;<o:p></o:p></p><p class=MsoNormal><br><br>On 6/14/16, 10:09 PM, \
prasanta sadhukhan wrote: <o:p></o:p></p><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p>Hi Phil,<o:p></o:p></p><p \
class=MsoNormal>&nbsp;<o:p></o:p></p><div><p class=MsoNormal>On 6/15/2016 12:21 AM, \
Phil Race wrote:<o:p></o:p></p></div><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><div><pre>This sound fishy. \
&quot;2&quot; does not sound like a valid value per the Microsoft \
spec<o:p></o:p></pre><pre>but this driver is apparently considering it as something \
like a multiplier although<o:p></o:p></pre><pre>presumably not to the actual \
resolution.<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>I see that we are \
checking that the DM_YRESOLUTION bit of the dmFields member is set \
:<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>1002&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
&nbsp;&nbsp;&nbsp;&nbsp;int xRes = \
devmode-&gt;dmPrintQuality;<o:p></o:p></pre><pre>1003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
int yRes = (devmode-&gt;dmFields &amp; DM_YRESOLUTION) \
?<o:p></o:p></pre><pre>1004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
devmode-&gt;dmYResolution : devmode-&gt;dmPrintQuality;<o:p></o:p></pre><pre><span \
class=new>1005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
</span><o:p></o:p></pre><pre><span \
class=new>1006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
// For some printers, printer quality can specify \
1200IQ</span><o:p></o:p></pre><pre><span \
class=new>1007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
// In this case, dmPrintQuality comes out 600 and</span><o:p></o:p></pre><pre><span \
class=new>1008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
// dmYResolution comes out 2 which is not a valid \
resolution</span><o:p></o:p></pre><pre><span \
class=new>1009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
// so for IQ setting, we specify yresolution same as \
xRes</span><o:p></o:p></pre><pre><span \
class=new>1010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
if (yRes &lt; 10) yRes = xRes;</span><o:p></o:p></pre><p class=MsoNormal \
style='margin-bottom:12.0pt'><br>.. so really they ought to return a DPI value as the \
spec says. I can't<br>find anything that grants the apparent latitude being taken \
here.<br><br>Note that your change here looks like it may break &quot;quality&quot; - \
where<br>the pre-defined values are negative - as you will overwrite &quot;-1&quot; \
(for example) with 10.<br>Actual breakage depends on whether we bother to read yRes \
in the case that<br>xRes is negative but it still should not be \
over-written.<o:p></o:p></p></div></blockquote><p class=MsoNormal>If \
&quot;quality&quot; or dmPrintQuality is pre-defined negative value (like<strong> \
</strong>DMRES_HIGH, DMRES_MEDIUM, DMRES_LOW, DMRES_DRAFT)<br>then it will be handled \
in the &quot;if&quot; block<br>and my modification is in &quot;else&quot; \
.<o:p></o:p></p></blockquote><p class=MsoNormal style='margin-bottom:12.0pt'><br>Not \
following that but in any case ...<o:p></o:p></p><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><div><p class=MsoNormal \
style='margin-bottom:12.0pt'>At a minimum you need to fix the code to look like \
:-<o:p></o:p></p><pre>int yRes = (devmode-&gt;dmFields &amp; DM_YRESOLUTION) \
&amp;&amp; (devmode-&gt;dmYResolution &lt; \
10)<o:p></o:p></pre><pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; \
? devmode-&gt;dmYResolution : \
devmode-&gt;dmPrintQuality;<o:p></o:p></pre></div></blockquote><p class=MsoNormal>I \
guess you mean<o:p></o:p></p><pre>devmode-&gt;dmYResolution &gt; \
10<o:p></o:p></pre></blockquote><p class=MsoNormal \
style='margin-bottom:12.0pt'><br>.. yes<o:p></o:p></p><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><pre>&nbsp;<o:p></o:p></pre><pre>&nbsp;<o:p></o:p></pre><pre>Anyways, \
I have updated webrev to accomodate your comment.<o:p></o:p></pre><pre><a \
href="http://cr.openjdk.java.net/%7Epsadhukhan/6966350/webrev.01/">http://cr.openjdk.java.net/~psadhukhan/6966350/webrev.01/</a><o:p></o:p></pre></blockquote><p \
class=MsoNormal style='margin-bottom:12.0pt'><br>approved since we have a comment \
explaining the &quot;logic&quot; but still \
puzzled.<br><br>-phil.<o:p></o:p></p><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><pre>&nbsp;<o:p></o:p></pre><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><div><pre><span \
class=new>&nbsp;</span><o:p></o:p></pre><pre><span class=new>But I find it a little \
unsatisfactory to have to make this kind of \
workaround</span><o:p></o:p></pre><pre><span class=new>and wonder what we are missing \
... </span><o:p></o:p></pre></div></blockquote><p class=MsoNormal \
style='margin-bottom:12.0pt'>I could not find anything but this will help in getting \
printing to be working in those printers. If we find anything in near future, we will \
update this code .<br><br>Regards<br>Prasanta<o:p></o:p></p><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><div><pre><span \
class=new>&nbsp;</span><o:p></o:p></pre><p class=MsoNormal>-phil.<br><br>On \
06/09/2016 04:35 AM, prasanta sadhukhan wrote:<o:p></o:p></p></div><blockquote \
style='margin-top:5.0pt;margin-bottom:5.0pt'><p>Hi All,<o:p></o:p></p><p>Bug: <a \
href="https://bugs.openjdk.java.net/browse/JDK-6966350">https://bugs.openjdk.java.net/browse/JDK-6966350</a><o:p></o:p></p><p \
class=MsoNormal>The issue was if we select 1200IQ Normal (default) setting in Lexmark \
E352dn PS3 or <span class=link-summary>Dell 5310n printer, it does not print the \
output and we get empty pages.</span><br><br><span class=link-summary>It was because \
DEVMODE windows structure returns 600 for </span>&quot;dmPrintQuality&quot; and 2 for \
&quot;dmYResolution&quot;. For 2400IQ, it returns 600 dmPrintQuality and 4 as \
dmYResolution<br>so awt_printControl.cpp#AwtPrintControl::UpdateAttributes() calls \
WPrinterJob#setResolutionDPI(xres=600, yres=2) and RasterPrinterJob#print() gets \
0.027 as yscale(=getYRes()/72 and yres = 2)<br>so devicetransform for normal 1200IQ \
dpi becomes [8.33, 0.0, -108.0][0.0, 0.027, -108.0] so WPathGraphics#drawString() \
gets devPos x= 725.33, <b>y = -105.22.<br></b>so nothing gets printed.<br><br>I tried \
finding the significance of 1200IQ setting which just says it enhances the images \
sent to the printer.<br>From <a \
href="http://www.smallbusinesscomputing.com/testdrive/article.php/1585581/Lexmark-T420 \
d-Printer-Review-Both-Sides-Now.htm">http://www.smallbusinesscomputing.com/testdrive/article.php/1585581/Lexmark-T420d-Printer-Review-Both-Sides-Now.htm</a> \



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic