\documentclass[a4paper, 10pt]{report} % perhaps book?

% For images
\usepackage{graphicx}

% For URLs

\usepackage{url}

% For all our math joys
\usepackage{amsmath}

% For correct line-breaking.
\usepackage[english]{babel}

\setlength{\parskip}{1.5ex}

\begin{document}
\title{Mufasa Developers Manual}
\author{Merlijn Wajer (Wizzup?) \and Raymond van Veneti\"{e} (mastaraymond)}
\maketitle
\tableofcontents

\chapter{Foreword}

A word of thanks to the SRL Community\footnote{http://villavu.com/} and some of
it's members.
The following persons (in no particular order) have contributed in some way to
Simba, note that not all names correspond to the real name of a person, but
rather to their corresponding internet name.
Benjamin J Land (aka BenLand100), Nielsie95, Markus, Bullzeye95,
Yakman, Mixster, ss23, Nava2, Dgby714, Widget.

A special word of thanks goes to Frederic Hannes (Freddy1990) for maintaining
his program\footnote{SCAR, http://freddy1990.com}, for giving us inspiration
and generally for all the time he has put in SRL.

That's about it for the foreword, we hope this Document will be of any use to
you as reader.

Wizzup? and Raymond

\chapter{Introduction}

This is the Simba / MML (Mufasa Macro Library) documentation, aimed at
developers. The document will take several different approaches in treating and
explaining Simba / MML internals. We will first discuss the general 
structure of a particular subject, and if necessary, spent a few sections
on files linked with the subject. 
As Simba depends heavily on the MML and the MML can also actively be used in 
other languages, we will first discuss the MML, and then turn to Simba.

\chapter{MML}

The MML\footnote{Mufasa Macro Library} consists out of several
modular\footnote{Even though they are seen as modular, some have dependencies on
other modules} classes / objects. Each of these classes strive to be
completely platform independent. We will look at each of these classes.
\footnote{
The last class - TMFiles - may be removed in the future, as it doesn't
perform any special operations that are hard to do on other platforms or
operating systems.
}

\begin{itemize}
    \item   TIOManager
    \item   TMFinder
    \item   TMBitmaps
    \item   TMDTM
    \item   TMOCR
    \item   TMFiles
\end{itemize}

And finally, to bundle all these components into one class, the MML contains a
TMClient class, which simply initialises all the previously mentioned classes
when it is created, and destroys them when it is destroyed. It also allows
modules to access other modules, using the TMClient reference.

\section{TMClient}

\subsection{Introduction}

% Don't confuse with a client

\section{TIOManager}


\subsection{Introduction}

\subsection{TTarget}
\subsection{TRawTarget}
\subsection{TBitmapTarget}
\subsection{TWindow\_Abstract}
\subsection{TEIOS\_Client}
\subsection{TEIOS\_Target}
\subsection{TEIOS\_Controller}
\subsection{TTarget\_Exported}
\subsection{TIOManager\_Abstract}

\section{TMFinder}

\subsection{Introduction}

The TMFinder class is basically a large collection of different object
\footnote{Object being either a colour, bitmap or dtm} ``finding'' methods.
It has a reference to it's ``parent'' Client object, since it needs to have
access to TIOManager for retreiving client data, and access to managed bitmaps
and dtm's in TMBitmaps and TMDTM.


\subsection{Caching}
% ClientTPA + CachedWidth/CachedHeight.

\subsection{Colour Comparison Algorithms}

% CTS 0,1,2


\section{TMBitmaps}

\section{TMDTM}

\section{TMOCR}

\section{TMFiles}

\section{Portability to other languages}

Since it is near to impossible to simply import the MML classes, we are
currently writing a library called `libmml', which offers a non-OOP wrapper
around the MML library.

\chapter{Simba - General}
% Loading/Saving
% Auto updating
% Settings?
% Code Completion?

\chapter{Simba and PascalScript}


\end{document}
