]> source.dussan.org Git - xmlgraphics-fop.git/commitdiff
Using .ehtml files
authorPeter Bernard West <pbwest@apache.org>
Thu, 6 Mar 2003 05:23:01 +0000 (05:23 +0000)
committerPeter Bernard West <pbwest@apache.org>
Thu, 6 Mar 2003 05:23:01 +0000 (05:23 +0000)
git-svn-id: https://svn.apache.org/repos/asf/xmlgraphics/fop/trunk@196025 13f79535-47bb-0310-9956-ffa450edef68

src/documentation/content/design/alt.design/alt-design-frameset.html [deleted file]
src/documentation/content/design/alt.design/codeframe.html [deleted file]
src/documentation/content/design/alt.design/logo.html [deleted file]
src/documentation/content/xdocs/design/alt.design/properties/PropertyConsts-class.ehtml [new file with mode: 0644]
src/documentation/content/xdocs/design/alt.design/properties/book.xml [new file with mode: 0644]
src/documentation/content/xdocs/design/alt.design/properties/classes-overview.ehtml [new file with mode: 0644]
src/documentation/content/xdocs/design/alt.design/properties/enumerated-values.ehtml [new file with mode: 0644]
src/documentation/content/xdocs/design/alt.design/properties/getInitialValue.ehtml [new file with mode: 0644]
src/documentation/content/xdocs/design/alt.design/properties/index.xml [new file with mode: 0644]
src/documentation/content/xdocs/design/alt.design/properties/propertyExpressions.ehtml [new file with mode: 0644]
src/documentation/content/xdocs/design/alt.design/properties/simple-properties.ehtml [new file with mode: 0644]

