US007755786B2
(12) Ulllted States Patent
(10) Patent N0.:
Foehr et al. (54)
US 7,755,786 B2
(45) Date of Patent:
SYSTEMS AND METHODS FOR SUPPORT OF
*Jul. 13, 2010
(52)
US. Cl. ................... .. 358/115; 358/1.13; 715/205;
(58)
Field of Classi?cation Search ..................... .. None
VARIOUS PROCESSING CAPABILITIES
715/209; 719/332
(75) Inventors: Oliver H. Foehr, Mercer Island, WA
See application ?le for complete search history.
US ; Daniel F. Emerson, Redmond,
§VA)(US)_ Craig I‘ McLuckie Redmond, WA (U S) (73)
.
.
4,410,286 A
Ass1gnee: Microsoft Corporation, Redmond, WA Notice:
References Cited US. PATENT DOCUMENTS
_
4,594,674 A
(US)
(*)
.
(56)
10/1983
Ko et a1.
6/1986 Boulia et al‘
4,649,513 A
3/1987 Martin et a1.
4,870,611 A
9/1989 Martin et a1.
Subject to any disclaimer, the term ofthis patent is extended or adjusted under 35 IJ'S'C~ 154(1)) by 1089 days'
5,179,702 A 5,222,205 A 5,469,532 A
6/1993 Larson et a1.
ll/l995 Gerlach et a1.
This patent is subject to a terminal dis-
5,469,533 A 5’487’l38 A
11/1995 Dennis M996 Rust et 31'
1/1993 SpiX et a1.
claimer.
(Continued)
(21) Appl. N0.: 10/935,249
OTHER PUBLICATIONS Windows NT 4i0.pdf.*
(22) F1led:
Sep. 7, 2004
(65)
(Continued)
PI‘iOI‘ PllblicatiOIl Data
Primary ExamineriTWyler L Haskins Assistant ExamineriBarbara D Reinier
Us 2005/0243355 A1
NOV' 3’ 2005
(74) Attorney, Agent, or FirmiLee & Hayes, PLLC
Related US. Application Data (60)
(57)
3, 2004, provisional application No. 60/567,663, ?led
_
_
System? and methods are desclilbed for _S1_1PPOn of Yanous
on May 3’ 2004’ provisional application NO 60/567,
computmg dev1ce and target ent1ty capab1l1t1es. In an 1mple
890 ?led on May 3 2004 provisional application NO_
mentation, a method includes determining one or more pro
60/5’67 920 ?led 011 May’ 3 2004 provisional app1i_ Cation jqu ’60/567 830 ?led on May 3 2004 prOVi_
cessing capabilities of a computing device to process data for rendering by a rendering device. A selection is made, based
Sional app1iCatiOn’NO_’60/568 071 ?léd on May 3
on the determining, of one or more ?lters to provide data
2004'
(51)
ABSTRACT
Provisional application No. 60/567,679, ?led on May
Int_ C]_ G06F 3/12
G06F 17/00 G06F 3/00
s
s
con?gured for rendering by the rendering device and that
provides at least one processing capability that is not included in the one or more processing capabilities of the computing device
(2006.01) (2006.01) (2006.01) 800
’
11 Claims, 13 Drawing Sheets
?
4 Computing Device E
Printer 5%
File E Second Collection of
Software Components 80_8 First Collection of
Software Components @ PDL Version 8_10_ Intermediate Version
Print Mechanism @
US 7,755,786 B2 Page2 U.S. PATENT DOCUMENTS 5,537,526 5,613,124 5,699,493 5,727,220 5,745,121 5,745,122 5,745,910 5,752,055 5,752,056 5,806,078
A A A A A A A A A A
7/1996 3/1997 12/1997 3/1998 4/1998 4/1998 4/1998 5/1998 5/1998 9/1998
Anderson 9191 Atkinson et a1. Davidson, Jr. et 31. Hohensee et a1. PolitiS Gay 9191 Piersolet al. 11991191119191 Celik Huge1a1~
5,819,295 A 5,845,058 A 5903903 A
10/1998 12/1998 5/1999 5/1999 6/1999
Nakagawaetal. Shaw 9191 Kennedy
5905504 A 5,911,138 A 5,920,684 A
5940581 5950215 5,960,168 5,993,1188 6,026,416 6,070,175 6,094,665 6,134,552 6,138,162 6,144,974
A A A A A A A A A A
Barkanseta1~ Li 9191
7/1999 Hastings 9191
8/1999 9/1999 9/1999 11/1999 2/2000 5/2000 7/2000 111/2000 10/2000 11/2000
Lipton Tabuchi Shaw 9191 Nogay 9191 Kanerva et 31. Mezei Lyons et a1. Fritz 9191 Pistriotto et a1. Gartland
6,785,654 B2
8/2004 Cyr et a1.
6,789,229 6,812,941 6,826,626 6,867,874 6,891,632 6,910,843
B1 B1 B1 B1 B2 B2
9/2004 11/2004 11/2004 3/2005 5/2005 6/2005
6,917,976 6,925,597 6,941,511 6,944,515 6,952,801 6,968,557 6,990,654 6,992,785 7,017,162 7,027,660
B1 B2 B1 B2 B2 B1 B2 B1 B2 B2
7/2005 g/2005 9/2005 9/2005 10/2005 11/2005 1/2006 1/2006 3/2006 4/2006
7,043,688 B1
7,047,237 7,051,276 7,051,330 7,092,963 7,103,625 7,106,275 7,131,060 7,134,071 7,136,941 7,162,538
B2 B1 B1 B2 B1 B2 B1 B2 B2 B1
DunietZ et a1. Brown etal. McManuS Shima Schwartz Sawetal. Slaughter et a1. Anwar Hindetal. Nakajima et a1. Warmusetal.
Zhang et 31‘ carro11, Jr. Chatcavage et a1. Smith et a1. Hersch et a1.
5/2006 Tsutsumi et a1. .......... .. 715/255
5/2006 5/2006 5/2006 8/2006 9/2006 9/2006 10/2006 11/2006 11/2006 1/2007
Suzuki et a1. Mogilevsky et a1. Kaler et a1. Ryan et a1. Hipp et 31, Brunneretal. Azuma Ohwadaetal. Nguyen et 31, Cordova
6,173,295 B1*
1/2001 GoeItZ etal. ............. .. 715/209
7,171,471 B1
1/2007 Nair
6,182,080 6,182,096 6,195,676 6,199,082
1/2001 1/2001 2/2001 3/2001
7,181,731 7,209,921 7,271,935 7,274,483
2/2007 4/2007 9/2007 9/2007
B1 B1 B1 B1
Clements Mastie etal. SPiX 9141 Ferrel etal.
B2 B2 B2 B2
Pace et a1. Pace et 31, Coons etal. Aiyama et 31,
6,212,530 B1
4/2001 Kadlec
7,302,634 B2
11/2007 Lucovskyet a1.
6,247,018 B1
6/2001 Rheaume
7,359,902 B2
4/2008 Ornstein et a1.
6,247,066 B1
6/2001 Tanaka
7,426,525 B2
9/2008 Sayersetal.
6,269,403 B1 6,344,855 B1 6,362,870 B2
7/2001 Anderse1a1~ 2/2002 Fisher et a1. 3/2002 Mui e191
6385727 B1
6,407,821 6,418,448 6,427,230 6,447,184 6,449,653 6,457,017 6,466,935
B1 B1 B1 B2 B2 B2 B1
5/2002 (31188981101 91 91-
6/2002 7/2002 7/2002 9/2002 9/2002 9/2002 111/2002
Hohensee e191 Sarkar 691591191111 Kimurae1a1~ Klem?ts e191 WatkinS e191 Smart
2001/0003828 A1 2001/0013043 A1 2001/0018697 A1
6/2001 Peterson etal. g/2001 Wagner 8/2001 Kunitake etal.
2001/0043358 A1
11/2001
Schwartz ................. .. 358/1.15
2001/0044809 2002/0002667 2002/0049790 2002/0065848 2002/0073236 2002/0085020 2002/0087602
11/2001 1/2002 4/2002 5/2002 6/2002 7/2002 7/2002
Parasnis et a1. Kelsey etal. Ricker et a1. Walker et a1. Helgeson et a1. carro11, Jr. Masuda et a1.
A1 A1 A1 A1 A1 A1 A1
6,480,206 B2
11/2002 Priming
2002/0089691 A1
7/2002 Fenlnsoh et a1. ......... .. 358/1.15
6,498,657 B1
12/2002 K119129191
2002/0099797 A1
7/2002 Merre11 et a1.
6,505,219 B1*
1/2003 MacLean etal. .......... .. 715/205
2002/0107gg6 A1
6,507,858 B1 6,519,557 B1
1/2003 Kanerva e191 2/2003 159191189191
2002/0111133 A1 2002/0143523 A1
8/2002 Wittkotter 10/2002 Balaji et a1.
deBryet 91Probert, 1119191
2002/0174145 A1 2002/0188638 A1
11/2002 Dugaetal. 12/2002 Harnsoher
11619191 (391180119191 Ernst Anders L<>ydeta1~ Anderson et a1.
2003/0009672 2003/0018694 2003/0028560 2003/0078829 2003/0079181 2003/0093520
Temple, 111
2003/0126136 A1
7/2003 Omoigui
Ramot Bright Lisitsaetal. Wiechers e191 Friedman Ad1ereta1~ 31111919198911 Chang 9141 Brooke et a1. Wloka et a1. DiStefano, 111 Barker et a1.
2003/0137539 2003/0142325 2003/0149934 2003/0158851 2003/0163552 2003/0163589 2003/0167356 2003/0172168 2003/0182152 2003/0182311 2003/0182450 2003/0182656
7/2003 Dees 7/2003 Leslie g/2003 Worden
6,538,760 B1 6,549,918 B1 6,571,279 6583789 6,591,278 6,604,144 6,608,693 6,609,200
B1 B1 B1 B1 B1 B2
6,615,281 B1 6,654,147 6,657,647 6,658,477 6,674,540 6,675,353 6,675,356 6681223 6,715,126 6,763,343 6,765,584 6,771,291 6,781,609
B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 B1 B1
3/2003 4/2003 5/2003 6/2003 7/2003 8/2003 8/2003 8/2003 9/2003 11/2003 12/2003 12/2003 1/2004 1/2004 1/2004 1/2004 3/2004 7/2004 7/2004 8/2004 8/2004
A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1
8/2002 Gentneret 31,
1/2003 1/2003 2/2003 4/2003 4/2003 5/2003
8/2003 8/2003 8/2003 9/2003 9/2003 9/2003 9/2003 9/2003 9/2003
Goodman Chen et a1. Kudrolli et a1. Chen et a1. Schumacher et a1. Beesley
Britton et a1. Savitzky et al. Bunce etal. Smith et a1. Mak etal. Nakajima et a1. Nakajima et a1. Ong et a1. Leathers et a1.
US 7,755,786 B2 Page 3 2003/0187534 2003/0187612 2003/0187870 2003/0195784 2003/0204495 2003/0229845 2003/0233420 2004/0003388 2004/0003448 2004/0021905 2004/0032611 2004/0034848 2004/0049737 2004/0054669 2004/0061729 2004/0066527 2004/0078755 2004/0080764 2004/0103073 2004/0111418 2004/0117733 2004/0130741 2004/0139049 2004/0153467 2004/0160613 2004/0167941 2004/0183837 2004/0193599 2004/0194025 2004/0205623 2004/0205653 2004/0207869 2004/0216048 2004/0225960 2004/0230608 2004/0267553 2004/0268304 2005/0005233 2005/0015767 2005/0071385 2005/0086030 2005/0091574 2005/0097441 2005/0099398 2005/0104894 2005/0125720 2005/0132279 2005/0138540 2005/0144556 2005/0187803 2005/0190186 2005/0198069 2005/0210026 2005/0210227 2005/0223312 2005/0251742 2005/0278240 2005/0278616 2005/0278626 2005/0286063 2006/0031749 2006/0041838 2006/ 0047743 2006/0056334 2006/0080316 2006/0117019 2006/0117268 2006/0136827 2006/0146353 2006/0155529 2006/0206794
A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1 A1
10/2003 10/2003 10/2003 10/2003 10/2003 12/2003 12/2003 1/2004 1/2004 2/2004 2/2004 2/2004 3/2004 3/2004 4/2004 4/2004 4/2004 4/2004 5/2004 6/2004 6/2004 7/2004 7/2004 8/2004 8/2004 8/2004 9/2004 9/2004 9/2004 10/2004 10/2004 10/2004 10/2004 11/2004 11/2004 12/2004 12/2004 1/2005 1/2005 3/2005 4/2005 4/2005 5/2005 5/2005 5/2005 6/2005 6/2005 6/2005 6/2005 8/2005 9/2005 9/2005 9/2005 9/2005 10/2005 11/2005 12/2005 12/2005 12/2005 12/2005 2/2006 2/2006 3/2006 3/2006 4/2006 6/2006 6/2006 6/2006 7/2006 7/2006 9/2006
Suzuki et al.
2008/0021923 A1
1/2008 Sedky et al.
Miyake OTHER PUBLICATIONS
Nakajima et al. Smith Lehnert Salesin et al. Stark et al. Jacquemot et al.
Windows NT Server printing.pdf.* Windows NT 4i0.pdf, Windows NT 4.0 release date Jul. 29, 1996.*
Morrow et al. Holmstead et al.
tory.pdf, Adobe Photoshop 5.0 released May 1998, a common appli
Daly et al.
............... .. 358/1.13
Moore et al. Hunt et al.
Seyrat et al. Green et al. Kloosterman et al.
Shinjo et al. Sievert et al. Blake et al.
Nguyen et al. Moreau et al.
Ferlitsch Hancock et al. Conover et al. Kurotsu et al. ............. .. 358/1.1
Prahlad et al. Watanabe et al. Liu et al. Hubert et al. Weil et al. Had?eld et al. Endo Brown et al. Parikh et al. Ornstein et al. Brunton Kuo et al.
Kays et al. Nash et al. Rao Zeidman
Maaniitty et al. Herbach et al. Garside et al. Sanborn et al. Little et al.
Relyea et al. Baltus et al. Petersen et al. Jain et al. Klassen
Cherry et al. Wood Emerson et al. Erdtrnann et al.
Mogilevsky et al. Delenda Eller Malik Owen et al. Schramm et al.
Khan Yuan et al. Yuan et al. Gilmore et al.
Sylthe et al. Talley et al. Villaron et al. Yue et al. Ludviksson et al. Ornstein et al.
Adobe Photoshop release history.pdf.* Supported ?le formats iPhotoshop Elements 5i0i.pdf.* Adobe Photoshop release history.pdf, Adobe Photoshop release his cation.*
Supported ?le formats iPhotoshop Elements 5i0i.pdf, Adobe Photoshop 5.0 released May 1998.* Windows NT Server printing.pdf, Windows NT 4.0 release data Jul.
29, 1996* Ellis et al., “Postscrip, BeZier Curves and Chinese Character”, ACM, 1989, pp. 162-165. Chien, et al., “Effcient Schemes for Managing Multiversion XML
Documents”, University of California, California, Dec. 19, 2002, pp. 332-353.
Han, et al., “WebSplitterzA Uni?ed XML Framework for Multi Device Collaborative web browsing” IBM Thomas J. Watson research Centre, Hawthorne, CSCW, Dec. 2-6, 2000, ACM 1-58113 222-0/00/0012, pp. 221-230.
Hardy, et al., “Mapping and Displaying Structural Transformations between XML and PDF”, ACM, 2002, pp. 95-102. Jacobs et al.; “Adaptive Grid-Based Document Layout”; 2003 ACM; pp. 838-847.
Peters et al.,“CrystalWebiA distributed authoring environment for the World-Wide Web” Computer Networks and ISDN Systems, North Holland Publishing. Amsterdam, NL. vol. 27, No. 6, Apr. 1995, pp. 861-870.
Orchard et al “[Editorial Draft] Versioning XML Languages W3C Proposed TAG ?nding” Nov. 16, 2003, pp. 1-23. Orchard, “Versioning XML Vocabularies”, published on XML.com, Dec. 3, 2003, pp. 1-10. Bluethman, et al., “Interleaved Graphics and Text”, IBM Technical
Bulletin, Apr. 1980, vol. 22, No.4, Oct. 1986, pp. 4813-4815. Marco, et al., “A Framework for Designing and Implementing the Ada Standard Container Library”, ACM 2003, pp. 49-61. Holman; “What is XSL-FO”, Google Mar. 20, 2002, pp. 1-4. Pawson; “Printing from XML: An Introduction to XSL-FO” , Google Oct. 9, 2002, pp. 1-4.
El-Kwae, et al., “Document Image Representation Using XML Tech nologies”; Proceedings of SPIE, vol. 4670. 2001, pp. 109-120. Christodoulakis, et al., “Multimedia Document Presentation, Infor mation Extraction, and Document Formation in MINOS: A Model and a System”; ACM Transaction on Of?ce Information Systems, vol. 4, No. 4: Oct. 1986; pp. 346-383. “Interleaved Graphics and Text” Bluethman et al., IBM Technical
Disclosure Bulletin, Apr. 1980, vol. 22, No. 11., pp. 4813-4815. Ef?cient Representation and Streaming of XML Content Over the Internet Medium Girardot et al., IEEE 2000 pp. 67-70.
Of?cial Notice of Rejection for China Patent Application No. 2004800013294, Dec. 18, 2007, pp. 1-16.
“@tryinCSS3 (was Useragent Rules in CSS)”; Mar. 31, 2004; http:// lists.w3 .org/Archives/Public/www-style/2004Mar/0333 .html.;
2
pages.
“Interleaved Graphics and Text” Bluethman et al., IBM Technical Disclosure Bulletin, Apr. 1980, vol. 22, No. 11., pp. 4813-4815. Akerlof, “The Market for “Lemons”: Quality Uncertainty and the Market Mechanism”, Quarterly Journal of Economics, vol. 84, Issue 3, Aug. 1970, pp. 488-500. Devanur, et al., “An Improved Approximation Scheme for Comput ing Arrow-Debreu Prices for the Linear Case”, retrieved on Nov. 10, 2008 at <>, 2003, pp. 1-8. Geanakoplos, et al., “The Arrow-Debreu Model of General Equilib rium”, retrieved on Nov. 10, 2008 at <>, Cowles Foundation for Research in Economics at Yale University, 2004.
Jain, et al., “A Polynomial Time Algorithm for Computing an Arrow Debreu Market Equilibrium for Linear Utilities”, Proceedings of the
US 7,755,786 B2 Page 4 45th Annual IEEE Symposium on Foundations of Computer Science
(FOCS ’04), IEEE, 2004, pp. 1-9. Jain, et al., “Approximating Market Equilibria”, Springerlink, LNCS 2764, 2003, pp. 1-11. Ashcraft, et al., “SPOOLES: An Object-Oriented Sparse Matrix Library”, retrieved on Jan. 21, 2009 at <
“Networked File System”; http://www.scit.wlv.ac.uldjphb/comms/ nfs.htm.; 6 pages, Apr. 19, 2004. “Apache Server Frequently Asked Questions”; Apache HTTP Server Version 1.3; http://httpdapache.org/docs/misc/FAQ.html.; 35 pages,
Apr. 19,2004. “URIQA! The URI Query Agent Model, A Semantic Web Enabler”;
viewdoc/summary?doi:10.1.1.44.5809>>, Proceedings of the 9th
URIQA: The Nokia Query Agent; http://sw.nokia.com/uriqa/
SIAM Conference on Parallel Processing for Scienti?c Computing,
URIQA.html; 9 pages, Apr. 20, 2004. “XMP Adding Intelligence to Media”; XMP Speci?cation; Jan.
pp. 1-10.
Levy, et al., “Non-Distorted Texture Mapping for Sheared Triangu lated Meshes”, The 25th Conference on Computer Graphics and Interactive Techniques, ACM, 1998, pp. 343-352. Reguero, et al., “Large Scale Print Spool Service”, retrieved on Jan. 21, 2009 at <>, Proceedings of the Twelfth Systems
Administration Conference (LISA 1998), Boston, Massachusetts, Dec. 6-11, 1998, pp. 1-15.
Shade, et al., “Layered Depth Images”, The 25th Annual Conference on Computer Graphics and Interactive Techniques, ACM, 1998, pp. 231-242.
KanZaki, “RSSiSummary and Release of Site Information,” retrieved on Feb. 17, 2010 from <
20040408231744/http://www.kanZaki.com/docs/sw/rss.html>>, Mar. 2, 2004. Sun Microsystems, “JAR File Speci?cation”, retrieved on Feb. 17, 2010 at http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html>>,
2004; 11 pages.
“Controlling the Data Chaos by Adding I*ntelligence to Media”; 4 pages, 2004.
Miller; “An Introduction to the Resource Description Framework”;
D-Lib Magazine, May 1998; ISSN 1082-9873; http://www.dlib.org/ dlib/may98/miller/05miller.html.; 10 pages.
“@tryinCSS3(was:Useragent Rules in CSS)”; Mar. 31, 2004; http:// lists.w3.org/Archives/PUblic/www-style/2004Mar/0333.html.; 2 pages.
“[Editorial Draft] Versioning XML Languages”; Proposed TAG Finding Nov. 16, 2003; http://www.w3 .org/200 l/tag/doc/versioning 20031116; 23 pages. “SOAP Version 1.2 Part 1: Messaging Framework”; W3C Proposed
Recommendation May 7, 2003; http://www.w3org/TIU2003/PR soap12-part1-20030507. 25 pages. Of?cial Notice Of Rejection for China Patent Application No. 2004800013294 mailed on Nov. 23, 2007, pp. 16.
“SVG Print”, W3C Working Draft, Jul. 15, 2003, http://www.w3 .org/
Eisenberg, et al., “Consensus of Subjective Probabilities: The Pari Mutuel Method”, Annals of Mathematical Statistics, 1959, pp. 165
TIU2003/WD-SVGPrint-20030715/, pp. 1-14. “Open eBook Publication Structure 1.2”, Aug. 27, 2002, 91 pages.
* cited by examiner
2003.
168.
US. Patent
100
Jul. 13, 2010
Sheet 1 0f 13
\
Processing Module 1 6 Filter Pipeline 102
Filter 104! 1)
\
Filter 104(2)
Filter 104m)
Filter 104(N)
[ Target Entity Rendering Mechanism m
w I
US 7,755,786 B2
US. Patent
300
Jul. 13, 2010
Sheet 3 0f 13
US 7,755,786 B2
N Job (Container) __0g
Document 3.;4
Y Version 30
Y Page 3 8
Resource w
l
: Resource 18 :
""899 £2.
Font QM
Other Resource m
US. Patent
Jul. 13, 2010
Sheet 4 0f 13
US 7,755,786 B2
mmm“Eama
QN0o25v6
ai=5
XQEmBwE
A
JgCQED Eawv mE
mQEgmmuwaEm
B3wuvE
9I85S03M1
E3mQ wHE wNubMgow?ml
US. Patent 500
Jul. 13, 2010
—\
Sheet 5 0f 13
Processing Module E
Outline Filter 5_02
Gradient ?lter @
Transparent vector shape ?lter
m
Transparent Image Filter 5_0_3
Other Filters §__1_l_
US 7,755,786 B2
US. Patent
600
Jul. 13, 2010
—\
Sheet 6 0f 13
US 7,755,786 B2
E [j
g [:1
Computing Device 62 File Container §Q§
V Software Components
(Rendering Capabilities) E
V PDL _1_()_
74% 6 700
w
E
704 w [Ii-1&5!
714
I: 44———>
Printer 7 2
—
File Container?)_8_
Il ] liillili
V
/ llllllllilllll \_
Software Components
(Rendering Capabilities) E
7
V PDL L V Print Mechanism _71_
US. Patent
800
Jul. 13, 2010
Sheet 7 0f 13
US 7,755,786 B2
w‘ EEI E 'lj % I: / ]lllll]lllll] \
Computing Device __lg
Printer M
File i v
Second Collection of
Software Components @g First Collection of
Software Components m
* PDL Version L
l Intermediate Version
m
v _
_
Print Mechanism QL
US. Patent
900
Jul. 13, 2010
US 7,755,786 B2
Sheet 8 0f 13
w
High
Low Printer
Computing Device
Processing
Processing
Capabilities ,/ A
\\\ \
Computing Device E Processing Capabilities
Capabilities
Printer g0_8_ : Printing Mechanism w
Q22 Filter % Filter 9_2A
Filter E
914 j Printer L
Computing Device QM Processing Capabilities
Processing Capabilities w
Filter gin: %
Filter 952
-
Printer Mechanism E
Filter 91_8
\\
' High
Low
Printer
Computing Device
proces_s_'_ng
Processing
\ Capabilities
Capabilities
_
’
‘
Computing Device QQQ
Prlnter mg
Application 944
Processing Capabilities
—
93_4
Filter 9§_6_
Filter 9_3_§ Filter w
A
?¢9l g
Printer Mechanism 9%
US. Patent
Jul. 13, 2010
Sheet 9 0f 13
US 7,755,786 B2
Older
(Legacy) Computing Device Computing Device 1004
Application 1012
902
j
.
_
Computing Device 1020
Primer 1010
Application 1022
Processing Capabilities 1014
Processing Capabilities Finer 1024 M
Filter 1016 Printer Mechanism 1
Filter 1028
V Newer
(High End) Computing Device
Computing Device 1030
Application 1032
Processing Capabilities 1034
Filter 1036 Filter 1038
FiltermQ
?‘.9,
8
US. Patent
Jul. 13, 2010
Sheet 10 0f 13
US 7,755,786 B2
Fewer
Processing Capabilities
,//”
_
\
f- 1100
Computing Device 1102
Application 1104
1126 j
Printer 1106 P
Computing Device 1118 Processing Capabilities
'
C
b'l't'es
rocesslrl? 14apa H I Filter 1108
1120
Filter 1108( 1)
Filter 1110
Filter 1110(1)
Filter 1112 v
'
Computing Device 1122
Greater
Processing Capabilities
Processing
m5
Capabilities
Filter 1108(2) Filter 1110(2)
Filter 1112(2)
29. ll
_
Printer Mechanism
'
1116
US. Patent
Jul. 13, 2010
Sheet 12 0f 13
US 7,755,786 B2
1300 —\ l 1302 Printer Executes a Filter Selection Module to Select One or More of a Plurality of
:
|
|
: Filters
Punter 122g
Interpreter 1308
|
|
Package
|
1206 2
I?‘
I
encrypted
m
Filter
I
I
encfypted
m
Module 1304
I
I
@I
w
l
l _
_
_
_
_
_
_
_
_
_
_
_
_
I
_
_
_ 3
:7 Tti'PrTntZr Exé?eZth‘e EQECEJFEQTS | I
|
| :
Printer 1226 P k
_
_
_
_
_
I
I
l
_
_
_
_
_
_
_
_
_
_
_
_|
______________ — _ i
Interpreter 1308
| I
Printer Decryption Filter
|
encrypted A1PDL i2. @l —> | Color Conversion Filter 1306(2) | ~> IFLII
: I
132363;?
I
encrypted
I
I Page 121g I
_
I
_
Page 1216
PDL Emitter Fllter 1306 3
I
|
I
l
l
'13 4 Interpreter Passes the PDL to a Printing Mechanism l Printer 1226 I
I l
|
|
PDL 1312
l|
Interpreter 1308
+
[El '’
Printing
Mechanism 1316
I |
|
|
I l l 1318 Interpreter causes the Printing Mechanism to Render the Pages Printer 1226
Printing Mechanism 1316
US. Patent
Jul. 13, 2010
Sheet 13 0f 13
US 7,755,786 B2
1400 —\ 1402 Examine Capabilities of a
Rendering Device To Process a Document
l EDA Derive a Processing Capabilities Model of the
Rendering Device Based on the Examination
mo Select One or More of a
Plurality of Filters based on the Processing
Capabilities Model
l M Arrange the Selected One or More Filters to form a
Device Driver
l
mg Form a Communication
having the Device Driver for Storage on a
Computing Device
3169. i4
US 7,755,786 B2 1
2
SYSTEMS AND METHODS FOR SUPPORT OF VARIOUS PROCESSING CAPABILITIES
convert responses to the input/output instructions from the
respective target entity into a form that is compatible with the computing device. Because of the wide range of computing
RELATED APPLICATIONS
devices and target entities that are available to users, however, manufacturers of computing devices and target entities are faced with the challenge of deriving device drivers for each
This application incorporates by reference the entire dis closure of each of the following US. Provisional Patent
particular environment that may be encountered by their
Applications, and claims priority under 35 U.S.C. §1 19(e) to the following US. Provisional Patent Applications, each of
products. For example, a manufacturer of a printer may be required to develop a device driver for each particular con
which was ?led on May 3, 2004:
?guration of computing device that may utiliZe the printer. Further, each device driver that is developed for a particular computing device may be in?exible in that the device driver is not able to support changing capabilities that may be provided through further development of the computing device and/or
Ser. No.
Inventor(s)
11/912,794
Foehr et al.
10/912,975
10/935,681
10/938,476
Foehr et al.
Foehr et. al.
Sedky and Emerson et al.
Title
the printer. Therefore, a new device driver was traditionally required when additional functionality was added to the com
SYSTEMS AND METHODS FOR PAS SING DATA IN A FILTER PIPELINE SYSTEMS AND METHODS FOR HANDLING A FILE WITH COMPLEX ELEMENTS SYSTEMS AND METHODS FOR SUPPORT OF VARIOUS COMPUTER AND PRINTER CAPABILITIES SPOOLING STRATEGIES
puting device and/or the printer. Accordingly, there is a continuing need for systems and methods that support various computing device and target 20
SUMMARY
Systems and methods are described that support various 25
10/935,025
Foehr et al.
10/938,357
Foehr et al.
for being rendered. In an embodiment, a plurality of ?lters is 30
provided, each corresponding to a respective processing capability for processing data for being rendered. The ?lters may be arranged to form a ?lterpipeline such that one or more
of the ?lters provides an output, which is then provided as an input to another one of the ?lters. In this way, the ?lter
pipeline may be formed by arranging the ?lters, thereby pro 35
viding a ?exible infrastructure to address a variety of func tionality that may be provided on a computing device and/or
target entity. The plurality of ?lters, for instance, may be arranged to 40
TECHNICAL FIELD
The present invention generally relates to computing devices and rendering devices, and more particularly relates to support of various processing capabilities of computing devices and/or rendering devices.
computing device and/or target entity processing capabilities. For example, computing devices and/or target entities may each support various processing capabilities to process data
USING STRUCTURED JOB INFORMATION PLANAR RENDERING SHARING OF DOWNLOADED RESOURCES
entity capabilities.
form a device driver which is executable to convert input/ output instructions from a computing device into a form that is compatible with a target entity, and vice versa. In an imple mentation, the ?lters are selected based on the processing
capabilities of the computing device to process data for being rendered by the printer. In another implementation, the ?lters 45
are selected based on the processing capabilities of the ren
dering device to process data for being rendered by the ren dering device. For instance, the rendering device (e.g., a
printer) may support particular processing capabilities, such BACKGROUND 50
as to convert a color image to black-and-white. Therefore, a device driver may be formed by selecting one or more of a
The range of functionality available to users of computing
plurality of ?lters for execution on the computing device that
devices is ever increasing. From traditional desktop personal computers (PCs) and laptops to tablet PCs and personal digi tal assistants (PDAs), computing devices may be con?gured to provide functionality in different environments. Addition
are compatible with the particular processing capabilities of the rendering device. Thus, the plurality of ?lters may be arranged to take advantage of the particular processing capa bilities of the rendering device such that the device driver that
55
ally, the range of target entities, and particularly rendering devices, which may be utiliZed by these computing devices also continues to increase. For example, a computing device con?gured as a desktop PC may include a display device that provides an output for viewing by a user and a color printer for
is executed on the computing device does not provide redun dant functionality. Likewise, one or more ?lters may be
60
printing color images to a printable medium. The computing device may communicate with each of the target entities through use of a respective device driver. A device driver, when executed, is utiliZed to convert input/ output instructions received from the computing device into a
implemented on the rendering device to take advantage of the processing capabilities of a computing device. By providing the processing capabilities through use of a plurality of ?lters, the processing workload may be divided between the computing device and the target entity. Continu ing with the previous example, the functionality of ?lters
form that is compatible with the respective target entity. Like
utiliZed to process data for being rendered by a rendering device may be provided for execution on either the computing device or the rendering device. Therefore, both the computing
wise, the device driver, when executed, may be utiliZed to
device and the rendering device may contribute one or more
65
US 7,755,786 B2 4
3 processing capabilities such that the data is processed by both the computing device and rendering device.
FIG. 13 is a How diagram depicting a procedure in an
exemplary implementation in Which the printer processes and
The plurality of ?lters may also be grouped to form various collections that address the different processing capabilities
renders the package of FIG. 12.
of different respective computing devices and/or target enti
plary implementation in Which a processing capabilities
ties. For instance, a computing device may be communica
model is derived for a target entity and utiliZed to create a
tively coupled to a plurality of printers, each having different processing capabilities, one to another. The computing device
device driver for that rendering device.
may utiliZe different collections of the plurality of ?lters
?gures to reference like components and features.
FIG. 14 is a How chart depicting a procedure in an exem
The same numbers are used throughout the disclosure and
based on the processing capabilities of the respective printers. DETAILED DESCRIPTION
In this Way, the different collections of the plurality of ?lters may each act as a device driver for the respective printers. In another instance, a rendering device may likeWise include a
OvervieW
plurality of ?lters to access different processing capabilities of a plurality of computing devices, one to another. The plurality of ?lters may also be utiliZed to support legacy devices. For instance, a device driver may be formed from a plurality of ?lters. A neW rendering device, hoWever, may be encountered Which supports functionality that is not supported by the plurality of ?lters. Therefore, one or more ?lters may be generated for addition to the plurality of ?lters
FIG. 1 is an illustration of an environment 100 in an exem
plary implementation in Which a ?lter pipeline 102 may be con?gured and ordered to achieve a variety of desired func tionality. The ?lter pipeline 102 includes a plurality of ?lters 104(1),104(2), . . . , 104(n), . . . , 104(N). Each ofthe plurality
20
particular processing functions to generate an output. For example, one of the ?lters 104(1)-104(N) may provide a
such that a neW device driver is formed having the one or more
Watermark, another one of the ?lters may provide a color conversion, a further one of the ?lters 104(1)-104(N) may
additional ?lters and the plurality of ?lters. Thus, the neW device driver that includes the one or more ?lters may provide
an output that is compatible With the functionality of the neW rendering device. Likewise, the functionality of one or more ?lters may be added to a target entity to address changing
25
FIG. 1 is an illustration of an exemplary computing envi ronment in Which a ?lter pipeline may be con?gured and ordered to achieve a variety of desired functionality. FIG. 2 shoWs an exemplary system for producing and
another, yet another one of the ?lters 104(1)-104(N) may
30
shoWing a processing module of FIG. 1 in greater detail. FIGS. 6, 7, and 8 are illustrations of systems in exemplary
104(1)-104(N) of the ?lter pipeline 102 provide a ?exible infrastructure that can be arranged to provide a variety of 35
40
are typically implemented as softWare that is targeted to a
particular type of target entity, such as printers, display devices, storage devices, removable media devices, and so 45
106 as illustrated.
In another instance, by forming the processing module 106 50
device, illustrated as a printer 114, may include ?lters 104(n), 55
use of respective ?lter collections. 60
implementation in Which the printer includes processing capabilities that are provided through execution of a plurality of ?lters. FIG. 12 is a How diagram illustrating a procedure in an
exemplary implementation in Which a printer driver provided by a collection of ?lters preprocesses a package for output to a printer.
as a plurality of ?lters 104(1)-104(N), a processing Workload may be divided betWeen a computing device and a rendering device. For example, a computing device 112 may include an
application 108 and ?lters 104(1), 104(2). A rendering
rendering device.
FIG. 11 is an illustration of a system in an exemplary
forth. The device driver “processes” general input/ output instructions into a form that the particular device can under stand, and thus may also be referred to as a processing module
mentation in Which processing capabilities are ?exibly pro vided by a plurality of computing devices and a plurality of
implementation in Which a hierarchy of processing capabili ties of computing devices is shoWn, each of Which having differing processing capabilities that are addressed through
entity rendering mechanism 110, such as a printing mecha nism. The plurality of ?lters 104(1)-104(N), When taken
together, provides device driver functionality. Device drivers
ties depicted as printers, each of the devices have differing processing capabilities that are con?gured to interact, one to
FIG. 10 is an illustration of a system in an exemplary
functionality. The ?lter pipeline 102, for instance, may be provided as a processing module 106 that is utiliZed to process an output of an application 108 such that it may be rendered by a target
implementations shoWing computing devices and target enti another. FIG. 9 is an illustration of a system in an exemplary imple
Additional examples of ?lter functionality may be found in the folloWing discussion starting in relation to FIG. 5. Addi tionally, the plurality of ?lters 104(1)-104(N) may be arranged such that an output from one of the ?lters is provided as an input to another one of the ?lters. In this Way, the ?lters
consuming job information that may employ the ?lter pipe line of FIG. 1. FIG. 3 shoWs an exemplary schema that can be used to form job information having a structure shoWn in FIG. 2. FIG. 4 shoWs an exemplary instantiation of the schema of FIG. 3. FIG. 5 is an illustration in an exemplary implementation
perform a conversion of content from one resolution to process content from one format to another format, and so on.
functionality of the computing device. BRIEF DESCRIPTION OF THE DRAWINGS
of ?lters 104(1)-104(N) is con?gured to provide one or more
65
104(N) that process the output of ?lters 104(1), 104(2) such that the target entity rendering mechanism 110 can render the result. Further discussion of arrangement of ?lters for Work load sharing may be found in relation to FIG. 9. In a further instance, the ?lter pipeline 102 may also be “tapped” at various points such that a data stream processed by particular ?lters 104(1)-104(N) is routed to a correspond ing device. For example, computing device 116 may include the application 108 and the ?lter pipeline 102. In other Words, computing device 116 includes a version of each of the ?lters 104(1)-104(N) in the ?lter pipeline 102. Therefore, the com puting device 116 may provide an output to a printer 118 that does not include any of the ?lters 104(1)-104(N). The com
US 7,755,786 B2 5
6
puting device 116 may also provide an output from ?lters
104(1), 104(2) that may be further processed by printer 114
that is, the folders may store individual ?les that contain content that maps to actual parts of the document, but the
that includes ?lters 104(n), 104(N). In this Way, the process ing module 106 may route the data processed by the ?lters
With actual parts of the document.
104(1)-104(N) according to the processing capabilities of the target entities (e.g., printers 114, 118). A further discussion of
processing of job information 202 Will be addressed sepa
?lters that are individually executable by a rendering device
rately beloW. First, by Way of overvieW, the system 200
to address differing computing device processing capabilities
includes an application module 210 and conversion logic 212 that has access to a spool storage 214 via application pro
folders themselves may not have a one-to-one relationship
The production and consumption aspects (204, 206) of the
may be found in relation to FIG. 11.
In yet another instance, the ?lter pipeline 102 may be
gramming interfaces (APIs) 216. The spool storage 214
utiliZed to implement a versioning strategy as neW processing functionality becomes available. For example, ?lters that are
implements the production aspects (204) of the processing of
used to process a neW version of a document may be added to
the job information 202.
stores the job information 202. This chain of components
the ?lter pipeline 102 that is con?gured to process an earlier
(e. g., older) version of a document. Therefore, the ?lter pipe line 102, through addition of the neW ?lter, may process both versions of the document. Further discussion of arrangement of ?lters for support of a legacy rendering device may be
5
one case, a device may implement the spool storage using RAM memory. In another case, the device may implement the
spool storage using disk storage, and so on. The spool storage
found in relation to FIG. 10.
Exemplary Environment
Spool storage 214 represents storage for storing job infor mation implemented using any physical storage medium. In
20
may de?ne a single ?le, a collection of associated ?les, or some other storage strategy. A unit of spool storage (such as a
single ?le) that stores an entire package de?ning a job is also
FIG. 2 shoWs an exemplary system 200 for producing and
referred to as a “container.” Alternatively, the spool storage
consuming job information 202 that may employ the ?lter pipeline 102 and the processing module 106 of FIG. 1. The
can refer to transitory information transmitted via a commu
nication channel and inherently stored on that channel during
term “job” as used herein refers to a task in Which one or more 25
actions are performed to process job information. For
transport The system 200 also includes a spooling module 218 that is
instance, a print job may entail printing job information that
con?gured to retrieve the job information 202 from the spool
de?nes one or more documents. More generally, reference to
storage 214 and process the job information 202 to provide an output result. This chain of components implements the con
“processing” job information can refer to any kind of conver sion of such job information for rendering, such as printing or
displaying such job information. Alternatively, processing
30
can refer to distributing the job information to a target desti
nation (With or Without modifying it), archiving the job infor mation, or some other form of processing. The term “job information” refers to any kind of information used to specify the nature of the job, such as the actual information to be rendered, and/or information that de?nes hoW the job is to be rendered, and so on. The production of such job information
performed on the job information 202, Which may or may not modify the content of the job information 202. The process 35
includes a de?ned structure 208. The structure 208 generally includes a plurality of nodes that are connected together according to a set of established rules. The same general rules
target location (With or Without modifying it), archiving the job information 202, and so on. In any case, the recipient of
the output result generated by the spooling module 218 can 40 include one or more of the target entities (220, 222, . . . , 224)
associated With different usage cases 226. A variety of the usage cases 226 Will be discussed beloW.
The modules, logic and storage units shoWn in the system 200 can be implemented by any variety and grouping of 45
apply to the construction of the structure 208 regardless of the
physical mechanisms and devices. In one exemplary case, a
computing device executes the application module 210, the conversion logic 212, the APIs 216, the spool storage 214 and the spooling module 218. More speci?cally, the various logic and modules (210, 212, 216, 218) can be implemented by
application and application platform used to generate the job information 202. In the exemplary case of FIG. 2, the structure 208 uses a hierarchical scheme to connect the nodes together. A hierar
ing may include printing the job information 202, displaying the job information 202, routing the job information 202 to a
202 in the exemplary system 200 is generally represented by arroW 204, and the consumption of such job information 202 is generally represented by arroW 206. As broadly indicated in FIG. 2, the job information 202
sumption (206) aspects of the processing of the job informa tion 202, and thus may correspond to the processing module 106 of FIG. 1. Processing can refer to any kind of action
50
machine readable code that is storable in the memory of the
chical scheme couples the nodes together using parent-child
computing device and executed by a processing unit(s) of a
relationships. That is, a “top-most” node de?nes a so-called root node. Thus, the use of the terms “top” and “bottom” refer to placement in the hierarchical scheme relative to the root
computing device. As previously described, the spool storage
node. The root node includes one or more child nodes, and the child nodes, in turn, can include one or more of their oWn
55
respective child nodes, and so on. If so con?gured, child
214 can be implemented by a storage medium (e. g., hard disk) provided by the computing device. The computing device can operate using any kind of platform (e.g., as de?ned by the operating system and/or other softWare con?guration of the computing device). In other Words, in one implementation,
nodes can generally inherit properties associated With their
the functionality and associated formats to be described
respective parent/ ancestor nodes.
beloW are speci?cally con?gured to operate on different com
Generally, the structure 208 is a logical concept that may or may not map to actual parts of a document to be rendered.
That is, each node may be considered an object. Certain objects may represent actual parts of a document to be ren dered (such as various image resources and font resources). Other objects may not have a one-to-one relationship With parts of the documents to be rendered. These latter types of nodes are therefore analogous to folders in a ?le hierarchy;
60
puting platforms, thus de?ning a standard approach that has Wide applicability to different technical environments and Which thus serves to facilitate interaction among different technical environments and associated users. In one case, the target entities (220, 222, . . . , 224) can be
65
implemented as devices Which are separate from the comput
ing device Which implements the other components (210 218) of the system 200. The computing device can be com