Simba/Units/MMLCore/mufasatypes.pas

391 lines
13 KiB
Plaintext

{
This file is part of the Mufasa Macro Library (MML)
Copyright (c) 2009 by Raymond van Venetië and Merlijn Wajer
MML is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
MML is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with MML. If not, see <http://www.gnu.org/licenses/>.
See the file COPYING, included in this distribution,
for details about the copyright.
Type declarations for the Mufasa Macro Library
}
unit MufasaTypes;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils;
const
DS = DirectorySeparator;
MEOL = {$ifdef MSWINDOWS}#13+{$endif}#10;
ps_mouse_right = 0;
ps_mouse_left = 1;
ps_mouse_middle = 2;
{ Overloaded Operators}
{ TPoint add }
operator + (PT1,PT2 : TPoint) : TPoint;
{ TPoint sub }
operator - (PT1,PT2 : TPoint) : TPoint;
{ TPoint comp}
operator = (PT1,PT2 : TPoint) : boolean;
type
TRGB24 = packed record
B, G, R : byte;
end;
PRGB24 = ^TRGB24;
TRGB32 = packed record
B, G, R, A: Byte;
end;
PRGB32 = ^TRGB32;
TRGB32Array = array of TRGB32;
TPRGB32Array = array of PRGB32; //Array of Pointers
TRetData = record
Ptr : PRGB32;
IncPtrWith : integer;
RowLen : integer;
end;
TBmpMirrorStyle = (MirrorWidth,MirrorHeight,MirrorLine); //LineMirror is in line x=y;
TTargetWindowMode = (w_BMP, w_Window, w_HDC, w_ArrayPtr, w_XWindow);
TClickType = (mouse_Left, mouse_Right, mouse_Middle);
TMousePress = (mouse_Down, mouse_Up);
TStringArray = array of String;
TPointArray = array of TPoint;
T2DPointArray = array of TPointArray;
TVariantArray = Array of Variant;
PVariantArray = ^TVariantArray;
TIntegerArray = Array of Integer;
T2DIntArray = array of TIntegerArray;
T2DIntegerArray = T2DIntArray;
TBoolArray = array of boolean;
TBooleanArray = TBoolArray;
T2DBoolArray = Array of TBoolArray;
TExtendedArray = Array of Extended;
T2DExtendedArray = Array of Array of Extended;
{ Mask Types }
TMask = record
White, Black : TPointArray;
WhiteHi,BlackHi : integer;
W,H : integer;
end;
{ File types }
TMufasaFile = record
Path: String;
FS: TFileStream;
BytesRead, Mode: Integer;
end;
TMufasaFilesArray = Array Of TMufasaFile;
{ DTM Types }
{
Possibly add .name too?
Then one could give DTM names, which would be easy for debugging.
}
TBox = record
x1, y1, x2, y2: Integer;
end;
TSysProc = record
Title: string;
Handle: integer;
Pid: integer;
Width, Height: integer;
end;
TSysProcArr = array of TSysProc;
const
TMDTMPointSize = 5*SizeOf(integer)+Sizeof(boolean);
type
TMDTMPoint = record //TMufasaDTMPoint
x,y,c,t,asz : integer;
bp : boolean;
end;
PMDTMPoint = ^TMDTMPoint; //PointerMufasaDTMPoint
TMDTMPointArray = array of TMDTMPoint; //TMufasaDTMPointArray
{ Other DTM Types }
TSDTMPointDef = record
x, y, Color, Tolerance, AreaSize, AreaShape: integer;
end;
TSDTMPointDefArray = Array Of TSDTMPointDef;
TSDTM = record
MainPoint: TSDTMPointDef;
SubPoints: TSDTMPointDefArray;
end;
TWritelnProc = procedure(s: string);
{events}
TOpenFileEvent = procedure(Sender : TObject;var Filename : string; var Continue : boolean) of object;
TWriteFileEvent = TOpenFileEvent;
TOpenConnectionEvent = procedure(Sender : TObject; var url : string; var Continue : boolean) of object;
TColourPickEvent = procedure(Sender : TObject; const Colour,colourx,coloury : integer) of object;
TScriptStartEvent = procedure(Sender: TObject; var Script : string; var Continue : boolean) of object;
TScriptCompileEvent = procedure(Sender: TObject; var Script : string; var Continue : boolean);
TScriptExecuteEvent = procedure(Sender : TObject; const Script : string; var Continue : boolean);
TScriptPauseEvent = TScriptExecuteEvent;
TScriptStopEvent = TScriptExecuteEvent;
TOpenConnectionData = record
Sender : TObject;
URL : PString;
Continue : PBoolean;
end;
TOpenFileData = record
Sender : TObject;
FileName : PString;
Continue : PBoolean;
end;
TWriteFileData = TOpenFileData;
TScriptStartData = record
Sender : TObject;
Script : PString;
Continue : PBoolean;
end;
type
VirtualKeyInfo = record
Str : string;
Key : byte;
end;
type
TBufferByteArray = Array[0..524287] of Byte;
PBufferByteArray = ^TBufferByteArray;
PPoint = ^TPoint;
var
BufferString : PChar;
BufferLen : LongWord;
VirtualKeys : array[0..173] of VirtualKeyInfo = (
(str :'UNKNOWN'; key : 0),
(str :'LBUTTON'; key : 1),
(str :'RBUTTON'; key : 2),
(str :'CANCEL'; key : 3),
(str :'MBUTTON'; key : 4),
(str :'XBUTTON1'; key : 5),
(str :'XBUTTON2'; key : 6),
(str :'BACK'; key : 8),
(str :'TAB'; key : 9),
(str :'CLEAR'; key : 12),
(str :'RETURN'; key : 13),
(str :'SHIFT'; key : 16),
(str :'CONTROL'; key : 17),
(str :'MENU'; key : 18),
(str :'PAUSE'; key : 19),
(str :'CAPITAL'; key : 20),
(str :'KANA'; key : 21),
(str :'HANGUL'; key : 21),
(str :'JUNJA'; key : 23),
(str :'FINAL'; key : 24),
(str :'HANJA'; key : 25),
(str :'KANJI'; key : 25),
(str :'ESCAPE'; key : 27),
(str :'CONVERT'; key : 28),
(str :'NONCONVERT'; key : 29),
(str :'ACCEPT'; key : 30),
(str :'MODECHANGE'; key : 31),
(str :'SPACE'; key : 32),
(str :'PRIOR'; key : 33),
(str :'NEXT'; key : 34),
(str :'END'; key : 35),
(str :'HOME'; key : 36),
(str :'LEFT'; key : 37),
(str :'UP'; key : 38),
(str :'RIGHT'; key : 39),
(str :'DOWN'; key : 40),
(str :'SELECT'; key : 41),
(str :'PRINT'; key : 42),
(str :'EXECUTE'; key : 43),
(str :'SNAPSHOT'; key : 44),
(str :'INSERT'; key : 45),
(str :'DELETE'; key : 46),
(str :'HELP'; key : 47),
(str :'0'; key : $30),
(str :'1'; key : $31),
(str :'2'; key : $32),
(str :'3'; key : $33),
(str :'4'; key : $34),
(str :'5'; key : $35),
(str :'6'; key : $36),
(str :'7'; key : $37),
(str :'8'; key : $38),
(str :'9'; key : $39),
(str :'A'; key : $41),
(str :'B'; key : $42),
(str :'C'; key : $43),
(str :'D'; key : $44),
(str :'E'; key : $45),
(str :'F'; key : $46),
(str :'G'; key : $47),
(str :'H'; key : $48),
(str :'I'; key : $49),
(str :'J'; key : $4A),
(str :'K'; key : $4B),
(str :'L'; key : $4C),
(str :'M'; key : $4D),
(str :'N'; key : $4E),
(str :'O'; key : $4F),
(str :'P'; key : $50),
(str :'Q'; key : $51),
(str :'R'; key : $52),
(str :'S'; key : $53),
(str :'T'; key : $54),
(str :'U'; key : $55),
(str :'V'; key : $56),
(str :'W'; key : $57),
(str :'X'; key : $58),
(str :'Y'; key : $59),
(str :'Z'; key : $5A),
(str :'LWIN'; key : $5B),
(str :'RWIN'; key : $5C),
(str :'APPS'; key : $5D),
(str :'SLEEP'; key : $5F),
(str :'NUMPAD0'; key : 96),
(str :'NUMPAD1'; key : 97),
(str :'NUMPAD2'; key : 98),
(str :'NUMPAD3'; key : 99),
(str :'NUMPAD4'; key : 100),
(str :'NUMPAD5'; key : 101),
(str :'NUMPAD6'; key : 102),
(str :'NUMPAD7'; key : 103),
(str :'NUMPAD8'; key : 104),
(str :'NUMPAD9'; key : 105),
(str :'MULTIPLY'; key : 106),
(str :'ADD'; key : 107),
(str :'SEPARATOR'; key : 108),
(str :'SUBTRACT'; key : 109),
(str :'DECIMAL'; key : 110),
(str :'DIVIDE'; key : 111),
(str :'F1'; key : 112),
(str :'F2'; key : 113),
(str :'F3'; key : 114),
(str :'F4'; key : 115),
(str :'F5'; key : 116),
(str :'F6'; key : 117),
(str :'F7'; key : 118),
(str :'F8'; key : 119),
(str :'F9'; key : 120),
(str :'F10'; key : 121),
(str :'F11'; key : 122),
(str :'F12'; key : 123),
(str :'F13'; key : 124),
(str :'F14'; key : 125),
(str :'F15'; key : 126),
(str :'F16'; key : 127),
(str :'F17'; key : 128),
(str :'F18'; key : 129),
(str :'F19'; key : 130),
(str :'F20'; key : 131),
(str :'F21'; key : 132),
(str :'F22'; key : 133),
(str :'F23'; key : 134),
(str :'F24'; key : 135),
(str :'NUMLOCK'; key : $90),
(str :'SCROLL'; key : $91),
(str :'LSHIFT'; key : $A0),
(str :'RSHIFT'; key : $A1),
(str :'LCONTROL'; key : $A2),
(str :'RCONTROL'; key : $A3),
(str :'LMENU'; key : $A4),
(str :'RMENU'; key : $A5),
(str :'BROWSER_BACK'; key : $A6),
(str :'BROWSER_FORWARD'; key : $A7),
(str :'BROWSER_REFRESH'; key : $A8),
(str :'BROWSER_STOP'; key : $A9),
(str :'BROWSER_SEARCH'; key : $AA),
(str :'BROWSER_FAVORITES'; key : $AB),
(str :'BROWSER_HOME'; key : $AC),
(str :'VOLUME_MUTE'; key : $AD),
(str :'VOLUME_DOWN'; key : $AE),
(str :'VOLUME_UP'; key : $AF),
(str :'MEDIA_NEXT_TRACK'; key : $B0),
(str :'MEDIA_PREV_TRACK'; key : $B1),
(str :'MEDIA_STOP'; key : $B2),
(str :'MEDIA_PLAY_PAUSE'; key : $B3),
(str :'LAUNCH_MAIL'; key : $B4),
(str :'LAUNCH_MEDIA_SELECT'; key : $B5),
(str :'LAUNCH_APP1'; key : $B6),
(str :'LAUNCH_APP2'; key : $B7),
(str :'OEM_1'; key : $BA),
(str :'OEM_PLUS'; key : $BB),
(str :'OEM_COMMA'; key : $BC),
(str :'OEM_MINUS'; key : $BD),
(str :'OEM_PERIOD'; key : $BE),
(str :'OEM_2'; key : $BF),
(str :'OEM_3'; key : $C0),
(str :'OEM_4'; key : $DB),
(str :'OEM_5'; key : $DC),
(str :'OEM_6'; key : $DD),
(str :'OEM_7'; key : $DE),
(str :'OEM_8'; key : $DF),
(str :'OEM_102'; key : $E2),
(str :'PROCESSKEY'; key : $E7),
(str :'ATTN'; key : $F6),
(str :'CRSEL'; key : $F7),
(str :'EXSEL'; key : $F8),
(str :'EREOF'; key : $F9),
(str :'PLAY'; key : $FA),
(str :'ZOOM'; key : $FB),
(str :'NONAME'; key : $FC),
(str :'PA1'; key : $FD),
(str :'OEM_CLEAR'; key : $FE),
(str :'HIGHESTVALUE'; key : $FE),
(str :'UNDEFINED'; key : $FF)
);
implementation
operator+(PT1, PT2: TPoint): TPoint;
begin
Result.x := PT1.x + PT2.x;
Result.y := Pt1.y + PT2.y;
end;
operator-(PT1, PT2: TPoint): TPoint;
begin
Result.x := PT1.x - PT2.x;
Result.y := Pt1.y - PT2.y;
end;
operator=(PT1, PT2: TPoint): boolean;
begin
result := ((PT1.x = PT2.x) and (pt1.y = pt2.y));
end;
initialization
BufferString := StrAlloc(524288);
BufferLen := 524288;
finalization
StrDispose(bufferstring);
end.