diff --git a/src/documentation/content/design/alt.design/alt-design-frameset.html b/src/documentation/content/design/alt.design/alt-design-frameset.html
deleted file mode 100644 (file)
index c39dc2f..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
-<html>
-  <head>
-    <title>Alt Design Frameset</title>
-    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-    <script type="text/javascript">
-      <!--
-      browserName = navigator.appName;
-      var isHigh = true;
-      
-      function lengthenCol() {
-        if (isHigh) { return; }
-        fset = document.getElementById("altDesignFramesetRows");
-        fset.setAttribute("rows", "95%,*");
-        logowin = top.frames[0];
-        if (logowin == null) {
-          alert(
-            "Requires Navigator >= 7, Mozilla >= 1.2.1 or IE >= 6");
-          return;
-        }
-        logodoc = logowin.document;
-        lbutton = logodoc.getElementById("lengthenButton");
-        lbutton.setAttribute("value", "^");
-        isHigh = true;
-      }
-      
-      function shortenCol() {
-        if ( ! isHigh) { return; }
-        fset = document.getElementById("altDesignFramesetRows");
-        fset.setAttribute("rows", "20%,*");
-        logowin = top.frames[0];
-        if (logowin == null) {
-          alert(
-            "Requires Navigator >= 7, Mozilla >= 1.2.1 or IE >= 6");
-          return;
-        }
-        logodoc = logowin.document;
-        lbutton = logodoc.getElementById("lengthenButton");
-        lbutton.setAttribute("value", "v");
-        isHigh = false;
-      }
-      
-      function toggleColHeights() {
-        if (isHigh) {
-          shortenCol();
-        } else {
-          lengthenCol()
-        }
-      }
-
-      function displayCode(src) {
-          top.frames[2].location = src;
-          shortenCol();
-      }
-
-      function displayHtml(src) {
-          top.frames[1].location = src;
-          lengthenCol();
-      }
-
-      function displayAlert(msg) {
-        alert(msg);
-      }
-      -->
-    </script>
-  </head>
-  <frameset id="altDesignFramesetCols" cols="180,*">
-    <frame id="logoFrame" class="logo" style="padding: 0px; margin: 0px:
-           border: 0px;" src="logo.html" scrolling="no">
-    <frameset id="altDesignFramesetRows" rows="95%,*">
-      <frame id="contents" src="properties/introduction.html">
-      <frame id= "codeDisplayFrame"
-             class= "codeDisplay"
-             src= "codeframe.html" >
-    </frameset>
-  </frameset>
-</html>
diff --git a/src/documentation/content/design/alt.design/codeframe.html b/src/documentation/content/design/alt.design/codeframe.html
deleted file mode 100644 (file)
index f92bfd9..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Frame for Code Display</title>
-    <style type="text/css">
-      <!--
-      p { text-align:center }
-      -->
-    </style>
-  </head>
-  <body>
-    <p>Frame for code display.</p>
-  </body>
-</html>
diff --git a/src/documentation/content/design/alt.design/logo.html b/src/documentation/content/design/alt.design/logo.html
deleted file mode 100644 (file)
index 37d2650..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-  <head>
-    <title>Logo for Properties</title>
-    <link type="text/css" href="../../page.css" rel="stylesheet">
-    <style type="text/css">
-      <!--
-      body {
-          background-image: url(../../images/logo.jpg);
-          background-position: top center;
-          background-repeat: no-repeat;
-          background-attachment: fixed;
-          background-color:#294563;border:0px;padding:0px:margin:0px
-      }
-      .menu {
-          background-color: transparent;
-      }
-      img {padding:0px;margin:0px;border:0px;}
-      input {float:right;}
-      input#lengthenButton {position:fixed; bottom: 0.2em; right:
-      0.2em}
-      li.toplevel {color: #CFDCED}
-      -->
-    </style>
-  </head>
-  <body>
-    <input id="lengthenButton" onclick="window.top.toggleColHeights();return
-           true;" type="button" value="^">
-    <div id="menu" class="menu">
-      <ul>
-        <li class="toplevel">Index
-          <ul>
-            
-            <li>
-              <a href="../../index.html" target="_parent">FOP Home</a>
-            </li>
-            
-            <li>
-              <a href="index.html" target="_parent">Alt Design</a>
-            </li>
-            
-          </ul>
-        </li>
-        <li class="toplevel">Alt Design Properties</font>
-            <ul>
-            
-              <li>
-                <a href= "javascript:window.top.displayHtml(
-                   'properties/introduction.html' )" >Introduction</a>
-              </li>
-              
-              <li>
-                <a href= "javascript:window.top.displayHtml(
-                   'properties/classes-overview.html' )" >Classes
-                overview</a>
-              </li>
-              
-              <li>
-                <a href= "javascript:window.top.displayHtml(
-                   'properties/PropertyConsts-class.html' )"
-                >PropertyConsts</a>
-              </li>
-              
-              <li>
-                <a href= "javascript:window.top.displayHtml(
-                   'properties/simple-properties.html' )" >Simple
-                Properties</a>
-              </li>
-              
-              <li>
-                <a href= "javascript:window.top.displayHtml(
-                   'properties/getInitialValue.html' )"
-                >getInitialValue</a>
-              </li>
-              
-              <li>
-                <a href= "javascript:window.top.displayHtml(
-                   'properties/enumerated-values.html' )" >Enumerated
-                data</a>
-              </li>
-              
-              <li>
-                <a href= "javascript:window.top.displayHtml(
-                   'properties/propertyExpressions.html' )" >Property
-                parsing</a>
-              </li>
-  
-          </ul>
-        </li>
-      </ul>
-    </div>
-  </body>
-</html>
diff --git a/src/documentation/content/xdocs/design/alt.design/properties/PropertyConsts-class.ehtml b/src/documentation/content/xdocs/design/alt.design/properties/PropertyConsts-class.ehtml
new file mode 100644 (file)
index 0000000..2044d86
--- /dev/null
@@ -0,0 +1,89 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+    <title>PropertyConsts Description</title>
+  </head>
+  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0"
+        text="#000000" bgcolor="#FFFFFF">
+    <div class="content">
+      <h1>PropertyConsts Description</h1>
+      <p>
+        <font size="-2">by&nbsp;Peter B. West</font>
+      </p>
+      <ul class="minitoc">
+        <li>
+          <a href="#N10014">Introduction</a>
+        </li>
+      </ul>
+      
+      <a name="N10014"></a>
+      <h3>Introduction</h3>
+      <p>
+        
+        <a href="javascript:window.top.displayCode(
+           'PropertyConsts.html#PropertyConstsClass'
+        )">This class</a>, and the singleton object which is <a
+        href="javascript:window.top.displayCode(
+        'PropertyConsts.html#pconsts' )">generated by the static
+        initializer</a>, is essentially a repository of
+        &lt;property&gt; class instances and the static data from
+        those classes of <span
+        class="codefrag">org.apache.fop.fo.property</span>.
+        The heart of this class is the method <a href=
+        "javascript:window.top.displayCode(
+        'PropertyConsts.html#setupProperty' )"><span class="codefrag"
+        >setupProperty</span ></a>.  Whenever access to the data or
+        methods of a property class is required, this method in the
+        singleton must be called to ensure that an instance of the
+        property exists and that the static data from that instance
+        has been extracted.
+      </p>
+
+      <div class="frame note">
+        <div class="label">Note</div>
+        <div class="content">
+          An alternative to this requirement would be to pre-load all
+          of the individual property classes during the system
+          initialization phase.  This is not done currently because of
+          the start-up expense of the required class loading for over
+          three hundred classes, and the relatively low added expense
+          of checking for the existence of a property instance before
+          every access.  Given that FOP is increasingly used in a
+          server environment, it may prove acceptable in the long run
+          to change to pre-loading.
+        </div>
+      </div>
+
+      <p>
+        The class name is generated and stored in the <a
+        href="javascript:window.top.displayCode(
+        'PropertyConsts.html#classNames' )"><span class="codefrag"
+        >classNames</span ></a> array; a class instance is generated
+        from the name and stored in the <a
+        href="javascript:window.top.displayCode(
+        'PropertyConsts.html#classes' )"><span class="codefrag"
+        >classes</span ></a> array; and an instance of the class is
+        generated from the class object and stored in the <a
+        href="javascript:window.top.displayCode(
+        'PropertyConsts.html#properties' )"><span class="codefrag"
+        >properties</span ></a> array.
+      </p>
+
+      <p>
+        The other data gathering facilities and access methods of this
+        class will be examined in conjunction with the various types
+        of property classes.
+      </p>
+
+      <p>
+        <strong>Previous:</strong> <a href = "classes-overview.html"
+        >Property classes overview</a>
+      </p>
+      <p>
+        <strong>Next:</strong> <a href= "simple-properties.html"
+                                  >Simple property classes</a>
+      </p>
+    </div>
+  </body>
+</html>
diff --git a/src/documentation/content/xdocs/design/alt.design/properties/book.xml b/src/documentation/content/xdocs/design/alt.design/properties/book.xml
new file mode 100644 (file)
index 0000000..4cb6871
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//APACHE//DTD Cocoon Documentation Book V1.0//EN"
+    "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-cocoon2/src/documentation/xdocs/dtd/book-cocoon-v10.dtd">
+
+<book software="FOP"
+      title="FOP Alternative Design Properties Notes"
+      copyright="@year@ The Apache Software Foundation"
+      xmlns:xlink="http://www.w3.org/1999/xlink"
+      >
+  <menu label="Index">
+    <menu-item label="FOP Home" href="../../index.html"/>
+    <menu-item label="Alt Design" href="../index.html"/>
+  </menu>
+  <menu label="Alt properties">
+    <menu-item label="Introduction" href="index.html"/>
+    <menu-item label="Classes overview" href="classes-overview.html"/>
+    <menu-item label="PropertyConsts" href="PropertyConsts-class.html"/>
+    <menu-item label="Simple Properties" href="simple-properties.html"/>
+    <menu-item label="getInitialValue" href="getInitialValue.html"/>
+    <menu-item label="Enumerated data" href="enumerated-values.html"/>
+    <menu-item label="Property parsing" href="propertyExpressions.html"/>
+  </menu>
+</book>
diff --git a/src/documentation/content/xdocs/design/alt.design/properties/classes-overview.ehtml b/src/documentation/content/xdocs/design/alt.design/properties/classes-overview.ehtml
new file mode 100644 (file)
index 0000000..c57b872
--- /dev/null
@@ -0,0 +1,356 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <META http-equiv= "Content-Type" content= "text/html; charset=ISO-8859-1" >
+    <title>Property classes overview</title>
+    <script type="text/javascript" src="resources/codedisplay.js">
+    </script>
+  </head>
+  <body marginheight= "0" marginwidth= "0" topmargin= "0" leftmargin= "0" text= "#000000" bgcolor= "#FFFFFF" >
+    <div class= "content" >
+      <h1>Property classes overview</h1>
+      <p>
+        <font size= "-2" >by&nbsp;Peter B. West</font>
+      </p>
+      <ul class= "minitoc" >
+        <li>
+          <a href = "#N10014" >Properties: packages</a>
+          <ul class= "minitoc" >
+            <li>
+              <a href = "#N10019" >org.apache.fop.fo</a>
+            </li>
+            <li>
+              <a href = "#N100AC" >org.apache.fop.fo.properties</a>
+            </li>
+            <li>
+              <a href = "#N100EE" >org.apache.fop.fo.expr</a>
+            </li>
+            <li>
+              <a href = "#N10134" >org.apache.fop.datatypes</a>
+            </li>
+            <li>
+              <a href = "#N101A2"
+              >org.apache.fop.datatypes.indirect</a>
+            </li>
+          </ul>
+        </li>
+      </ul>
+      <a name= "N10014" ></a> <h3>Properties: packages</h3> <a name=
+      "N10019" ></a> <h4>org.apache.fop.fo</h4>
+      <dl>
+        <dt>
+          <span id="span00" ></span>
+          <a href = "javascript:toggleCode('span00',
+             'PropNames.html#PropNamesClass', '50%', '100%'
+          )" ><em>PropNames</em></a>
+        </dt>
+        <dd>
+          This class maintains an array of <span id="span01"
+          ></span><a href= "javascript:toggleCode( 'span01',
+          'PropNames.html#propertyNames', '50%', '100%' )" >property
+          names</a>, synchronized to a complete set of property name
+          <span id="span02" ></span><a href = "javascript:toggleCode(
+          'span02', 'PropNames.html#NO_PROPERTY', '50%', '100%' )"
+          >constants</a> for indexing property-based arrays.  It
+          includes methods to <span id="span03" ></span><a href =
+          "javascript:toggleCode( 'span03',
+          'PropNames.html#getPropertyName', '50%', '100%' )" >convert
+          an index to a name</a> and to <span id="span04" ></span><a
+          href = "javascript:toggleCode( 'span04',
+          'PropNames.html#getPropertyIndex', '50%', '100%' )" >convert
+          a property name to an index</a>.
+        </dd>
+        <dt>
+          <a href = "PropertyConsts-class.html" ><em>PropertyConsts</em></a>
+        </dt>
+        <dd>
+          A singleton instance of <span class= "codefrag"
+          >PropertyConsts</span> is created by the static initializer
+          of the <span id="span05" ></span><a href =
+          "javascript:toggleCode( 'span05',
+          'PropertyConsts.html#pconsts', '50%', '100%' )" >pconsts</a>
+          field.  Working from the property indices defined in
+          PropNames, the methods in this class collect and supply the
+          values of fields defined in property objects into
+          arrays.<br> The heart of this class in the method <span
+          id="span06" ></span><a href = "javascript:toggleCode(
+          'span06', 'PropertyConsts.html#setupProperty', '50%', '100%'
+          )" >setupProperty</a>, which constructs the property name
+          from the index, instantiates a singleton of the appropriate
+          class, and extracts static fields by reflection from that
+          instance into the arrays of field values.
+        </dd>
+        <dt>
+          <span id="span07" ></span><a href = "javascript:toggleCode(
+          'span07', 'PropertySets.html#PropertySetsClass', '50%',
+          '100%' )" ><em>PropertySets</em></a>
+        </dt>
+        <dd>
+          This class provides a number of <span class= "codefrag"
+          >ROBitSet</span>s representing many of the sets of
+          properties defined in <em>Section 7</em> of the
+          specification.  Note that the <span id="span08" ></span
+          ><a href= "javascript:toggleCode( 'span08',
+          'PropertySets.html#borderProps', '50%', '100%' )"
+          ><em>Border</em></a>, <span id="span09" ></span ><a href=
+          "javascript:toggleCode( 'span09',
+          'PropertySets.html#paddingProps', '50%', '100%' )"
+          ><em>Padding</em></a> and <span id="span10" ></span><a
+          href= "javascript:toggleCode( 'span10',
+          'PropertySets.html#backgroundProps', '50%', '100%'
+          )"><em>Background</em></a> sets are defined separately.
+        </dd>
+        <dt>
+          <span id="span11" ></span><a href = "javascript:toggleCode(
+          'span11', '../FOPropertySets.html#FOPropertySetsClass',
+          '50%', '100%' )"><em>FOPropertySets</em></a>
+        </dt>
+        <dd>
+          This class provides a number of <span class= "codefrag"
+          >ROBitSet</span>s representing sets of properties which are
+          applicable in particular subtrees of the FO tree.  These
+          sets are provided so that other properties can be ignored
+          during processing of the subtrees.
+        </dd>
+        <dt>
+          <span id="span12" ></span><a href = "javascript:toggleCode(
+          'span12', 'ShorthandPropSets.html#ShorthandPropSetsClass',
+          '50%', '100%' )"><em>ShorthandPropSets</em></a>
+        </dt>
+        <dd>
+          This class contains arrays of <span id="span13" ></span><a
+          href = "javascript:toggleCode( 'span13',
+          'ShorthandPropSets.html#shorthands', '50%', '100%' )"
+          >shorthand property indices</a> and <span id="span14"
+          ></span><a href = "javascript:toggleCode( 'span14',
+          'ShorthandPropSets.html#compounds', '50%', '100%' )"
+          >compound property indices</a>, and <span class= "codefrag"
+          >ROBitSet</span>s representing the expansion sets of these
+          shorthands and compounds.  Various methods useful in the
+          expansion of these properties are also included.
+        </dd>
+        <dt>
+          <span id="span15" ></span><a href = "javascript:toggleCode(
+          'span15', 'FOAttributes.html#FOAttributesClass', '50%',
+          '100%' )"><em>FOAttributes</em></a>
+        </dt>
+        <dd>
+          This class manages the attribute set that is associated with
+          a SAX <span class= "codefrag" >startElement</span> event.
+          <em>fo:</em> namespace attributes are entered into a <span
+          id = "span16" ></span ><a href = "javascript:toggleCode(
+          'span16', 'FOAttributes.html#foAttrMap', '50%', '100%' )"
+          ><span class= "codefrag" >HashMap</span></a>, indexed by the
+          <em>fo:</em> property index.  As other namespaces are
+          encountered, the values are entered into namespace-specific
+          <span id="span17" ></span><a href = "javascript:toggleCode(
+          'span17', 'FOAttributes.html#nSpaceAttrMaps', '50%', '100%'
+          )"><span class= "codefrag" >HashMap</span>s</a>, indexed by
+          the <em>local name</em> of the attribute.
+        </dd>
+      </dl>
+      <a name= "N100AC" ></a><a name= "property-classes" ></a>
+      <h4>org.apache.fop.fo.properties</h4>
+      <dl>
+        <dt>
+          <span id="span18" ></span><a href="javascript:toggleCode(
+          'span18', 'Property.html#PropertyClass', '50%', '100%' )"
+          ><em>Property</em></a>
+        </dt>
+        <dd>
+          The base class for all individual property classes.
+          There are 320 properties in all.
+        </dd>
+        <dt>
+          <em>ColumnNumber</em>
+        </dt>
+        <dd>
+          The actual property class with the lowest index
+          number, followed in the index order by properties required
+          for further processing, e.g. FontSize.
+        </dd>
+        <dt>
+          <em>....</em>
+        </dt>
+        <dd>....</dd>
+        <dt>
+          <em>Background</em>
+        </dt>
+        <dd>
+          First in index order of the remainining shorthand
+          properties, followed in index order by all other remaining
+          shorthands.
+        </dd>
+        <dt>
+          <em>....</em>
+        </dt>
+        <dd>....</dd>
+        <dt>
+          <em>AbsolutePosition</em>
+        </dt>
+        <dd>
+          First in index order of the remaining properties.  Within
+          this ordering, compound properties precede their expansion
+          properties, and corresponding relative properties precede
+          corresponding absolute properties.
+        </dd>
+        <dt>
+          <em>....</em>
+        </dt>
+        <dd>....</dd>
+        <dt>
+          <em>ZIndex</em>
+        </dt>
+        <dd>
+          The property class with the highest index
+          number.
+        </dd>
+      </dl>
+      <a name= "N100EE" ></a>
+      <h4>org.apache.fop.fo.expr</h4>
+      <dl>
+        <dt>
+          <span id="span19" ></span><a href = "javascript:toggleCode(
+          'span19', 'PropertyTokenizer.html#PropertyTokenizerClass',
+          '50%', '100%' )"><em>PropertyTokenizer</em></a>
+        </dt>
+        <dd>
+          The tokenizer for the property expression parser.  Defines a
+          set of <span id="span20" ></span><a href =
+          "javascript:toggleCode( 'span20',
+          'PropertyTokenizer.html#EOF', '50%', '100%' )" >token
+          constants</a> and returns these with associated token
+          values.
+        </dd>
+        <dt>
+          <span id="span21" ></span><a href = "javascript:toggleCode(
+          'span21', 'PropertyParser.html#PropertyParserClass', '50%',
+          '100%' )"><em>PropertyParser</em></a>
+        </dt>
+        <dd>
+          This extends <span class= "codefrag"
+          >PropertyTokenizer</span>.  It parses property
+          expressions on the basis of the tokens passed to it by its
+          superclass, generating <span class= "codefrag"
+          >PropertyValue</span>s, including <span class= "codefrag"
+          >PropertyValueList</span>s.
+        </dd>
+        <dt>
+          <em>PropertyException</em>
+        </dt>
+        <dd>
+          The basic class for all property-related exceptions.
+          It extends <span class= "codefrag" >FOPException</span>. It
+          is housed in this package by historical accident.
+        </dd>
+        <dt>
+          <em>DataTypeNotImplementedException</em>
+          <br>
+          <em>FunctionNotImplementedException</em>
+          <br>
+          <em>PropertyNotImplementedException</em>
+        </dt>
+        <dd>
+          A set of particular exceptions extending <span class=
+          "codefrag" >PropertyException</span>.  Also in this package
+          by accident.
+        </dd>
+      </dl>
+      <a name= "N10134" ></a>
+      <h4>org.apache.fop.datatypes</h4>
+      <dl>
+        <dt>
+          <span id="span22" ></span><a href = "javascript:toggleCode(
+          'span22', 'PropertyValue.html#PropertyValueInterface',
+          '50%', '100%' )"><em>PropertyValue</em></a>
+        </dt>
+        <dd>
+          An <em>interface</em> which all <span class= "codefrag"
+          >PropertyValue</span> classes must implement.  In addition
+          to a few methods, <span class= "codefrag"
+          >PropertyValue</span> defines the set of <span id="span23"
+          ></span><a href = "javascript:toggleCode( 'span23',
+          'PropertyValue.html#NO_TYPE', '50%', '100%' )"
+          >constants</a> which the <span class= "codefrag"
+          >getType()</span> method may return; i.e. the valid set of
+          <span class= "codefrag" >PropertyValue</span> types.
+        </dd>
+        <dt>
+          <span id="span24" ></span><a href = "javascript:toggleCode(
+          'span24',
+          'AbstractPropertyValue.html#AbstractPropertyValueClass',
+          '50%', '100%' )"><em>AbstractPropertyValue</em></a>
+        </dt>
+        <dd>
+          An abstract implementation of the <span class= "codefrag"
+          >PropertyValue</span> interface.  Most actual property value
+          classes extend <span class= "codefrag"
+          >AbstractPropertyValue</span>.
+        </dd>
+        <dt>
+          <span id="span25" ></span><a href = "javascript:toggleCode(
+          'span25', 'PropertyValueList.html#PropertyValueListClass',
+          '50%', '100%' )"><em>PropertyValueList</em></a>
+        </dt>
+        <dd>
+          This class extends <span class= "codefrag"
+          >LinkedList</span> and implements <span class= "codefrag"
+          >PropertyValue</span>.  It is used whenever the process of
+          resolving a property expression yields a list of <span
+          class= "codefrag" >PropertyValue</span> elements; notably
+          during the processing of shorthands and "compound"
+          properties.
+        </dd>
+        <dt>
+          <em>StringType</em>
+        </dt>
+        <dd>
+          A basic type extending <span class= "codefrag"
+          >AbstractPropertyValue</span>.  Extended by <span class=
+          "codefrag" >NCName</span>.
+        </dd>
+        <dt>
+          <em>NCName</em>
+        </dt>
+        <dd>
+          Extends <span class= "codefrag" >StringType</span> to represent
+          NCName strings.
+        </dd>
+        <dt>
+          <em>EnumType</em>
+        </dt>
+        <dd>
+          Extends <span class= "codefrag"
+          >AbstractPropertyValue</span> to represented enumerated
+          types.
+        </dd>
+        <dt>
+          <em>Other types</em>
+        </dt>
+        <dd>
+          All other types extend one of the above classes.
+        </dd>
+      </dl>
+      <a name= "N101A2" ></a>
+      <h4>org.apache.fop.datatypes.indirect</h4>
+      <dl>
+        <dt>
+          <em>IndirectValue</em>
+        </dt>
+        <dd>
+          The base type for all indirect value types; extends
+          <span class= "codefrag" >AbstractPropertyValue</span>.
+        </dd>
+      </dl>
+      <p>
+        <strong>Previous:</strong> <a href = "introduction.html"
+        >Introduction</a>
+      </p>
+      <p>
+        <strong>Next:</strong> <a href= "PropertyConsts-class.html"
+                                     >The PropertyConsts class</a>
+      </p>
+    </div>
+    
+  </body>
+</html>
diff --git a/src/documentation/content/xdocs/design/alt.design/properties/enumerated-values.ehtml b/src/documentation/content/xdocs/design/alt.design/properties/enumerated-values.ehtml
new file mode 100644 (file)
index 0000000..7bc9ad7
--- /dev/null
@@ -0,0 +1,309 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+  <head>
+    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+    <title>Enumerated Data Values</title>
+    <script type="text/javascript" src="resources/codedisplay.js">
+    </script>
+  </head>
+  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
+    <div class="content">
+      <h1>Enumerated Data Values</h1>
+      <ul class="minitoc">
+        <li>
+          <a href="#N1000C">Enumerated Data Values</a>
+          <ul class="minitoc">
+            <li>
+              <a href="#N10020">Array representation</a>
+            </li>
+            <li>
+              <a href="#N1005C">HashMap representation</a>
+            </li>
+            <li>
+              <a href="#N1009D">
+                Factoring Out Common Enumeration Values
+              </a>
+            </li>
+            <li>
+              <a href="#N100DD">Mapped Numeric Values</a>
+            </li>
+          </ul>
+        </li>
+      </ul>
+      
+      <a name="N1000C"></a>
+      <h3>Enumerated Data Values</h3>
+      <p>
+        Property classes which allow enumerated data types must encode
+        integer constants representing the enumeration tokens, and
+        must provide a way of translating between the tokens and the
+        integers, and <em>vice versa</em>.  Depending on the number of
+        tokens in an enumeration set, the mapping from token to
+        integer is maintained in an array or a <span
+        class="codefrag">HashMap</span>.  The switch-over point from
+        array to <span class="codefrag">HashMap</span> was determined
+        by some highly implementation-dependent testing to be in the
+        region of four to five elements.
+      </p>
+      <p>
+        Many properties share common sets of enumeration tokens,
+        e.g. those which allow color values, and those applying to
+        borders and padding.  A special case of enumerated value is
+        the mapped numeric enumeration, in which a token maps to a
+        Numeric value.  These situations are discussed below.
+      </p>
+      <a name="N10020"></a>
+      <h4>Array representation</h4>
+      <p>
+        
+        <span id = "span00" ></span ><a href= "javascript:toggleCode(
+        'span00', 'Direction.html#DirectionClass', '50%', '100%' )"
+        ><span
+        class="codefrag">org.apache.fop.fo.properties.Direction</span></a>
+        is an example of a class which supports an enumerated value
+        with a small set of tokens.  The <span id = "span01" ></span
+        ><a href= "javascript:toggleCode( 'span01',
+        'Direction.html#dataTypes', '50%', '100%' )" ><span
+        class="codefrag">dataTypes</span></a> field contains the <span
+        id = "span02" ></span ><a href= "javascript:toggleCode(
+        'span02', 'Property.html#NOTYPE', '50%', '100%' )" ><span
+        class="codefrag">ENUM</span> data type constant, defined in
+        <span class="codefrag">Property</span></a>.  The enumeration
+        integer constants are defined as <span class="codefrag">public
+        static final int</span> values, <span id = "span03" ></span
+        ><a href= "javascript:toggleCode( 'span03',
+        'Direction.html#LTR', '50%', '100%') "><span class="codefrag'
+        )" >LTR</span> and <span class="codefrag">RTL</span></a>.
+        Associating enumeration tokens with these integer constants
+        occurs in the array <a href=
+        "javascript:window.top.displayCode( 'Direction.html#rwEnums'
+        )" ><span class="codefrag">String[] rwEnums</span></a>, which
+        is initialized with the token strings.  By convention, zero is
+        never used to represent a valid enumeration constant, anywhere
+        in this code.  It is, of course, critical that synchronization
+        between <span class="codefrag">rwEnums</span> and the
+        enumeration constants be maintained.
+      </p>
+      <p>
+        The publicly accessible mapping from enumeration token to
+        enumeration constant is achieved through the method <span id =
+        "span04" ></span ><a href= "javascript:toggleCode( 'span04',
+        'Direction.html#getEnumIndex', '50%', '100%' )" ><span
+        class="codefrag">int getEnumIndex(String)</span></a>.  The
+        corresponding mapping from enumeration constant to enumeration
+        token is achieved through the method <span id = "span05"
+        ></span ><a href= "javascript:toggleCode( 'span05',
+        'Direction.html#getEnumText', '50%', '100%' )" ><span
+        class="codefrag">String getEnumText(int)</span></a>.
+      </p>
+      <a name="N1005C"></a>
+      <h4>HashMap representation</h4>
+      <p>
+        
+        <span id = "span06" ></span ><a href= "javascript:toggleCode(
+        'span06', 'RenderingIntent.html#RenderingIntentClass', '50%',
+        '100%' )" ><span class="codefrag"
+        >org.apache.fop.fo.properties.RenderingIntent</span ></a> is
+        an example of a class which supports an enumerated value with
+        a larger set of tokens.  The <span id = "span07" ></span ><a
+        href= "javascript:toggleCode( 'span07',
+        'RenderingIntent.html#dataTypes', '50%', '100%' )" ><span
+        class="codefrag">dataTypes</span></a> field contains the <span
+        id = "span08" ></span ><a href= "javascript:toggleCode(
+        'span08', 'Property.html#NOTYPE', '50%', '100%' )" ><span
+        class="codefrag">ENUM</span> data type constant, defined in
+        <span class="codefrag">Property</span></a>.  Enumeration
+        integer constants are defined as <span id = "span09" ></span
+        ><a href= "javascript:toggleCode( 'span09',
+        'RenderingIntent.html#PERCEPTUAL', '50%', '100%' )" ><span
+        class="codefrag">public static final int</span></a> values.
+        Zero is never used to represent a valid enumeration constant.
+        The enumeration tokens are stored in the array <span id =
+        "span10" ></span ><a href= "javascript:toggleCode( 'span10',
+        'RenderingIntent.html#rwEnums', '50%', '100%' )" ><span
+        class="codefrag">String[] rwEnums</span></a>, which is
+        initialized with the token strings.  Association of
+        enumeration tokens with the integer constants occurs in the
+        <span class="codefrag">HashMap</span> <span id = "span11"
+        ></span ><a href= "javascript:toggleCode( 'span11',
+        'RenderingIntent.html#rwEnumHash"><span class="codefrag',
+        '50%', '100%' )" > rwEnumHash</span></a>, which is initialized
+        from the token array in a <span class="codefrag">static
+        {}</span> initializer.  It is, of course, critical that
+        synchronization between <span class="codefrag">rwEnums</span>
+        and the enumeration constants be maintained.
+      </p>
+      <p>
+        The publicly accessible mapping from enumeration token to
+        enumeration constant is achieved through the method <span id =
+        "span12" ></span ><a href= "javascript:toggleCode( 'span12',
+        'RenderingIntent.html#getEnumIndex', '50%', '100%' )" ><span
+        class="codefrag">int getEnumIndex(String)</span></a>.  The
+        corresponding mapping from enumeration constant to enumeration
+        token is achieved through the method <span id = "span13"
+        ></span ><a href= "javascript:toggleCode( 'span13',
+        'RenderingIntent.html#getEnumText', '50%', '100%' )" ><span
+        class="codefrag">String getEnumText(int)</span></a>.
+      </p>
+      <a name="N1009D"></a>
+      <h4 id="common-enum-values">
+        Factoring Out Common Enumeration Values
+      </h4>
+      <p>
+        When a number of properties support a common enumerated value,
+        that value and its associated access methods may be factored
+        out to a new class, which each of the properties then extends.
+        An example of such a common super-class is <span id = "span14"
+        ></span ><a href= "javascript:toggleCode( 'span14',
+        'BorderCommonStyle.html#BorderCommonStyleClass', '50%', '100%'
+        )" ><span class="codefrag">BorderCommonStyle</span></a>.  Like
+        a property with a normal HashMap representation of an
+        enumerated value, BorderCommonStyle defines <span id =
+        "span15" ></span ><a href= "javascript:toggleCode( 'span15',
+        'BorderCommonStyle.html#HIDDEN', '50%', '100%' )" ><span
+        class="codefrag">public static final int</span></a>
+        enumeration integer constants.  Similarly, the enumeration
+        tokens are stored in the array <span id = "span16" ></span ><a
+        href= "javascript:toggleCode( 'span16',
+        'BorderCommonStyle.html#rwEnums', '50%', '100%' )" ><span
+        class="codefrag">String[] rwEnums</span></a>, and the
+        association of enumeration tokens with the integer constants
+        occurs in the <span class="codefrag">HashMap</span> <span id =
+        "span17" ></span ><a href= "javascript:toggleCode( 'span17',
+        'BorderCommonStyle.html#rwEnumHash', '50%', '100%' )" ><span
+        class="codefrag"> rwEnumHash</span></a>, initialized in a
+        <span class="codefrag">static {}</span> initializer.  The
+        mapping methods <span id = "span18" ></span ><a href=
+        "javascript:toggleCode( 'span18',
+        'BorderCommonStyle.html#getEnumIndex', '50%', '100%' )" ><span
+        class="codefrag">int getEnumIndex(String)</span></a> and <span
+        id = "span19" ></span ><a href= "javascript:toggleCode(
+        'span19', 'BorderCommonStyle.html#getEnumText', '50%', '100%'
+        )" ><span class="codefrag">String getEnumText(int)</span></a>
+        are also present.
+      </p>
+      <p>
+        Notice, however, that the class has none of the static data
+        constants described in the discussion of <a
+        href="simple-properties.html">simple properties</a>.  These
+        values are defined in the individual sub-classes of this
+        class, e.g. <span id = "span20" ></span ><a href=
+        "javascript:toggleCode( 'span20',
+        'BorderLeftStyle.html#BorderLeftStyleClass', '50%', '100%' )"
+        ><span class="codefrag">BorderLeftStyle</span></a>.  None of
+        the above fields or methods occur, and <span
+        class="codefrag">BorderLeftStyle</span> is left looking like
+        an example of a simple property.  The enumeration mapping
+        methods are, however, available through the super-class <span
+        class="codefrag">BorderCommonStyle</span>.
+      </p>
+      <a name="N100DD"></a>
+      <h4>Mapped Numeric Values</h4>
+      <p>
+        In "normal" enumerated values, the token is, effectively,
+        passed directly into the layout operation of the flow object
+        to which the property is applied.  Some enumerated values,
+        however, generate a <span class="codefrag">Numeric</span>
+        result.  Their resolution involves mapping the token to the
+        indicated <span class="codefrag">Numeric</span> value.
+      </p>
+      <p>
+        An example is the <span id = "span21" ></span ><a href=
+        "javascript:toggleCode( 'span21',
+        'BorderCommonWidth.html#BorderCommonWidthClass', '50%', '100%'
+        )" ><span class="codefrag">BorderCommonWidth</span></a>
+        property.  This, like the example of <a
+        href="#common-enum-values"><span
+        class="codefrag">BorderCommonStyle</span></a> above, also
+        represents common enumerated values which have been factored
+        out to form a super-class for particular properties.  <span
+        class="codefrag">BorderCommonWidth</span>, therefore, also
+        defines <span id = "span22" ></span ><a href=
+        "javascript:toggleCode( 'span22',
+        'BorderCommonWidth.html#THIN', '50%', '100%' )" ><span
+        class="codefrag">enumeration constant values</span></a> and an
+        array of tokens.  In this case, there is no <span
+        class="codefrag">HashMap</span>, because of the limited number
+        of tokens, but the mapping methods <span id = "span23" ></span
+        ><a href= "javascript:toggleCode( 'span23',
+        'BorderCommonWidth.html#getEnumIndex', '50%', '100%' )" ><span
+        class="codefrag">int getEnumIndex(String)</span></a> and <span
+        id = "span24" ></span ><a href= "javascript:toggleCode(
+        'span24', 'BorderCommonWidth.html#getEnumText', '50%', '100%'
+        )" ><span class="codefrag">String getEnumText(int)</span></a>
+        are present.
+      </p>
+      <p>
+        The added element in this property is the array <span id =
+        "span25" ></span ><a href= "javascript:toggleCode( 'span25',
+        'BorderCommonWidth.html#mappedPoints', '50%', '100%' )" ><span
+        class="codefrag">double[] mappedPoints</span></a>.  The
+        entries in this array must by maintained in syncronization
+        with the <span id = "span26" ></span ><a href=
+        "javascript:toggleCode( 'span26',
+        'BorderCommonWidth.html#rwEnums', '50%', '100%' )" ><span
+        class="codefrag">String[] rwEnums</span></a> array of tokens
+        and the set of <span id = "span27" ></span ><a href=
+        "javascript:toggleCode( 'span27',
+        'BorderCommonWidth.html#THIN', '50%', '100%' )" >enumeration
+        constants</a>.  The mapping from token to Numeric value is
+        achieved by the <span id = "span28" ></span ><a href=
+        "javascript:toggleCode( 'span28',
+        'BorderCommonWidth.html#getMappedLength', '50%', '100%' )"
+        ><span class="codefrag">Numeric getMappedLength(FONode, int,
+        int)</span></a> method.
+      </p>
+      <p>
+        
+        <span id = "span29" ></span ><a href= "javascript:toggleCode(
+        'span29', 'BorderLeftWidth.html#BorderLeftWidthClass', '50%',
+        '100%' )" ><span class="codefrag">BorderLeftWidth</span></a>
+        extends <span id = "span30" ></span ><a href=
+        "javascript:toggleCode( 'span30', 'BorderCommonWidth.html',
+        '50%', '100%' )" ><span
+        class="codefrag">BorderCommonWidth</span></a>.  It includes
+        the basic static data, like <a
+        href="simple-properties.html">simple properties</a>, and, in
+        this case, the <span id = "span31" ></span ><a href=
+        "javascript:toggleCode( 'span31',
+        'BorderLeftWidth.html#getInitialValue', '50%', '100%' )"
+        ><span class="codefrag">PropertyValue
+        getInitialValue(int)</span></a> method to derive the initial
+        value.
+      </p>
+      <a name="N10139"></a>
+      <h4>Deriving Mapped Numeric Values</h4>
+      <p>
+        As usual with property values, the usual method of deriving a
+        mapped numeric value is by calling the <span id = "span32"
+        ></span ><a href= "javascript:toggleCode( 'span32',
+        '../PropertyConsts.html#getMappedNumeric', '50%', '100%' )"
+        ><span class="codefrag">Numeric getMappedNumeric(FONode, int,
+        int)</span></a> method in <span id = "span33" ></span ><a
+        href= "javascript:toggleCode( 'span33',
+        '../PropertyConsts.html#pconsts', '50%', '100%' )" ><span
+        class="codefrag">pconsts</span></a>.  All properties which
+        support a mapped numeric value must have a <span
+        class="codefrag">Numeric getMappedNumeric(FONode, int)</span>
+        method, which will be called through its singleton instance,
+        stored in the <span id = "span34" ></span ><a href=
+        "javascript:toggleCode( 'span34',
+        'PropertyConsts.html#properties', '50%', '100%' )" ><span
+        class= "codefrag" >properties</span ></a> array, by the <span
+        class="codefrag">PropertyConsts</span> method.
+      </p>
+
+      <p>
+        <strong>Previous:</strong> <a href= "getInitialValue.html"
+                                  >getInitialValue()</a>
+      </p>
+      <!--
+      <p>
+        <strong>Next:</strong> <a href= "getInitialValue.html"
+                                  >getInitialValue()</a>
+      </p>
+-->
+      
+    </div>
+  </body>
+</HTML>
diff --git a/src/documentation/content/xdocs/design/alt.design/properties/getInitialValue.ehtml b/src/documentation/content/xdocs/design/alt.design/properties/getInitialValue.ehtml
new file mode 100644 (file)
index 0000000..3f539b0
--- /dev/null
@@ -0,0 +1,145 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+  <head>
+    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+    <title>Generating Initial Values</title>
+    <script type="text/javascript" src="resources/codedisplay.js">
+    </script>
+  </head>
+  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
+    <div class="content">
+      <h1>Generating Initial Values</h1>
+      <p>
+        <font size="-2">by&nbsp;Peter B. West</font>
+      </p>
+      <ul class="minitoc">
+        <li>
+          <a href="#N10014">Introduction</a>
+        </li>
+        <li>
+          <a href="#N10021">
+            Generating &amp; Accessing Initial Values
+          </a>
+          <ul class="minitoc">
+            <li>
+              <a href="#N10062">Properties without
+                getInitialValue()</a>
+            </li>
+          </ul>
+        </li>
+      </ul>
+      
+      <a name="N10014"></a>
+      <h3>Introduction</h3>
+      <p>
+        The <a href="simple-properties.html">previous section</a>
+        discussed the common data elements in the simplest examples of
+        property classes.  This section discusses more complex classes
+        whose facilities are accessed only through various methods.
+      </p>
+      
+      <a name="N10021"></a>
+      <h3>
+        Generating &amp; Accessing Initial Values
+      </h3>
+      <p>
+        
+        <span id = "span00" ></span ><a href= "javascript:toggleCode(
+        'span00', 'AutoRestore.html', '50%', '100%' )" ><span
+        class="codefrag"
+        >org.apache.fop.fo.properties.AutoRestore</span></a> is an
+        example of the next most complex property class.  In addition
+        to all of the common static fields, these classes have initial
+        data value types which require the dynamic generation of a
+        PropertyValue instance.
+      </p>
+      <p>
+        The method <span id = "span01" ></span ><a href=
+        "javascript:toggleCode( 'span01',
+        'AutoRestore.html#getInitialValue', '50%', '100%' )" ><span
+        class="codefrag">PropertyValue getInitialValue(int)</span></a>
+        returns an instance of PropertyValue of the appropriate
+        subclass containing the initial value for this property.  Like
+        the static data fields, this value is, in turn, stored in the
+        array of initial values maintained in the <span id = "span02"
+        ></span ><a href= "javascript:toggleCode( 'span02',
+        'PropertyConsts.html#PropertyConstsClass', '50%', '100%' )"
+        ><span class="codefrag">PropertyConsts</span></a> singleton
+        <span id = "span03" ></span ><a href= "javascript:toggleCode(
+        'span03', 'PropertyConsts.html#pconsts', '50%', '100%' )"
+        ><span class="codefrag">pconsts</span></a>.` As with the
+        fields, the first invocation of the method <span id = "span04"
+        ></span ><a href= "javascript:toggleCode( 'span04',
+        'PropertyConsts.html#setupProperty', '50%', '100%' )" ><span
+        class="codefrag">setupProperty</span></a> on the property
+        instantiates the singleton instance of the class, and stores
+        that instance in the in the <span id = "span05" ></span ><a
+        href= "javascript:toggleCode( 'span05',
+        'PropertyConsts.html#properties', '50%', '100%' )" ><span
+        class="codefrag">Property[] properties</span></a> array of
+        <span id = "span06" ></span ><a href= "javascript:toggleCode(
+        'span06', 'PropertyConsts.html#pconsts', '50%', '100%' )"
+        ><span class="codefrag">pconsts</span></a>.
+      </p>
+      <p>
+        Unlike the static data fields, however, the initial value is
+        not immediately generated.  It is generated by a call to <span
+        id = "span07" ></span ><a href= "javascript:toggleCode(
+        'span07', 'PropertyConsts.html#getInitialValue', '50%', '100%'
+        )" ><span class="codefrag">PropertyValue
+        getInitialValue(int)</span></a> in <span id = "span08" ></span
+        ><a href= "javascript:toggleCode( 'span08',
+        'PropertyConsts.html#pconsts', '50%', '100%' )" ><span
+        class="codefrag">pconsts</span></a>.  This call, in turn,
+        locates the relevant instance of the particular property class
+        in the <span id = "span09" ></span ><a href=
+        "javascript:toggleCode( 'span09',
+        'PropertyConsts.html#properties', '50%', '100%' )" ><span
+        class= "codefrag" >properties</span> array of <span class=
+        "codefrag" >PropertyConsts</span></a>, and invokes the <span
+        class= "codefrag" >getInitialValue()</span> of that instance.
+        A side-effect of this call is to store the initial value in
+        <span id = "span10" ></span ><a href= "javascript:toggleCode(
+        'span10', 'PropertyConsts.html#initialValues', '50%', '100%'
+        )" ><span class="codefrag">PropertyValue[]
+        initialValues</span></a>.
+      </p>
+      <a name="N10062"></a>
+      <h4>Properties without
+        getInitialValue()</h4>
+      <p>
+        What about property classes which have no <span
+        class="codefrag">getInitialValue()</span> method?  The
+        simplest classes, e.g. <span
+        class="codefrag">Character</span>, fall into this category.
+        As <a href="classes-overview.html#property-classes">noted
+        previously</a>, all of the property classes extend <span
+        class="codefrag">org.apache.fop.fo.properties.Property</span>.
+        <span id = "span11" ></span ><a href= "javascript:toggleCode(
+        'span11', 'Property.html#PropertyClass', '50%', '100%' )"
+        ><span class="codefrag">Property</span></a> provides a base
+        <span id = "span12" ></span ><a href= "javascript:toggleCode(
+        'span12', 'Property.html#getInitialValue', '50%', '100%' )"
+        ><span class="codefrag">PropertyValue
+        getInitialValue(int)</span></a> method to which the simple
+        classes fall back.  Note that it is only valid for <span
+        class="codefrag">NOTYPE_IT</span>, <span
+        class="codefrag">AUTO_IT</span>, <span
+        class="codefrag">NONE_IT</span> and <span
+        class="codefrag">AURAL_IT</span> initial value types, so all
+        classes which have any other initial value type must override
+        this method.
+      </p>
+
+      <p>
+        <strong>Previous:</strong> <a href = "simple-properties.html"
+        >Simple property classes</a>
+      </p>
+      <p>
+        <strong>Next:</strong> <a href= "enumerated-values.html"
+                                  >Enumerated values</a>
+      </p>
+      
+    </div>
+  </body>
+</HTML>
diff --git a/src/documentation/content/xdocs/design/alt.design/properties/index.xml b/src/documentation/content/xdocs/design/alt.design/properties/index.xml
new file mode 100644 (file)
index 0000000..89f24a7
--- /dev/null
@@ -0,0 +1,153 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V1.1//EN"
+    "http://cvs.apache.org/viewcvs.cgi/*checkout*/xml-forrest/src/resources/schema/dtd/document-v11.dtd">
+
+<document>
+  <header>
+    <title>Implementing Properties</title>
+    <authors>
+      <person id="pbw" name="Peter B. West" email="pbwest@powerup.com.au"/>
+    </authors>
+  </header>
+  <body>
+    <section>
+      <title>An alternative properties implementation</title>
+      <note> 
+        The following discussion focusses on the relationship between
+        Flow Objects in the Flow Object tree, and properties.  There
+        is no (or only passing) discussion of the relationship between
+        properties and traits, and by extension, between properties
+        and the Area tree.
+      </note>
+      <p>
+        Property handling is complex and expensive. Varying numbers of
+        properties <strong>apply</strong> to individual Flow Objects
+        <strong>(FOs)</strong> in the <strong>FO tree </strong> but
+        any property may effectively be assigned a value on any
+        element of the tree.  If that property is inheritable, its
+        defined value will then be available to any children of the
+        defining FO.
+      </p>
+      <note>
+        <em>(XSL 1.0 Rec)</em> <strong>5.1.4 Inheritance</strong>
+        ...The inheritable properties can be placed on any formatting
+        object.
+      </note>
+      <p>
+        Even if the value is not inheritable, it may be accessed by
+        its children through the <code>inherit</code> keyword or the
+        <code>from-parent()</code> core function, and potentially by
+        any of its descendents through the
+        <code>from-nearest-specified-value()</code> core function.
+      </p>
+      <p>
+        In addition to the assigned values of properties, almost every
+        property has an <strong>initial value</strong> which is used
+        when no value has been assigned.
+      </p>
+      <section>
+        <title>The history problem</title>
+        <p>
+          The difficulty and expense of handling properties comes from
+          this univeral inheritance possibility.  The list of properties
+          which are assigned values on any particular <em>FO</em>
+          element will not generally be large, but a current value is
+          required for each property which applies to the <em>FO</em>
+          being processed.
+        </p>
+        <p>
+          The environment from which these values may be selected
+          includes, for each <em>FO</em>, <strong>for each applicable
+          property</strong>, the value assigned on this <em>FO</em>,
+          the value which applied to the parent of this <em>FO</em>,
+          the nearest value specified on an ancestor of this element,
+          and the initial value of the property.
+        </p>
+      </section>
+      <section>
+        <title>The construction hierarchy</title>
+        <p>
+          Properties are resoved in the <strong>FO tree</strong> in a
+          strictly hierarchical manner.  Nodes are detected in the
+          input in a <strong>pre-order</strong> traversal, and are
+          built in the same order.  This imples that there are two
+          phases, or states, of property resolution and construction.
+          Any particular FO node is either in a state of constructing
+          its own subtree, or in a stable state where the subtree
+          construction is complete.  These states have differenct data
+          requirements.
+        </p>
+        <dl>
+          <dt>Subtree building</dt>
+          <dd>
+            In this state, all properties defined on this node, or any
+            of its ancestors must be available to the subtree.  In
+            effect, any property defined on this node must be
+            available to its descendants, as all properties defined on
+            any ancestor are available to this node.
+          </dd>
+          <dt>Stable: subtree building complete</dt>
+          <dd>
+            In this state, only the properties <strong>applicable to
+            this node</strong> need be available.
+          </dd>
+        </dl>
+      </section>
+      <section>
+        <title>Representing properties: &lt;property&gt; classes</title>
+        <section>
+          <title>Class vs instance</title>
+          <p>
+            What information is required of property objects?
+            More particularly, what information is particular to the
+            property classes, and what to the instantiated
+            objects?  The answer to this question depend largely on
+            how the property objects are used in the context
+            of layout and Area tree construction.  The approach taken
+            in this implementation is that properties are simply flags
+            on certain data values associated with FOs.  The semantics
+            of these flags are determined within the layout engine.
+          </p>
+          <p>
+            Certain constant information attaches to individual
+            property classes.  This information is detailed in
+            the descriptions of individual properties in <em>Section
+            7</em> of the specification.  Such information is
+            represented in <strong>class</strong> fields and data
+            structures within the classes.
+          </p>
+          <p>
+            The "instance" information content of a property
+            is:
+          </p>
+          <ul>
+            <li>
+              explicitly, the <code>PropertyValue</code> datum of
+              the property, and
+            </li>
+            <li>
+              implicitly, the <strong>Flow Object</strong> to which
+              the property is attached.
+            </li>
+          </ul>
+          <p>
+            Properties, then, serve essentially to link <em>FO
+            instances</em> with <em>PropertyValue instances</em>,
+            attaching certain invariant semantic markers to the
+            PropertyValues in the process.  In this implementation,
+            these functions can be realised entirely within the
+            property <strong>classes</strong> themselves,
+            without the need to instantiate any objects.  In practice,
+            <strong>property singletons</strong> are
+            instantiated to make access to some invariants simpler.
+          </p>
+        </section>
+      </section>
+      <p>
+        <strong>Next:</strong> <link href="classes-overview.html"
+                                     >property classes overview.</link>
+      </p>
+    </section>
+  </body>
+</document>
+
diff --git a/src/documentation/content/xdocs/design/alt.design/properties/propertyExpressions.ehtml b/src/documentation/content/xdocs/design/alt.design/properties/propertyExpressions.ehtml
new file mode 100644 (file)
index 0000000..3df16af
--- /dev/null
@@ -0,0 +1,437 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html>
+  <head>
+    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+    <title>Property Expression Parsing</title>
+    <script type="text/javascript" src="resources/codedisplay.js">
+    </script>
+  </head>
+  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
+    <div class="content">
+      <h1>Property Expression Parsing</h1>
+      <p>
+        <font size="-2">by&nbsp;Peter B. West</font>
+      </p>
+      <ul class="minitoc">
+        <li>
+          <a href="#N10014">Property expression parsing</a>
+          <ul class="minitoc">
+            <li>
+              <a href="#N10044">Data types</a>
+            </li>
+            <li>
+              <a href="#N10252">Tokenizer</a>
+            </li>
+            <li>
+              <a href="#N1029C">Parser</a>
+            </li>
+          </ul>
+        </li>
+      </ul>
+      
+      <a name="N10014"></a>
+      <h3>Property expression parsing</h3>
+      <p>
+        The parsing of property value expressions is handled by two
+        closely related classes: <span id = "span00" ></span ><a href=
+        "javascript:toggleCode( 'span00',
+        'PropertyTokenizer.html#PropertyTokenizerClass', '50%', '100%'
+        )" ><span class= "codefrag"
+        >org.apache.fop.fo.expr.PropertyTokenizer</span></a> and its
+        subclass, <span id = "span01" ></span ><a href=
+        "javascript:toggleCode( 'span01',
+        'PropertyParser.html#PropertyParserClass', '50%', '100%' )"
+        ><span class= "codefrag"
+        >org.apache.fop.fo.expr.PropertyParser</span></a>, and by
+        <span class= "codefrag" >refineParsing(int, FONode,
+        PropertyValue)</span> methods in the individual property
+        classes.  <span class= "codefrag" >PropertyTokenizer</span>,
+        as the name suggests, handles the tokenizing of the
+        expression, handing <span id = "span02" ></span ><a href=
+        "javascript:toggleCode( 'span02',
+        'PropertyTokenizer.html#EOF', '50%', '100%' )"
+        ><em>tokens</em></a> back to its subclass, <span class=
+        "codefrag" >PropertyParser</span>. <span class= "codefrag"
+        >PropertyParser</span>, in turn, returns a <span id = "span03"
+        ></span ><a href= "javascript:toggleCode( 'span03',
+        'PropertyValueList.html#PropertyValueListClass', '50%', '100%'
+        )" ><span class= "codefrag">PropertyValueList</span></a>, a
+        list of <span id = "span04" ></span ><a href=
+        "javascript:toggleCode( 'span04',
+        'PropertyValue.html#PropertyValueInterface', '50%', '100%' )"
+        ><span class= "codefrag">PropertyValue</span></a>s.
+      </p>
+      <p>
+        The tokenizer and parser rely in turn on the datatype
+        definitions from the <span class= "codefrag"
+        >org.apache.fop.datatypes</span> package, which include the
+        <span id = "span05" ></span ><a href= "javascript:toggleCode(
+        'span05', 'PropertyValue.html#NO_TYPE', '50%', '100%' )"
+        ><span class= "codefrag" >PropertyValue</span> datatype
+        constant definitions</a>.
+      </p>
+      <a name="N10044"></a>
+      <h4>Data types</h4>
+      <p>
+        The data types currently defined in
+        <span class= "codefrag" >org.apache.fop.datatypes</span> include:
+      </p>
+      <table class="ForrestTable" cellspacing="1" cellpadding="4">
+        
+          <tr>
+            <th colspan="2" rowspan="1">Numbers and lengths</th>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">Numeric</th>
+            <td colspan="3" rowspan="1">
+              The fundamental length data type.  <em>Numerics</em> of
+              various types are constructed by the classes listed
+              below.
+            </td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="3"
+                rowspan="1">Constructor classes for <em>Numeric</em></th>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1">Ems</td>
+            <td colspan="2" rowspan="1">Relative length in <em>ems</em></td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1">IntegerType</td>
+            <td colspan="1" rowspan="1"></td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1">Length</td>
+            <td colspan="2" rowspan="1">In centimetres(cm), millimetres(mm),
+              inches(in), points(pt), picas(pc) or pixels(px)</td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1">Percentage</td>
+            <td colspan="1" rowspan="1"></td>
+          </tr>
+
+          <tr>
+            <th colspan="1" rowspan="1">Other Numeric</th>
+            <td colspan="3" rowspan="1">
+              Other numeric vaues which do not interact with the
+              lengths represented by <em>Numeric</em> values.
+            </td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1">Angle</td>
+            <td colspan="2" rowspan="1">In degrees(deg), gradients(grad) or
+              radians(rad)</td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1">Frequency</td>
+            <td colspan="2" rowspan="1">In hertz(Hz) or kilohertz(kHz)</td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1">Time</td>
+            <td colspan="1" rowspan="1">In seconds(s) or milliseconds(ms)</td>
+          </tr>
+          
+          <tr>
+            <th colspan="2" rowspan="1">Strings</th>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">StringType</th>
+            <td colspan="3" rowspan="1">
+              Base class for data types which result in a <em>String</em>.
+            </td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="1" rowspan="1">Literal</th>
+            <td colspan="2" rowspan="1">
+              A subclass of <em>StringType</em> for literals which
+              exceed the constraints of an <em>NCName</em>.
+            </td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="1" rowspan="1">MimeType</th>
+            <td colspan="2" rowspan="1">
+              A subclass of <em>StringType</em> for literals which
+              represent a mime type.
+            </td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="1" rowspan="1">UriType</th>
+            <td colspan="2" rowspan="1">
+              A subclass of <em>StringType</em> for literals which
+              represent a URI, as specified by the argument to
+              <em>url()</em>.
+            </td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="1" rowspan="1">NCName</th>
+            <td colspan="2" rowspan="1">
+              A subclass of <em>StringType</em> for literals which
+              meet the constraints of an <em>NCName</em>.
+            </td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="1" rowspan="1">Country</th>
+            <td colspan="1" rowspan="1">An RFC 3066/ISO 3166 country code.</td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="1" rowspan="1">Language</th>
+            <td colspan="1" rowspan="1">An RFC 3066/ISO 639 language code.</td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="1" rowspan="1">Script</th>
+            <td colspan="1" rowspan="1">An ISO 15924 script code.</td>
+          </tr>
+          
+          <tr>
+            <th colspan="2" rowspan="1">Enumerated types</th>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">EnumType</th>
+            <td colspan="3" rowspan="1">
+              An integer representing one of the tokens in a set of
+              enumeration values.
+            </td>
+          </tr>
+          
+          <tr>
+            <td colspan="1" rowspan="1"></td>
+            <th colspan="1" rowspan="1">MappedNumeric</th>
+            <td colspan="2" rowspan="1">
+              A subclass of <em>EnumType</em>.  Maintains a
+              <em>Numeric</em> with the value to which the associated
+              "raw" enumeration token maps.  E.g., the
+              <em>font-size</em> enumeration value "medium" maps to
+              the <em>Numeric</em> "12pt".
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="2" rowspan="1">Colors</th>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">ColorType</th>
+            <td colspan="3" rowspan="1">
+              Maintains a four-element array of float, derived from
+              the name of a standard colour, the name returned by a
+              call to <em>system-color()</em>, or an RGB
+              specification.
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="2" rowspan="1">Fonts</th>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">FontFamilySet</th>
+            <td colspan="3" rowspan="1">
+              Maintains an array of <em>String</em>s containing a
+              prioritized list of possibly generic font family names.
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="2" rowspan="1">Pseudo-types</th>
+          </tr>
+          
+          <tr>
+            <td colspan="4" rowspan="1">
+              A variety of pseudo-types have been defined as
+              convenience types for frequently appearing enumeration
+              token values, or for other special purposes.
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">Inherit</th>
+            <td colspan="3" rowspan="1">
+              For values of <em>inherit</em>.
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">Auto</th>
+            <td colspan="3" rowspan="1">
+              For values of <em>auto</em>.
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">None</th>
+            <td colspan="3" rowspan="1">
+              For values of <em>none</em>.
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">Bool</th>
+            <td colspan="3" rowspan="1">
+              For values of <em>true/false</em>.
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">FromNearestSpecified</th>
+            <td colspan="3" rowspan="1">
+              Created to ensure that, when associated with
+              a shorthand, the <em>from-nearest-specified-value()</em>
+              core function is the sole component of the expression.
+            </td>
+          </tr>
+          
+          <tr>
+            <th colspan="1" rowspan="1">FromParent</th>
+            <td colspan="3" rowspan="1">
+              Created to ensure that, when associated with
+              a shorthand, the <em>from-parent()</em>
+              core function is the sole component of the expression.
+            </td>
+          </tr>
+          
+      </table>
+      <a name="N10252"></a>
+      <h4>Tokenizer</h4>
+      <p>
+        As mentioned above, the <span class= "codefrag"
+        >PropertyTokenizer</span> hands <span id = "span06" ></span
+        ><a href= "javascript:toggleCode( 'span06',
+        'PropertyTokenizer.html#EOF', '50%', '100%' )"
+        ><em>tokens</em></a> back to its subclass, <span class=
+        "codefrag" >PropertyParser</span>.  Most of these tokens are
+        self-explanatory, but a few need further comment.
+      </p>
+      <dl>
+        
+        <dt>AUTO</dt>
+        
+        <dd>
+          Because of its frequency of occurrence, and the fact that it
+          is always the <em>initial value</em> for any property which
+          supports it, AUTO has been promoted into a pseudo-type with
+          its on datatype class.  Therefore, it is also reported as a
+          token.
+        </dd>
+        
+        <dt>NONE</dt>
+        
+        <dd>
+          Similarly to AUTO, NONE has been promoted to a pseudo-type
+          because of its frequency.
+        </dd>
+        
+        <dt>BOOL</dt>
+        
+        <dd>
+          There is a <em>de facto</em> boolean type buried in the
+          enumeration types for many of the properties.  It had been
+          specified as a type in its own right in this code.
+        </dd>
+        
+        <dt>MIMETYPE</dt>
+        
+        <dd>
+          The property <span class= "codefrag" >content-type</span>
+          introduces this complication.  It can have two values of the
+          form <strong>content-type:</strong><em>mime-type</em>
+          (e.g. <span class= "codefrag"
+          >content-type="content-type:xml/svg"</span>) or
+          <strong>namespace-prefix:</strong><em>prefix</em>
+          (e.g. <span class= "codefrag"
+          >content-type="namespace-prefix:svg"</span>).  The
+          experimental code reduces these options to the payload in
+          each case: an <span class= "codefrag" >NCName</span> in the
+          case of a namespace prefix, and a MIMETYPE in the case of a
+          content-type specification.  <span class= "codefrag"
+          >NCName</span>s cannot contain a "/".
+        </dd>
+        
+      </dl>
+      <a name="N1029C"></a>
+      <h4>Parser</h4>
+      <p>
+        The parser returns a <span id = "span07" ></span ><a href=
+        "javascript:toggleCode( 'span07',
+        'PropertyValueList.html#PropertyValueListClass', '50%', '100%'
+        )" ><span class= "codefrag" >PropertyValueList</span ></a>,
+        necessary because of the possibility that a list of <span id =
+        "span08" ></span ><a href= "javascript:toggleCode( 'span08',
+        'PropertyValue.html#PropertyValueInterface', '50%', '100%' )"
+        ><span class= "codefrag" >PropertyValue</span ></a> elements
+        may be returned from the expressions of some properties.
+      </p>
+      <p>
+        
+        <span class= "codefrag" >PropertyValueList</span>s may contain
+        <span class= "codefrag" >PropertyValue</span>s or other <span
+        class= "codefrag" >PropertyValueList</span>s.  This latter
+        provision is necessitated by some of the more peculiar
+        expression possibilities, <em>e.g.</em> <em>font</em> and
+        <em>text-shadow</em>.  <em>text-shadow</em> may contain whitespace
+        separated sublists of either two or three elements, separated
+        from one another by commas.  To accommodate this peculiarity,
+        comma separated elements are added to the top-level list,
+        while whitespace separated values are always collected into
+        sublists to be added to the top-level list.
+      </p>
+      <p>
+        Other special cases include the processing of the core
+        functions <span class= "codefrag" >from-parent()</span> and
+        <span class= "codefrag" >from-nearest-specified-value()</span>
+        when these function calls are assigned to a shorthand
+        property, or used with a shorthand property name as an
+        argument.  In these cases, the function call must be the sole
+        component of the expression.  The pseudo-element classes <span
+        class= "codefrag" >FromParent</span> and <span
+        class= "codefrag" >FromNearestSpecified</span> are generated in
+        these circumstances so that an exception will be thrown if
+        they are involved in expression evaluation with other
+        components. (See Rec. Section 5.10.4 Property Value
+        Functions.)
+      </p>
+      <p>
+        The experimental code is a simple extension of the existing
+        parser code, which itself borrowed heavily from James
+        Clark's XT processor.
+      </p>
+      
+    </div>
+  </body>
+</html>
diff --git a/src/documentation/content/xdocs/design/alt.design/properties/simple-properties.ehtml b/src/documentation/content/xdocs/design/alt.design/properties/simple-properties.ehtml
new file mode 100644 (file)
index 0000000..5df05bd
--- /dev/null
@@ -0,0 +1,245 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<HTML>
+  <head>
+    <META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+    <title>Simple &lt;property&gt; Classes</title>
+    <script type="text/javascript" src="resources/codedisplay.js">
+    </script>
+  </head>
+  <body marginheight="0" marginwidth="0" topmargin="0" leftmargin="0" text="#000000" bgcolor="#FFFFFF">
+    <div class="content">
+      <h1>Simple &lt;property&gt; Classes</h1>
+      <p>
+        <font size="-2">by&nbsp;Peter B. West</font>
+      </p>
+      <ul class="minitoc">
+        <li>
+          <a href="#N10014">Introduction</a>
+        </li>
+        <li>
+          <a href="#N10026">Common data</a>
+        </li>
+        <li>
+          <a href="#N10075">Accessing &lt;property&gt; Data Constants</a>
+        </li>
+      </ul>
+      
+      <a name="N10014"></a>
+      <h3>Introduction</h3>
+      <p>
+        An <a href="classes-overview.html">overview of the properties
+        and classes</a> involved in handling properties has already
+        been given.  This discussion will go in detail into the way
+        data are represented within properties.  Iit is important to
+        keep in mind that the primary avenue of access to the data and
+        the methods of property classes is the <span id = "span00"
+        ></span ><a href= "javascript:toggleCode( 'span00',
+        'PropertyConsts.html#PropertyConstsClass', '50%', '100%' )"
+        ><span class="codefrag">PropertyConsts</span></a> class and
+        its singleton object.
+      </p>
+      
+      <a name="N10026"></a>
+      <h3>Common data</h3>
+      <p>
+        
+        <span id = "span01" ></span ><a href= "javascript:toggleCode(
+        'span01', 'Character.html', '50%', '100%' )" ><span
+        class="codefrag">org.apache.fop.fo.properties.Character</span></a>
+        is an example of a basic property class.  The data fields
+        common to all properties are:
+      </p>
+      <dl>
+        
+        <dt>
+          
+          <span class="codefrag">final int dataTypes</span>
+          
+        </dt>
+        
+        <dd>
+          This field defines the allowable data types which may be
+          assigned to the property.  The value is chosen from the data
+          type constants defined in <span id = "span02" ></span ><a
+          href= "javascript:toggleCode( 'span02',
+          'Property.html#NOTYPE', '50%', '100%' )" ><span
+          class="codefrag">org.apache.fop.fo.properties.Property</span></a>,
+          and may consist of more than one of those constants,
+          bit-ORed together.
+        </dd>
+        
+        <dt>
+          
+          <span class="codefrag">final int traitMapping</span>
+          
+        </dt>
+        
+        <dd>
+          This field defines the mapping of properties to traits in
+          the <span class="codefrag">Area tree</span>. The value is
+          chosen from the trait mapping constants defined in <span id
+          = "span03" ></span ><a href= "javascript:toggleCode(
+          'span03', 'Property.html#NO_TRAIT', '50%', '100%' )" ><span
+          class="codefrag">org.apache.fop.fo.properties.Property</span></a>,
+          and may consist of more than one of those constants,
+          bit-ORed together.
+        </dd>
+        
+        <dt>
+          
+          <span class="codefrag">final int initialValueType</span>
+          
+        </dt>
+        
+        <dd>
+          This field defines the data type of the initial value
+          assigned to the property.  The value is chosen from the
+          initial value type constants defined in <span id = "span04"
+          ></span ><a href= "javascript:toggleCode( 'span04',
+          'Property.html#NOTYPE_IT', '50%', '100%' )" ><span
+          class="codefrag">org.apache.fop.fo.properties.Property</span></a>.
+          In the simplest property classes, such as <span
+          class="codefrag">Character</span>, there is no defined
+          initial value type.
+        </dd>
+        
+        <dt>
+          
+          <span class="codefrag">final int inherited</span>
+          
+        </dt>
+        
+        <dd>
+          This field defines the kind of inheritance applicable to the
+          property.  The value is chosen from the inheritance
+          constants defined in <span id = "span05" ></span ><a href=
+          "javascript:toggleCode( 'span05', 'Property.html#NO', '50%',
+          '100%' )" ><span
+          class="codefrag">org.apache.fop.fo.properties.Property</span></a>.
+        </dd>
+        
+      </dl>
+      
+      <a name="N10075"></a>
+      <h3>Accessing &lt;property&gt; Data Constants</h3>
+      <p>
+        The constants above are generally accessed through the arrays
+        maintained in the <span id = "span06" ></span ><a href=
+        "javascript:toggleCode( 'span06',
+        'PropertyConsts.html#PropertyConstsClass', '50%', '100%' )"
+        ><span class="codefrag">PropertyConsts</span></a> singleton
+        <span id = "span07" ></span ><a href= "javascript:toggleCode(
+        'span07', 'PropertyConsts.html#pconsts', '50%', '100%' )"
+        ><span class="codefrag">pconsts</span></a>.  The first
+        invocation of the method <span id = "span08" ></span ><a href=
+        "javascript:toggleCode( 'span08',
+        'PropertyConsts.html#setupProperty', '50%', '100%' )" ><span
+        class="codefrag">setupProperty</span></a> on the property
+        generates a <span class="codefrag">Class</span> instance for
+        the class, and stores it in the array <span id = "span09"
+        ></span ><a href= "javascript:toggleCode( 'span09',
+        'PropertyConsts.html#classes', '50%', '100%' )" ><span
+        class="codefrag">classes</span></a>.  This <span
+        class="codefrag">Class</span> object is used, in turn, to
+        instantiate the singleton instance of the class, which is
+        stored in the <span id = "span10" ></span ><a href=
+        "javascript:toggleCode( 'span10',
+        'PropertyConsts.html#properties', '50%', '100%' )" ><span
+        class="codefrag">Property[] properties</span></a> array of
+        <span id = "span11" ></span ><a href= "javascript:toggleCode(
+        'span11', '../PropertyConsts.html#pconsts', '50%', '100%' )"
+        ><span class="codefrag">pconsts</span></a>.
+      </p>
+      <p>
+        
+        <em>Reflection</em> methods are then used, via the same <span
+        class="codefrag">Class</span> instance, to extract and store
+        the static data fields.  These arrays and associated access
+        methods are:
+      </p>
+      <dl>
+        
+        <dt>
+          
+          <span id = "span12" ></span ><a href=
+          "javascript:toggleCode( 'span12',
+          'PropertyConsts.html#datatypes', '50%', '100%' )" ><span
+          class="codefrag">int[] datatypes</span></a>
+          
+        </dt>
+        
+        <dd>
+          
+          <span id = "span13" ></span ><a href=
+          "javascript:toggleCode( 'span13',
+          'PropertyConsts.html#getDataTypes', '50%', '100%' )" ><span
+          class="codefrag">int getDataTypes(int)</span></a>
+          
+        </dd>
+        
+        <dt>
+          
+          <span id = "span14" ></span ><a href=
+          "javascript:toggleCode( 'span14',
+          'PropertyConsts.html#traitMappings', '50%', '100%' )" ><span
+          class="codefrag">int[] traitMappings</span></a>
+          
+        </dt>
+        
+        <dd>
+          
+          <em>No access method yet defined.</em>
+          
+        </dd>
+        
+        <dt>
+          
+          <span id = "span15" ></span ><a href=
+          "javascript:toggleCode( 'span15',
+          'PropertyConsts.html#initialValueTypes', '50%', '100%' )"
+          ><span class="codefrag">int[] initialValueTypes</span></a>
+          
+        </dt>
+        
+        <dd>
+          
+          <span id = "span16" ></span ><a href=
+          "javascript:toggleCode( 'span16',
+          'PropertyConsts.html#getInitialValueType', '50%', '100%' )"
+          ><span class="codefrag">int
+          getInitialValueType(int)</span></a>
+          
+        </dd>
+        
+        <dt>
+          
+          <span id = "span17" ></span ><a href=
+          "javascript:toggleCode( 'span17',
+          'PropertyConsts.html#inherited', '50%', '100%' )" ><span
+          class="codefrag">int[] inherited</span></a>
+          
+        </dt>
+        
+        <dd>
+          
+          <span id = "span18" ></span ><a href=
+          "javascript:toggleCode( 'span18',
+          'PropertyConsts.html#inheritance', '50%', '100%' )" ><span
+          class="codefrag">int inheritance(int)</span></a>
+          
+        </dd>
+        
+      </dl>
+
+      <p>
+        <strong>Previous:</strong> <a href = "PropertyConsts-class.html"
+        >PropertyConsts class</a>
+      </p>
+      <p>
+        <strong>Next:</strong> <a href= "getInitialValue.html"
+                                  >getInitialValue()</a>
+      </p>
+      
+    </div>
+  </body>
+</HTML>