README.api: A high-level overview of the KStars code architecture.

This document briefly describes the main classes and functions of
KStars.  Since this is supplemental information to our API dox, this
file will probably eventually become our Mainpage.dox.

=== Description of the program ===

KStars is a simulation of the night sky.  The whole program is
essentially a (very complicated) model/view implementation.  The
"model" is all of the data regarding objects in the night sky, and how
they change with time, and the "view" is the graphical display of this
model on your screen.

The "model" is encapsulated in the KStarsData class, and the "view" is
encapsulated in the KStars class.  Here is a diagram showing the
hierarchy of classes:

KStars  (main window; master class for the frontend "view")
+ SkyMap  (sky widget)
  - KSPopupMenu (right-click menu)
  - Infoboxes (on-screen information on time, position, and focused object)

KStarsData  (master class for the backend "model")
+ SimClock (controls passage of time in the simulation)
+ SkyMapComposite (top of hierarchy for plottable objects)
  - Stars, planets, comets, asteroids, deep-sky objects, constellations, 
    guide lines, the Milky Way, etc. each have their own Component
    (see skycomponents/README)

SkyComponents are lists of objects of the same type that are drawn in
the sky map.  Individual objects are represented as an instance of
SkyPoint, or one of its children.  Only imaginary positions in the sky
use SkyPoint directly.  Most real objects use the derived class
SkyObject, which adds names and other data.  SkyObject itself has many
derivatives for different kinds of objects, like StarObject,
DeepSkyObject, KSPlanetBase, KSAsteroid, KSComet, etc.

Other important infrastructure classes include dms (which encapsulates
an angle value), GeoLocation (which encapsulates a location on Earth),
and TimeZoneRule (which encapsulates a daylight savings time rule).

