{ 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 . 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,plugins; const DS = DirectorySeparator; MEOL = {$ifdef MSWINDOWS}#13+{$endif}#10; { Overloaded Operators} { TPoint add } operator + (PT1,PT2 : TPoint) : TPoint; { TPoint sub } operator - (PT1,PT2 : TPoint) : TPoint; type TRGB32 = packed record B, G, R, A: Byte; end; PRGB32 = ^TRGB32; 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; TIntegerArray = Array of Integer; T2DIntArray = array of TIntegerArray; T2DIntegerArray = T2DIntArray; TBoolArray = array of boolean; 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; { 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; { TODO: add cts per colour/tolerance? } pDTM = record l: Integer; p: TPointArray; c, t, asz, ash: TIntegerArray; end; { Other DTM Types } TDTMPointDef = record x, y, Color, Tolerance, AreaSize, AreaShape: integer; end; TDTMPointDefArray = Array Of TDTMPointDef; TDTM = record MainPoint: TDTMPointDef; SubPoints: TDTMPointDefArray; end; var PluginsGlob : TMPlugins; type VirtualKeyInfo = record Str : string; Key : byte; end; var 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; end.