<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">

<head>
<meta http-equiv=Content-Type content="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="City"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
 name="place"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* Font Definitions */
 @font-face
        {font-family:Cambria;
        panose-1:2 4 5 3 5 4 6 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";}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:Cambria;
        color:windowtext;
        font-weight:normal;
        font-style:normal;
        text-decoration:none none;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>

</head>

<body lang=EN-US link=blue vlink=purple>

<div class=Section1>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>All,<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>I continue address the issues for mobile print in
connection with LF/OpenPrinting.&nbsp;&nbsp; The current area-of-interest is
printer capabilities.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>Yes, I could simpley follow the PWG work that will use IPP
(Everywhere); and, through a series of Pascal/XML data exchanges, the printer
capabilities can be obtained.&nbsp; This, however, causes a burden to the
mobile device and printer to understand and support the IPP and to contain dictionary
(string) parsers.&nbsp;&nbsp; While the overhead may be acceptable; it is still
burdensome.&nbsp; <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>The use of PPD files is possible but they have the same
complexity as above.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>My proposal, in an attempt to simplify matters, is encode
printer capabilities, using the JTAPI attributes and values, such that the
printer capabilities are binary state information (i.e. yes/no or have/don&#8217;t-have
or etc).&nbsp; While this method does not provide the infinite (or at least a
very large) number of possibilities for every possible printer on the market
today or will be on the market in the future; it does provide sufficient
information for 90+% (95+%) of printing need from mobile devices. &nbsp;&nbsp;There
is no dictionary (string) parsers required.&nbsp; The binary state capability data
can be retrieved from numerous sources, including the printer, will minimal
overhead and is usable by the mobile device OS, application, print manager and
print dialog.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>I have created a couple of c code header files and
following are samples.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>Example: <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
/************************************************************<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp; * StitchingType<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp; *<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp; * Whether or not to stitch
and where to place the stitch. <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp; * <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;
***********************************************************/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; typedef struct <o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; {<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GP_BIT32
FSGJT_ST_NOT_SUPPORTED&nbsp; : 1;&nbsp;&nbsp;&nbsp; /* bit
0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GP_BIT32
FSGJT_ST_NONE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
1;&nbsp;&nbsp;&nbsp; /* bit 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GP_BIT32
FSGJT_ST_CORNER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
1;&nbsp;&nbsp;&nbsp; /* bit 2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GP_BIT32
FSGJT_ST_SADDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
1;&nbsp;&nbsp;&nbsp; /* bit 3&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; GP_BIT32
FSGJT_ST_SIDE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; :
1;&nbsp;&nbsp;&nbsp; /* bit 4&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; } fsgjt_stitching_type_cap;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>In this example of a single attribute, the possible values
are translated into capability states.&nbsp; Somewhere (Firmware, cloud, or
etc) the following is defined<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
/****************************************************************/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; /***
StitchingType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
*/<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp; /***
---------------------------------------------------------- */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
ptrCap-&gt;stitchingTypeCap.FSGJT_ST_NOT_SUPPORTED = 0;/* bit
0&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
ptrCap-&gt;stitchingTypeCap.FSGJT_ST_NONE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= 0;/* bit 1&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
ptrCap-&gt;stitchingTypeCap.FSGJT_ST_CORNER&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= 1;/* bit 2&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
ptrCap-&gt;stitchingTypeCap.FSGJT_ST_SADDLE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= 1;/* bit 3&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=1 face="Courier New"><span style='font-size:9.0pt;
font-family:"Courier New"'>&nbsp;&nbsp;&nbsp;
ptrCap-&gt;stitchingTypeCap.FSGJT_ST_SIDE&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
= 0;/* bit 4&nbsp;&nbsp;&nbsp; */<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>Thus, this printer can support corner and saddle
stitching.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>To make this concept work in general, the extensible feature
of the JTAPI attribute was removed.&nbsp; <st1:City w:st="on"><st1:place w:st="on">Mobile</st1:place></st1:City>
needs to prints and not worry about variations upon variations.&nbsp; The
LF/OpenPrinting should review the now fixed list of values for the pervious
extensible attributes to determine if the list of values needs to be updated.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>To make this concept work, I also added
MediaSizeCap.&nbsp;&nbsp; This is a very, very short list of the standard media
size (A4, letter, legal and 4x6) that represents 80% to 90% of printing needs.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>But I have also defined another media header file to
provide more detailed media support.&nbsp; The first definition defines the
size and print modes (graphic, text, etc versus draft, normal, high
quality).&nbsp; The second extents the media type with the existing JTAPI coating
type attributes.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>Finally, the proposed simplification allow for a much easy
print dialog and predefined job-ticket implementations.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>I will post my c files after I do some additional testing
and clean up.<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'>Glen<o:p></o:p></span></font></p>

<p class=MsoNormal><font size=3 face=Cambria><span style='font-size:12.0pt;
font-family:Cambria'><o:p>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>