declare.c
---------

History
-------
26th October 1992  J R C  Started

   This file contains the functions to do the work for DrawFile_Declare. It
is analogous to render.c, but used by DrawFile_DeclareFnts instead of by
DrawFile_Render.

   It also defines a state structure, though with less inforamtion than the
one used by DrawFile_Render, since the clipping rectangle and transformation
are irrelevant.

   The main entry point |declare| initialises the state and uses the
callback list contructed at module intialiation time to process the
different object types.

   |Declare_font_table| declares all the fonts in the font table. Though it
would be possible to declare only those fonts actually used in text and
transformed text objects, this is not done beacause, in the case of Draw at
least, the font table object contains only those fonts that are used by text
in the file; so to make this check would be redundant. OIt would also
necessitate keeping a list of declared fonts to avoid declaring them
multiple times (which would be a waste of time). All fonts are declared as
"kerned," since this allows the font to be used as either kerned or
non-kerned, as appropriate at the time that Font_Paint is called
subsequently.

   |Declare_text_area| passes on the job to |textarea_declare|.

   |Declare_group| and |declare_tagged| are needed only to parse their
respective object types and make the necessary callbacks.
