More documentation.

This commit is contained in:
Merlijn Wajer 2010-06-15 19:15:52 +02:00
parent 7a45c45ea9
commit 57b0f143c7
13 changed files with 137 additions and 28 deletions

View File

@ -33,3 +33,7 @@ html:
latex2html $(psbook_).tex -local_icons -nofootnode
latex2html $(book_).tex -local_icons -nofootnode
latex2html $(dev_).tex -local_icons -nofootnode
sphinx:
$(MAKE) -C Pics/
$(MAKE) html -C sphinx

View File

@ -2,16 +2,10 @@ digraph Client {
Client [shape=box]
Client -> IOManager
Client -> Finder
Client -> Bitmaps
Client -> Files
Client -> OCR
Client -> DTM
Finder -> IOManager
Finder -> Bitmaps
Finder -> DTM
OCR -> IOManager
IOManager -> Client
Finder -> Client
Bitmaps -> Client
Files -> Client
OCR -> Client
DTM -> Client
}

View File

@ -1,7 +1,7 @@
.PHONY: default clean
files := Client_Classes FindColor Input_Diag Window DTM TMWindow
files := Client_Classes FindColor Input_Diag Window DTM TMWindow client_classes_dependencies
build = dot $(1).dot -Tpng > $(1).png
default: dotit
@ -14,6 +14,9 @@ dotit: $(files)
Client_Classes:
$(call build,Client_Classes)
client_classes_dependencies:
$(call build,client_classes_dependencies)
FindColor:
$(call build,FindColor)

View File

@ -0,0 +1,22 @@
digraph Client {
Client [shape=box]
IOManager -> Client
Finder -> Client
Bitmaps -> Client
Files -> Client
OCR -> Client
DTM -> Client
Finder -> IOManager
Finder -> Bitmaps
Finder -> DTM
OCR -> IOManager
OCR -> Bitmaps
OCR -> Finder
Bitmaps -> IOManager
}

View File

@ -25,8 +25,8 @@ Contents:
bugreport.rst
tutorial.rst
referencescript.rst
referencesimba.rst
referencemml.rst
referencesimba.rst
docdoc.rst
todo.rst
pymml.rst

View File

@ -1,2 +1,19 @@
TClient Class
=============
Client Class
============
The ``TClient`` class is the class that glues all other MML classes together
into one usable class. Internally, quite some MML classes require other MML
classes, and they access these other classes through their "parent" ``TClient``
class.
An image tells more than a thousands words:
.. image:: ../../Pics/Client_Classes.png
And the class dependency graph: (An arrow indicates a dependency)
.. image:: ../../Pics/client_classes_dependencies.png
The client class does not do much else except creating the classes when it is
created and destroying the classes when it is being destroyed.

View File

@ -1,9 +1,53 @@
TWindow Class
=============
IOManager Class
===============
.. note::
This page is still WIP.
It only covers the function of the IOManager class vaguely. In reality, the
IOManager unit contains quite some classes, each with a (slightly) different
function. There are not yet documented. (Perhaps BenLand100 can do this?)
The IOManager class manages the core functionality for retreiving Window data,
such as the actual pixel data and the position and dimension of a window.
The main purpose is to form a cross platform class to retrieve window
information, press and poll mouse buttons and to press and poll keyboard keys.
The IOManager is the only class that should use platform (or operating system)
specific calls; this is all abstracted by the IOManager class.
To achieve this, several abstract classes are defined by the IOManager class.
Every operating system (or window system) needs it's own implementation of the
``TWindow_Abstract`` class. We wrote one for both Linux and Windows.
.. toctree::
:maxdepth: 2
linux.rst
windows.rst
os_linux.rst
os_windows.rst
Offscreen image capturing
-------------------------
On Linux, offscreen image capturing is possible when compositing is turned on.
With compiz, this is turned on by default. Other windows managers like Metacity
and KWin can turn this on. When enabled, Simba can capture images from windows
that are below others. Minimized does not work. It is also possible to turn on
Compositing for specific X11 Windows with an api call, but this is currently not
implemented.
The status on Windows is unknown.
Silent Input
------------
So what is Silent Input?
We define Silent Input as methods to manipulate the user's mouse and keyboard,
without visually using them. So what does this mean?
This basically means that you will still be able to use your mouse while
the MML is performing mouse operations on your targetted window/client.
However, silent input is very hard to implement, and often hardly supported
by host operating systems. Often silent mouse or keyboard input is simply
ignored. So in general it is advised to stick to non silent input.

View File

@ -1,4 +1,4 @@
Linux Specific Code
===================
Linux Specific Parts
====================

View File

@ -1,4 +1,4 @@
Windows Specific Code
=====================
Windows Specific Parts
======================

View File

@ -1,10 +1,22 @@
MML Reference
=============
The Mufasa Macro Library is the core library of Simba.
The Mufasa Macro Library is the core library of Simba. It is used not just to
provide scripts with the required functionality, but also used to pick colours
and select windows with Simba itself. The MML can run without any user
interface.
The MML is split up in "Core" classes and "Addon" classes.
.. note::
This section needs to explain more on the core/addon differences,
and provide some more general info about the mml.
.. toctree::
:maxdepth: 2
mmlref/client.rst
mmlref/iomanager.rst
mmlref/finder.rst
mmlref/bitmap.rst
mmlref/ocr.rst

View File

@ -16,10 +16,11 @@ Simba can:
* Find and read colours on the screen.
* Click or move the mouse to a specific position on the screen. Typically
this is the position of a found color or bitmap.
* Read and write files.
* Connect to the internet to read websites and post data to them.
* Read text on the screen and turn it into actual text. (Optical Character
Recognition)
* Capture and analyse images on the screen.
* Read and write files.
* Connect to the internet to read websites and post data to them.
* Run pascal programs for you. If you're a bit creative you can have a lot
of fun stuff with Simba, you can even make a game in it.

View File

@ -72,3 +72,15 @@ It is important to understand, however, that premature optimization usually
ends up hurting development by introducing bugs and other forms of
instability. Simba attempts to find a middle-ground and has sacrificed some
speed for readability and maintainability, but is overall still quite fast.
Open Minded
~~~~~~~~~~~
Open minded. We appreciate your help, ideas and critisism!
Well Documented
===============
Simba is well documented. (You're looking the documentation right now...)
There is still stuff left to document but overall the documentation is pretty
good.

View File

@ -18,7 +18,7 @@
See the file COPYING, included in this distribution,
for details about the copyright.
Linux OS specific implemetation for Mufasa Macro Library
Linux OS specific implementation for Mufasa Macro Library
}
{$mode objfpc}{$H+}
unit os_linux;