diff options
author | Mehdi Houshmand <mehdi@apache.org> | 2012-07-02 13:23:46 +0000 |
---|---|---|
committer | Mehdi Houshmand <mehdi@apache.org> | 2012-07-02 13:23:46 +0000 |
commit | ab426a49d46ec69b80e6accccd537522477df5b3 (patch) | |
tree | a4a4550b9d329c7a7eae6a8d00861f373911c081 | |
parent | c9f6e74ddf229f879ea7df1b389d6018286ca1aa (diff) | |
parent | f5a033d38f700d70bbf679d87d535b37438c9ebb (diff) | |
download | xmlgraphics-fop-ab426a49d46ec69b80e6accccd537522477df5b3.tar.gz xmlgraphics-fop-ab426a49d46ec69b80e6accccd537522477df5b3.zip |
Merged in trunk@1356161
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/branches/Temp_URI_Unification@1356212 13f79535-47bb-0310-9956-ffa450edef68
48 files changed, 667 insertions, 601 deletions
diff --git a/examples/fo/advanced/cid-fonts.fo b/examples/fo/advanced/cid-fonts.fo index 526ebea06..cdcb4737c 100644 --- a/examples/fo/advanced/cid-fonts.fo +++ b/examples/fo/advanced/cid-fonts.fo @@ -369,7 +369,7 @@ This font contains no embedding license restrictions </fo:block> </fo:wrapper> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="50mm"/> <fo:table-column column-width="50mm"/> <fo:table-column column-width="50mm"/> diff --git a/examples/fo/advanced/giro.fo b/examples/fo/advanced/giro.fo index 5b5422ec9..9f1a6723a 100644 --- a/examples/fo/advanced/giro.fo +++ b/examples/fo/advanced/giro.fo @@ -32,7 +32,7 @@ <fo:block-container absolute-position="absolute" width="100%" height="100%" border-top-color="silver" border-top-style="dotted" border-top-width="0.13mm"> <fo:block/> </fo:block-container> - <fo:table space-before.optimum="1in div 12" margin-left="2in div 12" margin-top="1in div 10" font-family="sans-serif" font-size="7pt" color="green"> + <fo:table space-before.optimum="1in div 12" margin-left="2in div 12" margin-top="1in div 10" font-family="sans-serif" font-size="7pt" color="green" table-layout="fixed" width="100%"> <fo:table-column column-width="8in div 10 - 2in div 12"/> <fo:table-column border-right-style="solid" border-right-width="0.5mm" column-width="36in div 10"/> <fo:table-column column-width="5in div 10"/> @@ -107,7 +107,7 @@ <fo:block>Från konto nr</fo:block> </fo:table-cell> <fo:table-cell border-bottom-style="solid" border-bottom-width="0.13mm" padding-top="6mm" display-align="after"> - <fo:table height="3mm"> + <fo:table height="3mm" table-layout="fixed" width="100%"> <fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> <fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> <fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> @@ -182,7 +182,7 @@ <fo:block color="black">16.6.2006</fo:block> </fo:table-cell> <fo:table-cell border-bottom-style="solid" border-bottom-width="0.5mm" padding-left="2mm" padding-top="4mm" font-size="10pt"> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="0.5cm"/> <fo:table-column column-width="2cm"/> <fo:table-body> @@ -201,7 +201,7 @@ <fo:table-row height="13in div 12 - 5mm"> <fo:table-cell number-columns-spanned="4" padding-left="40mm" display-align="after"> <fo:block> - <fo:table height="5in div 12" margin-left="2.5mm" margin-right="2.5mm"><!--105--> + <fo:table height="5in div 12" margin-left="2.5mm" margin-right="2.5mm" table-layout="fixed" width="100%"><!--105--> <fo:table-column column-width="0.5mm"/> <fo:table-column column-width="0.25mm"/> <fo:table-column column-width="0.25mm"/> @@ -950,7 +950,7 @@ </fo:page-sequence> <fo:page-sequence master-reference="A4"> <fo:static-content flow-name="xsl-region-after"> - <fo:table space-before.optimum="1in div 12" margin-left="2in div 12" margin-top="1in div 10" font-family="sans-serif" font-size="7pt" color="green"> + <fo:table space-before.optimum="1in div 12" margin-left="2in div 12" margin-top="1in div 10" font-family="sans-serif" font-size="7pt" color="green" table-layout="fixed" width="100%"> <fo:table-column column-width="8in div 10 - 2in div 12"/> <fo:table-column border-right-style="solid" border-right-width="0.5mm" column-width="36in div 10"/> <fo:table-column column-width="5in div 10"/> @@ -1025,7 +1025,7 @@ <fo:block>Från konto nr</fo:block> </fo:table-cell> <fo:table-cell border-bottom-style="solid" border-bottom-width="0.13mm" padding-top="6mm" display-align="after"> - <fo:table height="3mm"> + <fo:table height="3mm" table-layout="fixed" width="100%"> <fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> <fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> <fo:table-column border-right-style="solid" border-right-width="0.13mm" column-width="0.2in"/> @@ -1100,7 +1100,7 @@ <fo:block color="black">16.6.2006</fo:block> </fo:table-cell> <fo:table-cell border-bottom-style="solid" border-bottom-width="0.5mm" padding-left="2mm" padding-top="4mm" font-size="10pt"> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="0.5cm"/> <fo:table-column column-width="2cm"/> <fo:table-body> diff --git a/examples/fo/basic/images.fo b/examples/fo/basic/images.fo index 3bb864fd8..daabcd31b 100644 --- a/examples/fo/basic/images.fo +++ b/examples/fo/basic/images.fo @@ -31,8 +31,6 @@ odd-or-even="even" /> <fo:conditional-page-master-reference master-reference="right" odd-or-even="odd" /> - <!-- recommended fallback procedure --> - <fo:conditional-page-master-reference master-reference="rest" /> </fo:repeatable-page-master-alternatives> </fo:page-sequence-master> </fo:layout-master-set> diff --git a/examples/fo/basic/tableunits.fo b/examples/fo/basic/tableunits.fo index aca927c4a..1a1c8c9e1 100644 --- a/examples/fo/basic/tableunits.fo +++ b/examples/fo/basic/tableunits.fo @@ -67,9 +67,9 @@ <fo:block space-before="12pt" space-after="6pt">The next table has width=100% on the table no column widths specified on the table-column element.</fo:block> <!-- table start --> <fo:table border-collapse="separate" table-layout="fixed" width="100%"> - <fo:table-column background-color="yellow"/> - <fo:table-column background-color="blue"/> - <fo:table-column background-color="green"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="blue"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="green"/> <fo:table-body> <fo:table-row> <fo:table-cell display-align="before"><fo:block>Some text to make this cell @@ -83,7 +83,7 @@ <fo:block space-before="12pt" space-after="6pt">The next table has fixed column widths=13cm, ipd.optimum=12cm and ipd.max = 100%.</fo:block> <!-- table start --> <fo:table border-collapse="separate" - table-layout="fixed" + table-layout="fixed" width="100%" inline-progression-dimension="12cm" inline-progression-dimension.maximum="100%" > @@ -122,8 +122,8 @@ <!-- table start --> <fo:table border-collapse="separate" table-layout="fixed" width="70% + 1cm"> <fo:table-column column-width="from-parent('width') div 3" background-color="yellow"/> - <fo:table-column background-color="blue"/> - <fo:table-column background-color="green"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="blue"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="green"/> <fo:table-body> <fo:table-row> <fo:table-cell display-align="before"><fo:block>Some text to make this cell @@ -140,11 +140,11 @@ </fo:block> <!-- table start --> <fo:table border-collapse="separate" - table-layout="fixed" + table-layout="fixed" width="100%" inline-progression-dimension="15cm"> - <fo:table-column background-color="yellow"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> <fo:table-column column-width="3cm" background-color="blue"/> - <fo:table-column background-color="green"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="green"/> <fo:table-body> <fo:table-row> <fo:table-cell display-align="before"><fo:block>Some text to make this cell @@ -159,10 +159,10 @@ The next table specifies neither width nor inline-progression-dimension. </fo:block> <!-- table start --> - <fo:table table-layout="fixed" border-collapse="separate"> - <fo:table-column background-color="yellow"/> + <fo:table table-layout="fixed" width="100%" border-collapse="separate"> + <fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> <fo:table-column column-width="3cm" background-color="blue"/> - <fo:table-column background-color="green"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="green"/> <fo:table-body> <fo:table-row> <fo:table-cell display-align="before"><fo:block>Some text to make this cell @@ -178,11 +178,11 @@ specifies a column width of 5cm on the middle column only. </fo:block> <!-- table start --> - <fo:table table-layout="fixed" border-collapse="separate" + <fo:table table-layout="fixed" width="100%" border-collapse="separate" inline-progression-dimension.minimum="10cm"> - <fo:table-column background-color="yellow"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> <fo:table-column column-width="5cm" background-color="blue"/> - <fo:table-column background-color="green"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="green"/> <fo:table-body> <fo:table-row> <fo:table-cell display-align="before"><fo:block>Some text to make this cell @@ -194,17 +194,17 @@ </fo:table> <fo:block space-before="12pt" space-after="6pt"> - The next table specifies inline-progression-dimension.minimum="10cm", - inline-progression-dimension.maximum="17cm and + The next table specifies inline-progression-dimension.minimum="10cm", + inline-progression-dimension.maximum="17cm and specifies a column width of 5cm on the middle column only. </fo:block> <!-- table start --> - <fo:table table-layout="fixed" border-collapse="separate" + <fo:table table-layout="fixed" width="100%" border-collapse="separate" inline-progression-dimension.minimum="10cm" inline-progression-dimension.maximum="17cm"> - <fo:table-column background-color="yellow"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="yellow"/> <fo:table-column column-width="5cm" background-color="blue"/> - <fo:table-column background-color="green"/> + <fo:table-column column-width="proportional-column-width(1)" background-color="green"/> <fo:table-body> <fo:table-row> <fo:table-cell display-align="before"><fo:block>Some text to make this cell diff --git a/examples/fo/build.xml b/examples/fo/build.xml index 2c7c18259..de83b945c 100644 --- a/examples/fo/build.xml +++ b/examples/fo/build.xml @@ -127,6 +127,7 @@ </target> <!-- =================================================================== --> <!-- Compares new test pdf files to reference pdf files --> + <!-- N.B. All comparisons fail due to differences in /CreationDate --> <!-- =================================================================== --> <target name="comparePDF" depends="newPDF"> <compare referenceDirectory="${referenceDir}" testDirectory="${testDir}" filenames="normal.pdf,table.pdf,list.pdf,link.pdf,border.pdf,images.pdf,extensive.pdf,readme.pdf,fonts.pdf,bordershorthand.pdf,character.pdf,corresprop.pdf,hyphen.pdf,inhprop.pdf,instream.pdf,leader.pdf,newlinktest.pdf,normalex.pdf,pdfoutline.pdf,simple.pdf,textdeko.pdf,tableunits.pdf"/> @@ -144,6 +145,7 @@ <!-- =================================================================== --> <!-- Starts the test --> + <!-- N.B. All tests fail due to differences in /CreationDate --> <!-- =================================================================== --> <target name="runtest" depends="comparePDF"> <echo message="Running Fop tests"/> @@ -154,6 +156,9 @@ <target name="clean" depends="init"> <delete dir="${testDir}"/> </target> + <target name="cleantest" depends="init"> + <delete dir="${referenceDir}"/> + </target> </project> <!-- End of file --> diff --git a/examples/fo/svg/embedding.fo b/examples/fo/svg/embedding.fo index dbcac747b..a4af1675e 100644 --- a/examples/fo/svg/embedding.fo +++ b/examples/fo/svg/embedding.fo @@ -794,7 +794,7 @@ XML Syntax <fo:block> Here we have some examples of how the XML can be specified in the fo document. <fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="350pt"/> <fo:table-column column-width="150pt"/> <fo:table-body> @@ -932,7 +932,7 @@ Sizing The size of the instream-foreign-object is obtained in a number of ways. <fo:block> - <fo:table xmlns:svg="http://www.w3.org/2000/svg"> + <fo:table xmlns:svg="http://www.w3.org/2000/svg" table-layout="fixed" width="100%"> <fo:table-column column-width="350pt"/> <fo:table-column column-width="150pt"/> <fo:table-body> diff --git a/examples/fo/tables/background.fo b/examples/fo/tables/background.fo index fe2cf128d..e516348da 100644 --- a/examples/fo/tables/background.fo +++ b/examples/fo/tables/background.fo @@ -30,7 +30,7 @@ Table 1: cell background </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -72,7 +72,7 @@ Table 1: row background </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -152,7 +152,7 @@ Table 1: column background </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="3cm" background-color="green"/> <fo:table-column column-width="3cm" background-color="red"/> <fo:table-column column-width="3cm" background-color="blue"/> @@ -219,7 +219,7 @@ Table 1: column backgrounds over page </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="3cm" background-color="green"/> <fo:table-column column-width="3cm" background-color="red"/> <fo:table-column column-width="3cm" background-color="blue"/> @@ -286,7 +286,7 @@ Table 1: body background </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -323,7 +323,7 @@ </fo:table-body> </fo:table> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -360,7 +360,7 @@ </fo:table-body> </fo:table> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -397,7 +397,7 @@ </fo:table-body> </fo:table> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -438,7 +438,7 @@ Table 1: table background </fo:block> - <fo:table background-color="green"> + <fo:table background-color="green" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -475,7 +475,7 @@ </fo:table-body> </fo:table> - <fo:table background-color="red"> + <fo:table background-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -516,7 +516,7 @@ Table 1: combinations </fo:block> - <fo:table background-color="green"> + <fo:table background-color="green" table-layout="fixed" width="100%"> <fo:table-column column-width="2.5cm"/> <fo:table-column column-width="2.5cm" background-color="green"/> <fo:table-column column-width="2.5cm" background-color="red"/> diff --git a/examples/fo/tables/borders.fo b/examples/fo/tables/borders.fo index a38a6b148..f6704ef61 100644 --- a/examples/fo/tables/borders.fo +++ b/examples/fo/tables/borders.fo @@ -30,7 +30,7 @@ Table 1: cell borders </fo:block> - <fo:table border-collapse="separate"> + <fo:table border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -186,7 +186,7 @@ Table 2: row borders </fo:block> - <fo:table border-collapse="collapse"> + <fo:table border-collapse="collapse" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -310,7 +310,7 @@ Table 3: column borders </fo:block> - <fo:table border-collapse="collapse"> + <fo:table border-collapse="collapse" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm" border-left-color="green" border-left-width="0.5pt" border-left-style="solid"/> <fo:table-column column-width="3cm" border-top-color="red" border-top-width="0.5pt" border-top-style="solid"/> <fo:table-column column-width="3cm" border-right-color="blue" border-right-width="0.5pt" border-right-style="solid"/> @@ -377,7 +377,7 @@ Table 4: column borders over page </fo:block> - <fo:table border-collapse="collapse"> + <fo:table border-collapse="collapse" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm" border-left-color="green" border-left-width="0.5pt" border-left-style="solid"/> <fo:table-column column-width="3cm" border-top-color="red" border-top-width="0.5pt" border-top-style="solid"/> <fo:table-column column-width="3cm" border-right-color="blue" border-right-width="0.5pt" border-right-style="solid"/> @@ -444,7 +444,7 @@ Table 5: body borders </fo:block> - <fo:table border-collapse="separate"> + <fo:table border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -480,7 +480,7 @@ </fo:table-body> </fo:table> - <fo:table border-collapse="separate"> + <fo:table border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -516,7 +516,7 @@ </fo:table-body> </fo:table> - <fo:table border-collapse="separate"> + <fo:table border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -552,7 +552,7 @@ </fo:table-body> </fo:table> - <fo:table border-collapse="separate"> + <fo:table border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -588,7 +588,7 @@ </fo:table-body> </fo:table> - <fo:table border-collapse="separate"> + <fo:table border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -628,8 +628,7 @@ Table 6: table borders </fo:block> - <fo:table border-left-color="green" border-left-width="0.5pt" border-left-style="solid" - border-collapse="separate"> + <fo:table border-left-color="green" border-left-width="0.5pt" border-left-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -665,7 +664,7 @@ </fo:table-body> </fo:table> - <fo:table border-top-color="red" border-top-width="0.5pt" border-top-style="solid" border-collapse="separate"> + <fo:table border-top-color="red" border-top-width="0.5pt" border-top-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -701,7 +700,7 @@ </fo:table-body> </fo:table> - <fo:table border-right-color="blue" border-right-width="0.5pt" border-right-style="solid" border-collapse="separate"> + <fo:table border-right-color="blue" border-right-width="0.5pt" border-right-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -737,7 +736,7 @@ </fo:table-body> </fo:table> - <fo:table border-bottom-color="yellow" border-bottom-width="0.5pt" border-bottom-style="solid" border-collapse="separate"> + <fo:table border-bottom-color="yellow" border-bottom-width="0.5pt" border-bottom-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -773,7 +772,7 @@ </fo:table-body> </fo:table> - <fo:table border-color="orange" border-width="0.5pt" border-style="solid" border-collapse="separate"> + <fo:table border-color="orange" border-width="0.5pt" border-style="solid" border-collapse="separate" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -813,7 +812,7 @@ Table 7: combinations </fo:block> - <fo:table border-left-color="green" border-left-width="0.5pt" border-left-style="solid" border-collapse="collapse"> + <fo:table border-left-color="green" border-left-width="0.5pt" border-left-style="solid" border-collapse="collapse" table-layout="fixed" width="100%"> <fo:table-column column-width="2.5cm"/> <fo:table-column column-width="2.5cm" border-left-color="green" border-left-width="0.5pt" border-left-style="solid"/> <fo:table-column column-width="2.5cm" border-top-color="red" border-top-width="0.5pt" border-top-style="solid"/> @@ -1025,7 +1024,7 @@ implementation status. </fo:block> - <fo:table border-collapse="collapse" table-layout="fixed"> + <fo:table border-collapse="collapse" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm" border-color="blue" border-width="0.5pt" border-style="solid"/> <fo:table-column column-width="3cm" border-color="blue" border-width="0.5pt" border-style="solid"/> <fo:table-column column-width="3cm" border-color="blue" border-width="0.5pt" border-style="solid"/> @@ -1090,7 +1089,7 @@ fo:table-cell level. </fo:block> - <fo:table border-collapse="collapse" table-layout="fixed"> + <fo:table border-collapse="collapse" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -1159,7 +1158,7 @@ Check the FOP compliance page for current implementation status. </fo:block> - <fo:table border-collapse="collapse" table-layout="fixed" + <fo:table border-collapse="collapse" table-layout="fixed" width="100%" border-style="solid" border-width="5pt" border-color="yellow"> <fo:table-column column-width="3cm" border-style="solid" border-width="3pt" border-color="black"/> @@ -1264,7 +1263,7 @@ the border properties differ only on color. </fo:block> - <fo:table border-collapse="collapse" table-layout="fixed"> + <fo:table border-collapse="collapse" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm" border-style="solid" border-width="3pt" border-color="black"/> diff --git a/examples/fo/tables/break.fo b/examples/fo/tables/break.fo index 81325c4ed..91559699d 100644 --- a/examples/fo/tables/break.fo +++ b/examples/fo/tables/break.fo @@ -34,7 +34,7 @@ Table 1: basic break after with next </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -81,7 +81,7 @@ Table 2: basic break before with next </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -128,7 +128,7 @@ Table 3: basic break before a keep with next </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -175,7 +175,7 @@ Table 4: basic break after a keep with previous </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -222,7 +222,7 @@ Table 5: basic break after a keep with previous </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> diff --git a/examples/fo/tables/headfoot.fo b/examples/fo/tables/headfoot.fo index fd0a14590..4401a2c77 100644 --- a/examples/fo/tables/headfoot.fo +++ b/examples/fo/tables/headfoot.fo @@ -30,7 +30,7 @@ Table 1: with header </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -311,7 +311,7 @@ Table 2: with footer </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -592,7 +592,7 @@ Table 3: with header and footer and keeps </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -888,7 +888,7 @@ Table 4: cells spanning columns </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -940,7 +940,7 @@ Table 5: cells spanning rows </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="48pt"/> <fo:table-column column-width="48pt"/> <fo:table-column column-width="48pt"/> @@ -1054,7 +1054,7 @@ Table 6: table with header and multiple body's </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -1242,7 +1242,7 @@ Table 6: table with footer and multiple body's </fo:block> - <fo:table> + <fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> diff --git a/examples/fo/tables/keep.fo b/examples/fo/tables/keep.fo index b369d7162..929ee760d 100644 --- a/examples/fo/tables/keep.fo +++ b/examples/fo/tables/keep.fo @@ -34,7 +34,7 @@ Table 1: basic keep with next </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -81,7 +81,7 @@ Table 1: basic keep with previous </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -128,7 +128,7 @@ Table 1: basic keep with next and keep with previous </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -192,7 +192,7 @@ Table 1: basic multiple keep with next after normal row </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -324,7 +324,7 @@ Table 1: basic multiple keep (next and previous) after normal row </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="6cm"/> @@ -456,7 +456,7 @@ Table 1: basic multiple keep with next after normal row with normal row in middle </fo:block> - <fo:table border-width="0.5pt" border-color="red"> + <fo:table border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="6cm"/> diff --git a/examples/fo/tables/omit.fo b/examples/fo/tables/omit.fo index 042f557ed..875afe77e 100644 --- a/examples/fo/tables/omit.fo +++ b/examples/fo/tables/omit.fo @@ -30,7 +30,7 @@ Table 1: with header </fo:block> - <fo:table table-omit-header-at-break="true"> + <fo:table table-omit-header-at-break="true" table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -311,7 +311,7 @@ Table 2: with footer </fo:block> - <fo:table table-omit-footer-at-break="true"> + <fo:table table-omit-footer-at-break="true" table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -592,7 +592,7 @@ Table 3: with header and footer and keeps </fo:block> - <fo:table table-omit-header-at-break="true" table-omit-footer-at-break="true"> + <fo:table table-omit-header-at-break="true" table-omit-footer-at-break="true" table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -888,7 +888,7 @@ Table 6: table with multiple body's </fo:block> - <fo:table table-omit-header-at-break="true"> + <fo:table table-omit-header-at-break="true" table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> @@ -1076,7 +1076,7 @@ Table 6: table with multiple body's </fo:block> - <fo:table table-omit-footer-at-break="true"> + <fo:table table-omit-footer-at-break="true" table-layout="fixed" width="100%"> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> <fo:table-column column-width="2cm"/> diff --git a/examples/fo/tables/space.fo b/examples/fo/tables/space.fo index c0562d8f9..e409720bb 100644 --- a/examples/fo/tables/space.fo +++ b/examples/fo/tables/space.fo @@ -30,7 +30,7 @@ Table 1: spaces around cells </fo:block> - <fo:table border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -109,7 +109,7 @@ Table 2: spaces around rows </fo:block> - <fo:table border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -190,7 +190,7 @@ Table 3: spaces around body </fo:block> - <fo:table border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -281,7 +281,7 @@ </fo:block> <fo:block border-style="solid" border-width="0.5pt"> - <fo:table space-before.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table space-before.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -309,7 +309,7 @@ </fo:block> <fo:block border-style="solid" border-width="0.5pt"> - <fo:table padding-left="5pt" border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table padding-left="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -337,7 +337,7 @@ </fo:block> <fo:block border-style="solid" border-width="0.5pt"> - <fo:table padding-right="5pt" border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table padding-right="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -365,7 +365,7 @@ </fo:block> <fo:block border-style="solid" border-width="0.5pt"> - <fo:table space-after.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table space-after.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -397,7 +397,7 @@ </fo:block> <fo:block border-style="solid" border-width="0.5pt"> - <fo:table space-after.optimum="20pt" border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table space-after.optimum="20pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> @@ -462,7 +462,7 @@ </fo:block> <fo:block border-style="solid" border-width="0.5pt"> - <fo:table space-after.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red"> + <fo:table space-after.optimum="5pt" border-style="solid" border-width="0.5pt" border-color="red" table-layout="fixed" width="100%"> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> <fo:table-column column-width="3cm"/> diff --git a/src/documentation/content/xdocs/examples.xml b/src/documentation/content/xdocs/examples.xml index f64a0d702..6565c1b4e 100644 --- a/src/documentation/content/xdocs/examples.xml +++ b/src/documentation/content/xdocs/examples.xml @@ -39,7 +39,7 @@ <tr> <td>default font characters</td> <td><link href="fo/fonts.fo">fonts.fo</link></td> - <td><link href="fo/fonts.fo.pdf">fonts.fo.pdf</link></td> + <td><link href="fo/fonts.pdf">fonts.pdf</link></td> </tr> </table> <p>Other basic examples on the use of XSL-FO can be found in the FOP distribution in @@ -100,17 +100,17 @@ Embedding images in FO: <tr> <td>align in larger viewport</td> <td><link href="fo/align.fo">align.fo</link></td> - <td><link href="fo/align.fo.pdf">align.fo.pdf</link></td> + <td><link href="fo/align.pdf">align.pdf</link></td> </tr> <tr> <td>align in smaller viewport</td> <td><link href="fo/align2.fo">align2.fo</link></td> - <td><link href="fo/align2.fo.pdf">align2.fo.pdf</link></td> + <td><link href="fo/align2.pdf">align2.pdf</link></td> </tr> <tr> <td>scaling image</td> <td><link href="fo/size.fo">size.fo</link></td> - <td><link href="fo/size.fo.pdf">size.fo.pdf</link></td> + <td><link href="fo/size.pdf">size.pdf</link></td> </tr> </table> <p>Look also into the directory examples/fo/svg. There you find some very extensive SVG examples. @@ -132,7 +132,7 @@ Instream Foreign Object images in FO, there are more on the <tr> <td>embedding svg in viewport</td> <td><link href="fo/embed.fo">embed.fo</link></td> - <td><link href="fo/embed.fo.pdf">embed.fo.pdf</link></td> + <td><link href="fo/embed.pdf">embed.pdf</link></td> </tr> </table> </section> diff --git a/src/documentation/content/xdocs/fo/align.fo b/src/documentation/content/xdocs/fo/align.fo index ee0cc8827..06e6a2929 100644 --- a/src/documentation/content/xdocs/fo/align.fo +++ b/src/documentation/content/xdocs/fo/align.fo @@ -19,19 +19,18 @@ <fo:root font-family="Times Roman" font-size="12pt" text-align="center" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> - <fo:simple-page-master - margin-right="1.5cm" - margin-left="1.5cm" - margin-bottom="2cm" - margin-top="1cm" - page-width="21cm" - page-height="29.7cm" - master-name="left"> - <fo:region-before extent="1cm"/> - <fo:region-body margin-top="1cm"/> - <fo:region-after extent="1.5cm"/> - </fo:simple-page-master> - + <fo:simple-page-master + margin-right="1.5cm" + margin-left="1.5cm" + margin-bottom="2cm" + margin-top="1cm" + page-width="21cm" + page-height="29.7cm" + master-name="left"> + <fo:region-body margin-top="1cm"/> + <fo:region-before extent="1cm"/> + <fo:region-after extent="1.5cm"/> + </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence id="N2528" master-reference="left"> diff --git a/src/documentation/content/xdocs/fo/align.fo.pdf b/src/documentation/content/xdocs/fo/align.fo.pdf Binary files differdeleted file mode 100644 index 9e5393e1e..000000000 --- a/src/documentation/content/xdocs/fo/align.fo.pdf +++ /dev/null diff --git a/src/documentation/content/xdocs/fo/align.pdf b/src/documentation/content/xdocs/fo/align.pdf Binary files differnew file mode 100644 index 000000000..4b9413b1c --- /dev/null +++ b/src/documentation/content/xdocs/fo/align.pdf diff --git a/src/documentation/content/xdocs/fo/align2.fo b/src/documentation/content/xdocs/fo/align2.fo index d16553139..64449dbb3 100644 --- a/src/documentation/content/xdocs/fo/align2.fo +++ b/src/documentation/content/xdocs/fo/align2.fo @@ -19,19 +19,18 @@ <fo:root font-family="Times Roman" font-size="12pt" text-align="center" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> - <fo:simple-page-master - margin-right="1.5cm" - margin-left="1.5cm" - margin-bottom="2cm" - margin-top="1cm" - page-width="21cm" - page-height="29.7cm" - master-name="left"> - <fo:region-before extent="1cm"/> - <fo:region-body margin-top="1cm"/> - <fo:region-after extent="1.5cm"/> - </fo:simple-page-master> - + <fo:simple-page-master + margin-right="1.5cm" + margin-left="1.5cm" + margin-bottom="2cm" + margin-top="1cm" + page-width="21cm" + page-height="29.7cm" + master-name="left"> + <fo:region-body margin-top="1cm"/> + <fo:region-before extent="1cm"/> + <fo:region-after extent="1.5cm"/> + </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence id="N2528" master-reference="left"> @@ -59,7 +58,7 @@ Default align: <fo:block> Default align: (<fo:external-graphic width="50pt" height="50pt" overflow="hidden" src="images/fop.jpg"/>), start-before -(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="start" src="images/fop.jpg"/>), start-center +(<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="before" src="images/fop.jpg"/>), start-center (<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="center" src="images/fop.jpg"/>), start-after (<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="start" display-align="after" src="images/fop.jpg"/>), center-before (<fo:external-graphic width="50pt" height="50pt" overflow="hidden" text-align="center" display-align="before" src="images/fop.jpg"/>), center-after diff --git a/src/documentation/content/xdocs/fo/align2.fo.pdf b/src/documentation/content/xdocs/fo/align2.fo.pdf Binary files differdeleted file mode 100644 index f5a02666b..000000000 --- a/src/documentation/content/xdocs/fo/align2.fo.pdf +++ /dev/null diff --git a/src/documentation/content/xdocs/fo/align2.pdf b/src/documentation/content/xdocs/fo/align2.pdf Binary files differnew file mode 100644 index 000000000..01b8d1bfb --- /dev/null +++ b/src/documentation/content/xdocs/fo/align2.pdf diff --git a/src/documentation/content/xdocs/fo/build.xml b/src/documentation/content/xdocs/fo/build.xml new file mode 100644 index 000000000..4b4a099b4 --- /dev/null +++ b/src/documentation/content/xdocs/fo/build.xml @@ -0,0 +1,70 @@ +<?xml version="1.0"?> +<!-- + Licensed to the Apache Software Foundation (ASF) under one or more + contributor license agreements. See the NOTICE file distributed with + this work for additional information regarding copyright ownership. + The ASF licenses this file to You under the Apache License, Version 2.0 + (the "License"); you may not use this file except in compliance with + the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +--> +<!-- =========================================================================== --> +<project default="newPDF" basedir="."> + <!-- =================================================================== --> + <!-- Initialization target --> + <!-- =================================================================== --> + <target name="init"> + <tstamp/> + <mkdir dir="tests"/> + <property name="testDir" value="tests"/> + <property name="foDir" value="."/> + <path id="run-classpath"> + <fileset dir="../../../../../lib"> + <include name="*.jar"/> + </fileset> + <pathelement location="../../../../../build/fop.jar"/> + </path> + <taskdef name="fop" classname="org.apache.fop.tools.anttasks.Fop" classpathref="run-classpath"/> + </target> + <!-- =================================================================== --> + <!-- Help on usage --> + <!-- =================================================================== --> + <target name="usage"> + <echo message="Use '-projecthelp' instead"/> + </target> + <!-- =================================================================== --> + <!-- Produces new test files (function) --> + <!-- =================================================================== --> + <target name="newTestFiles"> + <fop format="${mimetype}" outdir="${outDir}" messagelevel="${msglevel}" relativebase="true" throwexceptions="false"> + <fileset dir="."> + <include name="**/*.fo"/> + </fileset> + </fop> + </target> + <!-- =================================================================== --> + <!-- Produces new test PDF files --> + <!-- =================================================================== --> + <target name="newPDF" depends="init" description="Creates a new set of PDF test files"> + <antcall target="newTestFiles"> + <param name="mimetype" value="application/pdf"/> + <param name="msglevel" value="warn"/> + <param name="outDir" value="${testDir}"/> + </antcall> + </target> + <!-- =================================================================== --> + <!-- Clean targets --> + <!-- =================================================================== --> + <target name="clean" depends="init"> + <delete dir="${testDir}"/> + </target> + +</project> +<!-- End of file --> diff --git a/src/documentation/content/xdocs/fo/embed.fo b/src/documentation/content/xdocs/fo/embed.fo index 558e9d397..6b052e0bf 100644 --- a/src/documentation/content/xdocs/fo/embed.fo +++ b/src/documentation/content/xdocs/fo/embed.fo @@ -23,19 +23,18 @@ <fo:root font-family="Times Roman" font-size="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> - <fo:simple-page-master - margin-right="1.5cm" - margin-left="1.5cm" - margin-bottom="2cm" - margin-top="1cm" - page-width="21cm" - page-height="29.7cm" - master-name="left"> - <fo:region-before extent="1cm"/> - <fo:region-body margin-top="1cm"/> - <fo:region-after extent="1.5cm"/> - </fo:simple-page-master> - + <fo:simple-page-master + margin-right="1.5cm" + margin-left="1.5cm" + margin-bottom="2cm" + margin-top="1cm" + page-width="21cm" + page-height="29.7cm" + master-name="left"> + <fo:region-body margin-top="1cm"/> + <fo:region-before extent="1cm"/> + <fo:region-after extent="1.5cm"/> + </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence id="N2528" master-reference="left"> diff --git a/src/documentation/content/xdocs/fo/embed.fo.pdf b/src/documentation/content/xdocs/fo/embed.fo.pdf deleted file mode 100644 index 6da06b559..000000000 --- a/src/documentation/content/xdocs/fo/embed.fo.pdf +++ /dev/null @@ -1,87 +0,0 @@ -%PDF-1.3 -%ª«¬ -4 0 obj -<< /Type /Info -/Producer (FOP 0.20.5) >> -endobj -5 0 obj -<< /Length 1556 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb"0W9p=9h(^KQB5D>011Kd^2(:&!s-8.0G?92NC6am<+$Zp"a8L^3ZrE?Z%8B:u_OFn)DOGr-/INIQ=q\oZh2p:3YpSJW^j5k;[E4:*BGe#CoakN"mYH!sFZ8>$).@Y@g/-!,+\,3geIX]sgn&ks8h-P:I5CJ>(?M<peVjI(+?b[S@pZ8%/ns@)HU2Lio<0CtCPX[Q)8_(<FftM:sit[&L*Ob:OKat[.EkI%ON)unFn92KJrG.J!cH<PB*A9Y6q24X,`S^&S[!UEIh+u"#V93'eZc#bITL93O^P^p,I3BHrmbEFVPF$aP[Jemg]0^JG[GBF4ZUN[?=KSW(*k#W!J+1'Bh;+g]["$p!rMJIh;uH?[:#+dG<U]5@$Jf'eIGN8iGJ0k>3srEp%+j`GFC2lVAW?-k]'A%*A+X0,Y&n>gXrgJRd8etuLIh.uop[SIXoW1(Me8(mZ+eI84[tkfD8Y2>AOP5_.60qf-b].hK50R#%EJ8&ck"-ed6),XDAZ4I/+.NABKpXVTecSBnJhE/-BIl,-QFP0P>7hC<B]QN&C.,Y8Gd*8%[k^9Hi4&$B)L$>kMsi)STHZs%$'J5nT--!YC%F5o`L74Wr:Be]r#sCZ+lgS/E:AD3,3jV\ej=Ch)Mm&T3L9Qof&akqNaE.ePBeD$+%h=PJ*s!3>n&C]igN#KOB]'j8H"aks*5=iHX3ZW>2HPS[b]*`)73_Q%NVce\!_DKr]/-Y/42K3d4X3_6^:.XnTm.M/Ws*C)U,oQ,$R7M5;IQWWpQNXEeNq$<R<Z?j3W^FmcIHJnJLtn"7q,lIV18P-__e<Fgr_6rPiH7SM(LJ5hU;;F)d'"fZPjPmA)PrUM!Qp%*M$jflJgibHB!cmc"N9.VAd;)(V]?<k_^!EQuC=90p["fud#Pn6%clf97o>-MaM&m21cZ'7XGeK>`6"O7>T<ko&E!@qO]XE0/^&3L?dC3.eQYbEX_<h1cDLEnJS=-O,Fo?4qC$r@,-5S^4!<M2Bs<$Qsaan'ESI[F:IQD.j]$*GaN/1&\A3Cq0H&Y'R;YM^/.JlhFK?K]UL7.;t8P=rd#Au7HmY>plj8g:-IOGkatB8+,OGQk;/'tf.M\ap^O]Zf]N/IY_K;_Cf\L-lRiL(u"ei;CH2-j*X=.qf*gTG=iZSQ6qr)cg<j)q4H%YZ.\Z,10D%M5;J,.L4)Jb&CAe^;<tH$=DaBI%@mQK]&)u;bP"C=,]);Y<#<---<LF5r/0+2(Jf:i@B;0YOE:@cJ;PgE8YMeBD+'tMJH7H>BtH@(6&KA0C:ed<NAL]hd<_.;BdP%K4MpV]JSDt]5SSS_HjZ5GBXA0<7Li@R\gm\NFJc%&ogoS@O[.ub!@ekBUfe=Y.td^!a":e>j%+t+a=UNaVEi.YkDdNJud0091bqd)C/fC``XJC$=&-4E!<D[FmcaPJcf8u<fEkZ?OjPcl:rlH2j2]h[<`2[_>YWO/1#n25qkWC<X.PM>_ic-+YL^(]=:7:C?abAqh?bqD4b-,1\n_j+*T5NVnRDAT6?<U@WcP17PIi#^4hB/rspg7gYM~> -endstream -endobj -6 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 5 0 R ->> -endobj -7 0 obj -<< /Length 1817 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gb"0W:N+uG(^BKA5)#"'Yd"$U8imem#OF-PR"6:/*k]utN6sEG3%4Xj7nFsp;3J?+4m;Cb/S%)3?CFKB?VSYnqb?ePK?>&Z1uIXURQk@7VtS,NabaJ,Y-fH"AbkJUs)n(bDSLTWQi$]3.r%#RgR?#YrF>m&j5#._.Gt&lrOg7dfGe=DCLO9.JlJ#\Nu:_+'9XObCm7%pIqEiC#]3r(6ZXV,rHP^:2:!="7[p5gQd%aYoh4"?CMW%pVqf;,\4sMKf<>Y[[oqT?]$9s%n,K_VArek#gUbF!FjDL<f/M_nI7j[N(Sm.]Wjj^^X.[)1g9opE<O[0BX3jCRC#>/(H\Zt^D8g"tMc@0c>I<YL)PBJq<Yb-Gl^BiRqaf,5=oU6pl&g!lMKY/W;-W=o:>%?@\t`PT_@NNSUM//U^7dnFB>]k,gsGT'8p>p-/_"t]4N`X)^SA/n>4O8[WK$DZi:"X[8@`0iGF;K/oBJDZ9tRQ^T20MuX/In(9BX/odV^W3rKV8qhu&C&.Ui@aH`nog^">K.8!\<CbO;jA8pD*MA_f>SZl<4uYB;@Nk0tuRbZQ^4Zl`RW%CQc6l9V>:g\X^LPnhTI(tXiC5P1&O>dih=]W7P0+tFD=.[%`'UfWeAOpP4=dVor(_H")Q=5iGu?005^2='PfY.j8J=(&-[];:<l9bJ,&#hDj."`%!AYQ@k@$<R<Z?sPjq69;_j@GTJ+k>`7n,`KdDas8\bkm\B&A4"hR1fT1/:_fus<N*KP<MaYXc)UX7DLX_9k$aN$,J&\><CpXd;FK$3aTS\ZBtt'X!@qO]XFPH\YU\Vu)St.eR@`EV"d+89V$UU:P#AMhgD3`r/kZfjOs20H@)CZo%(HJMi"k+">B%2tDAdYA`K1Sda):WQ;.YHi:?tGNSg5X.4ecbW9V!N#'S<B)'s>DR\-c<hmODkpY$"i\dtAg/Ar1e%#oi@`P/N$La-;XJaci0JKto3`"g?i!]RnbCo.$QBCOt*6.:L?"KM>*j=-Y$X,X&#FPY<*N9aZGQn-WL<.sM6$CZe\5cE7=W(ZpJ.6/"Y,KQRN)PJi,BKk(lkffCYd>!XZP"g+F4['#tNb0soB]CI].`JJ$#/^9_Q\FLn"+mCRiUL`Z"CJkGNJlhFK?GS.:>s#6[Hb1&@?()XK^4M2BZ*,oS9LsJ(`@./D2(]8Ei@B;0YOE:@Y2*0Q]NkoZ/kuj+,'5q+XHLMT,b>rMPKCr*@3P+I?GS.:"g?j,mCZ'Ym@*'X=+=PH)to%WGsV)l\>r8sj/sOC"]p_r\of,GA;.+H's^0W[EIir]<[S6Z`l&V$F><sVH>)o:D+>(*`=mgV@L0aKjZEIKrqQo[_gV'gWGqjlRK%F1W!Bq+pYQ6,V^J,-0:n4_Uc(NCk]!q't1t[fXc61"a>,!D']\<G9=2?le#JE2Yh5Y,q?c(\&BGM>B?a8_H-VhA(.Qi,aB[Mh<MIJrU<u4p8@NPg4a!]HUU%C"C_!=2A_5k-70un,]&]=]dZ\`!H,[^\,ePH#2F!L4!5Am3d=S.rtet1DeYBZ)9"mCOX)8!]qp+@9YE#Q$:.bW$=0>UFG6l5f<tDUW7J+S>o.&e<C*#%OfU<09Lr])D44.H_C$c8=Wo;+Krg@NZE@KaJDf0nF]6C[:nh/r=d&F?+,c5>K),#!I2T6r<l$7f"fl$RmAr(?41i![XCmel?e:;s#lD"fc\IkNRhp:0Qc#fjKD<PeD8,\(cFYa5L\!.0])1S''m`&lNLkFP?K+K&a,A18gZeADJ+r!>R/Z're+oUP&g(8R_^!@;&u7($?83Z%nS$eZO5XGIU386~> -endstream -endobj -8 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 7 0 R ->> -endobj -9 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F5 -/BaseFont /Times-Roman -/Encoding /WinAnsiEncoding >> -endobj -10 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F7 -/BaseFont /Times-Bold -/Encoding /WinAnsiEncoding >> -endobj -1 0 obj -<< /Type /Pages -/Count 2 -/Kids [6 0 R 8 0 R ] >> -endobj -2 0 obj -<< /Type /Catalog -/Pages 1 0 R - >> -endobj -3 0 obj -<< -/Font << /F5 9 0 R /F7 10 0 R >> -/ProcSet [ /PDF /ImageC /Text ] >> -endobj -xref -0 11 -0000000000 65535 f -0000004058 00000 n -0000004122 00000 n -0000004172 00000 n -0000000015 00000 n -0000000071 00000 n -0000001719 00000 n -0000001825 00000 n -0000003734 00000 n -0000003840 00000 n -0000003949 00000 n -trailer -<< -/Size 11 -/Root 2 0 R -/Info 4 0 R ->> -startxref -4261 -%%EOF diff --git a/src/documentation/content/xdocs/fo/embed.pdf b/src/documentation/content/xdocs/fo/embed.pdf Binary files differnew file mode 100644 index 000000000..59dec7763 --- /dev/null +++ b/src/documentation/content/xdocs/fo/embed.pdf diff --git a/src/documentation/content/xdocs/fo/fonts.fo b/src/documentation/content/xdocs/fo/fonts.fo index 12e176eba..0c2646d05 100644 --- a/src/documentation/content/xdocs/fo/fonts.fo +++ b/src/documentation/content/xdocs/fo/fonts.fo @@ -18,32 +18,32 @@ <!-- $Id$ --> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format"> - <!-- defines the layout master --> - <fo:layout-master-set> - <fo:simple-page-master master-name="first" - page-height="29.7cm" - page-width="21cm" - margin-top="1cm" - margin-bottom="2cm" - margin-left="2.5cm" - margin-right="2.5cm"> - <fo:region-body margin-top="1cm"/> - <fo:region-before extent="1cm"/> - <fo:region-after extent="1.5cm"/> - </fo:simple-page-master> - </fo:layout-master-set> - - <!-- starts actual layout --> - <fo:page-sequence master-reference="first"> +<!-- defines the layout master --> +<fo:layout-master-set> + <fo:simple-page-master + master-name="first" + page-height="29.7cm" + page-width="21cm" + margin-top="1cm" + margin-bottom="2cm" + margin-left="2.5cm" + margin-right="2.5cm"> + <fo:region-body margin-top="1cm"/> + <fo:region-before extent="1cm"/> + <fo:region-after extent="1.5cm"/> + </fo:simple-page-master> +</fo:layout-master-set> +<!-- starts actual layout --> +<fo:page-sequence master-reference="first"> <fo:flow flow-name="xsl-region-body"> - <fo:block font-family="Helvetica" font-size="14pt"> +<fo:block font-family="Helvetica" font-size="14pt"> Helvetica </fo:block> - <fo:block space-after.optimum="10pt" font-family="Helvetica" font-size="10pt"> -<fo:table> +<fo:block space-after.optimum="10pt" font-family="Helvetica" font-size="10pt"> +<fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="65pt"/> <fo:table-column column-width="30pt"/> <fo:table-column column-width="65pt"/> @@ -303,7 +303,7 @@ Helvetica Times Roman </fo:block> <fo:block space-after.optimum="10pt" font-family="Times Roman" font-size="10pt"> -<fo:table> +<fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="65pt"/> <fo:table-column column-width="30pt"/> <fo:table-column column-width="65pt"/> @@ -563,7 +563,7 @@ Times Roman Courier </fo:block> <fo:block space-after.optimum="10pt" font-family="Courier" font-size="10pt"> -<fo:table> +<fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="65pt"/> <fo:table-column column-width="30pt"/> <fo:table-column column-width="65pt"/> @@ -823,7 +823,7 @@ Courier ZapfDingbats: </fo:block> <fo:block space-after.optimum="10pt" font-family="ZapfDingbats" font-size="10pt"> -<fo:table> +<fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="65pt"/> <fo:table-column column-width="30pt"/> <fo:table-column column-width="65pt"/> @@ -1071,7 +1071,7 @@ Courier Symbol: </fo:block> <fo:block space-after.optimum="10pt" font-family="Symbol" font-size="10pt"> -<fo:table> +<fo:table table-layout="fixed" width="100%"> <fo:table-column column-width="65pt"/> <fo:table-column column-width="30pt"/> <fo:table-column column-width="65pt"/> diff --git a/src/documentation/content/xdocs/fo/fonts.fo.pdf b/src/documentation/content/xdocs/fo/fonts.fo.pdf deleted file mode 100644 index 85a37fd0e..000000000 --- a/src/documentation/content/xdocs/fo/fonts.fo.pdf +++ /dev/null @@ -1,160 +0,0 @@ -%PDF-1.4 -%ª«¬ -4 0 obj -<< /Type /Info -/Producer (FOP 0.20.5) >> -endobj -5 0 obj -<< /Length 2756 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gas2O=aO+:'LgpN.p>dQQ0),tXf?8Xl8sh^A"4[?L]L?S.Yp(`G)J$07;CF[q0Xk,m[_:;p.hg?\%DUPMj%;2G1eG?n*DpXrcNRk=kqghM^JC4(9q#F6<M1iQEg+@rM.>kF&rk?5<4+=n+NmTMjoY'X2c"#Z%_Ip=kXFJF_B#_[H@&U`<@2^l+]E+l1pZ!Cop\)PH?hg\+B/,61.dsGk/JYH2/>>gUQl'^O&$qIgP0_PeXi&QbNt"`g=GeR$XG9Q\Vt!J+koUIg+m`>Q4&kH259:cpnuO)YE2Y+(Xr3H2XcdDe8Lq]_jXK4.1I\07P#'<[L&Tb:eD$aQ1Beq%DbJ9R`Fs?_!J[FZFa!bf^reYKF[C8A"tK/EcFDnJ:3"S@aEl4-6r5g`7ZS"h?/HmND$@jL1SjK>\"VRr[p,&g'EraP7s/X*K!&QFTB@f-"GBg`c-Q5TXJ(OS?p@pG-s6q\pYrAaYZS2aQkBmZ@1P5]10$OS?4MDT]N!OS<rahNW)"+n(nG\QbDAD^"QiaC@7)(@p=74Hso*+n#NSI6%$;nihZ</a(tWhC"DsEpbO?rEYLhR60L.$HS4N*V01Na;^O/jSeAVgob2UOSAK8*bFc$pCBM1AF>QR%mfVpmZ@1(5i0Z=+n$M*gm)sTOS;O9DTfS;aSVkX2s&gXjSdfFgoS]0HcZ(s+CCCTpQ5,tON2D0*qK<@aA)011uohL?]\T5a@"t%,e`]/LWFs6H3#3#RK&`J6:;k]J"?4`6lo6U"8'`(*b'V<5R'PD*eJm*oKktfP5c!UKo.u\s'*nZ('VeYGGH$-$5!2@U_b]lOT+]?04Yb>rjPHPBG;Th5Cd(n-pReQP$[&p5QTX`^!KW,!k:mL_4pu6n0@1ONrg$24jj]\"Xnnn82#W1TE'Ef]c^4'!k;$P@AEo!56AMb;Ln[0+MCTLJG_VW]jO`kr;T*0iM6bTs-<3X8eLXo)sN'@,38b9klm=rjSpt!Kp<kCs*)m!/4IY['@86]7EGKNU_d9nOT25S(LDu\s$'(.^_@slJ!"&n.74%6-G:O#K`(j;H=<ZVq>ZfR!_j9tru^KZRPp8B"5E*hD.fR'["/K0$b`fV$_aI-UbGs8SLn%O6#@a#a[0o_fg7*%"'J;5H>gtB6;ebYA$XIN>IG*3g-?jGL#1XkKb2dh:@6Wubr&]2<GgsRDE[B@P19c2R4N#)Pccp+c=B4fTnKhI=6S6$?J$t3QI?$nQ7R-Vfg7Z6"+OpHKaotE#\nMOQhDO.a?jR@_ls@dC:4]3l7hQjLRKfJ\N1.Gd%TkY'Y?C7H_@&^G]aksTOH.^_Hn7;4j[L`IWZM$5^T1-em[2Um=dl/LLH7N(Wp/,L-<sk.#N-ap5"&=1tH*f,OL0d=U0G<P6L?-10KB\&SWm4b<#!J8:.%@el,qOQN1P>E7Rrp\;']Dq5gL.E"22g,$Icji>UDXV6lij_DSh>!bsmkKkk?TPgt*F$eNa3.'E6m(TsIF:h&ai0:\`L:h]0o0@Hn"Z4Lp>W@sd8]hih:W@sd8]hj%@W@sd8]hj7FW@sdX]b#qaW@sd8]hj[RW@sd8]hjk2YV.QpKu2VqI:6hCPii8;$VPi?82jp`=P=.Z\cM]FdU"?S%G2J_p-RGM^qR%_(P6i5p4]?V:qRaO0-'A5in]-5iFjkYmfr+d7sgqS2dfuPg'bm3!W0a]?7=Y>fGBSA6Les/^2UFqMK]0rKql=X]Gn+/>1sA']+Oq73^.'^_7L<VU,kIt5Q;eYLj`,@+0pUYh2$JV*?VS@i8'3;;&paaL#CdCI8M",ZA%5mLj`,@+0pUYh2$JV*?TG?MK^<=7<O"!(4p`Tp-j+Oa;0AO,PFQKI)m(TG9cfMFaV7GJp/I5Kr;U\]Gn+/Wr#5n&A/se0<4n<[Lg*@YV3$R7CEc?S$4QGqo-iInSZ4XW9tJT6L\m0^8UH9fg>1G_S2u:(YM.EDSj,dmMFPCn8?+WW9tJT6L\m0^8UH9fg>1G_S2u:(YM.EDSj,dmMFPCn8?+WW9tH`$cT^aqkCZ/A.-5c$2^I.?XsP\]*\A/\mJtU_7L$NU:O]B$c0F]qkCZ/A.-5c`mBo4#I^A5Ca+Cr9^pb<]k#;5Jp<9KV]=,\K%hH1QV?oF>.oUFR4.3oYOU=J]l;.A!d_rkDd4#rAeRJDA:dmcl;_LU&_LmC)Fn&gG-Zt_?=WM*\ZH,`RgAN:`o*FfYa%ocq2u'@V(:?D-3AV;"@l]oF>a`t9."o3XZ1W>U>VA3n>KP3n$7eC?S]I^<&gID"TFPjDJTL;fgP<_RGc(c=28Y#lCM+ZK'J/Y9q:VXI>B>?d%2Wg-54TuF^`?<7e_R"'9mqY1/STV;<<,"NE$Zd-Fg>23A6jih%P+u5?.`Q"PFI+s'tZ2ioFb/G)!V!4POK$Y.#KpgV7rSpuo9+[>.8]*b5XST6W59[<2(ShO[$rp'3YX&jGo!9J#:K?4NTQ1JK:ZDI*gFH!C/Dh9N([,B'Wk<;UquIH&M:l7fE=&%pRn*TtuLH+3^sZV8W]GGf(pF_i,55<YL:F5&mJ>NtD*>T)>jdG.>hO64UG[SQ$do'7Ebd;9uLXlME+0!j:rQWqS4kAp0"8VX^&cbDBrp\]/_g\:X//F^Y+,M^#r5@]95q9'I6W/ag5ns;XcclT*uj'U*;K*"(#%KCI=*L+Xhqu+(VAY::H&:ETgJWBA$n<HcS3^TI0EoiL9NmK8R*;O-<,P9,m2nj=*,;dSX-baVo,F$B.$fAJ/pHP_$<5J~> -endstream -endobj -6 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 5 0 R ->> -endobj -7 0 obj -<< /Length 2935 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gas2O=-jma'SPBB.u%SN_RLo"U`"2C^gpR<OtetcAE%Mt#"GslqY'^#I]5BohPsK0gZn=qd^@Wo9XjJ6B:iGoG+W(r].X%:]@cK]+m`ZsHPb]0m-EK^="`BQb8q_=\pMg#gP@?jrVt48.p$r`m*;b8p^g'q&b&j&msU$7gA(OFhY/=DCr>]H\8rsDC;V+n\@!W1DSmP!\1o:WBuBZFn%'.G[c,iln8L?&E7_MV*Pg^/KUXmT!'HLWF1)Oe!;E>VS86"__#%#PY&D4)J@e^%cF;aRi3lUU$Z1+g\1(G@@N-?hhNb*^i:oYYmZ440*#SY\n0k:=^HVkj+K>OY57DKaWWU"#!q9Mq#C_.:i(d5VIX_da<`B<QIiRCD<*^#`IfeP6WOa/K5.';IYuG!>INJT>-rnlOh^<r0;KY.tI0R27<S)l\(P)7Vl?_ss$?0(HXp;^+$#j+KXp;^+"`RD?Xp;^+%Id+l#CaGEL:a4Z%fH;7^^m/#nGBNlO.n])qf;c3U,qf@o)S5JFl<!1!:EJ0H1:]h!4Sfi4S\k$J=BGZ*rQ!m^q3Ke*rQ"0)fC_5l9+k?%,cn=FWUJ[Wk_?ubu3pp2t%;a9!no_]M!JueK0tH*oWqq#E[7.KU5j_5W^&!?@$_onU*lP.FnOLo+BrX=U1&7a+2cV*C)hJ#VY!p^k)"^iMBca3&*TC]X6u)8&f1pQ[0\1bkR^td]W`m)IF%^$?gquj%I6^_[^X%Hpr:ZfE(pM2;klP#OqaPKU7iB_#N:)?<VLTs*mO`WS%m]s#o>;B1MIk9u9QNNo9pZ#VSn6K)^<G]N"8(rr7iEd^:=ps(B,_foG"j?O/<%4+dKN&ROaG"TSKoGj3rpr;R_pV/Sros6kW-`Z;nqIh5p9G6IsG8U0LT&cDYFiMCW,i4j?fl[%\]TuD?Y$RQ3dd:<S5hZLAB;<XGq;b-p2^kdh6=#HC49)&Bm9GG(@aV7Xk#I%^4d$7>&O>9"M,85d6D)-eZnpr^,l#3;X;EiI5ep>i"'_;@,R4(TB>0[@lB;-MSBL*`UTSZ!X@7,D34eaQ\l69.t9cm4K6$8;=UoBERMkIZ&'N3LPe4!>BA.%Se,O-JQ/i&,[p(;EZ<>V&i>5O,eLoQA,+iSjt>t!+pG4uTS4&M(l[(_S4hhcr,TacI(#+$`/(L#fG-unFQ,@+uDTBI87*U,nkr']_(lUViGjsN2[>XuBP69ijXP2_HLUsi,((TnugBW[mT03h#Yct5L>?FZ#;U#g`t]PrUIU&BG7]PrUITbW'O]PrUITe1bg]PrUITgaI*]PrUITj</B]L[f2;+TN8-nh)6?"i8j-nh)6?"iJp0eY*B6@8`kH!s8\>5`*X$VS(Xp-3%n=OMm5!&Nbk-!f^C0OnEkdY3\^1ZjB[?-"9F@pW9cKh_\*k(P$ckThil?9$Ae:'*66Kd0me,VW_737<LU!]/tm,@0LY0OnEKdY1Et1ZjB9?0EOf@pV.EKhMOUk!`(Wcq.W]]VsuB9HfV8JpC5<WQqu^oa=Bm)JLs\9EGSoWu>\-KhMOU8uikE15/C'$VJUCZnd>/!XhWDX0aX99EGSobH&!*KhMOu8h6jI15/C'.nV=jZq_;r$*5PW5e><6@)\lhO=kVf=RddHU^N^r<]l8>;)_Fp,d?9*</nJW67.6uO.pC=bnMo>XEYFZUMcrj8RTN4W#Be7KhMOuk!_/mSg\[n=>;J/;)_Fp,d:`a<24?.O@`j!]Vn<U9HfV8MKr'Y\sYl3JJIdN)Kdii9ELcYf?NKe.e8uqAq<@%$d7gWcQk7TFGAYCVOn"A+nIrC_$+`,G"s;D&Tic9pkaYFXNgs*"P4gICm%A#.S(hp&?-"0-BYj31Iq?X=)3=[,*P<*Z,#%mb[qKU%;]ZR-WMhG,VgAc&mT9Tbrh32I#png='Q2>R7&BT7"X1.C?.F<k_tToE;s#,Gqt4M$&Je744WDX8RtRe,cK@1G0;-d.3oO*Cpbt>,VgmGs#<J6[I;3_1+aaaN.Pg)P=_i*etRAg@5O/b<NO/^GI7Ip,b6ENDB5W;+iW`rO@W3Qe`J6C*)s1b'/`2ZP!i0Ki<Pi"gM<kC-0+uG+oarT\p'C!_V"a8q5/([](u/]Ri-@mfD$)G:-[dJ5K3#^+a!Nmq!Xi!aT(6&:JkY`)n9b&mf[m`7IN-Rf7r/dnBUKNgq`eFr9cJu*;r'i%G\GOpAk,QIZ`AT(Y\B%!0;SYgci=%L>NC.1c:`hUH>jAo^.?(^#!Y!h%B/Gm=e,PlaICCB]J(+$^2&e^O:?:)\1b3R$:3Oqs^I@*59*?-L;8tLGu^$nEkqo_Z%&nG"Wbahd.;_hJAh>g.&uX(PfN0Rg8\+#1dJ_o&BAS@e8@pfUY4=LjQm^C_#6\05i.Q4?2I\_FrU-YfuEdQalSDR5YC)H/l^sDZX5Ia+J$],.o1]#Lg=[G_mCNXuS]o!XTkX^7i0<)EJpu6[)HdF?EZ\m\Xaa">CAB:"@l&?lutLWjreY5]eqbK."H[8U")ZGljM&F>['m-bt"!2cD#L!k9=*VO$0S_#/L32(s;&Hj7sS\ZN<(R6pIW!;RoJ>'t)gNM+(.>AY`DKr!'$,"r]XpspQ+6&1;K?AN81N?H2.5qbV_N^f+?U7`;H)Fu)Dnq)cZRRnaFnq)cZ)G;;Go7Dl[RS4sV3PL<EiA=H-j,5mc:EpiU(L4o+L`562]&4cmUsqr5']6fjTGldV]&4KeACZKE_7+C+\/I(PE&4JM[?/@4FU'[#87F/]0j!1^bS64B$X(\RG9A\q,h>9tF4D;P'87da65FXm*QUntM7&Ga>]g9,;b1@LA2.0AJ]ngk=:88j?PmNe/S$Sb@Ao$jON7-MTdJ>W-K>nsRTKs.N*dE:@P)+HIUT13[F12]0+9/3<]ZB=IA%q;8d@,d/sO:X0eE*:@@:4JAjnnDQa9>7"16kd=o~> -endstream -endobj -8 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 7 0 R ->> -endobj -9 0 obj -<< /Length 3803 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=/BpTgY&cAe=0fD3@gQ_!gWbr-%H[Bq?nSK$`Y[E-$#ltYUY`6udmM]f;-7cEtQ,Vbc]Vh).W&c.ZU3c[qlIOe/ZuagNh:9DIG5(3dgY).YgLY0?P]f'"1YKFQHEqn\p30j>.YR\CFtY4iXLN]Ir1DrnmbQ^L)koHS`^WiIf?5Be+%G9[;Eh1K&"l%F-?rF[f#n^Tu<Piq`1%*JN^&j<gG]mKtEDD[b&h6^KPJT<i@OWN>k?@Hh+4AD$Eo]RpYbO:)SEAEOqh6LAd$7O5a$2!HTlfG=%nhcb*O7%&%r.gqmR*7gVm]^$s)CUZ1alMZ[>qc3i-kB8P2^rt:jYJA>InG_RqXsCe;!tH*jQIf7qZ=p`..QB^,1-3.Pa=Uoo]Uh^0A"C&adRc%*ROZaP`OC+H?;F@YClE+^Zj,H^&Jq6-Yk&TF?o:Z!TeqiNZK4fq\u1j3ofJP!PSLIPQthF4Z]81T7M%ObWq4!kl'\;gc:S^d/gr\!gHo%7XB/An%W*\O-;@53P#7TrE#Y>oZ!#g)h?dp%Ec"9SfHPdo_oe+T"GBjkQ[^S2aR8tbs7;,!.)B]jjBPcNt1CP/QV;fYj+srOPGViT%T;12"qj;1OkR<kWV?+bb-5S\rT]OF!q@9mLrRG/4ouTH\1ON7nGsj:Jj82.1%Ek;c(eG8d<`@%+R/'P(E?+MX$U*aZt6GUO$NO1/QjEW1H#7%-7./Wb5?Y"9&0-eMFCl_8?.4XDc?U"rm:YW1LPb%.sQ7Wb6K$"9&65eMFt'Jc>ZQlFC?F5l^jRous[OT`>%bH=g;8d/SSm4nC3Bkl6.2Ssbl^kjR4qLEMt(R=PJKKLZTt]Z`Wp"bOeM$Gd.p%"q_*Ggri,bf%^jMZn^Qh$UuWbREQ7+F)s16#\V9"%<t2*d]C?1Ggm!jg?0]JmbHf#.c>sW%YZcR=R1&"R6A4DJ#Qe!eL3")k7cOZp=,pn7hh*AcY!]3`pj$'nY,/"j&;tI[h.)3Lp>q/6I@k'nVjE"j&;tI[h.)q4.]2/6I.ebjm;UB#/MU<=%`5(*p4o\]cN+1Hl20=`G5XJpX*naXfF$(Yo!@87o]3^>KK75r&fXo`[9?$^+Y3W%YXk>*-s[6[ceQciR6VJO"Y"h9Z53@=^[l_%"cn$upiKIDJ%n*mP-(qh!Lq4e*<0p'#M,HT3Z@l3hKip2F>_e/-m^mGY_IW%YYLg;A3p;.":/["n7iUV>YUBb0B\7t&45dN6\lJGOj:V*1=b!VHUT8p`NN!pg;,PkK'&"P=O7..-!+#cKDd;;/p5&PuhRUU5gJ,+u[.7VNCr76l:;NRB,C(D6<D2bKEU?3hKW+dc-<K_%O_pb8dV"s'@7'7V2@Jf1Be<,1DgUd?c1FFZtXr/"AYAs<d%WL5u5$Gh\L!@ftu-W2+T;*$t=B)"c];*$t=B!0Vj_2QeC.Q):DSfkO?3^BNRe/-mg*M?:dl3hKo%T',Bo`[9HetL:DCG1'1"^tH2JAAZFL0k*mB$%W;VM5o$YC\I?<'Xjh(X(_FdMaIuclGp`JHs@L;ZT0Iie;NU+NuYW&C`"4bju1YCm/uTI)I3TSNs])Z6&Em06VaI@FiP)#Q$pAQ3tLQ;ZVFc,Jpri&8%OA#^jS-O&cg(TF(t;;\4trJhRR45iAbrLqsgZRA^/gT8kV6'nk8=!WkGa=PF2"N)Th/*@p]&"^tH3r5IVC&97IJ_Tc$\JYPI5iX3Qh;uqR(&RN/&0LJi*i$Fi%+K-F,;AH1jnVB5lS#QMk4&uLE$GpUZ!J)7Agi<Q)hMh)7*Br+jr9k]^c:.?kG=DG3?eO[h*1l3(rSY#;qo;JSIIQ1<0CI4k]36/NTp`2MgLm):o6Bm,E^GQ`_A1J:JRNpn_)V^`L5+0$F&Is8.QC'C;U\N'6T6C3GY,_S#&T_GcIgB50tsLB/7(9a##4ehcWLt!0tsdJ%,&/;r&n!Qhm:-qE;IBZ[c,HdS.t"q$;MD]QlF>US!.;dhc>hB2F+U>\k+?jopln_qVla_UKuq5HFp,lpn!)D?oPM>\aIa[0YXaK9\G)B&hSFT@%:^D5>Z<b/We^Y[.!.Q(b[C!A(_jh,jITuMI@3hA]rKB>W<6WSCTHS]*cgr4N:tG3SQ'M#/_oMm::T#M-TcZD(sb'3SfqEcqGY8]g3SGYM^B*1Gsg+F`5V2,:GNm1r2&>h&E`;L^MF:2B*I)h9aD<0a7eo8Q3'c6`tcg2Af$%)5\`!(XDFXg0eFpVp?\KF3&KBcj!uZE4XQS2&4F)"km?X$;MPbd*A>qGMY4p$7A(6k-h]pG->]hEW=":@nH.V&F*Sn']PAo1T&9iFp)rk:($OV#34qa#;RD*p"8l4D+$X8;aW#I;Gb]Q8kLh@1o)<>"ngfSU_Mi@%B7E>5s>#n.E2(aL6RIh*7UaeP#@7rBh1Zb$L6;G8L_[J25DEC"nhAcU_Mi")H)]]JpR9=Q_.neMXe-0<90jJSq!#i@_AHY'fd]Joa(2-I.$)F`q?`oPp`CJe75_g;N,fWU`q8lFbD`FDhISOL/_][T["*=dUsGL@f0(j.`,(_LPV.+)N=DJU`qBZFc*,n']Xb!<5bW3NY.P@@XOgl'mV6O0@U3d:C9u;Qt#eVD(tsj+Vfh_Ft_>Lj"D<K&Xd,&6>\CtC.Ld*MVSZJ_0Db!'qm("0@U3d6Og"c9sK&=2AhK4U`q_9mY0A&I&%o#\LD\Te-=rC%4Mf__pU:/8!>pP-ONb6S7;4RV%?E:PWUu9F2s/`I^TsMWIe#YVqA[T.E&,'Pc#THam>8A@j/@IQV6C@nsd9S5,G&]0pS)7OIt*Bo'uo`g9I-6@Z]L-Dt<H1Q'-I@<*kGJI`0"C.pb+[FW4CgMEu^e^WFZo<;[ZI'SCccYfY);<(q%j<d?,`iSD'cXLpYl`ME3AQ+)&/jG0iV_TL%X<W!arC>M,L6).d!X("u=[1dHtWsZ.eQNsSDYG2;sn7qSGZ;p7`)\#9qe`^)QX4TY/)iVY7dB?)C0r^^JjeWfJ=/0+7Z=6_$\&q>u$Elq612#_Jk=[N:Y=?8^C?>HX9/-dW7_^]qjmM<d?sNT1dB<s`\bl1\(kl%d?^\I1g7JUoF59VH$Elq613R6:7Ba?<U[W$j/!F%8?[Egfd*XR,(kl%d?Q$S`g8S.[MG\UUqN^k,X7*df3E(mRX3n,0?s2mMO1\!/hI%%(Q%$^<X0LDd2&PCYat6p3`5Z\A73Tb8QWpQN2:gDsXsaGK@WRH-`3HT%>#>RrOlmYKl)0:lO\P*I)=>T$/FmN'-EhZf25qs6Zo>Jc9d2ZKca:eEhJ#^L$!DPC7!AP8C6M`3esb)%o([:Oj.pE'g%igj9j[@%CJmsLb1e2IoB0/D]]/&(Un3\@S=;oir^L[e=1mFZe._DoH^p17,!1;,[E0q*ETo,qlJK'BAEU/42L38GY$!n3.rUWmcC^28n]DYRZ[,06GhYW0rpFTd=1mgeeRPoU2MitQNIL!DY$%;\.rUWm6Ib4#^@7TA$+07]M(D&SIcWYp=e/A=Dj/7/eEBuJp6sM<V=HO$/8X/S<aLp0Ap$G>]M0RXRl?"c=!Y)^A,kET2Miu$h@Q9'AKmU*p?uZmk(tX*h@N^oOiZ[FrHlH:,dOY"6WeV&,+C[fD`M1N'3Wu#+fr=#Oj+pDpP-.KA7>(aYk!Z>2L"NFRr`H[=kLA1XLoa>boQ\*>Y/I7o7jL?MF;X8]a*:[(,g*r.^)BR(YsGB9k7](VQTKI7!?tk#?`8*]W"!_MF;X8]a!4Z[WtYm@MOadU3d3TM/;dLmeg?H94Sjp/$M`YooAJ2lIPt9%SlFX~> -endstream -endobj -10 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 9 0 R ->> -endobj -11 0 obj -<< /Length 3625 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat=pl'!AO&]MNR?dW8Ah#PVEWCj1r\[H]o!-@0DJ8h!q!>kkWF(9:im::-ZV))$pbtDN\D8a(oQWhOZ:F5](rlJr"nIVTP*U\FKA3.Bt,T\</(CtWqCFP$BQ`t?"E<!c5mAHS'jeGf8m2O@]YGSnZh`Q>cg#8L>rL7GbR:UPuQr7%f``GA"MrkOnAsl"=ML"An:6X*#._o:eW*(n)KJR,*(SgLXJ2tX]-cM$^VUTi#0[gg"WgLoQPT!&B)/E>e`QW4se9D!JV\2m,bh:7*)E3^5b;P,e<QrG*<#W4GF%p(I'XP<;;WA6peeiF*bj&e4NNWH.AICrXTecGa<bd!a@*YRMl;63i9W@PVJ=0&tFWGerXg^p_9n8YoYj+8kF>Kc5[fC$a+mM,\!b]s=7\fKjJ2tTQkW3hGAkJ'O4O.3_/Sr!.\bi;Qpb'?-mA0'0]72;imfCX16;_kR]DJMSpccJuQ8#:!Phl::C&@s=c8fFsLU+OA.ZGM[R'A1_'=P]/Rprob1TBn7"PUAi"Wgs(8rZ%Yd)LelnF/24CA\s#=s(0m*RK-&\5M??#h0ctjTl[<'Xs0edJ,3n[8(O`!P=%"f9[4KC&AEk2HFX65YGn3rXM140=KZO*bBh!V=>'!g6f-VoffA'p]uF/DJXl0$:CZ0`sC2KZ+@_/AR@2bj.?UanRDsn;]$uAre3TV6aeu*l#e1ANIN2"`fVjW;dlWSp^[FC/D1)/'cp\\nQuFQGd?>s1.pSkjp5p1?WPsA7VNDm+l(),'fZRW=)&:*,M^;2'fZ^[=)&:j7_"FJ.r]B9Y1+T^JoD[$<npD>Bb7`^\<KKF<c*Q23QKcU[8WYdj36;uXf_(P1KS<&G;RUhD%,/+O#(jR#'$>VDYD@V\A'h$C(Riugh-S&Kj-Z\V8at)$/mdhBIhm"R4C.N40"LgD9U`A2u4MtqnH$]\>)*qF5+C8(%1`V=(r4i<%"*g=L])`pGlRS#c%ZEOnIJ?\/"H,b`s*b7FlBmjAreTo/KAPiZd]tol;Rq7rd[_pF)71EKTqKg:7ZQdec(')Q0*ep"MO=%JDg+Po@S0eo,?h2V@1H=)&9_>/-'#gL-Yk>ik9l6Ip)@lS`tee\3X`AGnF#0)EUkqmr;Zp"T8QpjYE0noZr9laQD,EHD!dmH^]k+l()hD=7D(I9k-nop_<)(>KMq)tR%`pRimS=pVV-F[u4PRB(aAKq>dDF[t)&0N\._3iZ9*D1(.Op)EV1L/Jst=%Dq@\W*dS_L@-Jg=OkP]jbm>lgSc,H+IkqC0t%4onp;>Y<0UMK=T^fePX$6\ZN%s_L>u:BB/=CW*V41pq"*1(@M'4DX6W:cp'><pq"*1`pp]GW7CaU1s@Dm285*B([f'9]ZSj&ToWcfnTFK:pq3@$T^H<;>oMikjr.Ss>Xs4>H"AjhMpt>alY)es?cV3.HsIZQ,N]nO8'gM"=4__oHsIZY1GIGU3oW3sd<1uPIbf[Y,O=ZO$g351odVlsFi3"Z>iY.+lf^j*EAm]:'@I\uY9U3Fs'E^um+4tQ]X#83\9L6LY$\MB2r$o4Y46YANaNs@Y9UA\2pB%\bqW0tYARe+c<R>7>kS'@qJZ)ZaCLFaFh.Fl>9A@amYC8G55;M:^RDVGAed'Bri!B`(-V]<@MD!0&8NT8/;TiD1*B2C<rc^':FLia-WUY3;W4q^ENV?#F>bfX7&9kpF4-r";aL^WWGm.j+NYj?l/t.YA:TmOVe6!MU<b6iI&B7nKHpY<'u'/s0s<G[C#V4NlX=7^7cB7*Z)3VYIIEQ8r\H$X!"bKsNI.Q455[j8aXFe+&Eab%W&hVE4oM@T'LlAP-`.fVW&hV%4ThEX)#9)\)!M]kWma&Z1E];D;5_)?doO@3W_R_=<i%M@'K_H:MmVWWdpNDKWA&@N40d-['LaC]CUm=[p%+`aS@=4Vd9Xq\_C0]r6jaBmW&_C%3sJ*P0ZnQ#0u^ARRZlR`6Rf):Ob1;(hq?gJPf!,R0lE-OOW\g@GJC:1"i+?]>/Db)Nk8LEKf9!@Thd(PNk8LEKeEJF\V)GJ:+)J@Lf33T!7BHbm-]p,!Ot6YL0SS#Ap8`($Gb2S89)(qRaX?_1jDKhnFkn\Q#`ED3PDabrNB'*]^n+d`_](>=kl@o"b&YnmADmZd$aG/Q^m[3%9eWm@s%:5TdK(:'WsL[o1s'X)P^g3$oN$[T^_S^W72ZTK4h,S49U@RcPa<+UG4e8cVP:$#R\m^L.[HQ8U,uYfL&KF!qGbPNLq=i'7:&mYF+qJXiY78cJS(eRsh13*;8XoP:DR>!ITWjpd7m1W\[Uh+K+18![9&ZSJ`n7hEmk^";)?VcO?'WpB]:0+G.H?R\<X>7gRU4+bIQXR\<VhFJEZ-g,)2ofLPC,V(oP*aA<P+#RXdML.[Gt,#FJ[VL3J=)5Zjr"DVBX6/d@;:oWt;!]A)UT^Hs&1u:Tm-6*WI]hXj4Y7RYS7g*t<;l0#"!,<_k6/Cj+Bcoq8D+Z"NH^uXGh]bl1PR-P\Vb.'%M.Eq*5oga5$C)OE6_GbY&_(5T=#+;Uj7`i/,US+(/Edfu2;Uir-8Z=ai<E@eT17iO!7^'V@QM`kj[#^GE]_<0-UKkqi5P=\M%9j4rJ4GEQ=u`G&pQSaeV'hjNqtQ`^+5qbl/kTt;]`XkB!-Pl'I-j(Qn(%MM]=TjhAaE>Vl6pfC/PacOe\2dgS9S>Z/Xr3)F$]apAIk,2ffk:hB:q=q$Q9<QUnB*??a2M)Q0qbPIYt('RT"cqcos`>i\"[o0TF'Nc`(%)T5(iF#L4e@dgttJ1EL5Mk&t;\Z1..Fhj7\`'kHFNE.LfQL2>0RqQr=D]7T'FHtjF@m47WL=/'CN6GoRY__V4cPNb4+>,FAD8md&@m481;M2L#I'tbf\;pB4j[p!A,2]Ru>/YR-k:9VK&/Ub\2Jf3H\a-'>pbW%0@>gfH@\knVWBagna]l]+(Fu?P)$"FC(.$as:hbG=h/)-rY.NL?NR9Bs1"8TDK#0O/Ti)!*Y$t<GESXqrBn4ftD"&W$SG&>NNe(WjO_j_8/tBWK2P`/nO$HG5+t+F'c4>9YT2llg>nn$fB]ZiXQ'=8iiD&6+DGI277T=SkOqOr.OSb`g-@o#!6^dQ<_!A$k/eKkj-EskoFcj3qJO,(HRfo%'Q_"FeS\TuH2484n=R'0U*cQ6'K+<l!#qYa%*tPmH"Q/uP/9>Y69>*u""0Mr=d.>s&7S_=T<?Z1+WI<qf+Y;U@5L,UWRWhq"6_H>gV&(cJ98BY_f_B%tF);!%]jIH!&$er<\KHg/8RNE#<m4g6^iD^f<Kk3RIO:>j.Y6^?07P\--Eu;&KtY<udKuutga7S(0-&cjNi,HV1NJ,A8RSC)kESeMPYVjn9jjgl9.'hE8mo$#&?\`8V>#lm"0P7(Bn=!*S%qYb(In[7WBjeQq_]P`Y4QUh4?TgQIH1"A9l&m[&4TpFI,;`Q)3%.(QLA(J_h\\)k+-:.f^OVSF%m.V>Ar>G6#$5uJXRQJ:rfBC6<+Lgco"Oe_hdXBpfFW@@0sNBBlb,2iV^`$S\p1HbJ[YL_hdV\6s$P@+>0sUC_S+s].'*q2LJT4F%m>nXCD]FYU55Nhl_fF7"o!8lml.0&9Vms\+`\t#E)-F\G~> -endstream -endobj -12 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 11 0 R ->> -endobj -13 0 obj -<< /Length 1495 /Filter [ /ASCII85Decode /FlateDecode ] - >> -stream -Gat%e6#YO:&4Z-f'`nFNG*'!T7j=r);VSgQ,.A\Q*a85ECc>(H)@>c+9oufu4l[f^3$X(O#[b5&oKA>r%%k$GqigJlY&i1HDZA_7G/'ZZcLR%^U,=BQ0#lc#0m<H[m[)C@*kVlMn'AR`I8#%-l/T,<f5CW\/q\2c*8m>CdA_d(b8%&cB&YK_)\unqBH]F-n,X[*I"tZ40:U!a-N"5_4l;qbM!_NP-N")[*LSW7`:J^<HBZ!6R#(+\Tj^W,lkel>D1.Wm@IaGM-GE8W5[?1Q9OOe$THT_f$L#hF/JG8fi]nh"$ZQhaQ]Obr@J0\cpa5q@h).I"$!&?G4sCNePDM^9Z>T:gf(85tPqi(u!*G^a/GbI)&RS*c[`g`23cc/62G#TlLFP&3!%)>K/""i1/2NjtbWmLC_8H^nAsO<=JCu:`HGL$7bVJ3kJ4Y-L:,)3qR@.X+Nr[WT1F0e1c-.s'=bZ+WE3CTj\qGFDGL7[6)6XXN1'NEL'q1h-`XMuLZG9;H6o23op^)L$?XP9eUD[6Ig`fRk$k2NmTk24_!32<8Tl=Y3Td&MK!`dCY:q/AnBUSAlJLY5=.,5as[*1KP:h:(EKptGaQ5T-'W3QV^Nm5p+iu\E(XarCTbs>l&7A)/DfJGMlOhn%qZd5&Op4c:_eVK/K&a2h,2U,5H1B'b9arJ(e%5T!Tk.osq&[&DEju*W+XR1Sp[jKmuWsljLC*.A^_(3YQ>\+MkD:ijFg*1d5CKu=r]2p7?Y8!3om^'T_N/%[<M$-2lEMtf[WJl[]m0t:]PtNeI4p\[YY$?Q+GsJl3-^_M_*cII_M[JGnU[[-XQC&bs4GN@5(W`#FV1Q8&Mb9R/&CoKTjsmQB0"fqNXuM@_6Ae=7"`rW32fm0$M/9:cB!/EIju1hR4I%#o4^TKPb_6Q:1KPPi&Cdeg@sCeR+m4+d-PI.[<Kb0tpb6XS)C"3k!3-LGF2bTu<Fl#X5a>b3[(1WR#&h)+E4'6G5FT,\1*Y."<g)DDm&ZVU,Qh2i/'7:SGo^\BJEC!-#&dkn>U:7F/e.QI<p\6MhKO<.RXS3R'+M?5Q+>$nQj`Ap]tN0M<h;%qelCi^cX?1DKhG!a"q@t_Q+>$nG%h35;/`6";0rKVd.:8/_-FL1108eA:m:R?X$)*GYcQ/UjV^G1X"mb%#'43UcWo]P6d8so=*Y!kiP(GbdPHWHB4S19%-GET,BK\o<58CQ>lF=cg;,FnRB&FPRV1_"b_?!QF+n7'oqaTgQ"_oghL@=_*+r+@$_NifAV7Ot^Wp)H_-Ed3C>WDOm&tK&PeKH6rASe_D_N"$f?=uD5ul7Q>icpKKh_-eIRMmKW-YD)\]QjugT^^,i<nJ8M"F:+)pE0QIm;2an-t8LI_EDVb;V3TfULC&c^-bDFa[MV\$(jJ5Hauhrc!+-F`V\MF1f&Smm`'YB4qe0^:eg">W\K/^]/I>/0EO>qa\iMQcF<n#B.pAVmFE4MRRYdDYGM#!>>4h*r~> -endstream -endobj -14 0 obj -<< /Type /Page -/Parent 1 0 R -/MediaBox [ 0 0 595 842 ] -/Resources 3 0 R -/Contents 13 0 R ->> -endobj -15 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F14 -/BaseFont /ZapfDingbats >> -endobj -16 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F5 -/BaseFont /Times-Roman -/Encoding /WinAnsiEncoding >> -endobj -17 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F13 -/BaseFont /Symbol >> -endobj -18 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F1 -/BaseFont /Helvetica -/Encoding /WinAnsiEncoding >> -endobj -19 0 obj -<< /Type /Font -/Subtype /Type1 -/Name /F9 -/BaseFont /Courier -/Encoding /WinAnsiEncoding >> -endobj -1 0 obj -<< /Type /Pages -/Count 5 -/Kids [6 0 R 8 0 R 10 0 R 12 0 R 14 0 R ] >> -endobj -2 0 obj -<< /Type /Catalog -/Pages 1 0 R - >> -endobj -3 0 obj -<< -/Font << /F5 16 0 R /F14 15 0 R /F13 17 0 R /F1 18 0 R /F9 19 0 R >> -/ProcSet [ /PDF /ImageB /ImageC /Text ] >> -endobj -xref -0 20 -0000000000 65535 f -0000016170 00000 n -0000016255 00000 n -0000016305 00000 n -0000000015 00000 n -0000000071 00000 n -0000002919 00000 n -0000003025 00000 n -0000006052 00000 n -0000006158 00000 n -0000010053 00000 n -0000010160 00000 n -0000013878 00000 n -0000013986 00000 n -0000015574 00000 n -0000015682 00000 n -0000015767 00000 n -0000015877 00000 n -0000015956 00000 n -0000016064 00000 n -trailer -<< -/Size 20 -/Root 2 0 R -/Info 4 0 R ->> -startxref -16438 -%%EOF diff --git a/src/documentation/content/xdocs/fo/fonts.pdf b/src/documentation/content/xdocs/fo/fonts.pdf Binary files differnew file mode 100644 index 000000000..5c84a41b2 --- /dev/null +++ b/src/documentation/content/xdocs/fo/fonts.pdf diff --git a/src/documentation/content/xdocs/fo/size.fo b/src/documentation/content/xdocs/fo/size.fo index 225adb491..1de6b0245 100644 --- a/src/documentation/content/xdocs/fo/size.fo +++ b/src/documentation/content/xdocs/fo/size.fo @@ -19,19 +19,18 @@ <fo:root font-family="Times Roman" font-size="12pt" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layout-master-set> - <fo:simple-page-master - margin-right="1.5cm" - margin-left="1.5cm" - margin-bottom="2cm" - margin-top="1cm" - page-width="21cm" - page-height="29.7cm" - master-name="left"> - <fo:region-before extent="0.5cm"/> - <fo:region-body margin-top="0.5cm" margin-bottom="1.7cm"/> - <fo:region-after extent="1.5cm"/> - </fo:simple-page-master> - + <fo:simple-page-master + margin-right="1.5cm" + margin-left="1.5cm" + margin-bottom="2cm" + margin-top="1cm" + page-width="21cm" + page-height="29.7cm" + master-name="left"> + <fo:region-body margin-top="0.5cm" margin-bottom="1.7cm"/> + <fo:region-before extent="0.5cm"/> + <fo:region-after extent="1.5cm"/> + </fo:simple-page-master> </fo:layout-master-set> <fo:page-sequence id="N2528" master-reference="left"> diff --git a/src/documentation/content/xdocs/fo/size.fo.pdf b/src/documentation/content/xdocs/fo/size.fo.pdf Binary files differdeleted file mode 100644 index 177160580..000000000 --- a/src/documentation/content/xdocs/fo/size.fo.pdf +++ /dev/null diff --git a/src/documentation/content/xdocs/fo/size.pdf b/src/documentation/content/xdocs/fo/size.pdf Binary files differnew file mode 100644 index 000000000..add8fe871 --- /dev/null +++ b/src/documentation/content/xdocs/fo/size.pdf diff --git a/src/documentation/content/xdocs/team.xml b/src/documentation/content/xdocs/team.xml index a8f0602e4..a6e2e51c9 100644 --- a/src/documentation/content/xdocs/team.xml +++ b/src/documentation/content/xdocs/team.xml @@ -58,7 +58,7 @@ recent XML/XSL-FO convert, he has been nit-picking FAQs & assorted web pages since his first webmaster position @brain.com in 1996. Most important creation? He's got a couple of cool kids.</li> - <li id="jm"><link href="mailto:jeremias@apache.org">Jeremias Mï¿œrki</link> (JM) + <li id="jm"><link href="mailto:jeremias@apache.org">Jeremias MÀrki</link> (JM) is an independent software engineer and consultant from Lucerne, Switzerland. He's also the creator of <fork href="http://barcode4j.sourceforge.net">Barcode4J</fork>. See his <fork href="http://www.jeremias-maerki.ch">home page</fork> for more information @@ -67,20 +67,25 @@ <li id="sp"><link href="mailto:spepping@apache.org">Simon Pepping</link> (SP) came to FOP from the TeX/LaTeX world. See his <fork href="http://www.leverkruid.eu">home page</fork> for some of his private projects.</li> - <li id="jp"><link href="mailto:pietsch@apache.org">Jï¿œrg Pietschmann</link> (JP)</li> + <li id="jp"><link href="mailto:pietsch@apache.org">Jörg Pietschmann</link> (JP)</li> <li id="ps"><link href="mailto:tcho@club-internet.fr">Pascal Sancho</link> (PS) - is an XML developper from Aix-en-Provence (France). He works on software solutions for - rendering various kind of documents on various supports, more specifically taking care - of PDF generation with FOP.</li> + is an XML developper from Aix-en-Provence (France). He works on software solutions for + rendering various kind of documents on various supports, more specifically taking care + of PDF generation with FOP.</li> </ul> </section> <section id="contribute-active"> <title>Active Contributors</title> <ul> + <li id="ag">Alexios Giotis holds a Ph.D. in the optimization of turbomachinery cascades + using evolutionary algorithms, neural networks and parallel processing. He is one of + the founding members of i-docs (software for enterprises) and he has been leading its + technical design & implementation based on open source libraries since its inception. + He is relying on Apache FOP for generating high volumes of documents on major banks and + telecom operators since FOP's 1.0 release. He lives in Athens, Greece.</li> <li id="gd">Georg Datterl is a software developer from Austria, currently working for Geneon media solutions gmbh in Nuremberg, Germany. He needs FOP to wrestle gigabytes of electronic data into thousands of printed pages.</li> - <li id="lm">Louis Masters</li> <li id="lb">Luis Bernardo</li> </ul> </section> diff --git a/src/java/org/apache/fop/fonts/FontTriplet.java b/src/java/org/apache/fop/fonts/FontTriplet.java index 945739077..2c1d89088 100644 --- a/src/java/org/apache/fop/fonts/FontTriplet.java +++ b/src/java/org/apache/fop/fonts/FontTriplet.java @@ -27,6 +27,8 @@ import java.io.Serializable; */ public class FontTriplet implements Comparable<FontTriplet>, Serializable { + public static final FontTriplet DEFAULT_FONT_TRIPLET = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL); + /** serial version UID */ private static final long serialVersionUID = 1168991106658033508L; @@ -135,6 +137,5 @@ public class FontTriplet implements Comparable<FontTriplet>, Serializable { */ boolean matches(FontTriplet triplet); } - } diff --git a/src/java/org/apache/fop/render/PrintRenderer.java b/src/java/org/apache/fop/render/PrintRenderer.java index 396a2c790..5302975f6 100644 --- a/src/java/org/apache/fop/render/PrintRenderer.java +++ b/src/java/org/apache/fop/render/PrintRenderer.java @@ -108,7 +108,7 @@ public abstract class PrintRenderer extends AbstractRenderer { String key = fontInfo.getInternalFontKey(triplet); if (key == null) { //Find a default fallback font as last resort - triplet = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL); + triplet = FontTriplet.DEFAULT_FONT_TRIPLET; key = fontInfo.getInternalFontKey(triplet); } return key; diff --git a/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java b/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java index b94f396b6..fb6c89ce4 100644 --- a/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java +++ b/src/java/org/apache/fop/render/afp/AFPDocumentHandler.java @@ -61,8 +61,8 @@ import org.apache.fop.render.intermediate.IFException; import org.apache.fop.render.intermediate.IFPainter; /** - * {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation that - * produces AFP (MO:DCA). + * {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation that produces AFP + * (MO:DCA). */ public class AFPDocumentHandler extends AbstractBinaryWritingIFDocumentHandler implements AFPCustomizable { diff --git a/src/java/org/apache/fop/render/afp/AFPPainter.java b/src/java/org/apache/fop/render/afp/AFPPainter.java index 86858c3c8..7d659a8b4 100644 --- a/src/java/org/apache/fop/render/afp/AFPPainter.java +++ b/src/java/org/apache/fop/render/afp/AFPPainter.java @@ -30,7 +30,13 @@ import java.net.URI; import java.net.URISyntaxException; import java.util.Map; +import org.w3c.dom.Document; + +import org.apache.xmlgraphics.image.loader.ImageProcessingHints; +import org.apache.xmlgraphics.image.loader.ImageSessionContext; + import org.apache.fop.afp.AFPBorderPainter; +import org.apache.fop.afp.AFPEventProducer; import org.apache.fop.afp.AFPPaintingState; import org.apache.fop.afp.AFPUnitConverter; import org.apache.fop.afp.AbstractAFPPainter; @@ -47,27 +53,22 @@ import org.apache.fop.afp.ptoca.PtocaBuilder; import org.apache.fop.afp.ptoca.PtocaProducer; import org.apache.fop.afp.util.AFPResourceAccessor; import org.apache.fop.fonts.Font; -import org.apache.fop.fonts.FontInfo; import org.apache.fop.fonts.FontTriplet; import org.apache.fop.fonts.Typeface; import org.apache.fop.render.RenderingContext; import org.apache.fop.render.intermediate.AbstractIFPainter; import org.apache.fop.render.intermediate.BorderPainter; -import org.apache.fop.render.intermediate.IFContext; import org.apache.fop.render.intermediate.IFException; import org.apache.fop.render.intermediate.IFState; import org.apache.fop.render.intermediate.IFUtil; import org.apache.fop.traits.BorderProps; import org.apache.fop.traits.RuleStyle; import org.apache.fop.util.CharUtilities; -import org.apache.xmlgraphics.image.loader.ImageProcessingHints; -import org.apache.xmlgraphics.image.loader.ImageSessionContext; -import org.w3c.dom.Document; /** * IFPainter implementation that produces AFP (MO:DCA). */ -public class AFPPainter extends AbstractIFPainter { +public class AFPPainter extends AbstractIFPainter<AFPDocumentHandler> { //** logging instance */ //private static Log log = LogFactory.getLog(AFPPainter.class); @@ -75,8 +76,6 @@ public class AFPPainter extends AbstractIFPainter { private static final int X = 0; private static final int Y = 1; - private final AFPDocumentHandler documentHandler; - /** the border painter */ private final AFPBorderPainterAdapter borderPainter; /** the rectangle painter */ @@ -85,36 +84,38 @@ public class AFPPainter extends AbstractIFPainter { /** unit converter */ private final AFPUnitConverter unitConv; + private final AFPEventProducer eventProducer; + /** * Default constructor. * @param documentHandler the parent document handler */ public AFPPainter(AFPDocumentHandler documentHandler) { - super(); - this.documentHandler = documentHandler; + super(documentHandler); this.state = IFState.create(); this.borderPainter = new AFPBorderPainterAdapter( new AFPBorderPainter(getPaintingState(), getDataStream())); this.rectanglePainter = documentHandler.createRectanglePainter(); this.unitConv = getPaintingState().getUnitConverter(); + this.eventProducer = AFPEventProducer.Provider.get(getUserAgent().getEventBroadcaster()); } - /** {@inheritDoc} */ - @Override - protected IFContext getContext() { - return this.documentHandler.getContext(); - } - - FontInfo getFontInfo() { - return this.documentHandler.getFontInfo(); + private AFPPaintingState getPaintingState() { + return getDocumentHandler().getPaintingState(); } - AFPPaintingState getPaintingState() { - return this.documentHandler.getPaintingState(); + private DataStream getDataStream() { + return getDocumentHandler().getDataStream(); } - DataStream getDataStream() { - return this.documentHandler.getDataStream(); + @Override + public String getFontKey(FontTriplet triplet) throws IFException { + try { + return super.getFontKey(triplet); + } catch (IFException e) { + eventProducer.invalidConfiguration(null, e); + return super.getFontKey(FontTriplet.DEFAULT_FONT_TRIPLET); + } } /** {@inheritDoc} */ @@ -180,7 +181,7 @@ public class AFPPainter extends AbstractIFPainter { protected RenderingContext createRenderingContext() { AFPRenderingContext psContext = new AFPRenderingContext( getUserAgent(), - documentHandler.getResourceManager(), + getDocumentHandler().getResourceManager(), getPaintingState(), getFontInfo(), getContext().getForeignAttributes()); @@ -189,7 +190,7 @@ public class AFPPainter extends AbstractIFPainter { /** {@inheritDoc} */ public void drawImage(String uri, Rectangle rect) throws IFException { - PageSegmentDescriptor pageSegment = documentHandler.getPageSegmentNameFor(uri); + PageSegmentDescriptor pageSegment = getDocumentHandler().getPageSegmentNameFor(uri); if (pageSegment != null) { float[] srcPts = {rect.x, rect.y}; @@ -203,10 +204,10 @@ public class AFPPainter extends AbstractIFPainter { //Do we need to embed an external page segment? if (pageSegment.getURI() != null) { AFPResourceAccessor accessor = new AFPResourceAccessor( - documentHandler.getUserAgent().getResourceResolver()); + getDocumentHandler().getUserAgent().getResourceResolver()); try { URI resourceUri = new URI(pageSegment.getURI()); - documentHandler.getResourceManager().createIncludedResourceFromExternal( + getDocumentHandler().getResourceManager().createIncludedResourceFromExternal( pageSegment.getName(), resourceUri, accessor); } catch (URISyntaxException urie) { @@ -362,14 +363,10 @@ public class AFPPainter extends AbstractIFPainter { FontTriplet triplet = new FontTriplet( state.getFontFamily(), state.getFontStyle(), state.getFontWeight()); //TODO Ignored: state.getFontVariant() - String fontKey = getFontInfo().getInternalFontKey(triplet); - if (fontKey == null) { - triplet = new FontTriplet("any", Font.STYLE_NORMAL, Font.WEIGHT_NORMAL); - fontKey = getFontInfo().getInternalFontKey(triplet); - } + String fontKey = getFontKey(triplet); // register font as necessary - Map<String, Typeface> fontMetricMap = documentHandler.getFontInfo().getFonts(); + Map<String, Typeface> fontMetricMap = getFontInfo().getFonts(); final AFPFont afpFont = (AFPFont)fontMetricMap.get(fontKey); final Font font = getFontInfo().getFontInstance(triplet, fontSize); AFPPageFonts pageFonts = getPaintingState().getPageFonts(); @@ -383,7 +380,7 @@ public class AFPPainter extends AbstractIFPainter { if (afpFont.isEmbeddable()) { try { - documentHandler.getResourceManager().embedFont(afpFont, charSet); + getDocumentHandler().getResourceManager().embedFont(afpFont, charSet); } catch (IOException ioe) { throw new IFException("Error while embedding font resources", ioe); } diff --git a/src/java/org/apache/fop/render/intermediate/AbstractIFPainter.java b/src/java/org/apache/fop/render/intermediate/AbstractIFPainter.java index e86cc435f..147b6d54b 100644 --- a/src/java/org/apache/fop/render/intermediate/AbstractIFPainter.java +++ b/src/java/org/apache/fop/render/intermediate/AbstractIFPainter.java @@ -46,6 +46,8 @@ import org.apache.xmlgraphics.image.loader.util.ImageUtil; import org.apache.fop.ResourceEventProducer; import org.apache.fop.apps.FOUserAgent; import org.apache.fop.fo.Constants; +import org.apache.fop.fonts.FontInfo; +import org.apache.fop.fonts.FontTriplet; import org.apache.fop.render.ImageHandler; import org.apache.fop.render.ImageHandlerRegistry; import org.apache.fop.render.ImageHandlerUtil; @@ -56,7 +58,7 @@ import org.apache.fop.traits.RuleStyle; /** * Abstract base class for IFPainter implementations. */ -public abstract class AbstractIFPainter implements IFPainter { +public abstract class AbstractIFPainter<T extends IFDocumentHandler> implements IFPainter { /** logging instance */ private static Log log = LogFactory.getLog(AbstractIFPainter.class); @@ -67,18 +69,39 @@ public abstract class AbstractIFPainter implements IFPainter { /** Holds the intermediate format state */ protected IFState state; + private final T documentHandler; /** * Default constructor. */ - public AbstractIFPainter() { + public AbstractIFPainter(T documentHandler) { + this.documentHandler = documentHandler; + } + + protected String getFontKey(FontTriplet triplet) throws IFException { + String key = getFontInfo().getInternalFontKey(triplet); + if (key == null) { + throw new IFException("The font triplet is not available: \"" + triplet + "\" " + + "for the MIME type: \"" + documentHandler.getMimeType() + "\""); + } + return key; } /** * Returns the intermediate format context object. * @return the context object */ - protected abstract IFContext getContext(); + protected IFContext getContext() { + return documentHandler.getContext(); + } + + protected FontInfo getFontInfo() { + return documentHandler.getFontInfo(); + } + + protected T getDocumentHandler() { + return documentHandler; + } /** * Returns the user agent. diff --git a/src/java/org/apache/fop/render/intermediate/IFException.java b/src/java/org/apache/fop/render/intermediate/IFException.java index 52c650765..5f35c3e3a 100644 --- a/src/java/org/apache/fop/render/intermediate/IFException.java +++ b/src/java/org/apache/fop/render/intermediate/IFException.java @@ -27,20 +27,27 @@ public class IFException extends Exception { private static final long serialVersionUID = 0L; /** - * Constructs a new exception with the specified detail message and - * cause. <p>Note that the detail message associated with - * <code>cause</code> is <i>not</i> automatically incorporated in + * Constructs a new exception with the specified detail message and cause. <p>Note that the + * detail message associated with <code>cause</code> is <i>not</i> automatically incorporated in * this exception's detail message. * - * @param message the detail message (which is saved for later retrieval - * by the {@link #getMessage()} method). - * @param cause the cause (which is saved for later retrieval by the - * {@link #getCause()} method). (A <code>null</code> value is - * permitted, and indicates that the cause is nonexistent or - * unknown.) + * @param message the detail message (which is saved for later retrieval by the + * {@link #getMessage()} method). + * @param cause the cause (which is saved for later retrieval by the {@link #getCause()} + * method). (A <code>null</code> value is permitted, and indicates that the cause is + * nonexistent or unknown.) */ public IFException(String message, Exception cause) { super(message, cause); } + /** + * Constructs a new exception with the specified detail message. + * + * @param message the detail message (which is saved for later retrieval by the + * {@link #getMessage()} method). + */ + public IFException(String message) { + super(message); + } } diff --git a/src/java/org/apache/fop/render/java2d/Java2DDocumentHandler.java b/src/java/org/apache/fop/render/java2d/Java2DDocumentHandler.java new file mode 100644 index 000000000..87003f077 --- /dev/null +++ b/src/java/org/apache/fop/render/java2d/Java2DDocumentHandler.java @@ -0,0 +1,156 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.fop.render.java2d; + +import java.awt.Dimension; +import java.util.Locale; + +import javax.xml.transform.Result; + +import org.apache.fop.accessibility.StructureTreeEventHandler; +import org.apache.fop.fonts.FontInfo; +import org.apache.fop.render.intermediate.IFContext; +import org.apache.fop.render.intermediate.IFDocumentHandler; +import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator; +import org.apache.fop.render.intermediate.IFDocumentNavigationHandler; +import org.apache.fop.render.intermediate.IFException; +import org.apache.fop.render.intermediate.IFPainter; + +/** + * {@link org.apache.fop.render.intermediate.IFDocumentHandler} implementation that produces + * Graphics2D instance. + */ +public class Java2DDocumentHandler implements IFDocumentHandler { + + public void setContext(IFContext context) { + throw new UnsupportedOperationException(); + } + + public IFContext getContext() { + throw new UnsupportedOperationException(); + } + + public void setResult(Result result) throws IFException { + throw new UnsupportedOperationException(); + } + + public void setFontInfo(FontInfo fontInfo) { + throw new UnsupportedOperationException(); + } + + public FontInfo getFontInfo() { + throw new UnsupportedOperationException(); + } + + public void setDefaultFontInfo(FontInfo fontInfo) { + throw new UnsupportedOperationException(); + } + + public IFDocumentHandlerConfigurator getConfigurator() { + throw new UnsupportedOperationException(); + } + + public StructureTreeEventHandler getStructureTreeEventHandler() { + throw new UnsupportedOperationException(); + } + + public IFDocumentNavigationHandler getDocumentNavigationHandler() { + throw new UnsupportedOperationException(); + } + + public boolean supportsPagesOutOfOrder() { + throw new UnsupportedOperationException(); + } + + public String getMimeType() { + throw new UnsupportedOperationException(); + } + + public void startDocument() throws IFException { + throw new UnsupportedOperationException(); + } + + public void endDocument() throws IFException { + throw new UnsupportedOperationException(); + } + + public void setDocumentLocale(Locale locale) { + throw new UnsupportedOperationException(); + } + + public void startDocumentHeader() throws IFException { + throw new UnsupportedOperationException(); + } + + public void endDocumentHeader() throws IFException { + throw new UnsupportedOperationException(); + } + + public void startDocumentTrailer() throws IFException { + throw new UnsupportedOperationException(); + } + + public void endDocumentTrailer() throws IFException { + throw new UnsupportedOperationException(); + } + + public void startPageSequence(String id) throws IFException { + throw new UnsupportedOperationException(); + } + + public void endPageSequence() throws IFException { + throw new UnsupportedOperationException(); + } + + public void startPage(int index, String name, String pageMasterName, Dimension size) + throws IFException { + throw new UnsupportedOperationException(); + } + + public void endPage() throws IFException { + throw new UnsupportedOperationException(); + } + + public void startPageHeader() throws IFException { + throw new UnsupportedOperationException(); + } + + public void endPageHeader() throws IFException { + throw new UnsupportedOperationException(); + } + + public IFPainter startPageContent() throws IFException { + throw new UnsupportedOperationException(); + } + + public void endPageContent() throws IFException { + throw new UnsupportedOperationException(); + } + + public void startPageTrailer() throws IFException { + throw new UnsupportedOperationException(); + } + + public void endPageTrailer() throws IFException { + throw new UnsupportedOperationException(); + } + + public void handleExtensionObject(Object extension) throws IFException { + throw new UnsupportedOperationException(); + } +} diff --git a/src/java/org/apache/fop/render/java2d/Java2DPainter.java b/src/java/org/apache/fop/render/java2d/Java2DPainter.java index 575242d38..89031787a 100644 --- a/src/java/org/apache/fop/render/java2d/Java2DPainter.java +++ b/src/java/org/apache/fop/render/java2d/Java2DPainter.java @@ -47,10 +47,10 @@ import org.apache.fop.traits.RuleStyle; import org.apache.fop.util.CharUtilities; /** - * {@link org.apache.fop.render.intermediate.IFPainter} implementation - * that paints on a Graphics2D instance. + * {@link org.apache.fop.render.intermediate.IFPainter} implementation that paints on a Graphics2D + * instance. */ -public class Java2DPainter extends AbstractIFPainter { +public class Java2DPainter extends AbstractIFPainter<Java2DDocumentHandler> { /** the IF context */ protected IFContext ifContext; @@ -62,7 +62,7 @@ public class Java2DPainter extends AbstractIFPainter { /** The current state, holds a Graphics2D and its context */ protected Java2DGraphicsState g2dState; - private Stack g2dStateStack = new Stack(); + private Stack<Java2DGraphicsState> g2dStateStack = new Stack<Java2DGraphicsState>(); /** * Main constructor. @@ -83,7 +83,7 @@ public class Java2DPainter extends AbstractIFPainter { * @param state the IF state object */ public Java2DPainter(Graphics2D g2d, IFContext context, FontInfo fontInfo, IFState state) { - super(); + super(new Java2DDocumentHandler()); this.ifContext = context; if (state != null) { this.state = state.push(); @@ -256,7 +256,7 @@ public class Java2DPainter extends AbstractIFPainter { /** Restores the last graphics state from the stack. */ protected void restoreGraphicsState() { g2dState.dispose(); - g2dState = (Java2DGraphicsState)g2dStateStack.pop(); + g2dState = g2dStateStack.pop(); } private void concatenateTransformationMatrix(AffineTransform transform) throws IOException { diff --git a/src/java/org/apache/fop/render/pcl/PCLPainter.java b/src/java/org/apache/fop/render/pcl/PCLPainter.java index 2f22424f5..614ebf1d2 100644 --- a/src/java/org/apache/fop/render/pcl/PCLPainter.java +++ b/src/java/org/apache/fop/render/pcl/PCLPainter.java @@ -47,7 +47,6 @@ import org.apache.fop.fonts.FontTriplet; import org.apache.fop.render.ImageHandlerUtil; import org.apache.fop.render.RenderingContext; import org.apache.fop.render.intermediate.AbstractIFPainter; -import org.apache.fop.render.intermediate.IFContext; import org.apache.fop.render.intermediate.IFException; import org.apache.fop.render.intermediate.IFState; import org.apache.fop.render.intermediate.IFUtil; @@ -58,15 +57,12 @@ import org.apache.fop.traits.RuleStyle; import org.apache.fop.util.CharUtilities; /** - * {@link org.apache.fop.render.intermediate.IFPainter} implementation - * that produces PCL 5. + * {@link org.apache.fop.render.intermediate.IFPainter} implementation that produces PCL 5. */ -public class PCLPainter extends AbstractIFPainter implements PCLConstants { +public class PCLPainter extends AbstractIFPainter<PCLDocumentHandler> implements PCLConstants { private static final boolean DEBUG = false; - private PCLDocumentHandler parent; - /** The PCL generator */ private PCLGenerator gen; @@ -74,7 +70,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { private int currentPrintDirection = 0; //private GeneralPath currentPath = null; - private Stack graphicContextStack = new Stack(); + private Stack<GraphicContext> graphicContextStack = new Stack<GraphicContext>(); private GraphicContext graphicContext = new GraphicContext(); /** @@ -83,24 +79,19 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { * @param pageDefinition the page definition describing the page to be rendered */ public PCLPainter(PCLDocumentHandler parent, PCLPageDefinition pageDefinition) { - this.parent = parent; + super(parent); this.gen = parent.getPCLGenerator(); this.state = IFState.create(); this.currentPageDefinition = pageDefinition; } - /** {@inheritDoc} */ - public IFContext getContext() { - return this.parent.getContext(); - } - PCLRenderingUtil getPCLUtil() { - return this.parent.getPCLUtil(); + return getDocumentHandler().getPCLUtil(); } /** @return the target resolution */ protected int getResolution() { - int resolution = (int)Math.round(getUserAgent().getTargetResolution()); + int resolution = Math.round(getUserAgent().getTargetResolution()); if (resolution <= 300) { return 300; } else { @@ -223,7 +214,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { g2d.translate(-rect.x, -rect.y); Java2DPainter painter = new Java2DPainter(g2d, - getContext(), parent.getFontInfo(), state); + getContext(), getFontInfo(), state); try { painter.drawBorderRect(rect, top, bottom, left, right); } catch (IFException e) { @@ -258,7 +249,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { g2d.translate(-boundingBox.x, -boundingBox.y); Java2DPainter painter = new Java2DPainter(g2d, - getContext(), parent.getFontInfo(), state); + getContext(), getFontInfo(), state); try { painter.drawLine(start, end, width, color, style); } catch (IFException e) { @@ -315,9 +306,8 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { state.getFontFamily(), state.getFontStyle(), state.getFontWeight()); //TODO Ignored: state.getFontVariant() //TODO Opportunity for font caching if font state is more heavily used - String fontKey = parent.getFontInfo().getInternalFontKey(triplet); - boolean pclFont = getPCLUtil().isAllTextAsBitmaps() - ? false + String fontKey = getFontKey(triplet); + boolean pclFont = getPCLUtil().isAllTextAsBitmaps() ? false : HardcodedFonts.setFont(gen, fontKey, state.getFontSize(), text); if (pclFont) { drawTextNative(x, y, letterSpacing, wordSpacing, dp, text, triplet); @@ -346,7 +336,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { setCursorPos(x, y); float fontSize = state.getFontSize() / 1000f; - Font font = parent.getFontInfo().getFontInstance(triplet, state.getFontSize()); + Font font = getFontInfo().getFontInstance(triplet, state.getFontSize()); int l = text.length(); int[] dx = IFUtil.convertDPToDX ( dp ); int dxl = (dx != null ? dx.length : 0); @@ -438,13 +428,12 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { final int letterSpacing, final int wordSpacing, final int[][] dp, final String text, FontTriplet triplet) throws IFException { //Use Java2D to paint different fonts via bitmap - final Font font = parent.getFontInfo().getFontInstance(triplet, state.getFontSize()); + final Font font = getFontInfo().getFontInstance(triplet, state.getFontSize()); //for cursive fonts, so the text isn't clipped FontMetricsMapper mapper; try { - mapper = (FontMetricsMapper)parent.getFontInfo().getMetricsFor( - font.getFontName()); + mapper = (FontMetricsMapper) getFontInfo().getMetricsFor(font.getFontName()); } catch (Exception t) { throw new RuntimeException(t); } @@ -475,8 +464,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { rect = new Rectangle(x, y, 1000, -descent); g2d.draw(rect); } - Java2DPainter painter = new Java2DPainter(g2d, - getContext(), parent.getFontInfo(), state); + Java2DPainter painter = new Java2DPainter(g2d, getContext(), getFontInfo(), state); try { painter.drawText(x, y, letterSpacing, wordSpacing, dp, text); } catch (IFException e) { @@ -501,7 +489,7 @@ public class PCLPainter extends AbstractIFPainter implements PCLConstants { /** Restores the last graphics state from the stack. */ private void restoreGraphicsState() { - graphicContext = (GraphicContext)graphicContextStack.pop(); + graphicContext = graphicContextStack.pop(); } private void concatenateTransformationMatrix(AffineTransform transform) throws IOException { diff --git a/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java b/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java index 1ad8034e0..dd9320571 100644 --- a/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java +++ b/src/java/org/apache/fop/render/pdf/PDFDocumentHandler.java @@ -40,7 +40,6 @@ import org.apache.fop.fo.extensions.xmp.XMPMetadata; import org.apache.fop.pdf.PDFAnnotList; import org.apache.fop.pdf.PDFDocument; import org.apache.fop.pdf.PDFPage; -import org.apache.fop.pdf.PDFResourceContext; import org.apache.fop.pdf.PDFResources; import org.apache.fop.render.extensions.prepress.PageBoundaries; import org.apache.fop.render.extensions.prepress.PageScale; @@ -68,31 +67,28 @@ public class PDFDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { private PDFStructureTreeBuilder structureTreeBuilder; /** the PDF Document being created */ - protected PDFDocument pdfDoc; + private PDFDocument pdfDoc; /** * Utility class which enables all sorts of features that are not directly connected to the * normal rendering process. */ - protected final PDFRenderingUtil pdfUtil; + private final PDFRenderingUtil pdfUtil; /** the /Resources object of the PDF document being created */ - protected PDFResources pdfResources; + private PDFResources pdfResources; /** The current content generator */ - protected PDFContentGenerator generator; - - /** the current annotation list to add annotations to */ - protected PDFResourceContext currentContext; + private PDFContentGenerator generator; /** the current page to add annotations to */ - protected PDFPage currentPage; + private PDFPage currentPage; /** the current page's PDF reference */ - protected PageReference currentPageRef; + private PageReference currentPageRef; /** Used for bookmarks/outlines. */ - protected Map<Integer, PageReference> pageReferences = new HashMap<Integer, PageReference>(); + private Map<Integer, PageReference> pageReferences = new HashMap<Integer, PageReference>(); private final PDFDocumentNavigationHandler documentNavigationHandler = new PDFDocumentNavigationHandler(this); @@ -133,6 +129,22 @@ public class PDFDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { return logicalStructureHandler; } + PDFDocument getPDFDocument() { + return pdfDoc; + } + + PDFPage getCurrentPage() { + return currentPage; + } + + PageReference getCurrentPageRef() { + return currentPageRef; + } + + PDFContentGenerator getGenerator() { + return generator; + } + /** {@inheritDoc} */ public void startDocument() throws IFException { super.startDocument(); @@ -171,7 +183,6 @@ public class PDFDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { pdfResources = null; this.generator = null; - currentContext = null; currentPage = null; } catch (IOException ioe) { throw new IFException("I/O error in endDocument()", ioe); diff --git a/src/java/org/apache/fop/render/pdf/PDFDocumentNavigationHandler.java b/src/java/org/apache/fop/render/pdf/PDFDocumentNavigationHandler.java index af49fea4c..1ef637726 100644 --- a/src/java/org/apache/fop/render/pdf/PDFDocumentNavigationHandler.java +++ b/src/java/org/apache/fop/render/pdf/PDFDocumentNavigationHandler.java @@ -63,7 +63,7 @@ public class PDFDocumentNavigationHandler implements IFDocumentNavigationHandler } PDFDocument getPDFDoc() { - return this.documentHandler.pdfDoc; + return this.documentHandler.getPDFDocument(); } /** {@inheritDoc} */ @@ -100,7 +100,7 @@ public class PDFDocumentNavigationHandler implements IFDocumentNavigationHandler /** {@inheritDoc} */ public void renderLink(Link link) throws IFException { Rectangle targetRect = link.getTargetRect(); - int pageHeight = documentHandler.currentPageRef.getPageDimension().height; + int pageHeight = documentHandler.getCurrentPageRef().getPageDimension().height; Rectangle2D targetRect2D = new Rectangle2D.Double( targetRect.getMinX() / 1000.0, (pageHeight - targetRect.getMinY() - targetRect.getHeight()) / 1000.0, @@ -116,7 +116,7 @@ public class PDFDocumentNavigationHandler implements IFDocumentNavigationHandler if (documentHandler.getUserAgent().isAccessibilityEnabled() && structure != null) { documentHandler.getLogicalStructureHandler().addLinkContentItem(pdfLink, structure); } - documentHandler.currentPage.addAnnotation(pdfLink); + documentHandler.getCurrentPage().addAnnotation(pdfLink); } } diff --git a/src/java/org/apache/fop/render/pdf/PDFPainter.java b/src/java/org/apache/fop/render/pdf/PDFPainter.java index f51088fab..0160ffc1c 100644 --- a/src/java/org/apache/fop/render/pdf/PDFPainter.java +++ b/src/java/org/apache/fop/render/pdf/PDFPainter.java @@ -30,19 +30,16 @@ import java.io.IOException; import org.w3c.dom.Document; import org.apache.fop.fonts.Font; -import org.apache.fop.fonts.FontInfo; import org.apache.fop.fonts.FontTriplet; import org.apache.fop.fonts.LazyFont; import org.apache.fop.fonts.SingleByteFont; import org.apache.fop.fonts.Typeface; -import org.apache.fop.pdf.PDFDocument; import org.apache.fop.pdf.PDFNumber; import org.apache.fop.pdf.PDFStructElem; import org.apache.fop.pdf.PDFTextUtil; import org.apache.fop.pdf.PDFXObject; import org.apache.fop.render.RenderingContext; import org.apache.fop.render.intermediate.AbstractIFPainter; -import org.apache.fop.render.intermediate.IFContext; import org.apache.fop.render.intermediate.IFException; import org.apache.fop.render.intermediate.IFState; import org.apache.fop.render.intermediate.IFUtil; @@ -55,9 +52,7 @@ import org.apache.fop.util.CharUtilities; /** * IFPainter implementation that produces PDF. */ -public class PDFPainter extends AbstractIFPainter { - - private final PDFDocumentHandler documentHandler; +public class PDFPainter extends AbstractIFPainter<PDFDocumentHandler> { /** The current content generator */ protected PDFContentGenerator generator; @@ -77,30 +72,15 @@ public class PDFPainter extends AbstractIFPainter { */ public PDFPainter(PDFDocumentHandler documentHandler, PDFLogicalStructureHandler logicalStructureHandler) { - super(); - this.documentHandler = documentHandler; + super(documentHandler); this.logicalStructureHandler = logicalStructureHandler; - this.generator = documentHandler.generator; + this.generator = documentHandler.getGenerator(); this.borderPainter = new PDFBorderPainter(this.generator); this.state = IFState.create(); accessEnabled = this.getUserAgent().isAccessibilityEnabled(); } /** {@inheritDoc} */ - @Override - protected IFContext getContext() { - return this.documentHandler.getContext(); - } - - PDFDocument getPDFDoc() { - return this.documentHandler.pdfDoc; - } - - FontInfo getFontInfo() { - return this.documentHandler.getFontInfo(); - } - - /** {@inheritDoc} */ public void startViewport(AffineTransform transform, Dimension size, Rectangle clipRect) throws IFException { generator.saveGraphicsState(); @@ -129,7 +109,7 @@ public class PDFPainter extends AbstractIFPainter { /** {@inheritDoc} */ public void drawImage(String uri, Rectangle rect) throws IFException { - PDFXObject xobject = getPDFDoc().getXObject(uri); + PDFXObject xobject = getDocumentHandler().getPDFDocument().getXObject(uri); if (xobject != null) { if (accessEnabled) { PDFStructElem structElem = (PDFStructElem) getContext().getStructureTreeElement(); @@ -156,7 +136,7 @@ public class PDFPainter extends AbstractIFPainter { @Override protected RenderingContext createRenderingContext() { PDFRenderingContext pdfContext = new PDFRenderingContext( - getUserAgent(), generator, this.documentHandler.currentPage, getFontInfo()); + getUserAgent(), generator, getDocumentHandler().getCurrentPage(), getFontInfo()); pdfContext.setMarkedContentInfo(imageMCI); return pdfContext; } @@ -317,12 +297,11 @@ public class PDFPainter extends AbstractIFPainter { } } - private void drawTextWithDX ( int x, int y, String text, FontTriplet triplet, - int letterSpacing, int wordSpacing, int[] dx ) { - + private void drawTextWithDX(int x, int y, String text, FontTriplet triplet, + int letterSpacing, int wordSpacing, int[] dx) throws IFException { //TODO Ignored: state.getFontVariant() //TODO Opportunity for font caching if font state is more heavily used - String fontKey = getFontInfo().getInternalFontKey(triplet); + String fontKey = getFontKey(triplet); int sizeMillipoints = state.getFontSize(); float fontSize = sizeMillipoints / 1000f; diff --git a/src/java/org/apache/fop/render/ps/PSDocumentHandler.java b/src/java/org/apache/fop/render/ps/PSDocumentHandler.java index 488abd559..d73beb759 100644 --- a/src/java/org/apache/fop/render/ps/PSDocumentHandler.java +++ b/src/java/org/apache/fop/render/ps/PSDocumentHandler.java @@ -56,6 +56,7 @@ import org.apache.fop.apps.MimeConstants; import org.apache.fop.apps.io.TempResourceURIGenerator; import org.apache.fop.render.intermediate.AbstractBinaryWritingIFDocumentHandler; import org.apache.fop.render.intermediate.IFContext; +import org.apache.fop.render.intermediate.IFDocumentHandler; import org.apache.fop.render.intermediate.IFDocumentHandlerConfigurator; import org.apache.fop.render.intermediate.IFException; import org.apache.fop.render.intermediate.IFPainter; @@ -80,10 +81,10 @@ public class PSDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { * Utility class which enables all sorts of features that are not directly connected to the * normal rendering process. */ - protected PSRenderingUtil psUtil; + private PSRenderingUtil psUtil; /** The PostScript generator used to output the PostScript */ - protected PSGenerator gen; + PSGenerator gen; /** the temporary file in case of two-pass processing */ private URI tempURI; @@ -134,6 +135,10 @@ public class PSDocumentHandler extends AbstractBinaryWritingIFDocumentHandler { return MimeConstants.MIME_POSTSCRIPT; } + PSGenerator getGenerator() { + return gen; + } + /** {@inheritDoc} */ public IFDocumentHandlerConfigurator getConfigurator() { return new PSRendererConfigurator(getUserAgent(), new PSRendererConfigParser()); diff --git a/src/java/org/apache/fop/render/ps/PSPainter.java b/src/java/org/apache/fop/render/ps/PSPainter.java index c2288019a..63e947e55 100644 --- a/src/java/org/apache/fop/render/ps/PSPainter.java +++ b/src/java/org/apache/fop/render/ps/PSPainter.java @@ -41,7 +41,6 @@ import org.apache.xmlgraphics.ps.PSGenerator; import org.apache.xmlgraphics.ps.PSResource; import org.apache.fop.fonts.Font; -import org.apache.fop.fonts.FontInfo; import org.apache.fop.fonts.FontTriplet; import org.apache.fop.fonts.LazyFont; import org.apache.fop.fonts.MultiByteFont; @@ -49,7 +48,6 @@ import org.apache.fop.fonts.SingleByteFont; import org.apache.fop.fonts.Typeface; import org.apache.fop.render.RenderingContext; import org.apache.fop.render.intermediate.AbstractIFPainter; -import org.apache.fop.render.intermediate.IFContext; import org.apache.fop.render.intermediate.IFException; import org.apache.fop.render.intermediate.IFState; import org.apache.fop.render.intermediate.IFUtil; @@ -61,12 +59,11 @@ import org.apache.fop.util.HexEncoder; /** * IFPainter implementation that produces PostScript. */ -public class PSPainter extends AbstractIFPainter { +public class PSPainter extends AbstractIFPainter<PSDocumentHandler> { /** logging instance */ private static Log log = LogFactory.getLog(PSPainter.class); - private PSDocumentHandler documentHandler; private PSBorderPainter borderPainter; private boolean inTextMode = false; @@ -80,27 +77,13 @@ public class PSPainter extends AbstractIFPainter { } protected PSPainter(PSDocumentHandler documentHandler, IFState state) { - super(); - this.documentHandler = documentHandler; - this.borderPainter = new PSBorderPainter(documentHandler.gen); + super(documentHandler); + this.borderPainter = new PSBorderPainter(getGenerator()); this.state = state; } - /** {@inheritDoc} */ - protected IFContext getContext() { - return this.documentHandler.getContext(); - } - - PSRenderingUtil getPSUtil() { - return this.documentHandler.psUtil; - } - - FontInfo getFontInfo() { - return this.documentHandler.getFontInfo(); - } - private PSGenerator getGenerator() { - return this.documentHandler.gen; + return getDocumentHandler().getGenerator(); } /** {@inheritDoc} */ @@ -168,7 +151,7 @@ public class PSPainter extends AbstractIFPainter { /** {@inheritDoc} */ protected void drawImageUsingImageHandler(ImageInfo info, Rectangle rect) throws ImageException, IOException { - if (!getPSUtil().isOptimizeResources() + if (!getDocumentHandler().getPSUtil().isOptimizeResources() || PSImageUtils.isImageInlined(info, (PSRenderingContext)createRenderingContext())) { super.drawImageUsingImageHandler(info, rect); @@ -177,7 +160,7 @@ public class PSPainter extends AbstractIFPainter { log.debug("Image " + info + " is embedded as a form later"); } //Don't load image at this time, just put a form placeholder in the stream - PSResource form = documentHandler.getFormForImage(info.getOriginalURI()); + PSResource form = getDocumentHandler().getFormForImage(info.getOriginalURI()); PSImageUtils.drawForm(form, info, rect, getGenerator()); } } @@ -246,7 +229,7 @@ public class PSPainter extends AbstractIFPainter { if (top != null || bottom != null || left != null || right != null) { try { endTextObject(); - if (getPSUtil().getRenderingMode() == PSRenderingMode.SIZE + if (getDocumentHandler().getPSUtil().getRenderingMode() == PSRenderingMode.SIZE && hasOnlySolidBorders(top, bottom, left, right)) { super.drawBorderRect(rect, top, bottom, left, right); } else { @@ -273,7 +256,7 @@ public class PSPainter extends AbstractIFPainter { if (fontName == null) { throw new NullPointerException("fontName must not be null"); } - Typeface tf = (Typeface)getFontInfo().getFonts().get(fontName); + Typeface tf = getFontInfo().getFonts().get(fontName); if (tf instanceof LazyFont) { tf = ((LazyFont)tf).getRealFont(); } @@ -363,10 +346,7 @@ public class PSPainter extends AbstractIFPainter { state.getFontFamily(), state.getFontStyle(), state.getFontWeight()); //TODO Ignored: state.getFontVariant() //TODO Opportunity for font caching if font state is more heavily used - String fontKey = getFontInfo().getInternalFontKey(triplet); - if (fontKey == null) { - throw new IFException("Font not available: " + triplet, null); - } + String fontKey = getFontKey(triplet); int sizeMillipoints = state.getFontSize(); // This assumes that *all* CIDFonts use a /ToUnicode mapping @@ -529,10 +509,9 @@ public class PSPainter extends AbstractIFPainter { } private void useFont(String key, int size) throws IOException { - PSFontResource res = this.documentHandler.getPSResourceForFontKey(key); + PSFontResource res = getDocumentHandler().getPSResourceForFontKey(key); PSGenerator generator = getGenerator(); generator.useFont("/" + res.getName(), size / 1000f); res.notifyResourceUsageOnPage(generator.getResourceTracker()); } - } diff --git a/src/sandbox/org/apache/fop/render/svg/SVGPainter.java b/src/sandbox/org/apache/fop/render/svg/SVGPainter.java index 8e181d4ec..cdb6297b5 100644 --- a/src/sandbox/org/apache/fop/render/svg/SVGPainter.java +++ b/src/sandbox/org/apache/fop/render/svg/SVGPainter.java @@ -45,7 +45,6 @@ import org.apache.fop.render.ImageHandlerUtil; import org.apache.fop.render.RenderingContext; import org.apache.fop.render.intermediate.AbstractIFPainter; import org.apache.fop.render.intermediate.IFConstants; -import org.apache.fop.render.intermediate.IFContext; import org.apache.fop.render.intermediate.IFException; import org.apache.fop.render.intermediate.IFState; import org.apache.fop.render.intermediate.IFUtil; @@ -59,12 +58,11 @@ import org.apache.fop.util.XMLUtil; /** * IFPainter implementation that writes SVG. */ -public class SVGPainter extends AbstractIFPainter implements SVGConstants { - - private AbstractSVGDocumentHandler parent; +public class SVGPainter extends AbstractIFPainter<AbstractSVGDocumentHandler> + implements SVGConstants { /** The SAX content handler that receives the generated XML events. */ - protected GenerationHelperContentHandler handler; + private GenerationHelperContentHandler handler; private static final int MODE_NORMAL = 0; private static final int MODE_TEXT = 1; @@ -78,18 +76,12 @@ public class SVGPainter extends AbstractIFPainter implements SVGConstants { */ public SVGPainter(AbstractSVGDocumentHandler parent, GenerationHelperContentHandler contentHandler) { - super(); - this.parent = parent; + super(parent); this.handler = contentHandler; this.state = IFState.create(); } /** {@inheritDoc} */ - protected IFContext getContext() { - return parent.getContext(); - } - - /** {@inheritDoc} */ public void startViewport(AffineTransform transform, Dimension size, Rectangle clipRect) throws IFException { startViewport(SVGUtil.formatAffineTransformMptToPt(transform), size, clipRect); diff --git a/status.xml b/status.xml index 8d41fdef4..bd337df9a 100644 --- a/status.xml +++ b/status.xml @@ -63,6 +63,9 @@ documents. Example: the fix of marks layering will be such a case when it's done. --> <release version="FOP Trunk" date="TBD"> + <action context="Test" dev="GA" type="fix"> + Fix errors and warnings in example files. Add build.xml for documentation examples. + </action> <action context="Code" dev="GA" type="fix" fixes-bug="53458" due-to="Dieter von Holten"> Fix incorrect language and country code key generation in hyphenation tree cache. </action> diff --git a/test/java/org/apache/fop/render/intermediate/AbstractIFPainterTestCase.java b/test/java/org/apache/fop/render/intermediate/AbstractIFPainterTestCase.java new file mode 100644 index 000000000..ebe7f17b5 --- /dev/null +++ b/test/java/org/apache/fop/render/intermediate/AbstractIFPainterTestCase.java @@ -0,0 +1,99 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.fop.render.intermediate; + +import java.awt.Dimension; +import java.awt.Paint; +import java.awt.Rectangle; +import java.awt.geom.AffineTransform; + +import org.junit.Before; +import org.junit.Test; +import org.w3c.dom.Document; + +import org.apache.fop.fonts.FontInfo; +import org.apache.fop.fonts.FontTriplet; +import org.apache.fop.render.RenderingContext; + +import static org.junit.Assert.assertEquals; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +public class AbstractIFPainterTestCase { + + private AbstractIFPainter<?> sut; + private IFDocumentHandler handler; + + @Before + public void setUp() { + handler = mock(IFDocumentHandler.class); + sut = new AbstractIFPainter<IFDocumentHandler>(handler) { + public void startViewport(AffineTransform transform, Dimension size, Rectangle clipRect) + throws IFException { + } + + public void endViewport() throws IFException { + } + + public void startGroup(AffineTransform transform) throws IFException { + } + + public void endGroup() throws IFException { + } + + public void clipRect(Rectangle rect) throws IFException { + } + + public void fillRect(Rectangle rect, Paint fill) throws IFException { + } + + public void drawImage(String uri, Rectangle rect) throws IFException { + } + + public void drawImage(Document doc, Rectangle rect) throws IFException { + } + + @Override + protected RenderingContext createRenderingContext() { + return null; + } + + public void drawText(int x, int y, int letterSpacing, int wordSpacing, int[][] dp, + String text) throws IFException { + } + }; + FontInfo fontInfo = mock(FontInfo.class); + when(handler.getFontInfo()).thenReturn(fontInfo); + } + + @Test + public void testGetFontKey() throws IFException { + String expected = "the expected string"; + FontTriplet triplet = mock(FontTriplet.class); + FontInfo fontInfo = handler.getFontInfo(); + when(fontInfo.getInternalFontKey(triplet)).thenReturn(expected); + assertEquals(expected, sut.getFontKey(triplet)); + } + + @Test(expected = IFException.class) + public void testGetFontKeyMissingFont() throws IFException { + FontTriplet triplet = mock(FontTriplet.class); + when(handler.getFontInfo().getInternalFontKey(triplet)).thenReturn(null); + sut.getFontKey(triplet); + } +} |