You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

ShorthandPropSets.html 96KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
  2. <!-- Created by htmlize-0.67 in css mode. -->
  3. <html>
  4. <head>
  5. <title>ShorthandPropSets.java</title>
  6. <style type="text/css">
  7. <!--
  8. body {
  9. color: #000000;
  10. background-color: #faf0e6;
  11. } /* default */
  12. .reference {
  13. color: #cd0000;
  14. background-color: #faf0e6;
  15. } /* font-lock-reference-face */
  16. .function-name {
  17. color: #8b2323;
  18. background-color: #faf0e6;
  19. } /* font-lock-function-name-face */
  20. .jde-java-font-lock-italic {
  21. background-color: #faf0e6;
  22. font-style: italic;
  23. } /* jde-java-font-lock-italic-face */
  24. .jde-java-font-lock-modifier {
  25. color: #da70d6;
  26. background-color: #faf0e6;
  27. } /* jde-java-font-lock-modifier-face */
  28. .keyword {
  29. color: #8b0000;
  30. background-color: #faf0e6;
  31. } /* font-lock-keyword-face */
  32. .jde-java-font-lock-link {
  33. color: #0000ff;
  34. background-color: #faf0e6;
  35. text-decoration: underline;
  36. } /* jde-java-font-lock-link-face */
  37. .variable-name {
  38. color: #8b008b;
  39. background-color: #faf0e6;
  40. } /* font-lock-variable-name-face */
  41. .string {
  42. color: #008b00;
  43. background-color: #faf0e6;
  44. } /* font-lock-string-face */
  45. .jde-java-font-lock-package {
  46. color: #0000cd;
  47. background-color: #faf0e6;
  48. } /* jde-java-font-lock-package-face */
  49. .jde-java-font-lock-constant {
  50. color: #5f9ea0;
  51. background-color: #faf0e6;
  52. } /* jde-java-font-lock-constant-face */
  53. .type {
  54. color: #4682b4;
  55. background-color: #faf0e6;
  56. } /* font-lock-type-face */
  57. .jde-java-font-lock-bold {
  58. background-color: #faf0e6;
  59. font-weight: bold;
  60. } /* jde-java-font-lock-bold-face */
  61. .jde-java-font-lock-doc-tag {
  62. color: #008b00;
  63. background-color: #faf0e6;
  64. } /* jde-java-font-lock-doc-tag-face */
  65. .comment {
  66. color: #00008b;
  67. background-color: #faf0e6;
  68. } /* font-lock-comment-face */
  69. .jde-java-font-lock-number {
  70. color: #bc8f8f;
  71. background-color: #faf0e6;
  72. } /* jde-java-font-lock-number-face */
  73. a {
  74. color: inherit;
  75. background-color: inherit;
  76. font: inherit;
  77. text-decoration: inherit;
  78. }
  79. a:hover {
  80. text-decoration: underline;
  81. }
  82. -->
  83. </style>
  84. </head>
  85. <body>
  86. <pre>
  87. <span class="comment">/**
  88. * $Id$
  89. * &lt;br/&gt;Copyright (C) 2001 The Apache Software Foundation. All rights reserved.
  90. * &lt;br/&gt;For details on use and redistribution please refer to the
  91. * &lt;br/&gt;LICENSE file included with these sources.
  92. *
  93. * </span><span class="jde-java-font-lock-doc-tag">@author</span><span class="comment"> &lt;a href=&quot;mailto:pbwest@powerup.com.au&quot;&gt;</span><span class="jde-java-font-lock-link">Peter B. West</span><span class="comment">&lt;/a&gt;
  94. * </span><span class="jde-java-font-lock-doc-tag">@version</span><span class="comment"> $Revision$ $Name$
  95. */</span>
  96. <span class="keyword">package</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">fo</span>;
  97. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">lang</span>.<span class="type">CloneNotSupportedException</span>;
  98. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">Set</span>;
  99. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">BitSet</span>;
  100. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">HashSet</span>;
  101. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">HashMap</span>;
  102. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">List</span>;
  103. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">ListIterator</span>;
  104. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">Iterator</span>;
  105. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">Arrays</span>;
  106. <span class="keyword">import</span> <span class="jde-java-font-lock-package">java</span>.<span class="jde-java-font-lock-package">util</span>.<span class="type">Collections</span>;
  107. <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">fo</span>.<span class="jde-java-font-lock-package">expr</span>.<span class="type">PropertyException</span>;
  108. <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">datatypes</span>.<span class="type">PropertyValue</span>;
  109. <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">datatypes</span>.<span class="type">PropertyValueList</span>;
  110. <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">fo</span>.<span class="type">PropNames</span>;
  111. <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">fo</span>.<span class="type">PropertyConsts</span>;
  112. <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">datastructs</span>.<span class="type">ROIntArray</span>;
  113. <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">datastructs</span>.<span class="type">ROBitSet</span>;
  114. <span class="keyword">import</span> <span class="jde-java-font-lock-package">org</span>.<span class="jde-java-font-lock-package">apache</span>.<span class="jde-java-font-lock-package">fop</span>.<span class="jde-java-font-lock-package">datatypes</span>.<span class="type">Ints</span>;
  115. <span class="comment">/**
  116. * This class contains &lt;tt&gt;ROIntArray&lt;/tt&gt;s which encode the various sets of
  117. * properties into which the shorthand and compound properties expand, and
  118. * utility methods for manipulating these expansions.
  119. */</span>
  120. <span class="jde-java-font-lock-modifier">public</span> <span class="keyword">class</span> <span class="function-name" id="ShorthandPropSetsClass">ShorthandPropSets</span> {
  121. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">String</span> <span class="variable-name" id="tag">tag</span> = &quot;<span class="string">$Name$</span>&quot;;
  122. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">String</span> <span class="variable-name" id="revision">revision</span> = &quot;<span class="string">$Revision$</span>&quot;;
  123. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">String</span> <span class="variable-name" id="packageName">packageName</span> = &quot;<span class="string">org.apache.fop.fo</span>&quot;;
  124. <span class="comment">// My preference here for shorthands which expand to compound properties
  125. </span> <span class="comment">// would be to expand only to the compound, and allow compounds to be
  126. </span> <span class="comment">// &quot;normally&quot; expanded in a second step. Unfortunately, the shorthand
  127. </span> <span class="comment">// border-spacing expands (potentially) into both of the elements of
  128. </span> <span class="comment">// the border-separation compound. However, other compound expansions
  129. </span> <span class="comment">// are defined with only a single value for the compound, so I will
  130. </span> <span class="comment">// treat border-separation as a special case in the event that two
  131. </span> <span class="comment">// values are provided.
  132. </span> <span class="comment">// I''m not sure whether a shorthand specification which sets a compound
  133. </span> <span class="comment">// property with a single top-level value should be regarded as a
  134. </span> <span class="comment">// specification for the purposes of inheritance, but I will assume so
  135. </span> <span class="comment">// until further notice.
  136. </span> <span class="comment">// pbw
  137. </span>
  138. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">int</span>[] <span class="variable-name" id="backgroundPosition">backgroundPosition</span> = {
  139. <span class="reference">PropNames</span>.<span class="type">BACKGROUND_POSITION_HORIZONTAL</span>
  140. ,<span class="reference">PropNames</span>.<span class="type">BACKGROUND_POSITION_VERTICAL</span>
  141. };
  142. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">int</span>[] <span class="variable-name" id="borderColor">borderColor</span> = {
  143. <span class="reference">PropNames</span>.<span class="type">BORDER_TOP_COLOR</span>
  144. ,<span class="reference">PropNames</span>.<span class="type">BORDER_RIGHT_COLOR</span>
  145. ,<span class="reference">PropNames</span>.<span class="type">BORDER_BOTTOM_COLOR</span>
  146. ,<span class="reference">PropNames</span>.<span class="type">BORDER_LEFT_COLOR</span>
  147. };
  148. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">int</span>[] <span class="variable-name" id="borderStyle">borderStyle</span> = {
  149. <span class="reference">PropNames</span>.<span class="type">BORDER_TOP_STYLE</span>
  150. ,<span class="reference">PropNames</span>.<span class="type">BORDER_RIGHT_STYLE</span>
  151. ,<span class="reference">PropNames</span>.<span class="type">BORDER_BOTTOM_STYLE</span>
  152. ,<span class="reference">PropNames</span>.<span class="type">BORDER_LEFT_STYLE</span>
  153. };
  154. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">int</span>[] <span class="variable-name" id="borderWidth">borderWidth</span> = {
  155. <span class="reference">PropNames</span>.<span class="type">BORDER_TOP_WIDTH</span>
  156. ,<span class="reference">PropNames</span>.<span class="type">BORDER_RIGHT_WIDTH</span>
  157. ,<span class="reference">PropNames</span>.<span class="type">BORDER_BOTTOM_WIDTH</span>
  158. ,<span class="reference">PropNames</span>.<span class="type">BORDER_LEFT_WIDTH</span>
  159. };
  160. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="backgroundExpansion">backgroundExpansion</span> =
  161. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[][] {
  162. <span class="keyword">new</span> <span class="type">int</span>[] {
  163. <span class="reference">PropNames</span>.<span class="type">BACKGROUND_COLOR</span>
  164. ,<span class="reference">PropNames</span>.<span class="type">BACKGROUND_IMAGE</span>
  165. ,<span class="reference">PropNames</span>.<span class="type">BACKGROUND_REPEAT</span>
  166. ,<span class="reference">PropNames</span>.<span class="type">BACKGROUND_ATTACHMENT</span>
  167. ,<span class="reference">PropNames</span>.<span class="type">BACKGROUND_POSITION_HORIZONTAL</span>
  168. ,<span class="reference">PropNames</span>.<span class="type">BACKGROUND_POSITION_VERTICAL</span>
  169. }, backgroundPosition});
  170. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="backgroundPositionExpansion">backgroundPositionExpansion</span> =
  171. <span class="keyword">new</span> <span class="type">ROIntArray</span>(backgroundPosition);
  172. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderExpansion">borderExpansion</span> =
  173. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[][] { borderStyle, borderColor, borderWidth });
  174. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderStyleExpansion">borderStyleExpansion</span> =
  175. <span class="keyword">new</span> <span class="type">ROIntArray</span>(borderStyle);
  176. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderColorExpansion">borderColorExpansion</span> =
  177. <span class="keyword">new</span> <span class="type">ROIntArray</span>(borderColor);
  178. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderWidthExpansion">borderWidthExpansion</span> =
  179. <span class="keyword">new</span> <span class="type">ROIntArray</span>(borderWidth);
  180. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderTopExpansion">borderTopExpansion</span> =
  181. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  182. <span class="reference">PropNames</span>.<span class="type">BORDER_TOP_STYLE</span>
  183. ,<span class="reference">PropNames</span>.<span class="type">BORDER_TOP_COLOR</span>
  184. ,<span class="reference">PropNames</span>.<span class="type">BORDER_TOP_WIDTH</span>
  185. });
  186. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderRightExpansion">borderRightExpansion</span> =
  187. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  188. <span class="reference">PropNames</span>.<span class="type">BORDER_RIGHT_STYLE</span>
  189. ,<span class="reference">PropNames</span>.<span class="type">BORDER_RIGHT_COLOR</span>
  190. ,<span class="reference">PropNames</span>.<span class="type">BORDER_RIGHT_WIDTH</span>
  191. });
  192. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderBottomExpansion">borderBottomExpansion</span> =
  193. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  194. <span class="reference">PropNames</span>.<span class="type">BORDER_BOTTOM_STYLE</span>
  195. ,<span class="reference">PropNames</span>.<span class="type">BORDER_BOTTOM_COLOR</span>
  196. ,<span class="reference">PropNames</span>.<span class="type">BORDER_BOTTOM_WIDTH</span>
  197. });
  198. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderLeftExpansion">borderLeftExpansion</span> =
  199. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  200. <span class="reference">PropNames</span>.<span class="type">BORDER_LEFT_STYLE</span>
  201. ,<span class="reference">PropNames</span>.<span class="type">BORDER_LEFT_COLOR</span>
  202. ,<span class="reference">PropNames</span>.<span class="type">BORDER_LEFT_WIDTH</span>
  203. });
  204. <span class="comment">/**
  205. * Watch this one. &lt;i&gt;</span><span class="jde-java-font-lock-italic">border-spacing</span><span class="comment">&lt;/i&gt; is a shorthand which expands
  206. * into the components of the &lt;tt&gt;&amp;lt;border-separation&amp;gt;&lt;/tt&gt; compound
  207. * property.
  208. */</span>
  209. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderSpacingExpansion">borderSpacingExpansion</span> =
  210. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  211. <span class="reference">PropNames</span>.<span class="type">BORDER_SEPARATION</span>
  212. });
  213. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="cueExpansion">cueExpansion</span> =
  214. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  215. <span class="reference">PropNames</span>.<span class="type">CUE_BEFORE</span>
  216. ,<span class="reference">PropNames</span>.<span class="type">CUE_AFTER</span>
  217. });
  218. <span class="comment">/**
  219. * Another nasty one. &lt;i&gt;</span><span class="jde-java-font-lock-italic">font</span><span class="comment">&lt;/i&gt; expands, in part, into
  220. * &lt;i&gt;</span><span class="jde-java-font-lock-italic">line-height</span><span class="comment">&lt;/i&gt;, which is itself a compound property with a
  221. * &lt;tt&gt;&amp;lt;space&amp;gt;&lt;/tt&gt; value.
  222. */</span>
  223. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="fontExpansion">fontExpansion</span> =
  224. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  225. <span class="reference">PropNames</span>.<span class="type">FONT_FAMILY</span>
  226. ,<span class="reference">PropNames</span>.<span class="type">FONT_STYLE</span>
  227. ,<span class="reference">PropNames</span>.<span class="type">FONT_VARIANT</span>
  228. ,<span class="reference">PropNames</span>.<span class="type">FONT_WEIGHT</span>
  229. ,<span class="reference">PropNames</span>.<span class="type">FONT_SIZE</span>
  230. ,<span class="reference">PropNames</span>.<span class="type">LINE_HEIGHT</span>
  231. ,<span class="reference">PropNames</span>.<span class="type">FONT_SIZE_ADJUST</span>
  232. ,<span class="reference">PropNames</span>.<span class="type">FONT_STRETCH</span>
  233. ,<span class="reference">PropNames</span>.<span class="type">FONT_SELECTION_STRATEGY</span>
  234. });
  235. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="marginExpansion">marginExpansion</span> =
  236. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  237. <span class="reference">PropNames</span>.<span class="type">MARGIN_TOP</span>
  238. ,<span class="reference">PropNames</span>.<span class="type">MARGIN_RIGHT</span>
  239. ,<span class="reference">PropNames</span>.<span class="type">MARGIN_BOTTOM</span>
  240. ,<span class="reference">PropNames</span>.<span class="type">MARGIN_LEFT</span>
  241. });
  242. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingExpansion">paddingExpansion</span> =
  243. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  244. <span class="reference">PropNames</span>.<span class="type">PADDING_TOP</span>
  245. ,<span class="reference">PropNames</span>.<span class="type">PADDING_RIGHT</span>
  246. ,<span class="reference">PropNames</span>.<span class="type">PADDING_BOTTOM</span>
  247. ,<span class="reference">PropNames</span>.<span class="type">PADDING_LEFT</span>
  248. });
  249. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="pageBreakAfterExpansion">pageBreakAfterExpansion</span> =
  250. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  251. <span class="reference">PropNames</span>.<span class="type">BREAK_AFTER</span>
  252. ,<span class="reference">PropNames</span>.<span class="type">KEEP_WITH_NEXT</span>
  253. });
  254. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="pageBreakBeforeExpansion">pageBreakBeforeExpansion</span> =
  255. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  256. <span class="reference">PropNames</span>.<span class="type">BREAK_BEFORE</span>
  257. ,<span class="reference">PropNames</span>.<span class="type">KEEP_WITH_PREVIOUS</span>
  258. });
  259. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="pageBreakInsideExpansion">pageBreakInsideExpansion</span> =
  260. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  261. <span class="reference">PropNames</span>.<span class="type">KEEP_TOGETHER</span>
  262. });
  263. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="pauseExpansion">pauseExpansion</span> =
  264. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  265. <span class="reference">PropNames</span>.<span class="type">PAUSE_BEFORE</span>
  266. ,<span class="reference">PropNames</span>.<span class="type">PAUSE_AFTER</span>
  267. });
  268. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="positionExpansion">positionExpansion</span> =
  269. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  270. <span class="reference">PropNames</span>.<span class="type">RELATIVE_POSITION</span>
  271. ,<span class="reference">PropNames</span>.<span class="type">ABSOLUTE_POSITION</span>
  272. });
  273. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="sizeExpansion">sizeExpansion</span> =
  274. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  275. <span class="reference">PropNames</span>.<span class="type">PAGE_HEIGHT</span>
  276. ,<span class="reference">PropNames</span>.<span class="type">PAGE_WIDTH</span>
  277. });
  278. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="verticalAlignExpansion">verticalAlignExpansion</span> =
  279. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  280. <span class="reference">PropNames</span>.<span class="type">ALIGNMENT_BASELINE</span>
  281. ,<span class="reference">PropNames</span>.<span class="type">ALIGNMENT_ADJUST</span>
  282. ,<span class="reference">PropNames</span>.<span class="type">BASELINE_SHIFT</span>
  283. ,<span class="reference">PropNames</span>.<span class="type">DOMINANT_BASELINE</span>
  284. });
  285. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="whiteSpaceExpansion">whiteSpaceExpansion</span> =
  286. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  287. <span class="reference">PropNames</span>.<span class="type">LINEFEED_TREATMENT</span>
  288. ,<span class="reference">PropNames</span>.<span class="type">WHITE_SPACE_COLLAPSE</span>
  289. ,<span class="reference">PropNames</span>.<span class="type">WHITE_SPACE_TREATMENT</span>
  290. ,<span class="reference">PropNames</span>.<span class="type">WRAP_OPTION</span>
  291. });
  292. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="xmlLangExpansion">xmlLangExpansion</span> =
  293. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  294. <span class="reference">PropNames</span>.<span class="type">COUNTRY</span>
  295. ,<span class="reference">PropNames</span>.<span class="type">LANGUAGE</span>
  296. });
  297. <span class="comment">/**
  298. * Shorthand properties. Where properties interact, they are listed
  299. * in increasing precision.
  300. */</span>
  301. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">int</span>[] <span class="variable-name" id="shorthands">shorthands</span> = {
  302. <span class="reference">PropNames</span>.<span class="type">BACKGROUND</span>
  303. ,<span class="reference">PropNames</span>.<span class="type">BACKGROUND_POSITION</span>
  304. ,<span class="reference">PropNames</span>.<span class="type">BORDER</span>
  305. ,<span class="reference">PropNames</span>.<span class="type">BORDER_STYLE</span>
  306. ,<span class="reference">PropNames</span>.<span class="type">BORDER_COLOR</span>
  307. ,<span class="reference">PropNames</span>.<span class="type">BORDER_WIDTH</span>
  308. ,<span class="reference">PropNames</span>.<span class="type">BORDER_TOP</span>
  309. ,<span class="reference">PropNames</span>.<span class="type">BORDER_RIGHT</span>
  310. ,<span class="reference">PropNames</span>.<span class="type">BORDER_BOTTOM</span>
  311. ,<span class="reference">PropNames</span>.<span class="type">BORDER_LEFT</span>
  312. ,<span class="reference">PropNames</span>.<span class="type">BORDER_SPACING</span>
  313. ,<span class="reference">PropNames</span>.<span class="type">CUE</span>
  314. ,<span class="reference">PropNames</span>.<span class="type">FONT</span>
  315. ,<span class="reference">PropNames</span>.<span class="type">MARGIN</span>
  316. ,<span class="reference">PropNames</span>.<span class="type">PADDING</span>
  317. ,<span class="reference">PropNames</span>.<span class="type">PAGE_BREAK_AFTER</span>
  318. ,<span class="reference">PropNames</span>.<span class="type">PAGE_BREAK_BEFORE</span>
  319. ,<span class="reference">PropNames</span>.<span class="type">PAGE_BREAK_INSIDE</span>
  320. ,<span class="reference">PropNames</span>.<span class="type">PAUSE</span>
  321. ,<span class="reference">PropNames</span>.<span class="type">POSITION</span>
  322. ,<span class="reference">PropNames</span>.<span class="type">SIZE</span>
  323. ,<span class="reference">PropNames</span>.<span class="type">VERTICAL_ALIGN</span>
  324. ,<span class="reference">PropNames</span>.<span class="type">WHITE_SPACE</span>
  325. ,<span class="reference">PropNames</span>.<span class="type">XML_LANG</span>
  326. };
  327. <span class="comment">/**
  328. * Array of &lt;i&gt;</span><span class="jde-java-font-lock-italic">ROIntArray&lt;/i&gt;&lt;b&gt;</span><span class="jde-java-font-lock-bold"> in same order as &lt;i&gt;shorthands&lt;/i&gt;</span><span class="comment">&lt;/b&gt;
  329. * &lt;i&gt;</span><span class="jde-java-font-lock-italic">ROIntArray</span><span class="comment">&lt;/i&gt;.
  330. * If a public view of this is required, use
  331. * Collections.unmodifiableList(Arrays.asList(shorthandExpansions))
  332. */</span>
  333. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span>[] <span class="variable-name" id="shorthandExpansions">shorthandExpansions</span> = {
  334. backgroundExpansion
  335. ,backgroundPositionExpansion
  336. ,borderExpansion
  337. ,borderStyleExpansion
  338. ,borderColorExpansion
  339. ,borderWidthExpansion
  340. ,borderTopExpansion
  341. ,borderRightExpansion
  342. ,borderBottomExpansion
  343. ,borderLeftExpansion
  344. ,borderSpacingExpansion
  345. ,cueExpansion
  346. ,fontExpansion
  347. ,marginExpansion
  348. ,paddingExpansion
  349. ,pageBreakAfterExpansion
  350. ,pageBreakBeforeExpansion
  351. ,pageBreakInsideExpansion
  352. ,pauseExpansion
  353. ,positionExpansion
  354. ,sizeExpansion
  355. ,verticalAlignExpansion
  356. ,whiteSpaceExpansion
  357. ,xmlLangExpansion
  358. };
  359. <span class="comment">/**
  360. * Map property index to shorthand array index
  361. */</span>
  362. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">HashMap</span> <span class="variable-name" id="shorthandMap">shorthandMap</span>;
  363. <span class="jde-java-font-lock-modifier">static</span> {
  364. shorthandMap = <span class="keyword">new</span> <span class="type">HashMap</span>(shorthands.length);
  365. <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name" id="i">i</span> = <span class="jde-java-font-lock-number">0</span>; i &lt; shorthands.length; i++) {
  366. shorthandMap.put
  367. ((<span class="type">Object</span>)(Ints.consts.get(shorthands[i])),
  368. (<span class="type">Object</span>)(Ints.consts.get(i)));
  369. }
  370. }
  371. <span class="comment">/**
  372. * RO Shorthand properties.
  373. */</span>
  374. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="roShorthands">roShorthands</span> =
  375. <span class="keyword">new</span> <span class="type">ROIntArray</span>(shorthands);
  376. <span class="comment">/**
  377. * A &lt;tt&gt;ROBitSet&lt;/tt&gt; of the shorthand properties.
  378. */</span>
  379. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROBitSet</span> <span class="variable-name" id="shorthandPropSet">shorthandPropSet</span>;
  380. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">BitSet</span> <span class="variable-name" id="shorthandpropset">shorthandpropset</span>;
  381. <span class="jde-java-font-lock-modifier">static</span> {
  382. shorthandpropset = <span class="keyword">new</span> <span class="type">BitSet</span>(PropNames.<span class="jde-java-font-lock-constant" id="LAST_PROPERTY_INDEX">LAST_PROPERTY_INDEX</span> + <span class="jde-java-font-lock-number">1</span>);
  383. <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name">i</span> = <span class="jde-java-font-lock-number">0</span>; i &lt; shorthands.length; i++)
  384. shorthandpropset.set(shorthands[i]);
  385. shorthandPropSet = <span class="keyword">new</span> <span class="type">ROBitSet</span>(shorthandpropset);
  386. }
  387. <span class="comment">/**
  388. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="property">property</span><span class="comment"> &lt;tt&gt;int&lt;/tt&gt; property index
  389. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> &lt;tt&gt;ROIntArray&lt;/tt&gt; containing the expansion list for
  390. * this shorthand.
  391. * </span><span class="jde-java-font-lock-doc-tag">@exception</span><span class="comment"> </span><span class="type">&lt;tt&gt;PropertyException&lt;/tt&gt;</span><span class="comment"> if this is not a valid
  392. * shorthand property
  393. */</span>
  394. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="type">ROIntArray</span> <span class="function-name" id="getSHandExpansionSet">getSHandExpansionSet</span>(<span class="type">int</span> <span class="variable-name">property</span>)
  395. <span class="keyword">throws</span> <span class="type">PropertyException</span>
  396. {
  397. <span class="comment">// Is the property of the argument a shorthand?
  398. </span> <span class="type">Integer</span> <span class="variable-name" id="sHIndex">sHIndex</span> =
  399. (<span class="type">Integer</span>)(shorthandMap.get(Ints.consts.get(property)));
  400. <span class="keyword">if</span> (sHIndex == <span class="jde-java-font-lock-constant" id="null">null</span>) {
  401. <span class="type">String</span> <span class="variable-name" id="propname">propname</span> = PropNames.getPropertyName(property);
  402. <span class="keyword">throw</span> <span class="keyword">new</span> <span class="type">PropertyException</span>
  403. (propname + &quot;<span class="string"> not a shorthand property</span>&quot;);
  404. }
  405. <span class="comment">// Get the array of indices of the properties in the
  406. </span> <span class="comment">// expansion of this shorthand
  407. </span> <span class="keyword">return</span> shorthandExpansions[sHIndex.intValue()];
  408. }
  409. <span class="comment">/**
  410. * Expand the shorthand property associated with the
  411. * &lt;tt&gt;PropertyValue&lt;/tt&gt; argument by copying the given value for each
  412. * property in the expansion. The &lt;em&gt;</span><span class="jde-java-font-lock-italic">property</span><span class="comment">&lt;/em&gt; field of each
  413. * &lt;tt&gt;PropertyValue&lt;/tt&gt; will be set to one of the proeprties in the
  414. * shorthand expansion.
  415. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="value">value</span><span class="comment"> a &lt;tt&gt;propertyValue&lt;/tt&gt; whose &lt;em&gt;</span><span class="jde-java-font-lock-italic">property</span><span class="comment">&lt;/em&gt; field
  416. * is assumed to be set to a shorthand property.
  417. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> &lt;tt&gt;PropertyValueList&lt;/tt&gt; containing a list of
  418. * &lt;tt&gt;PropertyValue&lt;/tt&gt;s, one for each property in the expansion of
  419. * the shorthand property.
  420. * </span><span class="jde-java-font-lock-doc-tag">@exception</span><span class="comment"> </span><span class="type">PropertyException
  421. </span><span class="comment"> */</span>
  422. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="type">PropertyValueList</span> <span class="function-name" id="expandAndCopySHand">expandAndCopySHand</span>(<span class="type">PropertyValue</span> <span class="variable-name">value</span>)
  423. <span class="keyword">throws</span> <span class="type">PropertyException</span>
  424. {
  425. <span class="comment">// The property associated with this PropertyValue
  426. </span> <span class="type">int</span> <span class="variable-name">property</span> = value.getProperty();
  427. <span class="type">ROIntArray</span> <span class="variable-name" id="expansion">expansion</span> = getSHandExpansionSet(property);
  428. <span class="type">PropertyValueList</span> <span class="variable-name" id="list">list</span> = <span class="keyword">new</span> <span class="type">PropertyValueList</span>(property);
  429. <span class="keyword">return</span> copyValueToSet(value, expansion, list);
  430. }
  431. <span class="comment">/**
  432. * Generate a list of the intial values of each property in a
  433. * shorthand expansion. Note that this will be a list of
  434. * &lt;b&gt;</span><span class="jde-java-font-lock-bold">references</span><span class="comment">&lt;/b&gt; to the initial values.
  435. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="foTree">foTree</span><span class="comment"> the &lt;tt&gt;FOTree&lt;/tt&gt; for which properties are being
  436. * processed
  437. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">property</span><span class="comment"> &lt;tt&gt;int&lt;/tt&gt; property index
  438. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> &lt;tt&gt;PropertyValueList&lt;/tt&gt; containing the intial value
  439. * expansions for the (shorthand) property
  440. * </span><span class="jde-java-font-lock-doc-tag">@exception</span><span class="comment"> </span><span class="type">&lt;tt&gt;PropertyException&lt;/tt&gt;
  441. </span><span class="comment"> */</span>
  442. <span class="comment">/*
  443. Don't do this. Shorthands should not expand initial values, because
  444. a distinction is needed between those properties which are given
  445. a specified value and those which are set by normal inheritance or from
  446. their initial values. This so that fromSpecifiedValue() will work.
  447. public static PropertyValueList initialValueSHandExpansion
  448. (FOTree foTree, int property)
  449. throws PropertyException
  450. {
  451. ROIntArray expansion = getSHandExpansionSet(property);
  452. PropertyValueList list = new PropertyValueList(property);
  453. for (int i = 0; i &lt; expansion.length; i++) {
  454. int expandedProp = expansion.get(i);
  455. PropertyValue specified
  456. = foTree.getInitialSpecifiedValue(expandedProp);
  457. list.add(specified);
  458. }
  459. return list;
  460. }
  461. */</span>
  462. <span class="comment">/**
  463. * Given a shorthand expansion list and a &lt;tt&gt;PropertyValue&lt;/tt&gt;,
  464. * override the list element corresponding to the &lt;tt&gt;PropertyValue&lt;/tt&gt;.
  465. * Correspondence is based on the &lt;em&gt;</span><span class="jde-java-font-lock-italic">property</span><span class="comment">&lt;/em&gt; field of the
  466. * &lt;tt&gt;PropertyValue&lt;/tt&gt;.
  467. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="expansionList">expansionList</span><span class="comment"> the expansion &lt;tt&gt;PropertyValueList&lt;/tt&gt;
  468. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="element">element</span><span class="comment"> the overriding &lt;tt&gt;PropertyValue&lt;/tt&gt;
  469. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> &lt;tt&gt;PropertyValueList&lt;/tt&gt; the expansion list with the
  470. * appropriate element reset
  471. * </span><span class="jde-java-font-lock-doc-tag">@exception</span><span class="comment"> </span><span class="type">&lt;tt&gt;PropertyException&lt;/tt&gt;
  472. </span><span class="comment"> */</span>
  473. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="type">PropertyValueList</span> <span class="variable-name" id="overrideSHandElement">overrideSHandElement</span>
  474. (<span class="type">PropertyValueList</span> <span class="variable-name">expansionList</span>, <span class="type">PropertyValue</span> <span class="variable-name">element</span>)
  475. <span class="keyword">throws</span> <span class="type">PropertyException</span>
  476. {
  477. <span class="type">int</span> <span class="variable-name" id="elementProp">elementProp</span> = element.getProperty();
  478. <span class="type">ListIterator</span> <span class="variable-name" id="elements">elements</span> = expansionList.listIterator();
  479. <span class="keyword">while</span> (elements.hasNext()) {
  480. <span class="type">PropertyValue</span> <span class="variable-name" id="next">next</span> = (<span class="type">PropertyValue</span>)(elements.next());
  481. <span class="keyword">if</span> (next.getProperty() == elementProp) {
  482. elements.set(element);
  483. <span class="keyword">return</span> expansionList;
  484. }
  485. }
  486. <span class="keyword">throw</span> <span class="keyword">new</span> <span class="type">PropertyException</span>
  487. (&quot;<span class="string">Unmatched property </span>&quot; + elementProp +
  488. &quot;<span class="string"> in expansion list for </span>&quot; + expansionList.getProperty());
  489. }
  490. <span class="comment">/**
  491. * Given a shorthand expansion list and a &lt;tt&gt;PropertyValueList&lt;/tt&gt;,
  492. * override the expansion list elements corresponding to the elements
  493. * of the &lt;tt&gt;PropertyValueList&lt;/tt&gt;.
  494. * Correspondence is based on the &lt;em&gt;</span><span class="jde-java-font-lock-italic">property</span><span class="comment">&lt;/em&gt; field of the
  495. * &lt;tt&gt;PropertyValue&lt;/tt&gt;.
  496. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">expansionList</span><span class="comment"> the expansion &lt;tt&gt;PropertyValueList&lt;/tt&gt;
  497. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">list</span><span class="comment"> the overriding &lt;tt&gt;PropertyValueList&lt;/tt&gt;
  498. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> &lt;tt&gt;PropertyValueList&lt;/tt&gt; the new expansion list with
  499. * appropriate elements reset
  500. * </span><span class="jde-java-font-lock-doc-tag">@exception</span><span class="comment"> </span><span class="type">&lt;tt&gt;PropertyException&lt;/tt&gt;
  501. </span><span class="comment"> */</span>
  502. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="type">PropertyValueList</span> <span class="variable-name" id="overrideSHandElements">overrideSHandElements</span>
  503. (<span class="type">PropertyValueList</span> <span class="variable-name">expansionList</span>, <span class="type">PropertyValueList</span> <span class="variable-name">list</span>)
  504. <span class="keyword">throws</span> <span class="type">PropertyException</span>
  505. {
  506. <span class="comment">// From the overriding list, form an array of PropertyValue references
  507. </span> <span class="comment">// an array of property indices and an array of booleans,
  508. </span> <span class="type">int</span> <span class="variable-name" id="listsize">listsize</span> = list.size();
  509. <span class="type">Object</span>[] <span class="variable-name" id="listrefs">listrefs</span> = <span class="keyword">new</span> <span class="type">Object</span>[listsize];
  510. <span class="type">int</span>[] <span class="variable-name" id="listprops">listprops</span> = <span class="keyword">new</span> <span class="type">int</span>[listsize];
  511. <span class="type">boolean</span>[] <span class="variable-name" id="propseen">propseen</span> = <span class="keyword">new</span> <span class="type">boolean</span>[listsize];
  512. <span class="type">Iterator</span> <span class="variable-name" id="listels">listels</span> = list.iterator();
  513. <span class="type">int</span> <span class="variable-name">i</span> = <span class="jde-java-font-lock-number">0</span>;
  514. <span class="keyword">while</span> (listels.hasNext()) {
  515. listrefs[i] = listels.next();
  516. listprops[i] = ((<span class="type">PropertyValue</span>)listrefs[i]).getProperty();
  517. i++;
  518. }
  519. <span class="type">ListIterator</span> <span class="variable-name">elements</span> = expansionList.listIterator();
  520. <span class="keyword">while</span> (elements.hasNext()) {
  521. <span class="type">PropertyValue</span> <span class="variable-name">next</span> = (<span class="type">PropertyValue</span>)(elements.next());
  522. <span class="type">int</span> <span class="variable-name" id="expprop">expprop</span> = next.getProperty();
  523. <span class="keyword">for</span> (i = <span class="jde-java-font-lock-number">0</span>; i &lt; listsize; i++) {
  524. <span class="keyword">if</span> (expprop != listprops[i]) <span class="keyword">continue</span>;
  525. elements.set(listrefs[i]);
  526. propseen[i] = <span class="jde-java-font-lock-constant" id="true">true</span>;
  527. }
  528. }
  529. <span class="comment">// Check for unmatched override elements
  530. </span> <span class="type">String</span> <span class="variable-name" id="unmatched">unmatched</span> = &quot;&quot;;
  531. <span class="type">boolean</span> <span class="variable-name" id="someunmatched">someunmatched</span> = <span class="jde-java-font-lock-constant" id="false">false</span>;
  532. <span class="keyword">for</span> (i = <span class="jde-java-font-lock-number">0</span>; i &lt; listsize; i++) {
  533. <span class="keyword">if</span> ( ! propseen[i]) {
  534. someunmatched = <span class="jde-java-font-lock-constant">true</span>;
  535. unmatched = unmatched + &quot;<span class="string"> </span>&quot; +
  536. PropNames.getPropertyName(listprops[i]);
  537. }
  538. }
  539. <span class="keyword">if</span> (someunmatched)
  540. <span class="keyword">throw</span> <span class="keyword">new</span> <span class="type">PropertyException</span>
  541. (&quot;<span class="string">Unmatched properties:</span>&quot; + unmatched +
  542. &quot;<span class="string"> : in expansion list for </span>&quot; + expansionList.getProperty());
  543. <span class="keyword">return</span> expansionList;
  544. }
  545. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="blockProgressionDimensionCopyExpansion">blockProgressionDimensionCopyExpansion</span> =
  546. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  547. <span class="reference">PropNames</span>.<span class="type">BLOCK_PROGRESSION_DIMENSION_MINIMUM</span>
  548. ,<span class="reference">PropNames</span>.<span class="type">BLOCK_PROGRESSION_DIMENSION_OPTIMUM</span>
  549. ,<span class="reference">PropNames</span>.<span class="type">BLOCK_PROGRESSION_DIMENSION_MAXIMUM</span>
  550. });
  551. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="blockProgressionDimensionNonCopyExpansion">blockProgressionDimensionNonCopyExpansion</span> =
  552. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {});
  553. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderAfterWidthCopyExpansion">borderAfterWidthCopyExpansion</span> =
  554. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  555. <span class="reference">PropNames</span>.<span class="type">BORDER_AFTER_WIDTH_LENGTH</span>
  556. });
  557. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderAfterWidthNonCopyExpansion">borderAfterWidthNonCopyExpansion</span> =
  558. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  559. <span class="reference">PropNames</span>.<span class="type">BORDER_AFTER_WIDTH_CONDITIONALITY</span>
  560. });
  561. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderBeforeWidthCopyExpansion">borderBeforeWidthCopyExpansion</span> =
  562. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  563. <span class="reference">PropNames</span>.<span class="type">BORDER_BEFORE_WIDTH_LENGTH</span>
  564. });
  565. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderBeforeWidthNonCopyExpansion">borderBeforeWidthNonCopyExpansion</span> =
  566. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  567. <span class="reference">PropNames</span>.<span class="type">BORDER_BEFORE_WIDTH_CONDITIONALITY</span>
  568. });
  569. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderEndWidthCopyExpansion">borderEndWidthCopyExpansion</span> =
  570. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  571. <span class="reference">PropNames</span>.<span class="type">BORDER_END_WIDTH_LENGTH</span>
  572. });
  573. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderEndWidthNonCopyExpansion">borderEndWidthNonCopyExpansion</span> =
  574. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  575. <span class="reference">PropNames</span>.<span class="type">BORDER_END_WIDTH_CONDITIONALITY</span>
  576. });
  577. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderStartWidthCopyExpansion">borderStartWidthCopyExpansion</span> =
  578. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  579. <span class="reference">PropNames</span>.<span class="type">BORDER_START_WIDTH_LENGTH</span>
  580. });
  581. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderStartWidthNonCopyExpansion">borderStartWidthNonCopyExpansion</span> =
  582. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  583. <span class="reference">PropNames</span>.<span class="type">BORDER_START_WIDTH_CONDITIONALITY</span>
  584. });
  585. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderSeparationCopyExpansion">borderSeparationCopyExpansion</span> =
  586. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  587. <span class="reference">PropNames</span>.<span class="type">BORDER_SEPARATION_BLOCK_PROGRESSION_DIRECTION</span>
  588. ,<span class="reference">PropNames</span>.<span class="type">BORDER_SEPARATION_INLINE_PROGRESSION_DIRECTION</span>
  589. });
  590. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="borderSeparationNonCopyExpansion">borderSeparationNonCopyExpansion</span> =
  591. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {});
  592. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="inlineProgressionDimensionCopyExpansion">inlineProgressionDimensionCopyExpansion</span> =
  593. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  594. <span class="reference">PropNames</span>.<span class="type">INLINE_PROGRESSION_DIMENSION_MINIMUM</span>
  595. ,<span class="reference">PropNames</span>.<span class="type">INLINE_PROGRESSION_DIMENSION_OPTIMUM</span>
  596. ,<span class="reference">PropNames</span>.<span class="type">INLINE_PROGRESSION_DIMENSION_MAXIMUM</span>
  597. });
  598. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="inlineProgressionDimensionNonCopyExpansion">inlineProgressionDimensionNonCopyExpansion</span> =
  599. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {});
  600. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="keepTogetherCopyExpansion">keepTogetherCopyExpansion</span> =
  601. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  602. <span class="reference">PropNames</span>.<span class="type">KEEP_TOGETHER_WITHIN_LINE</span>
  603. ,<span class="reference">PropNames</span>.<span class="type">KEEP_TOGETHER_WITHIN_COLUMN</span>
  604. ,<span class="reference">PropNames</span>.<span class="type">KEEP_TOGETHER_WITHIN_PAGE</span>
  605. });
  606. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="keepTogetherNonCopyExpansion">keepTogetherNonCopyExpansion</span> =
  607. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {});
  608. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="keepWithNextCopyExpansion">keepWithNextCopyExpansion</span> =
  609. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  610. <span class="reference">PropNames</span>.<span class="type">KEEP_WITH_NEXT_WITHIN_LINE</span>
  611. ,<span class="reference">PropNames</span>.<span class="type">KEEP_WITH_NEXT_WITHIN_COLUMN</span>
  612. ,<span class="reference">PropNames</span>.<span class="type">KEEP_WITH_NEXT_WITHIN_PAGE</span>
  613. });
  614. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="keepWithNextNonCopyExpansion">keepWithNextNonCopyExpansion</span> =
  615. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {});
  616. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="keepWithPreviousCopyExpansion">keepWithPreviousCopyExpansion</span> =
  617. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  618. <span class="reference">PropNames</span>.<span class="type">KEEP_WITH_PREVIOUS_WITHIN_LINE</span>
  619. ,<span class="reference">PropNames</span>.<span class="type">KEEP_WITH_PREVIOUS_WITHIN_COLUMN</span>
  620. ,<span class="reference">PropNames</span>.<span class="type">KEEP_WITH_PREVIOUS_WITHIN_PAGE</span>
  621. });
  622. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="keepWithPreviousNonCopyExpansion">keepWithPreviousNonCopyExpansion</span> =
  623. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {});
  624. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="leaderLengthCopyExpansion">leaderLengthCopyExpansion</span> =
  625. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  626. <span class="reference">PropNames</span>.<span class="type">LEADER_LENGTH_MINIMUM</span>
  627. ,<span class="reference">PropNames</span>.<span class="type">LEADER_LENGTH_OPTIMUM</span>
  628. ,<span class="reference">PropNames</span>.<span class="type">LEADER_LENGTH_MAXIMUM</span>
  629. });
  630. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="leaderLengthNonCopyExpansion">leaderLengthNonCopyExpansion</span> =
  631. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {});
  632. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="letterSpacingCopyExpansion">letterSpacingCopyExpansion</span> =
  633. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  634. <span class="reference">PropNames</span>.<span class="type">LETTER_SPACING_MINIMUM</span>
  635. ,<span class="reference">PropNames</span>.<span class="type">LETTER_SPACING_OPTIMUM</span>
  636. ,<span class="reference">PropNames</span>.<span class="type">LETTER_SPACING_MAXIMUM</span>
  637. });
  638. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="letterSpacingNonCopyExpansion">letterSpacingNonCopyExpansion</span> =
  639. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  640. <span class="reference">PropNames</span>.<span class="type">LETTER_SPACING_CONDITIONALITY</span>
  641. ,<span class="reference">PropNames</span>.<span class="type">LETTER_SPACING_PRECEDENCE</span>
  642. });
  643. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="lineHeightCopyExpansion">lineHeightCopyExpansion</span> =
  644. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  645. <span class="reference">PropNames</span>.<span class="type">LINE_HEIGHT_MINIMUM</span>
  646. ,<span class="reference">PropNames</span>.<span class="type">LINE_HEIGHT_OPTIMUM</span>
  647. ,<span class="reference">PropNames</span>.<span class="type">LINE_HEIGHT_MAXIMUM</span>
  648. });
  649. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="lineHeightNonCopyExpansion">lineHeightNonCopyExpansion</span> =
  650. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  651. <span class="reference">PropNames</span>.<span class="type">LINE_HEIGHT_CONDITIONALITY</span>
  652. ,<span class="reference">PropNames</span>.<span class="type">LINE_HEIGHT_PRECEDENCE</span>
  653. });
  654. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingAfterCopyExpansion">paddingAfterCopyExpansion</span> =
  655. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  656. <span class="reference">PropNames</span>.<span class="type">PADDING_AFTER_LENGTH</span>
  657. });
  658. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingAfterNonCopyExpansion">paddingAfterNonCopyExpansion</span> =
  659. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  660. <span class="reference">PropNames</span>.<span class="type">PADDING_AFTER_CONDITIONALITY</span>
  661. });
  662. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingBeforeCopyExpansion">paddingBeforeCopyExpansion</span> =
  663. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  664. <span class="reference">PropNames</span>.<span class="type">PADDING_BEFORE_LENGTH</span>
  665. });
  666. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingBeforeNonCopyExpansion">paddingBeforeNonCopyExpansion</span> =
  667. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  668. <span class="reference">PropNames</span>.<span class="type">PADDING_BEFORE_CONDITIONALITY</span>
  669. });
  670. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingEndCopyExpansion">paddingEndCopyExpansion</span> =
  671. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  672. <span class="reference">PropNames</span>.<span class="type">PADDING_END_LENGTH</span>
  673. });
  674. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingEndNonCopyExpansion">paddingEndNonCopyExpansion</span> =
  675. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  676. <span class="reference">PropNames</span>.<span class="type">PADDING_END_CONDITIONALITY</span>
  677. });
  678. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingStartCopyExpansion">paddingStartCopyExpansion</span> =
  679. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  680. <span class="reference">PropNames</span>.<span class="type">PADDING_START_LENGTH</span>
  681. });
  682. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="paddingStartNonCopyExpansion">paddingStartNonCopyExpansion</span> =
  683. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  684. <span class="reference">PropNames</span>.<span class="type">PADDING_START_CONDITIONALITY</span>
  685. });
  686. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="spaceAfterCopyExpansion">spaceAfterCopyExpansion</span> =
  687. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  688. <span class="reference">PropNames</span>.<span class="type">SPACE_AFTER_MINIMUM</span>
  689. ,<span class="reference">PropNames</span>.<span class="type">SPACE_AFTER_OPTIMUM</span>
  690. ,<span class="reference">PropNames</span>.<span class="type">SPACE_AFTER_MAXIMUM</span>
  691. });
  692. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="spaceAfterNonCopyExpansion">spaceAfterNonCopyExpansion</span> =
  693. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  694. <span class="reference">PropNames</span>.<span class="type">SPACE_AFTER_CONDITIONALITY</span>
  695. ,<span class="reference">PropNames</span>.<span class="type">SPACE_AFTER_PRECEDENCE</span>
  696. });
  697. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="spaceBeforeCopyExpansion">spaceBeforeCopyExpansion</span> =
  698. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  699. <span class="reference">PropNames</span>.<span class="type">SPACE_BEFORE_MINIMUM</span>
  700. ,<span class="reference">PropNames</span>.<span class="type">SPACE_BEFORE_OPTIMUM</span>
  701. ,<span class="reference">PropNames</span>.<span class="type">SPACE_BEFORE_MAXIMUM</span>
  702. });
  703. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="spaceBeforeNonCopyExpansion">spaceBeforeNonCopyExpansion</span> =
  704. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  705. <span class="reference">PropNames</span>.<span class="type">SPACE_BEFORE_CONDITIONALITY</span>
  706. ,<span class="reference">PropNames</span>.<span class="type">SPACE_BEFORE_PRECEDENCE</span>
  707. });
  708. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="spaceEndCopyExpansion">spaceEndCopyExpansion</span> =
  709. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  710. <span class="reference">PropNames</span>.<span class="type">SPACE_END_MINIMUM</span>
  711. ,<span class="reference">PropNames</span>.<span class="type">SPACE_END_OPTIMUM</span>
  712. ,<span class="reference">PropNames</span>.<span class="type">SPACE_END_MAXIMUM</span>
  713. });
  714. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="spaceEndNonCopyExpansion">spaceEndNonCopyExpansion</span> =
  715. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  716. <span class="reference">PropNames</span>.<span class="type">SPACE_END_CONDITIONALITY</span>
  717. ,<span class="reference">PropNames</span>.<span class="type">SPACE_END_PRECEDENCE</span>
  718. });
  719. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="spaceStartCopyExpansion">spaceStartCopyExpansion</span> =
  720. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  721. <span class="reference">PropNames</span>.<span class="type">SPACE_START_MINIMUM</span>
  722. ,<span class="reference">PropNames</span>.<span class="type">SPACE_START_OPTIMUM</span>
  723. ,<span class="reference">PropNames</span>.<span class="type">SPACE_START_MAXIMUM</span>
  724. });
  725. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="spaceStartNonCopyExpansion">spaceStartNonCopyExpansion</span> =
  726. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  727. <span class="reference">PropNames</span>.<span class="type">SPACE_START_CONDITIONALITY</span>
  728. ,<span class="reference">PropNames</span>.<span class="type">SPACE_START_PRECEDENCE</span>
  729. });
  730. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="wordSpacingCopyExpansion">wordSpacingCopyExpansion</span> =
  731. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  732. <span class="reference">PropNames</span>.<span class="type">WORD_SPACING_MINIMUM</span>
  733. ,<span class="reference">PropNames</span>.<span class="type">WORD_SPACING_OPTIMUM</span>
  734. ,<span class="reference">PropNames</span>.<span class="type">WORD_SPACING_MAXIMUM</span>
  735. });
  736. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="wordSpacingNonCopyExpansion">wordSpacingNonCopyExpansion</span> =
  737. <span class="keyword">new</span> <span class="type">ROIntArray</span>(<span class="keyword">new</span> <span class="type">int</span>[] {
  738. <span class="reference">PropNames</span>.<span class="type">WORD_SPACING_CONDITIONALITY</span>
  739. ,<span class="reference">PropNames</span>.<span class="type">WORD_SPACING_PRECEDENCE</span>
  740. });
  741. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">int</span>[] <span class="variable-name" id="compounds">compounds</span> = {
  742. <span class="reference">PropNames</span>.<span class="type">BLOCK_PROGRESSION_DIMENSION</span>
  743. ,<span class="reference">PropNames</span>.<span class="type">BORDER_AFTER_WIDTH</span>
  744. ,<span class="reference">PropNames</span>.<span class="type">BORDER_BEFORE_WIDTH</span>
  745. ,<span class="reference">PropNames</span>.<span class="type">BORDER_END_WIDTH</span>
  746. ,<span class="reference">PropNames</span>.<span class="type">BORDER_START_WIDTH</span>
  747. ,<span class="reference">PropNames</span>.<span class="type">BORDER_SEPARATION</span>
  748. ,<span class="reference">PropNames</span>.<span class="type">INLINE_PROGRESSION_DIMENSION</span>
  749. ,<span class="reference">PropNames</span>.<span class="type">KEEP_TOGETHER</span>
  750. ,<span class="reference">PropNames</span>.<span class="type">KEEP_WITH_NEXT</span>
  751. ,<span class="reference">PropNames</span>.<span class="type">KEEP_WITH_PREVIOUS</span>
  752. ,<span class="reference">PropNames</span>.<span class="type">LEADER_LENGTH</span>
  753. ,<span class="reference">PropNames</span>.<span class="type">LETTER_SPACING</span>
  754. ,<span class="reference">PropNames</span>.<span class="type">LINE_HEIGHT</span>
  755. ,<span class="reference">PropNames</span>.<span class="type">PADDING_AFTER</span>
  756. ,<span class="reference">PropNames</span>.<span class="type">PADDING_BEFORE</span>
  757. ,<span class="reference">PropNames</span>.<span class="type">PADDING_END</span>
  758. ,<span class="reference">PropNames</span>.<span class="type">PADDING_START</span>
  759. ,<span class="reference">PropNames</span>.<span class="type">SPACE_AFTER</span>
  760. ,<span class="reference">PropNames</span>.<span class="type">SPACE_BEFORE</span>
  761. ,<span class="reference">PropNames</span>.<span class="type">SPACE_END</span>
  762. ,<span class="reference">PropNames</span>.<span class="type">SPACE_START</span>
  763. ,<span class="reference">PropNames</span>.<span class="type">WORD_SPACING</span>
  764. };
  765. <span class="comment">/**
  766. * Map property index to compound array index
  767. */</span>
  768. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">HashMap</span> <span class="variable-name" id="compoundMap">compoundMap</span>;
  769. <span class="jde-java-font-lock-modifier">static</span> {
  770. compoundMap = <span class="keyword">new</span> <span class="type">HashMap</span>(compounds.length);
  771. <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name">i</span> = <span class="jde-java-font-lock-number">0</span>; i &lt; compounds.length; i++) {
  772. compoundMap.put
  773. ((<span class="type">Object</span>)(Ints.consts.get(compounds[i])),
  774. (<span class="type">Object</span>)(Ints.consts.get(i)));
  775. }
  776. }
  777. <span class="comment">/**
  778. * RO compound properties.
  779. */</span>
  780. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span> <span class="variable-name" id="roCompounds">roCompounds</span>;
  781. <span class="jde-java-font-lock-modifier">static</span> {
  782. roCompounds = <span class="keyword">new</span> <span class="type">ROIntArray</span>(compounds);
  783. }
  784. <span class="comment">/**
  785. * A &lt;tt&gt;ROBitSet&lt;/tt&gt; of the compound properties.
  786. */</span>
  787. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROBitSet</span> <span class="variable-name" id="compoundPropSet">compoundPropSet</span>;
  788. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">BitSet</span> <span class="variable-name" id="compoundpropset">compoundpropset</span>;
  789. <span class="comment">/**
  790. * a &lt;tt&gt;ROBitSet of shorthand and compound properties.
  791. */</span>
  792. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROBitSet</span> <span class="variable-name" id="shorthandCompoundProps">shorthandCompoundProps</span>;
  793. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">BitSet</span> <span class="variable-name" id="shorthandcompoundprops">shorthandcompoundprops</span>;
  794. <span class="jde-java-font-lock-modifier">static</span> {
  795. compoundpropset = <span class="keyword">new</span> <span class="type">BitSet</span>(PropNames.<span class="jde-java-font-lock-constant">LAST_PROPERTY_INDEX</span> + <span class="jde-java-font-lock-number">1</span>);
  796. <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name">i</span> = <span class="jde-java-font-lock-number">0</span>; i &lt; compounds.length; i++)
  797. compoundpropset.set(compounds[i]);
  798. compoundPropSet = <span class="keyword">new</span> <span class="type">ROBitSet</span>(compoundpropset);
  799. shorthandcompoundprops = <span class="keyword">new</span> <span class="type">BitSet</span>();
  800. shorthandcompoundprops.or(compoundpropset);
  801. shorthandcompoundprops.or(shorthandpropset);
  802. shorthandCompoundProps = <span class="keyword">new</span> <span class="type">ROBitSet</span>(shorthandcompoundprops);
  803. }
  804. <span class="comment">/**
  805. * Array of &lt;i&gt;</span><span class="jde-java-font-lock-italic">ROIntArray</span><span class="comment">&lt;/i&gt;&lt;b&gt; of the copy expansion properties of
  806. * compounds in same order as &lt;i&gt;</span><span class="jde-java-font-lock-italic">compounds</span><span class="comment">&lt;/i&gt;&lt;/b&gt;
  807. * &lt;i&gt;</span><span class="jde-java-font-lock-italic">ROIntArray</span><span class="comment">&lt;/i&gt;.
  808. * If a public view of this is required, use
  809. * Collections.unmodifiableList(Arrays.asList(compoundCopyExpansions))
  810. */</span>
  811. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span>[] <span class="variable-name" id="compoundCopyExpansions">compoundCopyExpansions</span> = {
  812. blockProgressionDimensionCopyExpansion
  813. ,borderAfterWidthCopyExpansion
  814. ,borderBeforeWidthCopyExpansion
  815. ,borderEndWidthCopyExpansion
  816. ,borderStartWidthCopyExpansion
  817. ,borderSeparationCopyExpansion
  818. ,inlineProgressionDimensionCopyExpansion
  819. ,keepTogetherCopyExpansion
  820. ,keepWithNextCopyExpansion
  821. ,keepWithPreviousCopyExpansion
  822. ,leaderLengthCopyExpansion
  823. ,letterSpacingCopyExpansion
  824. ,lineHeightCopyExpansion
  825. ,paddingAfterCopyExpansion
  826. ,paddingBeforeCopyExpansion
  827. ,paddingEndCopyExpansion
  828. ,paddingStartCopyExpansion
  829. ,spaceAfterCopyExpansion
  830. ,spaceBeforeCopyExpansion
  831. ,spaceEndCopyExpansion
  832. ,spaceStartCopyExpansion
  833. ,wordSpacingCopyExpansion
  834. };
  835. <span class="comment">/**
  836. * Array of &lt;i&gt;</span><span class="jde-java-font-lock-italic">ROIntArray</span><span class="comment">&lt;/i&gt;&lt;b&gt; of the non-copy expansion properties of
  837. * compounds in same order as &lt;i&gt;</span><span class="jde-java-font-lock-italic">compounds</span><span class="comment">&lt;/i&gt;&lt;/b&gt;
  838. * &lt;i&gt;</span><span class="jde-java-font-lock-italic">ROIntArray</span><span class="comment">&lt;/i&gt;.
  839. * If a public view of this is required, use
  840. * Collections.unmodifiableList(Arrays.asList(compoundNonCopyExpansions))
  841. */</span>
  842. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="jde-java-font-lock-modifier">final</span> <span class="type">ROIntArray</span>[] <span class="variable-name" id="compoundNonCopyExpansions">compoundNonCopyExpansions</span> = {
  843. blockProgressionDimensionNonCopyExpansion
  844. ,borderAfterWidthNonCopyExpansion
  845. ,borderBeforeWidthNonCopyExpansion
  846. ,borderEndWidthNonCopyExpansion
  847. ,borderStartWidthNonCopyExpansion
  848. ,borderSeparationNonCopyExpansion
  849. ,inlineProgressionDimensionNonCopyExpansion
  850. ,keepTogetherNonCopyExpansion
  851. ,keepWithNextNonCopyExpansion
  852. ,keepWithPreviousNonCopyExpansion
  853. ,leaderLengthNonCopyExpansion
  854. ,letterSpacingNonCopyExpansion
  855. ,lineHeightNonCopyExpansion
  856. ,paddingAfterNonCopyExpansion
  857. ,paddingBeforeNonCopyExpansion
  858. ,paddingEndNonCopyExpansion
  859. ,paddingStartNonCopyExpansion
  860. ,spaceAfterNonCopyExpansion
  861. ,spaceBeforeNonCopyExpansion
  862. ,spaceEndNonCopyExpansion
  863. ,spaceStartNonCopyExpansion
  864. ,wordSpacingNonCopyExpansion
  865. };
  866. <span class="comment">/**
  867. * Expand the &lt;tt&gt;PropertyValue&lt;/tt&gt; assigned to a compound property
  868. * into &lt;tt&gt;propertyValues&lt;/tt&gt; for the individual property components.
  869. * N.B. This method assumes that the set of expansion properties is
  870. * comprised of a copy and a non-copy set. For example, &amp;lt;space&amp;gt;
  871. * compounds have a copy set of .minimum, .optimum and .maximum, and a
  872. * non-copy set of .precedence and .conditionality. For each element of
  873. * the copy set, the given value is cloned. For each member of the
  874. * non-copy set, a reference to the initial value is taken.
  875. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">foTree</span><span class="comment"> - the &lt;tt&gt;FOTree&lt;/tt&gt; for which properties are being
  876. * developed.
  877. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">value</span><span class="comment"> - the &lt;tt&gt;PropertyValue&lt;/tt&gt; to be cloned for the copy
  878. * set members.
  879. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> a &lt;tt&gt;PropertyValueList&lt;/tt&gt; containing the copy set
  880. * expansions followed by the non-copy set expansions, in the order
  881. * they are defined in appropriate &lt;tt&gt;ROIntArray&lt;/tt&gt;s in this class.
  882. */</span>
  883. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="type">PropertyValueList</span> <span class="variable-name" id="expandCompoundProperty">expandCompoundProperty</span>
  884. (<span class="type">FOTree</span> <span class="variable-name">foTree</span>, <span class="type">PropertyValue</span> <span class="variable-name">value</span>)
  885. <span class="keyword">throws</span> <span class="type">PropertyException</span>
  886. {
  887. <span class="type">int</span> <span class="variable-name">property</span> = value.getProperty();
  888. <span class="type">Integer</span> <span class="variable-name" id="compoundX">compoundX</span> =
  889. (<span class="type">Integer</span>)(compoundMap.get(Ints.consts.get(property)));
  890. <span class="keyword">if</span> (compoundX == <span class="jde-java-font-lock-constant">null</span>)
  891. <span class="keyword">throw</span> <span class="keyword">new</span> <span class="type">PropertyException</span>
  892. (PropNames.getPropertyName(property) + &quot;<span class="string"> (</span>&quot; + property + &quot;<span class="string">) </span>&quot;
  893. + &quot;<span class="string"> is not a compound property.</span>&quot;);
  894. <span class="type">int</span> <span class="variable-name" id="compoundIdx">compoundIdx</span> = compoundX.intValue();
  895. <span class="type">PropertyValueList</span> <span class="variable-name">list</span> = <span class="keyword">new</span> <span class="type">PropertyValueList</span>(property);
  896. <span class="type">ROIntArray</span> <span class="variable-name">expansion</span>;
  897. <span class="comment">// Expand the copy components
  898. </span> list = copyValueToSet
  899. (value, compoundCopyExpansions[compoundIdx], list);
  900. <span class="comment">// Expand the non-copy components
  901. </span> <span class="keyword">return</span> initialValueCompoundExpansion
  902. (foTree, compoundNonCopyExpansions[compoundIdx], list);
  903. }
  904. <span class="comment">/**
  905. * Clone the given property value for each property in the given
  906. * expansion set. Append the new property values to the given list.
  907. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">value</span><span class="comment"> - the property value to clone.
  908. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name" id="expansionSet">expansionSet</span><span class="comment"> - the set of indices of the expansion properties.
  909. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">list</span><span class="comment"> - the list to which to append the expansion elements.
  910. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> the original &lt;tt&gt;PropertyValueList&lt;/tt&gt; containing the
  911. * appended expansions.
  912. * </span><span class="jde-java-font-lock-doc-tag">@exception</span><span class="comment"> </span><span class="type">&lt;tt&gt;PropertyException&lt;/tt&gt;
  913. </span><span class="comment"> */</span>
  914. <span class="jde-java-font-lock-modifier">private</span> <span class="jde-java-font-lock-modifier">static</span> <span class="type">PropertyValueList</span> <span class="function-name" id="copyValueToSet">copyValueToSet</span>(<span class="type">PropertyValue</span> <span class="variable-name">value</span>,
  915. <span class="type">ROIntArray</span> <span class="variable-name">expansionSet</span>, <span class="type">PropertyValueList</span> <span class="variable-name">list</span>)
  916. <span class="keyword">throws</span> <span class="type">PropertyException</span>
  917. {
  918. <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name">i</span> = <span class="jde-java-font-lock-number">0</span>; i &lt; expansionSet.length; i++) {
  919. <span class="type">int</span> <span class="variable-name" id="expandedProp">expandedProp</span> = expansionSet.get(i);
  920. <span class="type">PropertyValue</span> <span class="variable-name" id="expandedPropValue">expandedPropValue</span>;
  921. <span class="comment">// The PropertyValue must be cloneable
  922. </span> <span class="comment">// The property associated with each PV in the expansion will
  923. </span> <span class="comment">// necessarily be different.
  924. </span> <span class="keyword">try</span> {
  925. expandedPropValue = (<span class="type">PropertyValue</span>)(value.clone());
  926. } <span class="keyword">catch</span> (<span class="type">CloneNotSupportedException</span> <span class="variable-name" id="e">e</span>) {
  927. <span class="keyword">throw</span> <span class="keyword">new</span> <span class="type">PropertyException</span>(e.getMessage());
  928. }
  929. expandedPropValue.setProperty(expandedProp);
  930. list.add(expandedPropValue);
  931. }
  932. <span class="keyword">return</span> list;
  933. }
  934. <span class="comment">/**
  935. * Append the initial values of each non-copy property in a
  936. * compound expansion to a list. Note that these elements will be
  937. * &lt;b&gt;</span><span class="jde-java-font-lock-bold">references</span><span class="comment">&lt;/b&gt; to the initial values. Note also that, in the
  938. * expansion of a compound value, the initial value comonents are
  939. * regarded as having been specified.
  940. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">foTree</span><span class="comment"> - the &lt;tt&gt;FOTree&lt;/tt&gt; of the node whose properties are
  941. * being processed.
  942. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">expansion</span><span class="comment"> - the set of indices of the expansion properties.
  943. * </span><span class="jde-java-font-lock-doc-tag">@param</span><span class="comment"> </span><span class="variable-name">list</span><span class="comment"> - the list to which to append the expansion elements.
  944. * </span><span class="jde-java-font-lock-doc-tag">@return</span><span class="comment"> the original &lt;tt&gt;PropertyValueList&lt;/tt&gt; containing the
  945. * appended initial value expansions for the (compound) property.
  946. * </span><span class="jde-java-font-lock-doc-tag">@exception</span><span class="comment"> </span><span class="type">&lt;tt&gt;PropertyException&lt;/tt&gt;
  947. </span><span class="comment"> */</span>
  948. <span class="jde-java-font-lock-modifier">public</span> <span class="jde-java-font-lock-modifier">static</span> <span class="type">PropertyValueList</span> <span class="variable-name" id="initialValueCompoundExpansion">initialValueCompoundExpansion</span>
  949. (<span class="type">FOTree</span> <span class="variable-name">foTree</span>, <span class="type">ROIntArray</span> <span class="variable-name">expansion</span>, <span class="type">PropertyValueList</span> <span class="variable-name">list</span>)
  950. <span class="keyword">throws</span> <span class="type">PropertyException</span>
  951. {
  952. <span class="keyword">for</span> (<span class="type">int</span> <span class="variable-name">i</span> = <span class="jde-java-font-lock-number">0</span>; i &lt; expansion.length; i++) {
  953. <span class="type">int</span> <span class="variable-name">expandedProp</span> = expansion.get(i);
  954. <span class="type">PropertyValue</span> <span class="variable-name" id="specified">specified</span>
  955. = PropertyConsts.pconsts.getInitialValue(expandedProp);
  956. list.add(specified);
  957. }
  958. <span class="keyword">return</span> list;
  959. }
  960. <span class="jde-java-font-lock-modifier">private</span> <span class="function-name" id="ShorthandPropSets">ShorthandPropSets</span> (){}
  961. }
  962. </pre>
  963. </body>
  964. </html>