mirror of
https://github.com/moparisthebest/Simba
synced 2024-11-25 18:52:15 -05:00
Added various Set/Get target methods and a system where freeing targets is optional, but avaliable to those that might set lots of targets. All of a script's targets will be freed when the TIOManager is freed.
git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@476 3f818213-9676-44b0-a9b4-5e4c4e03d09d
This commit is contained in:
parent
3fef7ac7ed
commit
a0a89be1f2
@ -11,7 +11,7 @@
|
||||
<Title Value="Simba"/>
|
||||
<UseXPManifest Value="True"/>
|
||||
<Icon Value="0"/>
|
||||
<ActiveEditorIndexAtStart Value="10"/>
|
||||
<ActiveEditorIndexAtStart Value="5"/>
|
||||
</General>
|
||||
<VersionInfo>
|
||||
<ProjectVersion Value=""/>
|
||||
@ -190,7 +190,7 @@
|
||||
<UnitName Value="Client"/>
|
||||
<CursorPos X="15" Y="67"/>
|
||||
<TopLine Value="49"/>
|
||||
<EditorIndex Value="7"/>
|
||||
<EditorIndex Value="8"/>
|
||||
<UsageCount Value="201"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit20>
|
||||
@ -265,9 +265,9 @@
|
||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
||||
<IsPartOfProject Value="True"/>
|
||||
<UnitName Value="mmlpsthread"/>
|
||||
<CursorPos X="31" Y="260"/>
|
||||
<TopLine Value="243"/>
|
||||
<EditorIndex Value="10"/>
|
||||
<CursorPos X="61" Y="256"/>
|
||||
<TopLine Value="331"/>
|
||||
<EditorIndex Value="11"/>
|
||||
<UsageCount Value="202"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit30>
|
||||
@ -349,7 +349,7 @@
|
||||
<UnitName Value="bitmaps"/>
|
||||
<CursorPos X="12" Y="93"/>
|
||||
<TopLine Value="83"/>
|
||||
<EditorIndex Value="11"/>
|
||||
<EditorIndex Value="12"/>
|
||||
<UsageCount Value="200"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit42>
|
||||
@ -495,8 +495,10 @@
|
||||
<Unit64>
|
||||
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/other.inc"/>
|
||||
<CursorPos X="1" Y="1"/>
|
||||
<TopLine Value="90"/>
|
||||
<TopLine Value="95"/>
|
||||
<EditorIndex Value="7"/>
|
||||
<UsageCount Value="44"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit64>
|
||||
<Unit65>
|
||||
<Filename Value="../../Units/PascalScript/uPSCompiler.pas"/>
|
||||
@ -764,10 +766,10 @@
|
||||
</Unit102>
|
||||
<Unit103>
|
||||
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/window.inc"/>
|
||||
<CursorPos X="12" Y="63"/>
|
||||
<TopLine Value="30"/>
|
||||
<CursorPos X="51" Y="34"/>
|
||||
<TopLine Value="19"/>
|
||||
<EditorIndex Value="5"/>
|
||||
<UsageCount Value="16"/>
|
||||
<UsageCount Value="17"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit103>
|
||||
<Unit104>
|
||||
@ -1540,7 +1542,7 @@
|
||||
<CursorPos X="52" Y="609"/>
|
||||
<TopLine Value="585"/>
|
||||
<EditorIndex Value="3"/>
|
||||
<UsageCount Value="37"/>
|
||||
<UsageCount Value="38"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit216>
|
||||
<Unit217>
|
||||
@ -1590,7 +1592,7 @@
|
||||
<UnitName Value="framefunctionlist"/>
|
||||
<CursorPos X="26" Y="295"/>
|
||||
<TopLine Value="7"/>
|
||||
<UsageCount Value="182"/>
|
||||
<UsageCount Value="185"/>
|
||||
</Unit223>
|
||||
<Unit224>
|
||||
<Filename Value="../../../usr/local/share/lazarus/lcl/comctrls.pp"/>
|
||||
@ -1618,7 +1620,7 @@
|
||||
<CursorPos X="59" Y="173"/>
|
||||
<TopLine Value="151"/>
|
||||
<EditorIndex Value="4"/>
|
||||
<UsageCount Value="12"/>
|
||||
<UsageCount Value="13"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit227>
|
||||
<Unit228>
|
||||
@ -1647,7 +1649,7 @@
|
||||
<UnitName Value="simpleanalyzer"/>
|
||||
<CursorPos X="52" Y="104"/>
|
||||
<TopLine Value="193"/>
|
||||
<UsageCount Value="169"/>
|
||||
<UsageCount Value="172"/>
|
||||
</Unit231>
|
||||
<Unit232>
|
||||
<Filename Value="../../Units/Misc/mPasLex.pas"/>
|
||||
@ -1705,10 +1707,10 @@
|
||||
</Unit239>
|
||||
<Unit240>
|
||||
<Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/>
|
||||
<CursorPos X="40" Y="59"/>
|
||||
<TopLine Value="36"/>
|
||||
<CursorPos X="75" Y="68"/>
|
||||
<TopLine Value="51"/>
|
||||
<EditorIndex Value="6"/>
|
||||
<UsageCount Value="27"/>
|
||||
<UsageCount Value="28"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit240>
|
||||
<Unit241>
|
||||
@ -1724,7 +1726,7 @@
|
||||
<UnitName Value="updater"/>
|
||||
<CursorPos X="38" Y="211"/>
|
||||
<TopLine Value="65"/>
|
||||
<UsageCount Value="142"/>
|
||||
<UsageCount Value="145"/>
|
||||
</Unit242>
|
||||
<Unit243>
|
||||
<Filename Value="updateform.pas"/>
|
||||
@ -1735,7 +1737,7 @@
|
||||
<ComponentState Value="1"/>
|
||||
<CursorPos X="111" Y="102"/>
|
||||
<TopLine Value="207"/>
|
||||
<UsageCount Value="137"/>
|
||||
<UsageCount Value="140"/>
|
||||
</Unit243>
|
||||
<Unit244>
|
||||
<Filename Value="../../../Documents/lazarus/lcl/fileutil.pas"/>
|
||||
@ -1856,7 +1858,7 @@
|
||||
<UnitName Value="simbasettings"/>
|
||||
<CursorPos X="26" Y="9"/>
|
||||
<TopLine Value="11"/>
|
||||
<UsageCount Value="100"/>
|
||||
<UsageCount Value="103"/>
|
||||
</Unit261>
|
||||
<Unit262>
|
||||
<Filename Value="../../Units/MMLAddon/settings.pas"/>
|
||||
@ -1894,7 +1896,7 @@
|
||||
<UnitName Value="reportbug"/>
|
||||
<CursorPos X="53" Y="23"/>
|
||||
<TopLine Value="21"/>
|
||||
<UsageCount Value="83"/>
|
||||
<UsageCount Value="86"/>
|
||||
</Unit266>
|
||||
<Unit267>
|
||||
<Filename Value="../../Units/Synapse/synsock.pas"/>
|
||||
@ -1951,7 +1953,7 @@
|
||||
<UnitName Value="newinternets"/>
|
||||
<CursorPos X="37" Y="171"/>
|
||||
<TopLine Value="153"/>
|
||||
<UsageCount Value="79"/>
|
||||
<UsageCount Value="82"/>
|
||||
</Unit274>
|
||||
<Unit275>
|
||||
<Filename Value="reportbug.lrs"/>
|
||||
@ -1997,19 +1999,19 @@
|
||||
<Unit281>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<UnitName Value="IOManager"/>
|
||||
<CursorPos X="67" Y="53"/>
|
||||
<TopLine Value="34"/>
|
||||
<CursorPos X="53" Y="202"/>
|
||||
<TopLine Value="194"/>
|
||||
<EditorIndex Value="0"/>
|
||||
<UsageCount Value="30"/>
|
||||
<UsageCount Value="31"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit281>
|
||||
<Unit282>
|
||||
<Filename Value="../../Units/MMLCore/os_linux.pas"/>
|
||||
<UnitName Value="os_linux"/>
|
||||
<CursorPos X="36" Y="69"/>
|
||||
<TopLine Value="56"/>
|
||||
<EditorIndex Value="9"/>
|
||||
<UsageCount Value="29"/>
|
||||
<CursorPos X="48" Y="61"/>
|
||||
<TopLine Value="45"/>
|
||||
<EditorIndex Value="10"/>
|
||||
<UsageCount Value="30"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit282>
|
||||
<Unit283>
|
||||
@ -2022,10 +2024,10 @@
|
||||
<Unit284>
|
||||
<Filename Value="../../Units/MMLCore/os_windows.pas"/>
|
||||
<UnitName Value="os_windows"/>
|
||||
<CursorPos X="22" Y="164"/>
|
||||
<TopLine Value="155"/>
|
||||
<EditorIndex Value="12"/>
|
||||
<UsageCount Value="25"/>
|
||||
<CursorPos X="54" Y="348"/>
|
||||
<TopLine Value="319"/>
|
||||
<EditorIndex Value="13"/>
|
||||
<UsageCount Value="26"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit284>
|
||||
<Unit285>
|
||||
@ -2048,7 +2050,7 @@
|
||||
<UnitName Value="libloader"/>
|
||||
<CursorPos X="1" Y="149"/>
|
||||
<TopLine Value="128"/>
|
||||
<UsageCount Value="37"/>
|
||||
<UsageCount Value="40"/>
|
||||
</Unit287>
|
||||
<Unit288>
|
||||
<Filename Value="../../Units/MMLAddon/tpa.pas"/>
|
||||
@ -2061,8 +2063,8 @@
|
||||
<Filename Value="../../Units/PascalScript/x86.inc"/>
|
||||
<CursorPos X="8" Y="157"/>
|
||||
<TopLine Value="140"/>
|
||||
<EditorIndex Value="8"/>
|
||||
<UsageCount Value="15"/>
|
||||
<EditorIndex Value="9"/>
|
||||
<UsageCount Value="16"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit289>
|
||||
<Unit290>
|
||||
@ -2084,127 +2086,131 @@
|
||||
<CursorPos X="70" Y="1393"/>
|
||||
<TopLine Value="1364"/>
|
||||
<EditorIndex Value="2"/>
|
||||
<UsageCount Value="12"/>
|
||||
<UsageCount Value="13"/>
|
||||
<Loaded Value="True"/>
|
||||
</Unit292>
|
||||
</Units>
|
||||
<JumpHistory Count="29" HistoryIndex="28">
|
||||
<JumpHistory Count="30" HistoryIndex="29">
|
||||
<Position1>
|
||||
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/window.inc"/>
|
||||
<Caret Line="1" Column="1" TopLine="1"/>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="../../Units/PascalScript/x86.inc"/>
|
||||
<Caret Line="592" Column="60" TopLine="584"/>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="../../Units/MMLCore/client.pas"/>
|
||||
<Caret Line="36" Column="17" TopLine="27"/>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="../../Units/MMLCore/os_linux.pas"/>
|
||||
<Caret Line="48" Column="50" TopLine="34"/>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
||||
<Caret Line="345" Column="27" TopLine="311"/>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="../../Units/MMLCore/os_linux.pas"/>
|
||||
<Caret Line="69" Column="36" TopLine="56"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="201" Column="29" TopLine="195"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="372" Column="45" TopLine="348"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
</Position1>
|
||||
<Position2>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="202" Column="29" TopLine="177"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
</Position2>
|
||||
<Position3>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="346" Column="59" TopLine="328"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
</Position3>
|
||||
<Position4>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="47" Column="34" TopLine="34"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
</Position4>
|
||||
<Position5>
|
||||
<Filename Value="../../Units/MMLCore/tpa.pas"/>
|
||||
<Caret Line="76" Column="21" TopLine="58"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
</Position5>
|
||||
<Position6>
|
||||
<Filename Value="../../Units/MMLCore/tpa.pas"/>
|
||||
<Caret Line="77" Column="21" TopLine="58"/>
|
||||
</Position6>
|
||||
<Position7>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="31" Column="54" TopLine="23"/>
|
||||
</Position7>
|
||||
<Position8>
|
||||
<Filename Value="../../Units/MMLCore/ocrutil.pas"/>
|
||||
<Caret Line="85" Column="37" TopLine="69"/>
|
||||
</Position8>
|
||||
<Position9>
|
||||
<Filename Value="../../Units/MMLCore/ocrutil.pas"/>
|
||||
<Caret Line="25" Column="12" TopLine="12"/>
|
||||
</Position9>
|
||||
<Position10>
|
||||
<Filename Value="../../Units/MMLCore/ocrutil.pas"/>
|
||||
<Caret Line="26" Column="12" TopLine="12"/>
|
||||
</Position10>
|
||||
<Position11>
|
||||
<Filename Value="../../Units/MMLCore/ocrutil.pas"/>
|
||||
<Caret Line="20" Column="13" TopLine="12"/>
|
||||
</Position11>
|
||||
<Position12>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="656" Column="23" TopLine="625"/>
|
||||
</Position12>
|
||||
<Position13>
|
||||
<Filename Value="../../Units/MMLCore/fontloader.pas"/>
|
||||
<Caret Line="63" Column="34" TopLine="37"/>
|
||||
</Position13>
|
||||
<Position14>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="31" Column="54" TopLine="23"/>
|
||||
<Caret Line="710" Column="61" TopLine="692"/>
|
||||
</Position14>
|
||||
<Position15>
|
||||
<Filename Value="../../Units/MMLCore/ocrutil.pas"/>
|
||||
<Caret Line="85" Column="37" TopLine="69"/>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="55" Column="42" TopLine="37"/>
|
||||
</Position15>
|
||||
<Position16>
|
||||
<Filename Value="../../Units/MMLCore/ocrutil.pas"/>
|
||||
<Caret Line="25" Column="12" TopLine="12"/>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="714" Column="22" TopLine="692"/>
|
||||
</Position16>
|
||||
<Position17>
|
||||
<Filename Value="../../Units/MMLCore/ocrutil.pas"/>
|
||||
<Caret Line="26" Column="12" TopLine="12"/>
|
||||
<Filename Value="../../Units/MMLCore/fontloader.pas"/>
|
||||
<Caret Line="55" Column="29" TopLine="37"/>
|
||||
</Position17>
|
||||
<Position18>
|
||||
<Filename Value="../../Units/MMLCore/ocrutil.pas"/>
|
||||
<Caret Line="20" Column="13" TopLine="12"/>
|
||||
<Filename Value="../../Units/MMLCore/fontloader.pas"/>
|
||||
<Caret Line="79" Column="10" TopLine="61"/>
|
||||
</Position18>
|
||||
<Position19>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="656" Column="23" TopLine="625"/>
|
||||
<Caret Line="729" Column="26" TopLine="702"/>
|
||||
</Position19>
|
||||
<Position20>
|
||||
<Filename Value="../../Units/MMLCore/fontloader.pas"/>
|
||||
<Caret Line="63" Column="34" TopLine="37"/>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="712" Column="8" TopLine="703"/>
|
||||
</Position20>
|
||||
<Position21>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="710" Column="61" TopLine="692"/>
|
||||
<Caret Line="721" Column="23" TopLine="703"/>
|
||||
</Position21>
|
||||
<Position22>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="55" Column="42" TopLine="37"/>
|
||||
<Caret Line="751" Column="10" TopLine="720"/>
|
||||
</Position22>
|
||||
<Position23>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="714" Column="22" TopLine="692"/>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="233" Column="29" TopLine="438"/>
|
||||
</Position23>
|
||||
<Position24>
|
||||
<Filename Value="../../Units/MMLCore/fontloader.pas"/>
|
||||
<Caret Line="55" Column="29" TopLine="37"/>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="299" Column="27" TopLine="249"/>
|
||||
</Position24>
|
||||
<Position25>
|
||||
<Filename Value="../../Units/MMLCore/fontloader.pas"/>
|
||||
<Caret Line="79" Column="10" TopLine="61"/>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="294" Column="30" TopLine="282"/>
|
||||
</Position25>
|
||||
<Position26>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="729" Column="26" TopLine="702"/>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="317" Column="30" TopLine="302"/>
|
||||
</Position26>
|
||||
<Position27>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="712" Column="8" TopLine="703"/>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="249" Column="58" TopLine="230"/>
|
||||
</Position27>
|
||||
<Position28>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="721" Column="23" TopLine="703"/>
|
||||
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
|
||||
<Caret Line="354" Column="12" TopLine="331"/>
|
||||
</Position28>
|
||||
<Position29>
|
||||
<Filename Value="../../Units/MMLCore/ocr.pas"/>
|
||||
<Caret Line="751" Column="10" TopLine="720"/>
|
||||
<Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/>
|
||||
<Caret Line="14" Column="58" TopLine="1"/>
|
||||
</Position29>
|
||||
<Position30>
|
||||
<Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/>
|
||||
<Caret Line="24" Column="102" TopLine="12"/>
|
||||
</Position30>
|
||||
</JumpHistory>
|
||||
</ProjectOptions>
|
||||
<CompilerOptions>
|
||||
|
@ -26,14 +26,44 @@ begin;
|
||||
CurrThread.Client.IOManager.SetDesktop;
|
||||
end;
|
||||
|
||||
procedure SetTargetArray(P: Integer; w, h: integer);
|
||||
function SetTargetArray(P: Integer; w, h: integer): integer;
|
||||
begin
|
||||
CurrThread.Client.IOManager.SetTarget(PRGB32(P), classes.point(w,h));
|
||||
result:= CurrThread.Client.IOManager.SetTarget(PRGB32(P), classes.point(w,h));
|
||||
end;
|
||||
|
||||
procedure SetTargetBitmap(bitmap: Integer);
|
||||
function SetTargetBitmap(bitmap: Integer): integer;
|
||||
begin;
|
||||
CurrThread.Client.IOManager.SetTarget(CurrThread.Client.MBitmaps[Bitmap]);
|
||||
result:= CurrThread.Client.IOManager.SetTarget(CurrThread.Client.MBitmaps[Bitmap]);
|
||||
end;
|
||||
|
||||
function SetEIOSTarget(name: string; args: Variant): integer;
|
||||
begin
|
||||
result:= CurrThread.Client.IOManager.SetTarget(name, @args);
|
||||
end;
|
||||
|
||||
procedure SetImageTarget(idx: integer);
|
||||
begin
|
||||
CurrThread.Client.IOManager.SetImageTarget(idx);
|
||||
end;
|
||||
|
||||
procedure SetKeyMouseTarget(idx: integer);
|
||||
begin
|
||||
CurrThread.Client.IOManager.SetKeyMouseTarget(idx);
|
||||
end;
|
||||
|
||||
function GetImageTarget: integer;
|
||||
begin
|
||||
CurrThread.Client.IOManager.GetImageTarget(result);
|
||||
end;
|
||||
|
||||
function GetKeyMouseTarget: integer;
|
||||
begin
|
||||
CurrThread.Client.IOManager.GetKeyMouseTarget(result);
|
||||
end;
|
||||
|
||||
procedure FreeTarget(idx: integer);
|
||||
begin
|
||||
CurrThread.Client.IOManager.FreeTarget(idx);
|
||||
end;
|
||||
|
||||
procedure GetClientDimensions(out w, h: integer);
|
||||
|
@ -63,9 +63,15 @@ SetCurrSection('Window');
|
||||
AddFunction(@Freeze, 'function Freeze: boolean;');
|
||||
AddFunction(@Unfreeze, 'function Unfreeze: boolean;');
|
||||
AddFunction(@GetClientDimensions, 'procedure GetClientDimensions(var w, h:integer);');
|
||||
AddFunction(@SetTargetBitmap,'procedure SetTargetBitmap(Bitmap : integer);');
|
||||
AddFunction(@SetTargetBitmap,'function SetTargetBitmap(Bitmap : integer): integer;');
|
||||
AddFunction(@SetTargetArray, 'function SetTargetArray(P: Integer; w, h: integer): integer;');
|
||||
AddFunction(@SetEIOSTarget, 'function SetEIOSTarget(name: string; initargs: Variant): integer;');
|
||||
AddFunction(@SetImageTarget,'procedure SetImageTarget(idx: integer);');
|
||||
AddFunction(@SetKeyMouseTarget,'procedure SetKeyMouseTarget(idx: integer);');
|
||||
AddFunction(@GetImageTarget,'function GetImageTarget: integer;');
|
||||
AddFunction(@GetKeyMouseTarget,'function GetKeyMouseTarget: integer;');
|
||||
AddFunction(@FreeTarget,'procedure FreeTarget(idx: integer);');
|
||||
AddFunction(@SetDesktopAsClient,'procedure SetDesktopAsClient');
|
||||
AddFunction(@SetTargetArray, 'procedure SetTargetArray(P: Integer; w, h: integer);');
|
||||
AddFunction(@ActivateClient, 'procedure ActivateClient;');
|
||||
AddFunction(@IsTargetValid, 'function IsTargetValid: boolean;');
|
||||
|
||||
|
@ -223,21 +223,33 @@ interface
|
||||
procedure SendText(text: string);
|
||||
function isKeyDown(key: Word): Boolean;
|
||||
|
||||
function GetImageTarget: TTarget;
|
||||
function GetImageTarget: TTarget; overload;
|
||||
function GetKeyMouseTarget: TTarget; overload;
|
||||
|
||||
procedure GetImageTarget(var idx: integer); overload;
|
||||
procedure GetKeyMouseTarget(var idx: integer); overload;
|
||||
procedure SetImageTarget(idx: integer);
|
||||
procedure SetKeyMouseTarget(idx: integer);
|
||||
procedure FreeTarget(idx: integer);
|
||||
|
||||
protected
|
||||
function SetImageTarget(target: TTarget): integer;
|
||||
function SetKeyMouseTarget(target: TTarget): integer;
|
||||
function SetBothTargets(target: TTarget): integer;
|
||||
procedure NativeInit; virtual; abstract;
|
||||
procedure NativeFree; virtual; abstract;
|
||||
|
||||
private
|
||||
keymouse: TTarget;
|
||||
image: TTarget;
|
||||
frozen: TTarget;
|
||||
freezebuffer: prgb32;
|
||||
bothsame: boolean;
|
||||
|
||||
procedure SetImageTarget(target: TTarget);
|
||||
idxarr: array of TTarget;
|
||||
|
||||
procedure SetKeyMouseTarget(target: TTarget);
|
||||
procedure SetBothTargets(target: TTarget);
|
||||
procedure NativeInit; virtual; abstract;
|
||||
procedure NativeFree; virtual; abstract;
|
||||
function GetTargetIdx(target: TTarget): integer;
|
||||
function GetIdxTarget(idx: integer): TTarget;
|
||||
end;
|
||||
|
||||
implementation
|
||||
@ -253,16 +265,13 @@ implementation
|
||||
constructor TIOManager_Abstract.Create(plugin_dir: string);
|
||||
begin
|
||||
inherited Create;
|
||||
SetLength(idxarr,0);
|
||||
eios_controller.AddPath(plugin_dir);
|
||||
keymouse:= nil;
|
||||
image:= nil;
|
||||
frozen:= nil;
|
||||
NativeInit;
|
||||
SetDesktop;
|
||||
{
|
||||
self.create;
|
||||
eios_controller.AddAndLoadPath(plugin_dir);
|
||||
}
|
||||
end;
|
||||
|
||||
constructor TIOManager_Abstract.Create;
|
||||
@ -276,22 +285,61 @@ begin
|
||||
end;
|
||||
|
||||
destructor TIOManager_Abstract.Destroy;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
if bothsame then keymouse.Destroy() else
|
||||
begin
|
||||
keymouse.Free();
|
||||
image.Free();
|
||||
end;
|
||||
if IsFrozen then frozen.Destroy();
|
||||
for i:= high(idxarr) downto 0 do
|
||||
idxarr[i].Free;
|
||||
end;
|
||||
|
||||
procedure TIOManager_Abstract.SetImageTarget(target: TTarget);
|
||||
procedure TIOManager_Abstract.FreeTarget(idx: integer);
|
||||
begin
|
||||
if idx > high(idxarr) then
|
||||
raise Exception.Create('Invalid target index');
|
||||
if idxarr[idx] = nil then
|
||||
raise Exception.Create('Double free of target');
|
||||
idxarr[idx].Free;
|
||||
idxarr[idx]:= nil;
|
||||
end;
|
||||
|
||||
function TIOManager_Abstract.GetTargetIdx(target: TTarget): integer;
|
||||
var
|
||||
i: integer;
|
||||
begin
|
||||
result:= -1;
|
||||
for i:= 0 to high(idxarr) do
|
||||
begin
|
||||
if idxarr[i] = target then
|
||||
begin
|
||||
result:= i;
|
||||
exit;
|
||||
end;
|
||||
if (idxarr[i] = nil) and (result = -1) then
|
||||
result:= i;
|
||||
end;
|
||||
if result = -1 then
|
||||
begin
|
||||
SetLength(idxarr,Length(idxarr) + 1);
|
||||
result:= high(idxarr);
|
||||
end;
|
||||
idxarr[result]:= target;
|
||||
end;
|
||||
|
||||
function TIOManager_Abstract.GetIdxTarget(idx: integer): TTarget;
|
||||
begin
|
||||
if idx > high(idxarr) then
|
||||
raise Exception.Create('Invalid target index');
|
||||
if idxarr[idx] = nil then
|
||||
raise Exception.Create('No target with specified index');
|
||||
result:= idxarr[idx];
|
||||
end;
|
||||
|
||||
function TIOManager_Abstract.SetImageTarget(target: TTarget): integer;
|
||||
begin
|
||||
if IsFrozen then
|
||||
raise Exception.Create('You cannot set a target when Frozen');
|
||||
if not(bothsame) then image.Free();
|
||||
result:= GetTargetIdx(target);
|
||||
image:= target;
|
||||
bothsame:= false;
|
||||
end;
|
||||
|
||||
function TIOManager_Abstract.GetImageTarget: TTarget;
|
||||
@ -299,24 +347,24 @@ begin
|
||||
result := image;
|
||||
end;
|
||||
|
||||
procedure TIOManager_Abstract.SetKeyMouseTarget(target: TTarget);
|
||||
function TIOManager_Abstract.SetKeyMouseTarget(target: TTarget): integer;
|
||||
begin
|
||||
if not(bothsame) then keymouse.Free();
|
||||
result:= GetTargetIdx(target);
|
||||
keymouse:= target;
|
||||
bothsame:= false;
|
||||
end;
|
||||
procedure TIOManager_Abstract.SetBothTargets(target: TTarget);
|
||||
|
||||
function TIOManager_Abstract.GetKeyMouseTarget: TTarget;
|
||||
begin
|
||||
result := keymouse;
|
||||
end;
|
||||
|
||||
function TIOManager_Abstract.SetBothTargets(target: TTarget): integer;
|
||||
begin
|
||||
if IsFrozen then
|
||||
raise Exception.Create('You cannot set a target when Frozen');
|
||||
if bothsame then image.Destroy() else
|
||||
begin
|
||||
image.Free();
|
||||
keymouse.Free();
|
||||
end;
|
||||
result:= GetTargetIdx(target);
|
||||
image:= target;
|
||||
keymouse:= target;
|
||||
bothsame:= true;
|
||||
end;
|
||||
|
||||
procedure TIOManager_Abstract.SetFrozen(makefrozen: boolean);
|
||||
@ -326,9 +374,6 @@ var
|
||||
begin
|
||||
if (makefrozen) and (IsFrozen) then
|
||||
raise Exception.Create('The window is already frozen.');
|
||||
//BenLand100 edit: I say we leave this exception out. POLS
|
||||
//if not(isfrozen) and (frozen = nil) then
|
||||
// raise Exception.Create('The window is not frozen.');
|
||||
if makefrozen then //No need for the Frozen = nil check, already done above with the exception.
|
||||
begin
|
||||
frozen:= image;
|
||||
@ -364,11 +409,11 @@ end;
|
||||
|
||||
function TIOManager_Abstract.SetTarget(ArrPtr: PRGB32; Size: TPoint): integer;
|
||||
begin
|
||||
SetImageTarget(TRawTarget.Create(ArrPtr,Size.X,Size.Y));
|
||||
result:= SetImageTarget(TRawTarget.Create(ArrPtr,Size.X,Size.Y));
|
||||
end;
|
||||
function TIOManager_Abstract.SetTarget(bmp : TMufasaBitmap) : integer;
|
||||
begin
|
||||
SetImageTarget(TRawTarget.Create(bmp.FData,bmp.width,bmp.height));
|
||||
result:= SetImageTarget(TRawTarget.Create(bmp.FData,bmp.width,bmp.height));
|
||||
end;
|
||||
|
||||
function TIOManager_Abstract.SetTarget(name: string; initargs: pointer): integer;
|
||||
@ -378,7 +423,29 @@ begin
|
||||
if not eios_controller.ClientExists(name) then
|
||||
raise Exception.Create('EIOS Client by specified name does not exist');
|
||||
client:= eios_controller.GetClient(name);
|
||||
SetBothTargets(TEIOS_Target.Create(client, initargs));
|
||||
result:= SetBothTargets(TEIOS_Target.Create(client, initargs));
|
||||
end;
|
||||
|
||||
procedure TIOManager_Abstract.SetImageTarget(idx: integer);
|
||||
begin
|
||||
image:= GetIdxTarget(idx);
|
||||
end;
|
||||
|
||||
procedure TIOManager_Abstract.SetKeyMouseTarget(idx: integer);
|
||||
begin
|
||||
keymouse:= GetIdxTarget(idx);
|
||||
end;
|
||||
|
||||
procedure TIOManager_Abstract.GetImageTarget(var idx: integer);
|
||||
begin
|
||||
if IsFrozen then
|
||||
raise Exception.Create('Cannot get image target while frozen');
|
||||
idx:= GetTargetIdx(image);
|
||||
end;
|
||||
|
||||
procedure TIOManager_Abstract.GetKeyMouseTarget(var idx: integer);
|
||||
begin
|
||||
idx:= GetTargetIdx(keymouse);
|
||||
end;
|
||||
|
||||
function TIOManager_Abstract.TargetValid: Boolean;
|
||||
|
@ -58,7 +58,7 @@ interface
|
||||
procedure ReleaseKey(key: integer); override;
|
||||
function IsKeyHeld(key: integer): boolean; override;
|
||||
|
||||
function GetNativeWindow: x.TWindow;
|
||||
function GetNativeWindow: TNativeWindow;
|
||||
private
|
||||
display: PDisplay;
|
||||
screennum: integer;
|
||||
@ -134,7 +134,7 @@ implementation
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TWindow.GetNativeWindow: x.TWindow;
|
||||
function TWindow.GetNativeWindow: TNativeWindow;
|
||||
begin
|
||||
result := self.window;
|
||||
end;
|
||||
|
@ -59,7 +59,7 @@ interface
|
||||
procedure ReleaseKey(key: integer); override;
|
||||
function IsKeyHeld(key: integer): boolean; override;
|
||||
|
||||
function GetNativeWindow: Hwnd;
|
||||
function GetNativeWindow: TNativeWindow;
|
||||
private
|
||||
handle: Hwnd;
|
||||
dc: HDC;
|
||||
@ -74,7 +74,7 @@ interface
|
||||
public
|
||||
constructor Create;
|
||||
constructor Create(plugin_dir: string);
|
||||
function SetTarget(target: Hwnd): integer; overload;
|
||||
function SetTarget(target: TNativeWindow): integer; overload;
|
||||
procedure SetDesktop; override;
|
||||
protected
|
||||
DesktopHWND : Hwnd;
|
||||
@ -162,7 +162,7 @@ implementation
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
function TWindow.GetNativeWindow: Hwnd;
|
||||
function TWindow.GetNativeWindow: TNativeWindow;
|
||||
begin
|
||||
result := handle;
|
||||
end;
|
||||
@ -345,7 +345,7 @@ implementation
|
||||
SetBothTargets(TWindow.Create(DesktopHWND));
|
||||
end;
|
||||
|
||||
function TIOManager.SetTarget(target: Hwnd): integer;
|
||||
function TIOManager.SetTarget(target: TNativeWindow): integer;
|
||||
begin
|
||||
SetBothTargets(TWindow.Create(target));
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user