1
0
mirror of https://github.com/moparisthebest/Simba synced 2024-11-26 03:02:15 -05:00
Simba/Doc/mufasa_ps_handbook.tex
Wizzup? 614533d701 Made it look a bit less bad
git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@248 3f818213-9676-44b0-a9b4-5e4c4e03d09d
2009-11-29 01:56:31 +00:00

448 lines
9.7 KiB
TeX

\documentclass[a4paper]{report}
\usepackage{amsmath}
\usepackage{color}
\begin{document}
\title{Mufasa PS Handbook}
\author{Merlijn Wajer \and Raymond van Veneti\"{e}}
\definecolor{typeGreen}{rgb}{0.0, 0.6, 0.0}
\definecolor{typeRed}{rgb}{0.6, 0.0, 0.0}
\maketitle
\tableofcontents
\chapter{Foreword}
HOI DIT IS DE MUFASA FUNCTIE LIJST!
\chapter{Input}
\section{Mouse}
\subsection{Types}
A few variables are exported for working with Mufasa Mouse Functions.
TClickType, which, as the name suggests, defines the click type.
\begin{itemize}
\item $mouse\_Right = 0$
\item $mouse\_Left = 1$
\item $mouse\_Middle = 2$
\end{itemize}
TMousePress, which defines if the mouse button is to be down or up.
\begin{itemize}
\item $mouse\_Up$
\item $mouse\_Down$
\end{itemize}
% TClickType = (mouse_Left, mouse_Right, mouse_Middle);
% TMousePress = (mouse_Down, mouse_Up);
\subsection{MoveMouse}
\textbf{procedure} {\color{blue}{MoveMouse}}({\color{typeRed}
{in x, y: }}{\color{typeGreen}{Integer}})
MoveMouse moves the mouse pointer to the specified x and y coordinates.
\subsection{GetMousePos}
\textbf{procedure} {\color{blue}{GetMousePos}}({\color{typeRed}
{out x, y: }}{\color{typeGreen}{Integer}})
GetMousePos returns the current position of the mouse in X and Y.
\subsection{HoldMouse}
\textbf{procedure} {\color{blue}{HoldMouse}}({\color{typeRed}
{x, y: }}{\color{typeGreen}{Integer}}; {\color{typeRed}{clickType :}}
{\color{typeGreen}{clickType}})
HoldMouse holds the given mouse button (clickType) down at the specified x,y
coordinate. If the mouse if not at the given x, y yet, the mouse position
will be set to x, y.
\subsection{ReleaseMouse}
\textbf{procedure} {\color{blue}{ReleaseMouse}}({\color{typeRed}
{x, y: }}{\color{typeGreen}{Integer}}; {\color{typeRed}{clickType :}}
{\color{typeGreen}{clickType}})
ReleaseMouse releases the given mouse button (clickType) at the specified x,y
coordinate. If the mouse if not at the given x, y yet, the mouse position
will be set to x, y.
\subsection{ClickMouse}
\textbf{procedure} {\color{blue}{ClickMouse}}({\color{typeRed}
{x, y: }}{\color{typeGreen}{Integer}}; {\color{typeRed}{clickType :}}
{\color{typeGreen}{clickType}})
ClickMouse performs a click with the given mouse button (clickType) at the
specified x, y coordinate.
\section{Keyboard}
The Keyboard functions in Mufasa are listed here.
Most of them are quite basic, and can use some improvement.
\subsection{Types}
Most of the low level Keyboard functions use Virtual Keys.
\subsection{Virtual Keys}
Virtual Keys originate from MS Windows, and we've added support for them.
Virtual Keys also work on non-Windows operating systems.
\begin{itemize}
\item UNKNOWN: 0
\item LBUTTON: 1
\item RBUTTON: 2
\item CANCEL: 3
\item MBUTTON: 4
\item XBUTTON1: 5
\item XBUTTON2: 6
\item BACK: 8
\item TAB: 9
\item CLEAR: 12
\item RETURN: 13
\item SHIFT: 16
\item CONTROL: 17
\item MENU: 18
\item PAUSE: 19
\item CAPITAL: 20
\item KANA: 21
\item HANGUL: 21
\item JUNJA: 23
\item FINAL: 24
\item HANJA: 25
\item KANJI: 25
\item ESCAPE: 27
\item CONVERT: 28
\item NONCONVERT: 29
\item ACCEPT: 30
\item MODECHANGE: 31
\item SPACE: 32
\item PRIOR: 33
\item NEXT: 34
\item END: 35
\item HOME: 36
\item LEFT: 37
\item UP: 38
\item RIGHT: 39
\item DOWN: 40
\item SELECT: 41
\item PRINT: 42
\item EXECUTE: 43
\item SNAPSHOT: 44
\item INSERT: 45
\item DELETE: 46
\item HELP: 47
\item 0: \$30
\item 1: \$31
\item 2: \$32
\item 3: \$33
\item 4: \$34
\item 5: \$35
\item 6: \$36
\item 7: \$37
\item 8: \$38
\item 9: \$39
\item A: \$41
\item B: \$42
\item C: \$43
\item D: \$44
\item E: \$45
\item F: \$46
\item G: \$47
\item H: \$48
\item I: \$49
\item J: \$4A
\item K: \$4B
\item L: \$4C
\item M: \$4D
\item N: \$4E
\item O: \$4F
\item P: \$50
\item Q: \$51
\item R: \$52
\item S: \$53
\item T: \$54
\item U: \$55
\item V: \$56
\item W: \$57
\item X: \$58
\item Y: \$59
\item Z: \$5A
\item LWIN: \$5B
\item RWIN: \$5C
\item APPS: \$5D
\item SLEEP: \$5F
\item NUMPAD0: 96
\item NUMPAD1: 97
\item NUMPAD2: 98
\item NUMPAD3: 99
\item NUMPAD4: 100
\item NUMPAD5: 101
\item NUMPAD6: 102
\item NUMPAD7: 103
\item NUMPAD8: 104
\item NUMPAD9: 105
\item MULTIPLY: 106
\item ADD: 107
\item SEPARATOR: 108
\item SUBTRACT: 109
\item DECIMAL: 110
\item DIVIDE: 111
\item F1: 112
\item F2: 113
\item F3: 114
\item F4: 115
\item F5: 116
\item F6: 117
\item F7: 118
\item F8: 119
\item F9: 120
\item F10: 121
\item F11: 122
\item F12: 123
\item F13: 124
\item F14: 125
\item F15: 126
\item F16: 127
\item F17: 128
\item F18: 129
\item F19: 130
\item F20: 131
\item F21: 132
\item F22: 133
\item F23: 134
\item F24: 135
\item NUMLOCK: \$90
\item SCROLL: \$91
\item LSHIFT: \$A0
\item RSHIFT: \$A1
\item LCONTROL: \$A2
\item RCONTROL: \$A3
\item LMENU: \$A4
\item RMENU: \$A5
\item BROWSER\_BACK: \$A6
\item BROWSER\_FORWARD: \$A7
\item BROWSER\_REFRESH: \$A8
\item BROWSER\_STOP: \$A9
\item BROWSER\_SEARCH: \$AA
\item BROWSER\_FAVORITES: \$AB
\item BROWSER\_HOME: \$AC
\item VOLUME\_MUTE: \$AD
\item VOLUME\_DOWN: \$AE
\item VOLUME\_UP: \$AF
\item MEDIA\_NEXT\_TRACK: \$B0
\item MEDIA\_PREV\_TRACK: \$B1
\item MEDIA\_STOP: \$B2
\item MEDIA\_PLAY\_PAUSE: \$B3
\item LAUNCH\_MAIL: \$B4
\item LAUNCH\_MEDIA\_SELECT: \$B5
\item LAUNCH\_APP1: \$B6
\item LAUNCH\_APP2: \$B7
\item OEM\_1: \$BA
\item OEM\_PLUS: \$BB
\item OEM\_COMMA: \$BC
\item OEM\_MINUS: \$BD
\item OEM\_PERIOD: \$BE
\item OEM\_2: \$BF
\item OEM\_3: \$C0
\item OEM\_4: \$DB
\item OEM\_5: \$DC
\item OEM\_6: \$DD
\item OEM\_7: \$DE
\item OEM\_8: \$DF
\item OEM\_102: \$E2
\item PROCESSKEY: \$E7
\item ATTN: \$F6
\item CRSEL: \$F7
\item EXSEL: \$F8
\item EREOF: \$F9
\item PLAY: \$FA
\item ZOOM: \$FB
\item NONAME: \$FC
\item PA1: \$FD
\item OEM\_CLEAR: \$FE
\item HIGHESTVALUE: \$FE
\item UNDEFINED: \$FF
\end{itemize}
\subsection{KeyDown}
\textbf{procedure} {\color{blue}{KeyDown}}({\color{typeRed}
{key: }}{\color{typeGreen}{Word}});
KeyDown sends a request to the Operating System to ``fake'' an event that
causes the Key to be ``down''.
``key'' can be any Virtual Key\footnote{See the section on Virtual Keys}.
\subsubsection{Common pitfalls}
Don't forget that certain keys may require that shift, or another key
is down as well.
\subsection{KeyUp}
KeyUp sends a request to the Operating System to ``fake'' an event that
causes the Key to be ``up''.
``key'' can be any Virtual Key.
\textbf{procedure} {\color{blue}{KeyUp}}({\color{typeRed}
{key: }}{\color{typeGreen}{Word}});
\subsection{PressKey}
\textbf{procedure} {\color{blue}{PressKey}}({\color{typeRed}
{key: }}{\color{typeGreen}{Word}});
PressKey combines KeyDown and KeyUp, to fake a key press.
\subsection{SendKeys}
\textbf{procedure} {\color{blue}{SendKEys}}({\color{typeRed}
{s: }}{\color{typeGreen}{String}});
SendKeys takes a string ``s'', and attempts to send it's complete contents to
the client. It currently only accepts characters ranging from ``A..z''.
\subsection{IsKeyDown}
\textbf{function} {\color{blue}{PressKey}}({\color{typeRed}
{key: }}{\color{typeGreen}{Word}}): {\color{typeGreen}{Boolean}};
IsKeyDown returns true if then give VK key is ``down''.
\subsection{Notes}
There is no IsKeyUp, because this can easily be generated by inverting the
result of IsKeyDown:
\begin{verbatim}
not IsKeyDown (x)
\end{verbatim}
\chapter{Finding Routines}
\section{Colours}
\subsection{FindColor}
\subsection{FindColorTolerance}
\subsection{FindColorsTolerance}
\section{Bitmaps}
% Dit doe je zelf maar
\section{DTMs}
Deformable Template Models are a special approach to finding
objects. One can specify several points, and colours and tolerances
for these points.
\subsection{Types}
Mufasa's DTM type:
\begin{verbatim}
pDTM = record
p: TPointArray;
c, t, asz, ash: TIntegerArray;
end;
\end{verbatim}
Deprecated DTM type:
\begin{verbatim}
TDTMPointDef = record
x, y, Color, Tolerance, AreaSize, AreaShape: integer;
end;
TDTMPointDefArray = Array Of TDTMPointDef;
TDTM = record
MainPoint: TDTMPointDef;
SubPoints: TDTMPointDefArray;
end;
\end{verbatim}
\subsection{FindDTM}
\textbf{function} {\color{blue}{FindDTM}}({\color{typeRed}{DTM: }}
{\color{typeGreen}{Integer}}; {\color{typeRed}{Var x, y: }}
{\color{typeGreen}{Integer}}) {\color{typeGreen}{: Boolean}}; \\
FindDTM is the most basic DTM finding function. It takes a box to search in,
and if the DTM is found, it will set $x$ and $y$ to the coordinate the DTM
was found it, and it will also return true. Else, it returns false.
Once a DTM is found, it will stop searching. In other words; it always returns
the first found DTM.
\subsection{FindDTMs}
\textbf{function} {\color{blue}{FindDTMs}}({\color{typeRed}{DTM: }}
{\color{typeGreen}{Integer}}; {\color{typeRed}{Var Points: }}
{\color{typeGreen}{TPointArray}}){\color{typeGreen}{: Boolean}}; \\
FindDTMs is like FindDTM, but it returns an array of $x$ and $y$, as the
$TPointArray$ type.
\subsection{FindDTMRotated}
\subsection{FindDTMsRotated}
\subsection{DTMFromString}
\subsection{DTMToString}
\subsection{AddDTM}
\subsection{FreeDTM}
\subsection{GetDTM}
\subsection{tDTMtopDTM}
\subsection{pDTMtopDTM}
\chapter{OCR}
\section{Finding text}
\section{Indentifying text}
\subsection{GetTextAtEx}
DAT IS DIT
\chapter{Client}
\section{Client and Window}
\chapter{Files and Web}
\section{Files}
\section{Web}
\subsection{OpenWebPage}
\chapter{Point Sorting and Math}
\section{Sorting functions}
\section{Math}
\chapter{Easter Eggs}
\section{Easter egg 1}
Nothing here! Do you really think we document Easter eggs?
????
Hakuna matata!
Wizzyplugin stuff
\end{document}