Difference between revisions of "User talk:Jholsenback"

From POV-Wiki
Jump to navigation Jump to search
m (Removed question on potential documentation... Apparently me confused.)
 
(14 intermediate revisions by 3 users not shown)
Line 29: Line 29:
 
   <li>{{Done}} The <code>max_extent</code> function as used to determine the size of an image map in pixels can now also be used on normal maps and density files</li>
 
   <li>{{Done}} The <code>max_extent</code> function as used to determine the size of an image map in pixels can now also be used on normal maps and density files</li>
 
   <li>{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file</li>
 
   <li>{{Done}} Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file</li>
   <li>All instances of <code>gray</code> in keywords or INI file options can now alternatively be spelled <code>grey</code>. Previously this was only the case inside function definitions where it applied only to the <code>.gray</code> color pseudo-component</li>
+
   <li>{{Done}} All instances of <code>gray</code> in keywords or INI file options can now alternatively be spelled <code>grey</code>. Previously this was only the case inside function definitions where it applied only to the <code>.gray</code> color pseudo-component [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]</li>
 
   <li>{{Done}} A new inbuilt constant <code>tau</code> has been added</li>
 
   <li>{{Done}} A new inbuilt constant <code>tau</code> has been added</li>
   <li>The <code>#declare</code> and <code>#local</code> syntax has been extended to support tuple-style assignments. The main purpose is to allow macros to return a set of values rather than just a single one</li>
+
   <li>{{Done}} The <code>#declare</code> and <code>#local</code> syntax has been extended to support tuple-style assignments.
 
+
[[Reference:Declare and Local Directives|See-It]]</li>
  <pre>
 
    From revision.txt:
 
    ------------------------------------------------
 
    A new tuple-style syntax extensions has been added to #declare and
 
    #local, in order to simplify passing multiple values out of a macro:
 
        #declare ( ID1, ID2, ...) = ( EXPR1, EXPR2, ... );
 
    This statement is fully equivalent to:
 
        #declare ID1 = EXPR1;
 
        #declare ID1 = EXPR2;
 
      ...
 
    (Note that this equivalence holds true even for constructs like `#declare
 
    (A,B) = (B,A)`, which does _not_ swap the contents of A and B as you
 
    might expect.)
 
    The terminating semicolon is optional.
 
 
 
    In addition, a similar syntax extension has been added for easier
 
    assignment of vector components to individual variables:
 
        #declare < ID1, ID2, ... > = VECTOR_EXPR;
 
    This statement is fully equivalent to:
 
        #local TEMP = VECTOR_EXPR;
 
        #declare ID1 = TEMP.x;
 
        #declare IDY = TEMP.y;
 
      ...
 
    except that the new syntax does not actually define a local variable
 
    named TEMP.
 
    The terminating semicolon is mandatory.
 
 
 
    The #local statement syntax has been extended accordingly.
 
 
 
    The `deprecated` keyword can be used with these new syntax variants by
 
    placing it right before the respective identifier, e.g.:
 
        #declare (A, deprecated B) = (47, 11);
 
    ------------------------------------------------
 
    Extended #declare and #local tuple syntax to also support assignment from
 
    arrays, and to support assignment to mismatching number of identifiers.
 
 
 
    Using "#declare { IDENTIFYER_LIST } = ARRAY_EXPRESSION" will assign the
 
    first elements of the array expression (either an array identifier or
 
    an array declaration with initializer) to the given identifiers.
 
    The IDENTIFYER_LIST may now contain empty elements, in which case
 
    the corresponding element from the right-hand side will be skipped
 
    accordingly.
 
    ------------------------------------------------
 
    Extended tuple assignment syntax to allow for omission of right-hand
 
    side elements; extend array initializer syntax to allow for omission
 
    of elements.
 
 
 
    Left-hand side elements in tuple assignments can now be prepended with the
 
    "optional" keyword. If an element is flagged this way, or left empty,
 
    the corresponding right-hand side element may be an uninitialized
 
    identifier or left empty. In this case, the respective left-hand side
 
    element remains unchanged (it is NOT undefined).
 
    An array initializer may now be prepended with the "optional" keyword          <- NOTE: belongs in array initializer doc!
 
    (e.g. "#declare A = array[10] optional { ... }"). In this case, each
 
    individual element of the initializer may be an uninitialized identifier
 
    or left empty.
 
 
 
    Note: Due to the internal twists of the parser, "uninitialized identifier"    <- NOTE: also relevant for macro parameters and array initializers!
 
    does _not_ encompass uninitialized array elements. This limitation also
 
    applies to optional macro parameters.
 
    ------------------------------------------------
 
 
 
  </pre>
 
 
 
 
   <li>{{Done}} The macro syntax has been extended to allow for <code>optional</code> parameters</li>
 
   <li>{{Done}} The macro syntax has been extended to allow for <code>optional</code> parameters</li>
 
   <li>{{Done}} The creation of a log for the <code>+C</code> render abort-continue feature can now be suppressed using <code>-CC</code> to save disk space</li>
 
   <li>{{Done}} The creation of a log for the <code>+C</code> render abort-continue feature can now be suppressed using <code>-CC</code> to save disk space</li>
Line 105: Line 41:
 
   <li>{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio</li>
 
   <li>{{Done}} Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio</li>
 
   <li>{{Done}} A new function-based user-defined camera type <code>user_defined</code> has been added</li>
 
   <li>{{Done}} A new function-based user-defined camera type <code>user_defined</code> has been added</li>
   <li>Light sources distance-based fading can now be set to obey an inverse-power law at all distances</li>
+
   <li>{{Done}} Light sources distance-based fading can now be set to obey an inverse-power law at all distances [[Reference:Light Source#Light Fading|See-It]]</li>
 
 
  <p><em>Please review: [[Reference:Light_Source#Light_Fading|See-It]]</em></p>
 
  <pre>
 
    From revision.txt
 
    -----------------------------------
 
    Light sources' distance-based fading can now be set to obey an
 
    inverse-power law at all distances.
 
 
 
    Setting a light source to have non-zero `fade_power` but zero
 
    `fade_distance` (or not specifying `fade_distance` at all) will now
 
    cause the distance-based light attenuation to follow the simple formula
 
    "attenuation = 1/(d^fade_power)", yielding the light's nominal power at a
 
    distance of 1.0 units. (At large distances this has a similar effect as
 
    setting `fade_distance 1/pow(2,fade_power)`, or setting `fade_distance 1`
 
    while reducing the light's nominal brightness by 50%.)
 
 
 
    When `#version 3.70` or lower is set, a non-zero `fade_power` setting
 
    will be ignored if `fade_distance` is set to zero or left unset,
 
    mimicking the behaviour of previous versions, except that now a parse
 
    warning will be generated.
 
  </pre>
 
 
 
 
   <li>{{Done}} CIE L*a*b* conversion macros have been added to <em>colors.inc</em> [[Reference:Colors.inc#Color_macros|See-It]]</li>
 
   <li>{{Done}} CIE L*a*b* conversion macros have been added to <em>colors.inc</em> [[Reference:Colors.inc#Color_macros|See-It]]</li>
 
   <li>{{Done}} A new include file <em>colors_ral.inc</em> has been added containing predefined colors according to the RAL Classic standard [[Reference:Colors_ral.inc|See-It]]</li>
 
   <li>{{Done}} A new include file <em>colors_ral.inc</em> has been added containing predefined colors according to the RAL Classic standard [[Reference:Colors_ral.inc|See-It]]</li>
Line 137: Line 51:
 
=====Image Files=====
 
=====Image Files=====
 
<ol>
 
<ol>
   <li>By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the <code>gamma</code> input file parameter or <code>File_Gamma</code> INI setting, respectively</li>
+
   <li>{{Done}} By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the <code>gamma</code> input file parameter or <code>File_Gamma</code> INI setting, respectively</li>
   <li>The <em>Compression</em> setting now affects more file types: Specifying <code>Compression=1</code> with file type <code>T</code> (Targa) will now generate compressed Targa (same as file type <code>C</code>), and explicitly specifying <code>Compression=0</code> with file type <code>P</code> (Netpbm PPM/PGM) will generate <em>plain</em> (ASCII) Netpbm rather than
+
   <li>{{Done}} The <em>Compression</em> setting now affects more file types: Specifying <code>Compression=1</code> with file type <code>T</code> (Targa) will now generate compressed Targa (same as file type <code>C</code>), and explicitly specifying <code>Compression=0</code> with file type <code>P</code> (Netpbm PPM/PGM) will generate <em>plain</em> (ASCII) Netpbm rather than <em>raw</em> (binary)</li>
    <em>raw</em> (binary)</li>
 
 
   <li>POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses <code>premultiplied</code> or <em>non-premultiplied</em> alpha mode, rather than blindly presuming <code>premultiplied</code> alpha</li>
 
   <li>POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses <code>premultiplied</code> or <em>non-premultiplied</em> alpha mode, rather than blindly presuming <code>premultiplied</code> alpha</li>
   <li>The interaction of <code>transmit all</code> and <code>filter all</code> with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires <code>#version 3.71</code> or later)</li>
+
   <li>{{Done}} The interaction of <code>transmit all</code> and <code>filter all</code> with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires <code>#version 3.71</code> or later)</li>
   <li>The image file format previously referred to as <em>IFF</em> (now more precisely referred to as <em>IFF-ILBM</em>) is now associated with the <code>.lbm</code> file extension in addition to the <code>.iff</code> extension</li>
+
 
 +
   <li>The image file format previously referred to as <em>IFF</em> (now more precisely referred to as <em>IFF-ILBM</em>) is now associated with the <code>.lbm</code> file extension in addition to the <code>.iff</code> extension
 +
 
 +
  <br><em>The term "IFF" does not seem to be mentioned anywhere in the docs (this is an input-only format), just the keyword, which wasn't chaned. (CLi)</em>
 +
  </li>
 
</ol>
 
</ol>
  
Line 151: Line 68:
 
<p>The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.</p>  
 
<p>The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.</p>  
  
   <li>The <code>version</code> pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, <em>except</em> when used in a <code>#version</code> directive, in which case the behavior remains unchanged. The requirement to start each scene with a <code>#version</code> statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file <em>does not begin</em> with a <code>#version</code> directive but <em>does</em> have a <code>#version 3.71</code> (or later) directive anywhere in the main scene file
+
   <li>{{Done}} The <code>version</code> pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, <em>except</em> when used in a <code>#version</code> directive, in which case the behavior remains unchanged. The requirement to start each scene with a <code>#version</code> statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file <em>does not begin</em> with a <code>#version</code> directive but <em>does</em> have a <code>#version 3.71</code> (or later) directive anywhere in the main scene file</li>
   <br>
+
   <li>Using <code>ambient</code> with a suspiciously high value in a non-legacy scene will now issue a warning, unless <code>emission</code> is also specified</li>
   <em>Change has already been documented. May need addition of {{Change}}. [[Reference:Numeric_Expressions#Built-in_Variables|See-It (variable)]] [[Reference:Version_Directive|See-It (directive)]] (CLi)</em>
+
   <li>A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially <em>not</em> interpreted as escape characters <em>if</em> the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. <em>requires</em> <code>#version 3.71</code> or later
 +
 
 +
  <br><em>Already documented. May need to be marked as {{Change}}. [[Reference:Strings#String_Literals|See-It]] (CLi)</em>
 +
 
 
   </li>
 
   </li>
  <li> Using <code>ambient</code> with a suspiciously high value in a non-legacy scene will now issue a warning, unless <code>emission</code> is also specified</li>
 
  <li>A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially <em>not</em> interpreted as escape characters <em>if</em> the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. <em>requires</em> <code>#version 3.71</code> or later</li>
 
 
</ol>
 
</ol>
  
Line 162: Line 80:
 
<ol>
 
<ol>
 
   <li>{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]</li>
 
   <li>{{Done}} Array elements no longer have to be of the same type. [[Reference:Array|See-It]]</li>
   <li>Dithering is now fully supported for Radiance HDR output files
+
   <li>{{Done}} Dithering is now fully supported for Radiance HDR output files. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]</li>
    <br>
+
   <li>{{Done}} Trailing whitespace in INI files no longer causes a warning. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]</li>
    <em>No change seems needed (except maybe in the "what's new" section), since the docs never said otherwise [[Reference:File_Output_Options#Output_File_Dithering|See-It]] (CLi)</em>
+
   <li>{{Done}} Animation status messages now include the nominal frame number. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]</li>
  </li>
+
   <li>{{Done}} POV-Ray for Windows now reports file names and line numbers of warnings. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]</li>
   <li>Trailing whitespace in INI files no longer causes a warning
+
   <li>{{Done}} Radiosity can now honor the <code>brilliance</code> setting of a surface. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]</li>
    <br>
 
    <em>No change seems needed (except maybe in the "what's new" section), since the docs never said otherwise [[Documentation:Tutorial_Section_2.2#Using_INI_Files|See-It (Tutorial)]] [[Reference:Command-Line_and_INI-File_Options|See-It (Reference)]] (CLi)</em>
 
  </li>
 
   <li>Animation status messages now include the nominal frame number</li>
 
   <li>POV-Ray for Windows now reports file names and line numbers of warnings</li>
 
   <li>Radiosity can now honor the <code>brilliance</code> setting of a surface</li>
 
 
   <li>{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries.</li>
 
   <li>{{Done}} Color maps, pigment maps and the like are no longer limited to 256 entries.</li>
 
     <ul>
 
     <ul>
Line 184: Line 96:
 
     </ul>
 
     </ul>
 
   </li>
 
   </li>
   <li>The number of components per blob is no longer artificially limited. [[Reference:Blob|Over-Here]]
+
   <li>{{Done}} The number of components per blob is no longer artificially limited. [[Documentation:Tutorial Section 1#Changes and New Features Summary|See-It]]</li>
    <br>
 
    <em>I don't think any documentation is necessary except in the "what's new section", as the upper limit never seems to have been officially documented in the first place. (CLi)</em>
 
  </li>
 
 
</ol>
 
</ol>
  
 
====Code Snippet's Comments and Content Related====
 
====Code Snippet's Comments and Content Related====
 
<p>Use this section for <em>code snippet's</em> to be included in reference. Comments and content related items are welcome too.</p>
 
<p>Use this section for <em>code snippet's</em> to be included in reference. Comments and content related items are welcome too.</p>
 +
 
===3.7.1 Scene File Checklist===
 
===3.7.1 Scene File Checklist===
 
<ol>
 
<ol>

Latest revision as of 14:52, 8 January 2017

3.7.1 Changes Checklist

The following is a check list of the changes that need to be documented prior to version 3.7.1 release.

New Features

Materials
  1. Done A new finish parameter use_alpha has been added to suppress highlights and reflections depending on pigment transparency. See-It
  2. Done A new special pigment pattern user_defined has been added to define the pigment color directly in terms of a set of functions. See-It
  3. Done A new pattern potential has been added to define a pattern based on the potential field of a blob or isosurface object.See-It
  4. Done The map_type keyword now supports the Angular Map projection for light probes, popularized by Paul Devebec, as type 7 See-It
  5. Done Native support for repetition has been added to the crackle pattern to avoid the discontinuities in the pattern caused by repeat warps. See-It
  6. Done Color and pigment maps now support non-linear interpolation to achieve more pleasing gradients. See-It and See-Also
  7. Done Fresnel angle-dependent attenuation can now also be applied to highlights and the diffuse component for more physical realism. See-It
Geometric Primitives
  1. Done UV mapping support has been added to cones and cylinders. See-It
  2. Done A new parameter polarity has been added to isosurfaces. See-It
  3. Done A new geometric primitive lemon has been added. See-It
  4. Done The torus syntax has been extended to give more control over the spindle in a self-intersecting torus. See-It
Scene Description Language, Options and INI settings
  1. Done Support for variable-size arrays has been added
  2. Done A new data container dictionary has been added to support structured storage of data
  3. Done Pseudo-dictionaries local and global have been added, allowing to specifically access local or global identifiers respectively
  4. Done The max_extent function as used to determine the size of an image map in pixels can now also be used on normal maps and density files
  5. Done Macros up to a certain size (currently hard-coded to 65536 characters per macro) are now cached in memory, improving parsing speed of invocations especially when the macro in question is defined in a different file
  6. Done All instances of gray in keywords or INI file options can now alternatively be spelled grey. Previously this was only the case inside function definitions where it applied only to the .gray color pseudo-component See-It
  7. Done A new inbuilt constant tau has been added
  8. Done The #declare and #local syntax has been extended to support tuple-style assignments. See-It
  9. Done The macro syntax has been extended to allow for optional parameters
  10. Done The creation of a log for the +C render abort-continue feature can now be suppressed using -CC to save disk space
Miscellaneous
  1. Done Support for the ITU-R BT.709 and BT.2020 transfer functions has been added to POV-Ray's gamma handling portfolio
  2. Done A new function-based user-defined camera type user_defined has been added
  3. Done Light sources distance-based fading can now be set to obey an inverse-power law at all distances See-It
  4. Done CIE L*a*b* conversion macros have been added to colors.inc See-It
  5. Done A new include file colors_ral.inc has been added containing predefined colors according to the RAL Classic standard See-It
  6. Chris says only update copyright date when file otherwise changes.
  7. For a 3.7.1 release we should probably pull all the X11 related sections from the documentation. Remember seeing something about VGA / SVGA support too about which I am suspicious, but maybe this all works?

Changed Behavior

Image Files
  1. Done By default, gamma handling of NetPBM (PPM/PGM) in and output files now follows the official NetBPM standard, which mandates gamma-encoding using the ITU-R BT.709 transfer function. As usual this can be overridden by the gamma input file parameter or File_Gamma INI setting, respectively
  2. Done The Compression setting now affects more file types: Specifying Compression=1 with file type T (Targa) will now generate compressed Targa (same as file type C), and explicitly specifying Compression=0 with file type P (Netpbm PPM/PGM) will generate plain (ASCII) Netpbm rather than raw (binary)
  3. POV-Ray will now try to auto-detect whether an input TIFF file with alpha channel uses premultiplied or non-premultiplied alpha mode, rather than blindly presuming premultiplied alpha
  4. Done The interaction of transmit all and filter all with an image's alpha channel has been changed to be more intuitive: rather than adding the image's transparency to the user-specified transparency, the image's opacity is now effectively multiplied with the user-specified opacity. (requires #version 3.71 or later)
  5. The image file format previously referred to as IFF (now more precisely referred to as IFF-ILBM) is now associated with the .lbm file extension in addition to the .iff extension
    The term "IFF" does not seem to be mentioned anywhere in the docs (this is an input-only format), just the keyword, which wasn't chaned. (CLi)
Miscellaneous
  1. On Unix with Simple DirectMedia Layer (SDL) enabled the p key can now be used to pause and un-pause a render
  2. The focus of this change was correcting unix console messages. There was previously no notice 'p' and 'q' were active for +D renders. The final pause, if using +P, had always incorrectly said hitting any key would continue/quit when only 'q', enter or detecting on the SDL window would. Enabling 'p' to also continue from the final pause in addition to mid render ones makes 'p' operation consistent throughout the render (and it was cleaner code-wise). Forgot to mention yesterday this change is self-documenting due the prompts to the console changing to reflect it.

  3. Done The version pseudo-variable will now evaluate to the effective language version at the time the expression is parsed, except when used in a #version directive, in which case the behavior remains unchanged. The requirement to start each scene with a #version statement is now more strongly enforced for POV-Ray 3.7 scenes. An error is reported if the scene file does not begin with a #version directive but does have a #version 3.71 (or later) directive anywhere in the main scene file
  4. Using ambient with a suspiciously high value in a non-legacy scene will now issue a warning, unless emission is also specified
  5. A long-standing undocumented inconsistency in the treatment of backslashes in string literals, in which backslashes were essentially not interpreted as escape characters if the parser expected a filename, has been cleaned up. Backslashes are now treated as escape characters in all string literals. requires #version 3.71 or later
    Already documented. May need to be marked as Change. See-It (CLi)

Noteworthy Improvements

  1. Done Array elements no longer have to be of the same type. See-It
  2. Done Dithering is now fully supported for Radiance HDR output files. See-It
  3. Done Trailing whitespace in INI files no longer causes a warning. See-It
  4. Done Animation status messages now include the nominal frame number. See-It
  5. Done POV-Ray for Windows now reports file names and line numbers of warnings. See-It
  6. Done Radiosity can now honor the brilliance setting of a surface. See-It
  7. Done Color maps, pigment maps and the like are no longer limited to 256 entries.
  8. Done The number of components per blob is no longer artificially limited. See-It

Code Snippet's Comments and Content Related

Use this section for code snippet's to be included in reference. Comments and content related items are welcome too.

3.7.1 Scene File Checklist

  1. Done spindle torus example
  2. Done user_defined camera example
  3. Done Pavement pattern example
  4. Done Unit square scalings for pavement and tiling patterns added to pavement.pov and tiling.pov
  5. Potential pattern using blobs. Second with iso or as option in first scene.
  6. Nothing with ovus or lemon. Add to primativ.pov perhaps?
  7. Rename primativ.pov to primative.pov or delete and create individual files?
  8. portfolio/allobjects.pov out of date.
  9. Recent scenes with rendered PNGs - even some 3.7 ones - are not part of the scene directory html Friedrich A. Lohmueller created in 2013.
  10. Replace while loops with for loops where counting. Cleans up our example scenes.

Admissions...

Do we admit 3.7.1 is slower and explain why (C++)? See: https://github.com/POV-Ray/povray/issues/48

Multilinks

Just came across a nest of multilinks on Reference:Language_Directives, thought you'd like to know; would have eliminated them in passing, but since you say that triggers some performance-hogging process I won't touch them. (CLi)