@c changes.texi
    
@c This file is part of the 3DLDF User and Reference Manual.
@c Copyright (C) 2003, 2004 Laurence D. Finston 
@c See the section "GNU Free Documentation License" in the file 
@c fdl.texi for copying conditions.

@c $Id: changes.texi,v 1.7 2004/01/14 20:54:43 lfinsto1 Exp $

@node Changes, Bibliography, Future Plans, Top
@chapter Changes

@noindent
Updated @value{UPDATED}.

@menu
* Changes in 3DLDF 1.1.5::      
* Changes in 3DLDF 1.1.4.2::    
* Changes in 3DLDF 1.1.4.1::    
* Changes in 3DLDF 1.1.4::      
* Initial version::             
@end menu
 
@node Changes in 3DLDF 1.1.5, Changes in 3DLDF 1.1.4.2, Changes, Changes
@section 3DLDF 1.1.5

In release 1.1.5, I've tied up some loose ends.  I wanted to do this
before starting on the input routine.  

@itemize @bullet

@item
Added @code{const real} @var{step} argument to the version of
@code{Ellipse::intersection_points()} that takes an @code{Ellipse}
argument.  
@xref{Ellipse Intersections, , Ellipse Reference; Intersections}.

@item
It is now possible to ``typedef'' @code{real} to either @code{float}
or @code{double}.  This means that @code{real} can now be made a synonym
for either @code{float} or @code{double} by using a @code{typedef}
declaration.  @code{real} is typedeffed to @code{float} by default.

@item
Added @code{const bool ldf_real_float} and 
@code{extern const bool ldf_real_double}
for use in non-conditionally compiled code.  
They are set according to the values
of @code{LDF_REAL_FLOAT} and @code{LDF_REAL_DOUBLE}. 

@item
@code{Transform::epsilon()} and @code{Point::epsilon()} now return
different values, depending on the values of the preprocessor macros
@code{LDF_REAL_FLOAT} and @code{LDF_REAL_DOUBLE}.  I have not yet tested
whether good values are returned when @code{real} is @code{double}.  

@item
@code{MAX_REAL} and @code{MAX_REAL_SQRT} are no longer constants.
Their values are set at the beginning of @code{main()}.  However,
users should not change their values.  @code{MAX_REAL} is the
second-largest @code{float} or @code{double} on a given machine.  This
now works for all common architectures. 

@item
Added @code{namespace System} containing the following functions:
@code{get_endianness()}, @code{is_big_endian()},
@code{is_little_endian()}, @code{get_register_width()}, 
@code{is_32_bit()}, @code{is_64_bit()}, and the template function 
@code{get_second_largest()}.  

@code{namespace System} and its functions are documented in
@file{system.texi}, which is new in edition @value{EDITION}.

@item
Replaced the various @code{create_new_}<@i{type}>@code{()} functions with the
template function @code{create_new()}.  The latter is documented in 
@file{creatnew.texi}, which is new in edition @value{EDITION}.

@item
Added the file @file{3DLDF-@value{VERSION}/CWEB/cnepspng.el} to
the distribution.  It contains the definitions of the Emacs-Lisp
functions @command{convert-eps} and @command{convert-eps-loop}. 
@xref{Converting EPS Files ELISP,,
Running 3DLDF; Converting EPS Files; Emacs-Lisp Functions}. 

@item
Added the files 
@file{3DLDF-@value{VERSION}/CWEB/exampman.web} and 
@file{3DLDF-@value{VERSION}/CWEB/examples.mp} to the
distribution.  They contain the @cpp{} and MetaPost code, 
respectively, for generating the illustrations in this manual.

@end itemize

@node Changes in 3DLDF 1.1.4.2, Changes in 3DLDF 1.1.4.1, Changes in 3DLDF 1.1.5, Changes
@section 3DLDF 1.1.4.2

@itemize @bullet
@item
The illustrations in the HTML output are now scaled to 
@code{magstep3}.
@end itemize

@node Changes in 3DLDF 1.1.4.1, Changes in 3DLDF 1.1.4, Changes in 3DLDF 1.1.4.2, Changes
@section 3DLDF 1.1.4.1

@itemize @bullet
@item
The HTML output now includes illustrations.
@end itemize

@node Changes in 3DLDF 1.1.4, Initial version, Changes in 3DLDF 1.1.4.1, Changes
@section 3DLDF 1.1.4

@itemize @bullet
@item
@code{MAX_REAL} is now the second largest float value.  However, the
calculation is system dependent, and will only work on 32-bit
little-endian architectures.  I will start working on porting this
soon. 

@item
Fixed bug in @file{tsthdweb}, that caused files to be compiled more
often than necessary.  It will be necessary to keep an eye on this.

@item
Added @code{Rectangle::is_rectangular()}.

@item
Made @code{mediate()} a member function of @code{Point}.

@item
It is now possible to generate this manual in the Info and HTML
formats. 
@end itemize


@node Initial version,  , Changes in 3DLDF 1.1.4, Changes
@section 3DLDF 1.1.1

3DLDF 1.1.1 was the first version of 3DLDF since it became a GNU
package (the current version is @value{VERSION}).  It is now conformant
to the GNU Coding Standards, except that 
a functioning @file{3DLDF.info} cannot be generated from
@file{3DLDF.texi}.   The 
distribution now includes a @code{configure} script, 
@file{Makefile.in} files, and other files generated by Autoconf and
Automake.  Recompilation is now handled by @command{make} rather than
the auxilliary program @command{3DLDFcpl}.  The files
@file{3DLDFcpl.web} and @file{3DLDFprc.web} have been removed from the
distribution. 

The extension of the @cpp{} files generated by @command{ctangle} is
changed from @file{c} to @file{cxx} before they are compiled.
After @command{ctangle} is run on a CWEB file, @file{<@i{filename}>.c} 
is compared to the old @file{<@i{filename}>.cxx} using @command{diff}.
Whitespace, comments, and @code{#line} preprocessor commands are
ignored.  The @file{<@i{filename}>.c} is only renamed to
@file{<@i{filename}>.cxx} and compiled if they differ.  This way,
changes to the @TeX{} text only in a CWEB file no longer cause
recompilation and relinking.

The main Texinfo file is now called @file{3DLDF.texi}.  It was formerly
called @file{3DLDFman.texi}.  This is because Automake expects this
name.  For this reason, the CWEB
file passed as an argument to cweave has been renamed
@file{3DLDFprg.web}.  It was formerly called @file{3DLDF.web}. 
 
