1
0
mirror of https://github.com/moparisthebest/Simba synced 2025-01-31 07:10:28 -05:00

Incorperated the Majority of the framework, but OS specific key and mouse commands still need native implementation, as well as some possible method restructuring related to that in the TTarget class

git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@432 3f818213-9676-44b0-a9b4-5e4c4e03d09d
This commit is contained in:
BenLand100 2010-01-20 18:28:38 +00:00
parent d6474cda3d
commit 548861f380
17 changed files with 314 additions and 277 deletions

View File

@ -31,3 +31,5 @@ clean:
$(binary): $(binary):
$(CC) $(flags) $(units) $(lazarusunits) -o$(binary) $(defines) project1.lpr $(CC) $(flags) $(units) $(lazarusunits) -o$(binary) $(defines) project1.lpr
-Fu/usr/local/share/lazarus/ideintf/units/x86_64-linux/

View File

@ -10,7 +10,7 @@
<TargetFileExt Value=""/> <TargetFileExt Value=""/>
<Title Value="Simba"/> <Title Value="Simba"/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
<ActiveEditorIndexAtStart Value="0"/> <ActiveEditorIndexAtStart Value="1"/>
</General> </General>
<VersionInfo> <VersionInfo>
<ProjectVersion Value=""/> <ProjectVersion Value=""/>
@ -36,7 +36,7 @@
<PackageName Value="LCL"/> <PackageName Value="LCL"/>
</Item2> </Item2>
</RequiredPackages> </RequiredPackages>
<Units Count="282"> <Units Count="285">
<Unit0> <Unit0>
<Filename Value="project1.lpr"/> <Filename Value="project1.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
@ -137,8 +137,9 @@
<HasResources Value="True"/> <HasResources Value="True"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="TestUnit"/> <UnitName Value="TestUnit"/>
<CursorPos X="11" Y="42"/> <ComponentState Value="1"/>
<TopLine Value="27"/> <CursorPos X="64" Y="1539"/>
<TopLine Value="1532"/>
<EditorIndex Value="0"/> <EditorIndex Value="0"/>
<UsageCount Value="202"/> <UsageCount Value="202"/>
<Loaded Value="True"/> <Loaded Value="True"/>
@ -187,9 +188,11 @@
<Filename Value="../../Units/MMLCore/client.pas"/> <Filename Value="../../Units/MMLCore/client.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="Client"/> <UnitName Value="Client"/>
<CursorPos X="35" Y="64"/> <CursorPos X="47" Y="33"/>
<TopLine Value="46"/> <TopLine Value="16"/>
<EditorIndex Value="3"/>
<UsageCount Value="201"/> <UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit20> </Unit20>
<Unit21> <Unit21>
<Filename Value="../../Units/MMLCore/mufasatypes.pas"/> <Filename Value="../../Units/MMLCore/mufasatypes.pas"/>
@ -211,9 +214,11 @@
<Filename Value="../../Units/MMLCore/window.pas"/> <Filename Value="../../Units/MMLCore/window.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="Window"/> <UnitName Value="Window"/>
<CursorPos X="71" Y="29"/> <CursorPos X="31" Y="59"/>
<TopLine Value="363"/> <TopLine Value="42"/>
<EditorIndex Value="8"/>
<UsageCount Value="201"/> <UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit23> </Unit23>
<Unit24> <Unit24>
<Filename Value="../../../cogat/Units/CogatUnits/comptypes.pas"/> <Filename Value="../../../cogat/Units/CogatUnits/comptypes.pas"/>
@ -232,17 +237,19 @@
<Unit26> <Unit26>
<Filename Value="../../Units/MMLCore/input.pas"/> <Filename Value="../../Units/MMLCore/input.pas"/>
<UnitName Value="Input"/> <UnitName Value="Input"/>
<CursorPos X="17" Y="286"/> <CursorPos X="1" Y="1"/>
<TopLine Value="266"/> <TopLine Value="1"/>
<UsageCount Value="85"/> <EditorIndex Value="4"/>
<UsageCount Value="88"/>
<Loaded Value="True"/>
</Unit26> </Unit26>
<Unit27> <Unit27>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="finder"/> <UnitName Value="finder"/>
<CursorPos X="9" Y="90"/> <CursorPos X="10" Y="2000"/>
<TopLine Value="86"/> <TopLine Value="1972"/>
<EditorIndex Value="6"/> <EditorIndex Value="15"/>
<UsageCount Value="201"/> <UsageCount Value="201"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit27> </Unit27>
@ -344,9 +351,9 @@
<Filename Value="../../Units/MMLCore/bitmaps.pas"/> <Filename Value="../../Units/MMLCore/bitmaps.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="bitmaps"/> <UnitName Value="bitmaps"/>
<CursorPos X="50" Y="119"/> <CursorPos X="22" Y="681"/>
<TopLine Value="113"/> <TopLine Value="671"/>
<EditorIndex Value="5"/> <EditorIndex Value="14"/>
<UsageCount Value="200"/> <UsageCount Value="200"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit42> </Unit42>
@ -359,10 +366,10 @@
</Unit43> </Unit43>
<Unit44> <Unit44>
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/colour.inc"/> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/colour.inc"/>
<CursorPos X="47" Y="47"/> <CursorPos X="1" Y="1"/>
<TopLine Value="47"/> <TopLine Value="1"/>
<EditorIndex Value="4"/> <EditorIndex Value="13"/>
<UsageCount Value="30"/> <UsageCount Value="34"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit44> </Unit44>
<Unit45> <Unit45>
@ -482,8 +489,8 @@
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="colour_conv"/> <UnitName Value="colour_conv"/>
<CursorPos X="1" Y="332"/> <CursorPos X="1" Y="332"/>
<TopLine Value="302"/> <TopLine Value="290"/>
<EditorIndex Value="7"/> <EditorIndex Value="16"/>
<UsageCount Value="201"/> <UsageCount Value="201"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit62> </Unit62>
@ -495,10 +502,10 @@
</Unit63> </Unit63>
<Unit64> <Unit64>
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/other.inc"/> <Filename Value="../../Units/MMLAddon/PSInc/Wrappers/other.inc"/>
<CursorPos X="53" Y="13"/> <CursorPos X="1" Y="1"/>
<TopLine Value="75"/> <TopLine Value="1"/>
<EditorIndex Value="2"/> <EditorIndex Value="11"/>
<UsageCount Value="41"/> <UsageCount Value="45"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit64> </Unit64>
<Unit65> <Unit65>
@ -599,9 +606,11 @@
<Filename Value="../../Units/MMLAddon/colourpicker.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="colourpicker"/> <UnitName Value="colourpicker"/>
<CursorPos X="22" Y="228"/> <CursorPos X="22" Y="229"/>
<TopLine Value="1"/> <TopLine Value="217"/>
<EditorIndex Value="1"/>
<UsageCount Value="201"/> <UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit79> </Unit79>
<Unit80> <Unit80>
<Filename Value="../../../cogat/Units/CogatUnits/compdragger.pas"/> <Filename Value="../../../cogat/Units/CogatUnits/compdragger.pas"/>
@ -624,9 +633,11 @@
<Filename Value="../../Units/MMLAddon/windowselector.pas"/> <Filename Value="../../Units/MMLAddon/windowselector.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="windowselector"/> <UnitName Value="windowselector"/>
<CursorPos X="54" Y="139"/> <CursorPos X="39" Y="99"/>
<TopLine Value="116"/> <TopLine Value="82"/>
<EditorIndex Value="2"/>
<UsageCount Value="201"/> <UsageCount Value="201"/>
<Loaded Value="True"/>
</Unit82> </Unit82>
<Unit83> <Unit83>
<Filename Value="../../../usr/lib64/fpc/2.2.4/source/rtl/objpas/classes/classesh.inc"/> <Filename Value="../../../usr/lib64/fpc/2.2.4/source/rtl/objpas/classes/classesh.inc"/>
@ -709,9 +720,11 @@
<Filename Value="../../Units/MMLCore/ocr.pas"/> <Filename Value="../../Units/MMLCore/ocr.pas"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="ocr"/> <UnitName Value="ocr"/>
<CursorPos X="73" Y="142"/> <CursorPos X="51" Y="474"/>
<TopLine Value="142"/> <TopLine Value="457"/>
<EditorIndex Value="6"/>
<UsageCount Value="200"/> <UsageCount Value="200"/>
<Loaded Value="True"/>
</Unit94> </Unit94>
<Unit95> <Unit95>
<Filename Value="../../Units/PascalScript/uPSR_extctrls.pas"/> <Filename Value="../../Units/PascalScript/uPSR_extctrls.pas"/>
@ -1194,7 +1207,6 @@
<ComponentName Value="ColourHistoryForm"/> <ComponentName Value="ColourHistoryForm"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="colourhistory"/> <UnitName Value="colourhistory"/>
<ComponentState Value="1"/>
<CursorPos X="43" Y="16"/> <CursorPos X="43" Y="16"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="200"/> <UsageCount Value="200"/>
@ -1586,10 +1598,9 @@
<ComponentName Value="FunctionListFrame"/> <ComponentName Value="FunctionListFrame"/>
<ResourceBaseClass Value="Frame"/> <ResourceBaseClass Value="Frame"/>
<UnitName Value="framefunctionlist"/> <UnitName Value="framefunctionlist"/>
<ComponentState Value="1"/>
<CursorPos X="26" Y="295"/> <CursorPos X="26" Y="295"/>
<TopLine Value="7"/> <TopLine Value="7"/>
<UsageCount Value="141"/> <UsageCount Value="147"/>
</Unit223> </Unit223>
<Unit224> <Unit224>
<Filename Value="../../../usr/local/share/lazarus/lcl/comctrls.pp"/> <Filename Value="../../../usr/local/share/lazarus/lcl/comctrls.pp"/>
@ -1644,7 +1655,7 @@
<UnitName Value="simpleanalyzer"/> <UnitName Value="simpleanalyzer"/>
<CursorPos X="52" Y="104"/> <CursorPos X="52" Y="104"/>
<TopLine Value="193"/> <TopLine Value="193"/>
<UsageCount Value="128"/> <UsageCount Value="134"/>
</Unit231> </Unit231>
<Unit232> <Unit232>
<Filename Value="../../Units/Misc/mPasLex.pas"/> <Filename Value="../../Units/Misc/mPasLex.pas"/>
@ -1704,8 +1715,8 @@
<Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/> <Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/>
<CursorPos X="30" Y="109"/> <CursorPos X="30" Y="109"/>
<TopLine Value="98"/> <TopLine Value="98"/>
<EditorIndex Value="3"/> <EditorIndex Value="12"/>
<UsageCount Value="19"/> <UsageCount Value="23"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit240> </Unit240>
<Unit241> <Unit241>
@ -1721,7 +1732,7 @@
<UnitName Value="updater"/> <UnitName Value="updater"/>
<CursorPos X="38" Y="211"/> <CursorPos X="38" Y="211"/>
<TopLine Value="65"/> <TopLine Value="65"/>
<UsageCount Value="101"/> <UsageCount Value="107"/>
</Unit242> </Unit242>
<Unit243> <Unit243>
<Filename Value="updateform.pas"/> <Filename Value="updateform.pas"/>
@ -1731,8 +1742,8 @@
<UnitName Value="updateform"/> <UnitName Value="updateform"/>
<CursorPos X="111" Y="102"/> <CursorPos X="111" Y="102"/>
<TopLine Value="81"/> <TopLine Value="81"/>
<EditorIndex Value="1"/> <EditorIndex Value="10"/>
<UsageCount Value="96"/> <UsageCount Value="102"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit243> </Unit243>
<Unit244> <Unit244>
@ -1854,7 +1865,7 @@
<UnitName Value="simbasettings"/> <UnitName Value="simbasettings"/>
<CursorPos X="26" Y="9"/> <CursorPos X="26" Y="9"/>
<TopLine Value="11"/> <TopLine Value="11"/>
<UsageCount Value="59"/> <UsageCount Value="65"/>
</Unit261> </Unit261>
<Unit262> <Unit262>
<Filename Value="../../Units/MMLAddon/settings.pas"/> <Filename Value="../../Units/MMLAddon/settings.pas"/>
@ -1897,10 +1908,9 @@
<ComponentName Value="FormReportBug"/> <ComponentName Value="FormReportBug"/>
<ResourceBaseClass Value="Form"/> <ResourceBaseClass Value="Form"/>
<UnitName Value="reportbug"/> <UnitName Value="reportbug"/>
<ComponentState Value="1"/>
<CursorPos X="53" Y="23"/> <CursorPos X="53" Y="23"/>
<TopLine Value="21"/> <TopLine Value="21"/>
<UsageCount Value="42"/> <UsageCount Value="48"/>
</Unit267> </Unit267>
<Unit268> <Unit268>
<Filename Value="../../Units/Synapse/synsock.pas"/> <Filename Value="../../Units/Synapse/synsock.pas"/>
@ -1957,7 +1967,7 @@
<UnitName Value="newinternets"/> <UnitName Value="newinternets"/>
<CursorPos X="80" Y="2"/> <CursorPos X="80" Y="2"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="38"/> <UsageCount Value="44"/>
</Unit275> </Unit275>
<Unit276> <Unit276>
<Filename Value="reportbug.lrs"/> <Filename Value="reportbug.lrs"/>
@ -2000,127 +2010,154 @@
<TopLine Value="511"/> <TopLine Value="511"/>
<UsageCount Value="15"/> <UsageCount Value="15"/>
</Unit281> </Unit281>
<Unit282>
<Filename Value="../../Units/MMLCore/iomanager.pas"/>
<UnitName Value="IOManager"/>
<CursorPos X="84" Y="329"/>
<TopLine Value="318"/>
<EditorIndex Value="5"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit282>
<Unit283>
<Filename Value="../../Units/MMLCore/os_linux.pas"/>
<UnitName Value="os_linux"/>
<CursorPos X="1" Y="141"/>
<TopLine Value="124"/>
<EditorIndex Value="7"/>
<UsageCount Value="14"/>
<Loaded Value="True"/>
</Unit283>
<Unit284>
<Filename Value="../../../../custom-installs/freepascal/rtl/unix/mouse.pp"/>
<UnitName Value="Mouse"/>
<CursorPos X="21" Y="30"/>
<TopLine Value="12"/>
<EditorIndex Value="9"/>
<UsageCount Value="12"/>
<Loaded Value="True"/>
</Unit284>
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="205" Column="33" TopLine="28"/> <Caret Line="1275" Column="21" TopLine="1258"/>
</Position1> </Position1>
<Position2> <Position2>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="196" Column="74" TopLine="45"/> <Caret Line="579" Column="45" TopLine="573"/>
</Position2> </Position2>
<Position3> <Position3>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="195" Column="74" TopLine="170"/> <Caret Line="1277" Column="11" TopLine="1259"/>
</Position3> </Position3>
<Position4> <Position4>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="231" Column="15" TopLine="218"/> <Caret Line="290" Column="11" TopLine="273"/>
</Position4> </Position4>
<Position5> <Position5>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="336" Column="24" TopLine="318"/> <Caret Line="579" Column="62" TopLine="562"/>
</Position5> </Position5>
<Position6> <Position6>
<Filename Value="testunit.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="474" Column="16" TopLine="459"/> <Caret Line="228" Column="22" TopLine="1"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="testunit.pas"/> <Filename Value="../../Units/MMLAddon/windowselector.pas"/>
<Caret Line="486" Column="22" TopLine="459"/> <Caret Line="139" Column="54" TopLine="116"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="61" Column="25" TopLine="61"/> <Caret Line="32" Column="13" TopLine="23"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="289" Column="82" TopLine="270"/> <Caret Line="49" Column="46" TopLine="32"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="114" Column="1" TopLine="103"/> <Caret Line="59" Column="26" TopLine="42"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="110" Column="27" TopLine="96"/> <Caret Line="49" Column="38" TopLine="32"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="testunit.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="487" Column="95" TopLine="275"/> <Caret Line="59" Column="26" TopLine="42"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="testunit.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="1439" Column="38" TopLine="1407"/> <Caret Line="83" Column="1" TopLine="66"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="testunit.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="1452" Column="33" TopLine="1439"/> <Caret Line="85" Column="44" TopLine="68"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="115" Column="17" TopLine="80"/> <Caret Line="109" Column="24" TopLine="92"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="../../Units/MMLCore/colour_conv.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="48" Column="1" TopLine="4"/> <Caret Line="283" Column="15" TopLine="129"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="../../Units/MMLCore/colour_conv.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="351" Column="52" TopLine="346"/> <Caret Line="115" Column="18" TopLine="97"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="../../Units/MMLCore/colour_conv.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="374" Column="5" TopLine="345"/> <Caret Line="118" Column="35" TopLine="101"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="../../Units/MMLCore/colour_conv.pas"/> <Filename Value="../../Units/MMLAddon/windowselector.pas"/>
<Caret Line="364" Column="35" TopLine="345"/> <Caret Line="32" Column="39" TopLine="23"/>
</Position19> </Position19>
<Position20> <Position20>
<Filename Value="../../Units/MMLAddon/PSInc/psexportedmethods.inc"/> <Filename Value="../../Units/MMLAddon/windowselector.pas"/>
<Caret Line="119" Column="77" TopLine="80"/> <Caret Line="196" Column="25" TopLine="86"/>
</Position20> </Position20>
<Position21> <Position21>
<Filename Value="testunit.pas"/> <Filename Value="../../Units/MMLAddon/windowselector.pas"/>
<Caret Line="1449" Column="100" TopLine="1439"/> <Caret Line="143" Column="25" TopLine="115"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="1489" Column="3" TopLine="1487"/> <Caret Line="37" Column="60" TopLine="16"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="474" Column="10" TopLine="459"/> <Caret Line="576" Column="53" TopLine="562"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="434" Column="20" TopLine="391"/> <Caret Line="1273" Column="85" TopLine="1256"/>
</Position24> </Position24>
<Position25> <Position25>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="533" Column="40" TopLine="508"/> <Caret Line="309" Column="12" TopLine="298"/>
</Position25> </Position25>
<Position26> <Position26>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="568" Column="40" TopLine="1101"/> <Caret Line="1275" Column="46" TopLine="1257"/>
</Position26> </Position26>
<Position27> <Position27>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="58" Column="21" TopLine="38"/> <Caret Line="1548" Column="9" TopLine="1531"/>
</Position27> </Position27>
<Position28> <Position28>
<Filename Value="../../Units/MMLCore/bitmaps.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="128" Column="27" TopLine="111"/> <Caret Line="1304" Column="10" TopLine="1287"/>
</Position28> </Position28>
<Position29> <Position29>
<Filename Value="testunit.pas"/> <Filename Value="testunit.pas"/>
<Caret Line="468" Column="17" TopLine="418"/> <Caret Line="1548" Column="10" TopLine="1531"/>
</Position29> </Position29>
<Position30> <Position30>
<Filename Value="testunit.pas"/> <Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
<Caret Line="1017" Column="63" TopLine="1010"/> <Caret Line="229" Column="22" TopLine="206"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>

View File

@ -1,7 +1,7 @@
object Form1: TForm1 object Form1: TForm1
Left = 316 Left = 593
Height = 557 Height = 557
Top = 105 Top = 321
Width = 734 Width = 734
ActiveControl = ScriptPanel ActiveControl = ScriptPanel
Caption = 'THA FUKING SIMBA' Caption = 'THA FUKING SIMBA'
@ -202,7 +202,7 @@ object Form1: TForm1
object StatusBar: TStatusBar object StatusBar: TStatusBar
Left = 0 Left = 0
Height = 21 Height = 21
Top = 536 Top = 511
Width = 734 Width = 734
Panels = < Panels = <
item item
@ -220,7 +220,7 @@ object Form1: TForm1
object PanelMemo: TPanel object PanelMemo: TPanel
Left = 0 Left = 0
Height = 154 Height = 154
Top = 382 Top = 357
Width = 734 Width = 734
Align = alBottom Align = alBottom
ClientHeight = 154 ClientHeight = 154
@ -240,19 +240,19 @@ object Form1: TForm1
Cursor = crVSplit Cursor = crVSplit
Left = 0 Left = 0
Height = 5 Height = 5
Top = 377 Top = 352
Width = 734 Width = 734
Align = alBottom Align = alBottom
ResizeAnchor = akBottom ResizeAnchor = akBottom
end end
object ScriptPanel: TPanel object ScriptPanel: TPanel
Left = 0 Left = 0
Height = 353 Height = 328
Top = 24 Top = 24
Width = 734 Width = 734
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 353 ClientHeight = 328
ClientWidth = 734 ClientWidth = 734
DockSite = True DockSite = True
TabOrder = 4 TabOrder = 4
@ -260,7 +260,7 @@ object Form1: TForm1
OnDockOver = ScriptPanelDockOver OnDockOver = ScriptPanelDockOver
object PageControl1: TPageControl object PageControl1: TPageControl
Left = 155 Left = 155
Height = 318 Height = 293
Top = 0 Top = 0
Width = 579 Width = 579
Align = alClient Align = alClient
@ -279,7 +279,7 @@ object Form1: TForm1
object SearchPanel: TPanel object SearchPanel: TPanel
Left = 0 Left = 0
Height = 35 Height = 35
Top = 318 Top = 293
Width = 734 Width = 734
Align = alBottom Align = alBottom
BevelOuter = bvSpace BevelOuter = bvSpace
@ -409,21 +409,21 @@ object Form1: TForm1
end end
object SplitterFunctionList: TSplitter object SplitterFunctionList: TSplitter
Left = 150 Left = 150
Height = 318 Height = 293
Top = 0 Top = 0
Width = 5 Width = 5
OnCanResize = SplitterFunctionListCanResize OnCanResize = SplitterFunctionListCanResize
Visible = False Visible = False
end end
inline frmFunctionList: TFunctionListFrame inline frmFunctionList: TFunctionListFrame
Height = 318 Height = 293
Width = 150 Width = 150
ClientHeight = 318 ClientHeight = 293
ClientWidth = 150 ClientWidth = 150
OnEndDock = nil OnEndDock = nil
TabOrder = 3 TabOrder = 3
inherited FunctionList: TTreeView inherited FunctionList: TTreeView
Height = 269 Height = 244
Top = 22 Top = 22
Width = 150 Width = 150
DefaultItemHeight = 19 DefaultItemHeight = 19
@ -434,7 +434,7 @@ object Form1: TForm1
end end
inherited editSearchList: TEdit inherited editSearchList: TEdit
Height = 27 Height = 27
Top = 291 Top = 266
Width = 150 Width = 150
OnExit = editSearchListExit OnExit = editSearchListExit
OnKeyDown = editSearchListKeyDown OnKeyDown = editSearchListKeyDown

View File

@ -1,22 +1,22 @@
{ This is an automatically generated lazarus resource file } { This is an automatically generated lazarus resource file }
LazarusResources.Add('TForm1','FORMDATA',[ LazarusResources.Add('TForm1','FORMDATA',[
'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'<'#1#6'Height'#3'-'#2#3'Top'#2'i'#5'Width' 'TPF0'#6'TForm1'#5'Form1'#4'Left'#3'Q'#2#6'Height'#3'-'#2#3'Top'#3'A'#1#5'Wid'
+#3#222#2#13'ActiveControl'#7#11'ScriptPanel'#7'Caption'#6#16'THA FUKING SIMB' +'th'#3#222#2#13'ActiveControl'#7#11'ScriptPanel'#7'Caption'#6#16'THA FUKING '
+'A'#12'ClientHeight'#3#20#2#11'ClientWidth'#3#222#2#10'KeyPreview'#9#4'Menu' +'SIMBA'#12'ClientHeight'#3#20#2#11'ClientWidth'#3#222#2#10'KeyPreview'#9#4'M'
+#7#8'MainMenu'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#9'OnDe' +'enu'#7#8'MainMenu'#7'OnClose'#7#9'FormClose'#8'OnCreate'#7#10'FormCreate'#9
+'stroy'#7#11'FormDestroy'#10'OnShortCut'#7#13'FormShortCuts'#8'Position'#7#14 +'OnDestroy'#7#11'FormDestroy'#10'OnShortCut'#7#13'FormShortCuts'#8'Position'
+'poScreenCenter'#10'LCLVersion'#6#6'0.9.29'#7'Visible'#9#0#8'TToolBar'#8'Too' +#7#14'poScreenCenter'#10'LCLVersion'#6#6'0.9.29'#7'Visible'#9#0#8'TToolBar'#8
+'lBar1'#4'Left'#2#0#6'Height'#2#24#3'Top'#2#0#5'Width'#3#222#2#7'Caption'#6#8 +'ToolBar1'#4'Left'#2#0#6'Height'#2#24#3'Top'#2#0#5'Width'#3#222#2#7'Caption'
+'ToolBar1'#6'Images'#7#17'Mufasa_Image_List'#14'ParentShowHint'#8#8'ShowHint' +#6#8'ToolBar1'#6'Images'#7#17'Mufasa_Image_List'#14'ParentShowHint'#8#8'Show'
+#9#8'TabOrder'#2#0#0#11'TToolButton'#6'TB_Run'#4'Left'#3#168#0#4'Hint'#6#3'R' +'Hint'#9#8'TabOrder'#2#0#0#11'TToolButton'#6'TB_Run'#4'Left'#3#168#0#4'Hint'
+'un'#3'Top'#2#2#6'Action'#7#15'ActionRunScript'#10'ImageIndex'#2#6#0#0#11'TT' +#6#3'Run'#3'Top'#2#2#6'Action'#7#15'ActionRunScript'#10'ImageIndex'#2#6#0#0
+'oolButton'#8'TB_Pause'#4'Left'#3#191#0#4'Hint'#6#5'Pause'#3'Top'#2#2#6'Acti' +#11'TToolButton'#8'TB_Pause'#4'Left'#3#191#0#4'Hint'#6#5'Pause'#3'Top'#2#2#6
+'on'#7#17'ActionPauseScript'#7'Enabled'#8#10'ImageIndex'#2#5#0#0#11'TToolBut' +'Action'#7#17'ActionPauseScript'#7'Enabled'#8#10'ImageIndex'#2#5#0#0#11'TToo'
+'ton'#7'TB_Stop'#4'Left'#3#214#0#4'Hint'#6#4'Stop'#3'Top'#2#2#6'Action'#7#16 +'lButton'#7'TB_Stop'#4'Left'#3#214#0#4'Hint'#6#4'Stop'#3'Top'#2#2#6'Action'#7
+'ActionStopScript'#7'Enabled'#8#10'ImageIndex'#2#7#0#0#11'TToolButton'#11'To' +#16'ActionStopScript'#7'Enabled'#8#10'ImageIndex'#2#7#0#0#11'TToolButton'#11
+'olButton1'#4'Left'#3#237#0#3'Top'#2#2#5'Width'#2#3#7'Caption'#6#11'ToolButt' +'ToolButton1'#4'Left'#3#237#0#3'Top'#2#2#5'Width'#2#3#7'Caption'#6#11'ToolBu'
+'on1'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#9'TB_NewTab'#4'Left'#3 +'tton1'#5'Style'#7#10'tbsDivider'#0#0#11'TToolButton'#9'TB_NewTab'#4'Left'#3
+#240#0#4'Hint'#6#7'Add tab'#3'Top'#2#2#6'Action'#7#12'ActionNewTab'#0#0#11'T' +#240#0#4'Hint'#6#7'Add tab'#3'Top'#2#2#6'Action'#7#12'ActionNewTab'#0#0#11'T'
+'ToolButton'#11'TB_CloseTab'#4'Left'#3#7#1#4'Hint'#6#9'Close tab'#3'Top'#2#2 +'ToolButton'#11'TB_CloseTab'#4'Left'#3#7#1#4'Hint'#6#9'Close tab'#3'Top'#2#2
+#6'Action'#7#14'ActionCloseTab'#0#0#11'TToolButton'#11'ToolButton4'#4'Left'#3 +#6'Action'#7#14'ActionCloseTab'#0#0#11'TToolButton'#11'ToolButton4'#4'Left'#3
@ -53,27 +53,27 @@ LazarusResources.Add('TForm1','FORMDATA',[
+'T_Paste'#4'Left'#3#142#0#3'Top'#2#2#6'Action'#7#11'ActionPaste'#0#0#11'TToo' +'T_Paste'#4'Left'#3#142#0#3'Top'#2#2#6'Action'#7#11'ActionPaste'#0#0#11'TToo'
+'lButton'#11'ToolButton9'#4'Left'#3#165#0#3'Top'#2#2#5'Width'#2#3#7'Caption' +'lButton'#11'ToolButton9'#4'Left'#3#165#0#3'Top'#2#2#5'Width'#2#3#7'Caption'
+#6#11'ToolButton9'#5'Style'#7#10'tbsDivider'#0#0#0#10'TStatusBar'#9'StatusBa' +#6#11'ToolButton9'#5'Style'#7#10'tbsDivider'#0#0#0#10'TStatusBar'#9'StatusBa'
+'r'#4'Left'#2#0#6'Height'#2#21#3'Top'#3#24#2#5'Width'#3#222#2#6'Panels'#14#1 +'r'#4'Left'#2#0#6'Height'#2#21#3'Top'#3#255#1#5'Width'#3#222#2#6'Panels'#14#1
+#5'Width'#2'<'#0#1#4'Text'#6#8'Untitled'#5'Width'#3#150#0#0#1#5'Width'#2'2'#0 +#5'Width'#2'<'#0#1#4'Text'#6#8'Untitled'#5'Width'#3#150#0#0#1#5'Width'#2'2'#0
+#0#11'SimplePanel'#8#0#0#6'TPanel'#9'PanelMemo'#4'Left'#2#0#6'Height'#3#154#0 +#0#11'SimplePanel'#8#0#0#6'TPanel'#9'PanelMemo'#4'Left'#2#0#6'Height'#3#154#0
+#3'Top'#3'~'#1#5'Width'#3#222#2#5'Align'#7#8'alBottom'#12'ClientHeight'#3#154 +#3'Top'#3'e'#1#5'Width'#3#222#2#5'Align'#7#8'alBottom'#12'ClientHeight'#3#154
+#0#11'ClientWidth'#3#222#2#8'TabOrder'#2#2#0#5'TMemo'#5'Memo1'#4'Left'#2#1#6 +#0#11'ClientWidth'#3#222#2#8'TabOrder'#2#2#0#5'TMemo'#5'Memo1'#4'Left'#2#1#6
+'Height'#3#152#0#3'Top'#2#1#5'Width'#3#220#2#5'Align'#7#8'alClient'#10'Scrol' +'Height'#3#152#0#3'Top'#2#1#5'Width'#3#220#2#5'Align'#7#8'alClient'#10'Scrol'
+'lBars'#7#10'ssAutoBoth'#8'TabOrder'#2#0#0#0#0#9'TSplitter'#19'SplitterMemoS' +'lBars'#7#10'ssAutoBoth'#8'TabOrder'#2#0#0#0#0#9'TSplitter'#19'SplitterMemoS'
+'ynedit'#6'Cursor'#7#8'crVSplit'#4'Left'#2#0#6'Height'#2#5#3'Top'#3'y'#1#5'W' +'ynedit'#6'Cursor'#7#8'crVSplit'#4'Left'#2#0#6'Height'#2#5#3'Top'#3'`'#1#5'W'
+'idth'#3#222#2#5'Align'#7#8'alBottom'#12'ResizeAnchor'#7#8'akBottom'#0#0#6'T' +'idth'#3#222#2#5'Align'#7#8'alBottom'#12'ResizeAnchor'#7#8'akBottom'#0#0#6'T'
+'Panel'#11'ScriptPanel'#4'Left'#2#0#6'Height'#3'a'#1#3'Top'#2#24#5'Width'#3 +'Panel'#11'ScriptPanel'#4'Left'#2#0#6'Height'#3'H'#1#3'Top'#2#24#5'Width'#3
+#222#2#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3 +#222#2#5'Align'#7#8'alClient'#10'BevelOuter'#7#6'bvNone'#12'ClientHeight'#3
+'a'#1#11'ClientWidth'#3#222#2#8'DockSite'#9#8'TabOrder'#2#4#10'OnDockDrop'#7 +'H'#1#11'ClientWidth'#3#222#2#8'DockSite'#9#8'TabOrder'#2#4#10'OnDockDrop'#7
,#19'ScriptPanelDockDrop'#10'OnDockOver'#7#19'ScriptPanelDockOver'#0#12'TPage' ,#19'ScriptPanelDockDrop'#10'OnDockOver'#7#19'ScriptPanelDockOver'#0#12'TPage'
+'Control'#12'PageControl1'#4'Left'#3#155#0#6'Height'#3'>'#1#3'Top'#2#0#5'Wid' +'Control'#12'PageControl1'#4'Left'#3#155#0#6'Height'#3'%'#1#3'Top'#2#0#5'Wid'
+'th'#3'C'#2#5'Align'#7#8'alClient'#6'Images'#7#17'Mufasa_Image_List'#9'Popup' +'th'#3'C'#2#5'Align'#7#8'alClient'#6'Images'#7#17'Mufasa_Image_List'#9'Popup'
+'Menu'#7#8'TabPopup'#8'TabOrder'#2#0#8'OnChange'#7#18'PageControl1Change'#10 +'Menu'#7#8'TabPopup'#8'TabOrder'#2#0#8'OnChange'#7#18'PageControl1Change'#10
+'OnChanging'#7#20'PageControl1Changing'#14'OnContextPopup'#7#24'PageControl1' +'OnChanging'#7#20'PageControl1Changing'#14'OnContextPopup'#7#24'PageControl1'
+'ContextPopup'#10'OnDragDrop'#7#20'PageControl1DragDrop'#10'OnDragOver'#7#20 +'ContextPopup'#10'OnDragDrop'#7#20'PageControl1DragDrop'#10'OnDragOver'#7#20
+'PageControl1DragOver'#11'OnMouseDown'#7#21'PageControl1MouseDown'#9'OnMouse' +'PageControl1DragOver'#11'OnMouseDown'#7#21'PageControl1MouseDown'#9'OnMouse'
+'Up'#7#19'PageControl1MouseUp'#13'OnPageChanged'#7#18'PageControl1Change'#0#0 +'Up'#7#19'PageControl1MouseUp'#13'OnPageChanged'#7#18'PageControl1Change'#0#0
+#6'TPanel'#11'SearchPanel'#4'Left'#2#0#6'Height'#2'#'#3'Top'#3'>'#1#5'Width' +#6'TPanel'#11'SearchPanel'#4'Left'#2#0#6'Height'#2'#'#3'Top'#3'%'#1#5'Width'
+#3#222#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#7'bvSpace'#12'ClientHeight' +#3#222#2#5'Align'#7#8'alBottom'#10'BevelOuter'#7#7'bvSpace'#12'ClientHeight'
+#2'#'#11'ClientWidth'#3#222#2#8'TabOrder'#2#1#7'Visible'#8#0#12'TSpeedButton' +#2'#'#11'ClientWidth'#3#222#2#8'TabOrder'#2#1#7'Visible'#8#0#12'TSpeedButton'
+#17'SpeedButtonSearch'#4'Left'#2' '#6'Height'#2#19#3'Top'#2#7#5'Width'#2#16#5 +#17'SpeedButtonSearch'#4'Left'#2' '#6'Height'#2#19#3'Top'#2#7#5'Width'#2#16#5
@ -155,14 +155,14 @@ LazarusResources.Add('TForm1','FORMDATA',[
+#25'LabeledEditSearchKeyPress'#0#0#9'TCheckBox'#17'CheckBoxMatchCase'#4'Left' +#25'LabeledEditSearchKeyPress'#0#0#9'TCheckBox'#17'CheckBoxMatchCase'#4'Left'
+#3'@'#1#6'Height'#2#22#3'Top'#2#7#5'Width'#2'b'#7'Caption'#6#10'Match case'#7 +#3'@'#1#6'Height'#2#22#3'Top'#2#7#5'Width'#2'b'#7'Caption'#6#10'Match case'#7
+'OnClick'#7#22'CheckBoxMatchCaseClick'#8'TabOrder'#2#1#0#0#0#9'TSplitter'#20 +'OnClick'#7#22'CheckBoxMatchCaseClick'#8'TabOrder'#2#1#0#0#0#9'TSplitter'#20
+'SplitterFunctionList'#4'Left'#3#150#0#6'Height'#3'>'#1#3'Top'#2#0#5'Width'#2 +'SplitterFunctionList'#4'Left'#3#150#0#6'Height'#3'%'#1#3'Top'#2#0#5'Width'#2
+#5#11'OnCanResize'#7#29'SplitterFunctionListCanResize'#7'Visible'#8#0#0#244 +#5#11'OnCanResize'#7#29'SplitterFunctionListCanResize'#7'Visible'#8#0#0#244
+#18'TFunctionListFrame'#15'frmFunctionList'#6'Height'#3'>'#1#5'Width'#3#150#0 +#18'TFunctionListFrame'#15'frmFunctionList'#6'Height'#3'%'#1#5'Width'#3#150#0
+#12'ClientHeight'#3'>'#1#11'ClientWidth'#3#150#0#9'OnEndDock'#13#8'TabOrder' +#12'ClientHeight'#3'%'#1#11'ClientWidth'#3#150#0#9'OnEndDock'#13#8'TabOrder'
+#2#3#0#241#9'TTreeView'#12'FunctionList'#6'Height'#3#13#1#3'Top'#2#22#5'Widt' +#2#3#0#241#9'TTreeView'#12'FunctionList'#6'Height'#3#244#0#3'Top'#2#22#5'Wid'
+'h'#3#150#0#17'DefaultItemHeight'#2#19#8'OnChange'#7#18'FunctionListChange' +'th'#3#150#0#17'DefaultItemHeight'#2#19#8'OnChange'#7#18'FunctionListChange'
+#10'OnDeletion'#13#7'OnEnter'#7#17'FunctionListEnter'#6'OnExit'#7#16'Functio' +#10'OnDeletion'#13#7'OnEnter'#7#17'FunctionListEnter'#6'OnExit'#7#16'Functio'
+'nListExit'#0#0#241#5'TEdit'#14'editSearchList'#6'Height'#2#27#3'Top'#3'#'#1 +'nListExit'#0#0#241#5'TEdit'#14'editSearchList'#6'Height'#2#27#3'Top'#3#10#1
+#5'Width'#3#150#0#6'OnExit'#7#18'editSearchListExit'#9'OnKeyDown'#7#21'editS' +#5'Width'#3#150#0#6'OnExit'#7#18'editSearchListExit'#9'OnKeyDown'#7#21'editS'
+'earchListKeyDown'#10'OnKeyPress'#7#22'editSearchListKeyPress'#0#0#241#6'TLa' +'earchListKeyDown'#10'OnKeyPress'#7#22'editSearchListKeyPress'#0#0#241#6'TLa'
+'bel'#17'FunctionListLabel'#6'Height'#2#18#5'Width'#3#146#0#0#0#0#0#9'TMainM' +'bel'#17'FunctionListLabel'#6'Height'#2#18#5'Width'#3#146#0#0#0#0#0#9'TMainM'

View File

@ -35,11 +35,12 @@ uses
//Client, //Client,
MufasaTypes, MufasaTypes,
mmlpsthread,synedittypes, mmlpsthread,synedittypes,
window, // for the comp picker and selector {$IFDEF MSWINDOWS} os_windows, {$ENDIF} //For ColorPicker etc.
{$IFDEF LINUX} os_linux, {$ENDIF} //For ColorPicker etc.
colourpicker, framescript, windowselector, lcltype, ActnList, StdActns, colourpicker, framescript, windowselector, lcltype, ActnList, StdActns,
SynExportHTML, SynEditKeyCmds, SynEditHighlighter, SynEditMarkupSpecialLine, SynExportHTML, SynEditKeyCmds, SynEditHighlighter, SynEditMarkupSpecialLine,
SynEditMarkupHighAll, SynEditMiscClasses, LMessages, Buttons, PairSplitter, SynEditMarkupHighAll, SynEditMiscClasses, LMessages, Buttons, PairSplitter,
ColorBox, about, framefunctionlist, ocr, updateform, simbasettings; ColorBox , about, framefunctionlist, ocr, updateform, simbasettings;
const const
SimbaVersion = 429; SimbaVersion = 429;
@ -305,7 +306,7 @@ type
CurrScript : TScriptFrame; //The current scriptframe CurrScript : TScriptFrame; //The current scriptframe
CurrTab : TMufasaTab; //The current TMufasaTab CurrTab : TMufasaTab; //The current TMufasaTab
Tabs : TList; Tabs : TList;
Window: TMWindow; Manager: TIOManager;
OCR_Fonts: TMOCR; OCR_Fonts: TMOCR;
Picker: TMColorPicker; Picker: TMColorPicker;
Selector: TMWindowSelector; Selector: TMWindowSelector;
@ -573,9 +574,7 @@ begin
Writeln('Warning: The font directory specified in the Settings isn''t valid. Can''t load fonts now'); Writeln('Warning: The font directory specified in the Settings isn''t valid. Can''t load fonts now');
ScriptThread.SetPaths(ScriptPath,AppPath,Includepath,PluginsPath,fontPath); ScriptThread.SetPaths(ScriptPath,AppPath,Includepath,PluginsPath,fontPath);
// This doesn't actually set the Client's MWindow to the passed window, it ScriptThread.Client.IOManager.SetTarget(Selector.LastPick);
// only copies the current set window handle.
ScriptThread.Client.MWindow.SetWindow(Self.Window);
loadFontsOnScriptStart := LoadSettingDef('Settings/Fonts/LoadOnStartUp', 'True'); loadFontsOnScriptStart := LoadSettingDef('Settings/Fonts/LoadOnStartUp', 'True');
@ -1271,9 +1270,9 @@ begin
Tabs := TList.Create; Tabs := TList.Create;
AddTab;//Give it alteast 1 tab ;-). AddTab;//Give it alteast 1 tab ;-).
FunctionListShown(True); //Show this function list bitch! FunctionListShown(True); //Show this function list bitch!
Window := TMWindow.Create; Manager := TIOManager.Create(''); //No need to load plugins for the Global manager
Picker := TMColorPicker.Create(Window); Picker := TMColorPicker.Create(Manager);
Selector := TMWindowSelector.Create(Window); Selector := TMWindowSelector.Create(Manager);
MainDir:= ExtractFileDir(Application.ExeName); MainDir:= ExtractFileDir(Application.ExeName);
{ For writeln } { For writeln }
SetLength(DebugStream, 0); SetLength(DebugStream, 0);
@ -1302,7 +1301,7 @@ begin
Tabs.free; Tabs.free;
Selector.Free; Selector.Free;
Picker.Free; Picker.Free;
Window.Free; Manager.Free;
PluginsGlob.Free; PluginsGlob.Free;
SetLength(DebugStream, 0); SetLength(DebugStream, 0);
@ -1487,7 +1486,7 @@ end;
procedure TForm1.MenuItemReportBugClick(Sender: TObject); procedure TForm1.MenuItemReportBugClick(Sender: TObject);
begin begin
OpenURL('http://old.villavu.com/mantis/bug_report_page.php'); //OpenURL('http://old.villavu.com/mantis/bug_report_page.php');
end; end;
procedure TForm1.MenuItemShowClick(Sender: TObject); procedure TForm1.MenuItemShowClick(Sender: TObject);
@ -1546,8 +1545,8 @@ end;
procedure TForm1.ButtonSelectorDown(Sender: TObject; Button: TMouseButton; procedure TForm1.ButtonSelectorDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
begin begin
Window.SetTarget(Selector.Drag {$ifdef MSWINDOWS},w_window{$endif}); Manager.SetTarget(Selector.Drag {$ifdef MSWINDOWS},w_window{$endif});
writeln('New window: ' + IntToStr(Window.{$ifdef MSWindows}TargetHandle{$else}CurWindow{$ENDIF})); writeln('New window: ' + IntToStr(Selector.LastPick));
end; end;
procedure TForm1.NoTray(Sender: TObject); procedure TForm1.NoTray(Sender: TObject);

View File

@ -151,13 +151,13 @@ end;
procedure ps_CopyClientToBitmap(bmp, xs, ys, xe, ye: Integer); procedure ps_CopyClientToBitmap(bmp, xs, ys, xe, ye: Integer);
begin begin
CurrThread.Client.MBitmaps.GetBMP(bmp).CopyClientToBitmap(CurrThread.Client.MWindow, True, xs, ys, xe, ye); CurrThread.Client.MBitmaps.GetBMP(bmp).CopyClientToBitmap(CurrThread.Client.IOManager, True, xs, ys, xe, ye);
end; end;
function BitmapFromClient(const xs, ys, xe, ye: Integer): Integer; function BitmapFromClient(const xs, ys, xe, ye: Integer): Integer;
begin; begin;
result := CurrThread.Client.MBitmaps.CreateBMP(0,0); result := CurrThread.Client.MBitmaps.CreateBMP(0,0);
CurrThread.Client.MBitmaps.Bmp[result].CopyClientToBitmap(CurrThread.Client.MWindow,True,xs,ys,xe,ye); CurrThread.Client.MBitmaps.Bmp[result].CopyClientToBitmap(CurrThread.Client.IOManager,True,xs,ys,xe,ye);
end; end;
function FindBitmap(Bitmap: integer; out x, y: Integer): Boolean; function FindBitmap(Bitmap: integer; out x, y: Integer): Boolean;

View File

@ -23,7 +23,7 @@
function GetColor(x,y : integer) : TColor; function GetColor(x,y : integer) : TColor;
begin; begin;
Result := CurrThread.Client.MWindow.GetColor(x,y); Result := CurrThread.Client.IOManager.GetColor(x,y);
end; end;
function findcolor(out x, y: integer; color, x1, y1, x2, y2: integer): boolean; function findcolor(out x, y: integer; color, x1, y1, x2, y2: integer): boolean;

View File

@ -23,25 +23,25 @@
procedure KeyDown(key: Word); procedure KeyDown(key: Word);
begin begin
CurrThread.Client.MInput.KeyDown(key); CurrThread.Client.IOManager.KeyDown(key);
end; end;
procedure KeyUp(key: Word); procedure KeyUp(key: Word);
begin begin
CurrThread.Client.MInput.KeyUp(key); CurrThread.Client.IOManager.KeyUp(key);
end; end;
procedure SendKeys(s: string); procedure SendKeys(s: string);
begin begin
CurrThread.Client.MInput.SendText(s); CurrThread.Client.IOManager.SendText(s);
end; end;
procedure PressKey(key: Word); procedure PressKey(key: Word);
begin begin
CurrThread.Client.MInput.PressKey(key); CurrThread.Client.IOManager.PressKey(key);
end; end;
function isKeyDown(key: Word): boolean; function isKeyDown(key: Word): boolean;
begin begin
Result := CurrThread.Client.MInput.isKeyDown(key); Result := CurrThread.Client.IOManager.isKeyDown(key);
end; end;

View File

@ -27,12 +27,12 @@ const
ps_mouse_middle = 2; ps_mouse_middle = 2;
procedure MoveMouse(x, y: integer); procedure MoveMouse(x, y: integer);
begin begin
CurrThread.Client.MInput.SetMousePos(X, Y); CurrThread.Client.IOManager.SetMousePos(X, Y);
end; end;
procedure GetMousePos(out x, y: integer); procedure GetMousePos(out x, y: integer);
begin begin
CurrThread.Client.MInput.GetMousePos(X, Y); CurrThread.Client.IOManager.GetMousePos(X, Y);
end; end;
function ConvIntClickType(Int : Integer) : TClickType;inline; function ConvIntClickType(Int : Integer) : TClickType;inline;
begin; begin;
@ -47,17 +47,17 @@ end;
procedure HoldMouse(x, y: integer; clickType: integer); procedure HoldMouse(x, y: integer; clickType: integer);
begin begin
CurrThread.Client.MInput.SetMousePos(x, y); CurrThread.Client.IOManager.SetMousePos(x, y);
CurrThread.Client.MInput.MouseButtonAction(x, y, ConvIntClickType(clickType), mouse_Down); CurrThread.Client.IOManager.MouseButtonAction(x, y, ConvIntClickType(clickType), mouse_Down);
end; end;
procedure ReleaseMouse(x, y: integer; clickType: integer); procedure ReleaseMouse(x, y: integer; clickType: integer);
begin begin
CurrThread.Client.MInput.SetMousePos(x, y); CurrThread.Client.IOManager.SetMousePos(x, y);
CurrThread.Client.MInput.MouseButtonAction(x, y, ConvIntClickType(clickType), mouse_Up); CurrThread.Client.IOManager.MouseButtonAction(x, y, ConvIntClickType(clickType), mouse_Up);
end; end;
procedure ClickMouse(x, y: integer; clickType: integer); procedure ClickMouse(x, y: integer; clickType: integer);
begin begin
CurrThread.Client.MInput.ClickMouse(x, y, ConvIntClickType(clickType)); CurrThread.Client.IOManager.ClickMouse(x, y, ConvIntClickType(clickType));
end; end;

View File

@ -53,9 +53,9 @@ var
w,h : integer; w,h : integer;
bmp: TMufasaBitmap; bmp: TMufasaBitmap;
begin; begin;
CurrThread.Client.MWindow.GetDimensions(w,h); CurrThread.Client.IOManager.GetDimensions(w,h);
bmp := TMufasaBitmap.Create; bmp := TMufasaBitmap.Create;
bmp.CopyClientToBitmap(CurrThread.Client.MWindow,True,0,0,w-1,h-1); bmp.CopyClientToBitmap(CurrThread.Client.IOManager,True,0,0,w-1,h-1);
bmp.SaveToFile(FileName); bmp.SaveToFile(FileName);
bmp.Free; bmp.Free;
end; end;

View File

@ -23,36 +23,38 @@
procedure SetDesktopAsClient; procedure SetDesktopAsClient;
begin; begin;
CurrThread.Client.MWindow.SetDesktop; CurrThread.Client.IOManager.SetDesktop;
end; end;
procedure SetTargetBitmap(bitmap: Integer); procedure SetTargetBitmap(bitmap: Integer);
begin; begin;
With CurrThread.Client do With CurrThread.Client do
MWindow.SetTarget(MBitmaps.Bmp[Bitmap]); IOManager.SetTarget(MBitmaps.Bmp[Bitmap]);
end; end;
procedure GetClientDimensions(out w, h: integer); procedure GetClientDimensions(out w, h: integer);
begin begin
CurrThread.Client.MWindow.GetDimensions(w, h); CurrThread.Client.IOManager.GetDimensions(w, h);
end; end;
function Freeze: boolean; function Freeze: boolean;
begin begin
result := CurrThread.Client.MWindow.Freeze(); CurrThread.Client.IOManager.SetFrozen(true);
result := true;
end; end;
function Unfreeze: boolean; function Unfreeze: boolean;
begin begin
result := CurrThread.Client.MWindow.Unfreeze; CurrThread.Client.IOManager.SetFrozen(false);
result := true;
end; end;
procedure SetTargetArray(P: Integer; w, h: integer); procedure SetTargetArray(P: Integer; w, h: integer);
begin begin
CurrThread.Client.MWindow.SetTarget(PRGB32(P), classes.point(w,h)); CurrThread.Client.IOManager.SetTarget(PRGB32(P), classes.point(w,h));
end; end;
procedure activateclient; procedure activateclient;
begin begin
CurrThread.Client.MWindow.ActivateClient; CurrThread.Client.IOManager.ActivateClient;
end; end;

View File

@ -30,7 +30,9 @@ interface
uses uses
Classes, SysUtils, LCLIntf,LCLType,InterfaceBase,Forms,Controls,ExtCtrls, Classes, SysUtils, LCLIntf,LCLType,InterfaceBase,Forms,Controls,ExtCtrls,
Graphics, Graphics,
Window,MufasaTypes, colourhistory,bitmaps,input {$IFDEF MSWINDOWS} os_windows, {$ENDIF}
{$IFDEF LINUX} os_linux, {$ENDIF}
MufasaTypes, colourhistory,bitmaps
{$IFNDEF PICKER_CLIENT} {$IFNDEF PICKER_CLIENT}
{$IFDEF LINUX} {$IFDEF LINUX}
@ -44,7 +46,7 @@ type
TPickEvent = procedure (Sender: TObject; Color, X, Y: Integer); TPickEvent = procedure (Sender: TObject; Color, X, Y: Integer);
TMColorPicker = class(TObject) TMColorPicker = class(TObject)
constructor Create(aWindow: TMWindow); constructor Create(manager: TIOManager);
destructor Destroy; override; destructor Destroy; override;
procedure Pick(Out C, X, Y: Integer); procedure Pick(Out C, X, Y: Integer);
@ -53,11 +55,7 @@ type
procedure ImageInfoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); procedure ImageInfoMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
Procedure ColorPickUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer); Procedure ColorPickUp(Sender: TObject; Button: TMouseButton;Shift: TShiftState; X, Y: Integer);
public public
// Will give us CopyClientToBitmap manager: TIOManager;
Window: TMWindow;
// Created and freed in Pick.
Input: TMInput;
{ Form components } { Form components }
ScreenForm, InfoForm : TForm; ScreenForm, InfoForm : TForm;
@ -80,12 +78,12 @@ type
implementation implementation
constructor TMColorPicker.Create(aWindow: TMWindow); constructor TMColorPicker.Create(manager: TIOManager);
begin begin
inherited Create; inherited Create;
Self.Window := aWindow; self.manager := manager;
end; end;
destructor TMColorPicker.Destroy; destructor TMColorPicker.Destroy;
@ -104,7 +102,7 @@ var
p : TPoint; p : TPoint;
bmp: TMufasaBitmap; bmp: TMufasaBitmap;
Desktop : TMWindow; Desktop : TIOManager;
begin begin
@ -112,12 +110,11 @@ begin
w := 0; w := 0;
h := 0; h := 0;
{ If the target window isn't valid (closed etc), make the destkop the new window} { If the target window isn't valid (closed etc), make the destkop the new window}
if not Self.Window.TargetValid then if not Self.Manager.TargetValid then
self.Window.SetDesktop; self.Manager.SetDesktop;
Input := TMInput.Create(Self.Window);//For the correct x,y values
{Desktop is needed for the whole picture} {Desktop is needed for the whole picture}
Desktop := TMWindow.Create; Desktop := TIOManager.Create('');
Desktop.SetDesktop; Desktop.SetDesktop;
Desktop.GetDimensions(w, h); Desktop.GetDimensions(w, h);
@ -213,7 +210,6 @@ begin
InfoForm.Free; InfoForm.Free;
ScreenForm.Free; ScreenForm.Free;
Input.Free;
Desktop.free; Desktop.free;
{ Re-enable the color pick buttons } { Re-enable the color pick buttons }
@ -230,7 +226,7 @@ var
MouseX, MouseY: Integer; MouseX, MouseY: Integer;
begin begin
{ Move the info form } { Move the info form }
Input.GetMousePos(MouseX, MouseY); manager.GetMousePos(MouseX, MouseY);
InfoForm.Left := Mouse.CursorPos.X + 5; InfoForm.Left := Mouse.CursorPos.X + 5;
InfoForm.Top := Mouse.CursorPos.Y - 15; InfoForm.Top := Mouse.CursorPos.Y - 15;
@ -281,7 +277,7 @@ procedure TMColorPicker.ColorPickUp(Sender: TObject; Button: TMouseButton;
begin; begin;
{ Set the coordinates and color that the user cliked on } { Set the coordinates and color that the user cliked on }
Color:= WidgetSet.DCGetPixel(ImageMain.Canvas.Handle,x,y); Color:= WidgetSet.DCGetPixel(ImageMain.Canvas.Handle,x,y);
Input.GetMousePos(ColorX, ColorY); Manager.GetMousePos(ColorX, ColorY);
if OnPick <> nil then if OnPick <> nil then
Onpick(Sender,Color,Colorx,Colory); Onpick(Sender,Color,Colorx,Colory);

View File

@ -30,7 +30,9 @@ interface
uses uses
Classes, SysUtils, Classes, SysUtils,
ctypes, ctypes,
window, windowutil, {$IFDEF MSWINDOWS} os_windows, {$ENDIF}
{$IFDEF LINUX} os_linux, {$ENDIF}
windowutil,
controls, controls,
graphics, graphics,
forms, forms,
@ -43,17 +45,15 @@ uses
type type
TMWindowSelector = class(TObject) TMWindowSelector = class(TObject)
constructor Create(aWindow: TMWindow); constructor Create(manager: TIOManager);
destructor Destroy; override; destructor Destroy; override;
{$IFDEF LINUX} function Drag: TNativeWindow;
function Drag: x.TWindow;
{$ELSE}
function Drag: Hwnd;
{$ENDIF}
public public
Window: TMWindow; LastPick: TNativeWindow;
manager: TIOManager;
end; end;
@ -61,11 +61,11 @@ type
implementation implementation
constructor TMWindowSelector.Create(aWindow: TMWindow); constructor TMWindowSelector.Create(manager: TIOManager);
begin begin
inherited create; inherited create;
Self.Window := aWindow; self.manager := manager;
end; end;
@ -77,7 +77,7 @@ begin
end; end;
{$IFDEF LINUX} {$IFDEF LINUX}
function TMWindowSelector.Drag: x.TWindow; function TMWindowSelector.Drag: TNativeWindow;
var var
Tempwindow : x.TWindow; Tempwindow : x.TWindow;
root : x.TWindow; root : x.TWindow;
@ -96,13 +96,13 @@ begin
Result := 0; Result := 0;
window_opacity:=XInternAtom(Window.XDisplay,PChar('_NET_WM_WINDOW_OPACITY'), False); window_opacity:=XInternAtom(manager.display,PChar('_NET_WM_WINDOW_OPACITY'), False);
opacity_75 := cuint($ffffffff * 0.75); opacity_75 := cuint($ffffffff * 0.75);
opacity_100 := cuint($ffffffff); opacity_100 := cuint($ffffffff);
repeat repeat
// get pointer pos + current window we are at. // get pointer pos + current window we are at.
XQueryPointer(Window.XDisplay, Window.DesktopWindow, @root, XQueryPointer(manager.display, manager.desktop, @root,
@Tempwindow, @x_root, @y_root, @Tempwindow, @x_root, @y_root,
@x, @y, @xmask); @x, @y, @xmask);
subwindow:= Tempwindow; subwindow:= Tempwindow;
@ -110,7 +110,7 @@ begin
while subwindow <> 0 do while subwindow <> 0 do
begin begin
Tempwindow := subwindow; Tempwindow := subwindow;
XQueryPointer(Window.XDisplay, Tempwindow, @root, XQueryPointer(manager.display, Tempwindow, @root,
@subwindow, @x_root, @y_root, @subwindow, @x_root, @y_root,
@x, @y, @xmask); @x, @y, @xmask);
end; end;
@ -120,17 +120,18 @@ begin
if Result <> Tempwindow then if Result <> Tempwindow then
begin begin
writeln('Making ' + inttostr(tempwindow) + ' transparent'); writeln('Making ' + inttostr(tempwindow) + ' transparent');
XChangeProperty(Window.XDisplay, tempwindow, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_75, 1); XChangeProperty(manager.display, tempwindow, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_75, 1);
writeln('Resetting ' + inttostr(Result)); writeln('Resetting ' + inttostr(Result));
if result <> 0 then if result <> 0 then
XChangeProperty(Window.XDisplay, Result, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_100, 1); XChangeProperty(manager.display, Result, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_100, 1);
WriteLn('Changing Window from: ' + Inttostr(result) +' to: ' + IntToStr(Tempwindow)); WriteLn('Changing Window from: ' + Inttostr(result) +' to: ' + IntToStr(Tempwindow));
// XChangeProperty(Window.XDisplay, tempwindow, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_50, 1); // XChangeProperty(Window.XDisplay, tempwindow, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_50, 1);
Result := Tempwindow; Result := Tempwindow;
LastPick:= TempWindow;
end; end;
XFlush(Window.XDisplay); XFlush(manager.display);
Sleep(16); Sleep(16);
//if we are selecting for a long time, we must still process other messages //if we are selecting for a long time, we must still process other messages
@ -138,15 +139,15 @@ begin
until (xmask and Button1Mask) = 0; until (xmask and Button1Mask) = 0;
XChangeProperty(Window.XDisplay, Result, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_100, 1); XChangeProperty(manager.display, Result, window_opacity, XA_CARDINAL, 32, PropModeReplace, @opacity_100, 1);
XFlush(Window.XDisplay); XFlush(manager.display);
XSetErrorHandler(Old_handler); XSetErrorHandler(Old_handler);
end; end;
{$ELSE} {$ELSE}
function TMWindowSelector.Drag: Hwnd; function TMWindowSelector.Drag: TNativeWindow;
var var
TargetRect: TRect; TargetRect: TRect;
DC: HDC; DC: HDC;
@ -192,6 +193,7 @@ begin;
Sleep(64); Sleep(64);
end; end;
Result := TempHandle; Result := TempHandle;
LastPick:= TempHandle;
Screen.Cursor:= cursor; Screen.Cursor:= cursor;
Invalidaterect(temphandle, nil, true); Invalidaterect(temphandle, nil, true);
UpdateWindow(temphandle); UpdateWindow(temphandle);

View File

@ -115,7 +115,7 @@ implementation
uses uses
Windowutil,paszlib,DCPbase64,math, Windowutil,paszlib,DCPbase64,math,
colour_conv,window,mufasatypesutil,tpa; colour_conv,IOManager,mufasatypesutil,tpa;
function Min(a,b:integer) : integer; function Min(a,b:integer) : integer;
begin begin
@ -674,11 +674,11 @@ begin
wi := Min(xe-xs + 1,Self.w); wi := Min(xe-xs + 1,Self.w);
hi := Min(ye-ys + 1,Self.h); hi := Min(ye-ys + 1,Self.h);
PtrRet := TMWindow(MWindow).ReturnData(xs,ys,wi,hi); PtrRet := TIOManager_Abstract(MWindow).ReturnData(xs,ys,wi,hi);
for y := 0 to (hi-1) do for y := 0 to (hi-1) do
Move(PtrRet.Ptr[y * (wi + PtrRet.IncPtrWith)], FData[y * self.w],wi * SizeOf(TRGB32)); Move(PtrRet.Ptr[y * (wi + PtrRet.IncPtrWith)], FData[y * self.w],wi * SizeOf(TRGB32));
TMWindow(MWindow).FreeReturnData; TIOManager_Abstract(MWindow).FreeReturnData;
end; end;
procedure TMufasaBitmap.CopyClientToBitmap(MWindow: TObject; Resize: boolean; procedure TMufasaBitmap.CopyClientToBitmap(MWindow: TObject; Resize: boolean;
@ -693,11 +693,11 @@ begin
wi := Min(xe-xs + 1 + x,Self.w); wi := Min(xe-xs + 1 + x,Self.w);
hi := Min(ye-ys + 1 + y,Self.h); hi := Min(ye-ys + 1 + y,Self.h);
PtrRet := TMWindow(MWindow).ReturnData(xs,ys,wi - x,hi - y); PtrRet := TIOManager_Abstract(MWindow).ReturnData(xs,ys,wi - x,hi - y);
for yy := 0 to (hi-1 - y) do for yy := 0 to (hi-1 - y) do
Move(PtrRet.Ptr[yy * (wi - x + PtrRet.IncPtrWith)], FData[(yy + y) * self.w + x],wi * SizeOf(TRGB32)); Move(PtrRet.Ptr[yy * (wi - x + PtrRet.IncPtrWith)], FData[(yy + y) * self.w + x],wi * SizeOf(TRGB32));
TMWindow(MWindow).FreeReturnData; TIOManager_Abstract(MWindow).FreeReturnData;
end; end;

View File

@ -30,7 +30,9 @@ interface
uses uses
Classes, SysUtils, MufasaTypes, Classes, SysUtils, MufasaTypes,
Window, Input, Files, Finder, Bitmaps, dtm, ocr; IOManager, Files, Finder, Bitmaps, dtm, ocr,
{$IFDEF MSWINDOWS} os_windows {$ENDIF}
{$IFDEF LINUX} os_linux {$ENDIF};
{ {
TClient is a full-blown instance of the MML. TClient is a full-blown instance of the MML.
@ -43,8 +45,7 @@ type
destructor Destroy; override; destructor Destroy; override;
public public
MWindow: TMWindow; IOManager: TIOManager;
MInput: TMInput;
MFiles: TMFiles; MFiles: TMFiles;
MFinder: TMFinder; MFinder: TMFinder;
MBitmaps : TMBitmaps; MBitmaps : TMBitmaps;
@ -60,8 +61,7 @@ constructor TClient.Create;
begin begin
inherited Create; inherited Create;
MWindow := TMWindow.Create; IOManager:= TIOManager.Create('./Plugins');
MInput := TMInput.Create(MWindow);
MFiles := TMFiles.Create; MFiles := TMFiles.Create;
MFinder := TMFinder.Create(Self); MFinder := TMFinder.Create(Self);
MBitmaps := TMBitmaps.Create(self); MBitmaps := TMBitmaps.Create(self);
@ -76,8 +76,7 @@ begin
MBitmaps.Free; MBitmaps.Free;
MFinder.Free; MFinder.Free;
MFiles.Free; MFiles.Free;
MInput.Free; IOManager.Free;
MWindow.Free;
inherited; inherited;
end; end;

View File

@ -351,7 +351,7 @@ begin
raise Exception.createFMT('Any Find Function, you did not pass a ' + raise Exception.createFMT('Any Find Function, you did not pass a ' +
'correct ys: %d.', [ys]); 'correct ys: %d.', [ys]);
TClient(Self.Client).MWindow.GetDimensions(w,h); TClient(Self.Client).IOManager.GetDimensions(w,h);
if (w <> CachedWidth) or (h <> CachedHeight) then if (w <> CachedWidth) or (h <> CachedHeight) then
UpdateCachedValues(w,h); UpdateCachedValues(w,h);
if xe >= w then if xe >= w then
@ -379,7 +379,7 @@ begin
dX := xe - xs; dX := xe - xs;
dY := ye - ys; dY := ye - ys;
ColorToRGB(Color, clR, clG, clB); ColorToRGB(Color, clR, clG, clB);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
Ptr := PtrData.Ptr; Ptr := PtrData.Ptr;
PtrInc := PtrData.IncPtrWith; PtrInc := PtrData.IncPtrWith;
CCts := Self.CTS; CCts := Self.CTS;
@ -400,7 +400,7 @@ begin
end; end;
Inc(Ptr, PtrInc) Inc(Ptr, PtrInc)
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.CountColor(Color, xs, ys, xe, ye: Integer): Integer; function TMFinder.CountColor(Color, xs, ys, xe, ye: Integer): Integer;
@ -422,7 +422,7 @@ begin
//next, convert the color to r,g,b //next, convert the color to r,g,b
ColorToRGB(Color, clR, clG, clB); ColorToRGB(Color, clR, clG, clB);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
// Do we want to "cache" these vars? // Do we want to "cache" these vars?
// We will, for now. Easier to type. // We will, for now. Easier to type.
@ -441,7 +441,7 @@ begin
Inc(Ptr, PtrInc) Inc(Ptr, PtrInc)
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColor(out x, y: Integer; Color, xs, ys, xe, ye: Integer): Boolean; function TMFinder.FindColor(out x, y: Integer; Color, xs, ys, xe, ye: Integer): Boolean;
@ -463,7 +463,7 @@ begin
//next, convert the color to r,g,b //next, convert the color to r,g,b
ColorToRGB(Color, clR, clG, clB); ColorToRGB(Color, clR, clG, clB);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
// Do we want to "cache" these vars? // Do we want to "cache" these vars?
// We will, for now. Easier to type. // We will, for now. Easier to type.
@ -481,7 +481,7 @@ begin
x := xx; x := xx;
y := yy; y := yy;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
Exit; Exit;
end; end;
Inc(Ptr); Inc(Ptr);
@ -489,7 +489,7 @@ begin
Inc(Ptr, PtrInc) Inc(Ptr, PtrInc)
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColorSpiral(var x, y: Integer; color, xs, ys, xe, function TMFinder.FindColorSpiral(var x, y: Integer; color, xs, ys, xe,
@ -511,7 +511,7 @@ begin
//next, convert the color to r,g,b //next, convert the color to r,g,b
ColorToRGB(Color, clR, clG, clB); ColorToRGB(Color, clR, clG, clB);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
//Load rowdata //Load rowdata
RowData:= CalculateRowPtrs(ptrdata,dy+1); RowData:= CalculateRowPtrs(ptrdata,dy+1);
//Load the spiral path //Load the spiral path
@ -526,11 +526,11 @@ begin
Result := True; Result := True;
x := ClientTPA[i].x + xs; x := ClientTPA[i].x + xs;
y := ClientTPA[i].y + ys; y := ClientTPA[i].y + ys;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
Exit; Exit;
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColoredArea(var x, y: Integer; Color, xs, ys, xe, ye, MinArea: Integer): Boolean; function TMFinder.FindColoredArea(var x, y: Integer; Color, xs, ys, xe, ye, MinArea: Integer): Boolean;
@ -554,7 +554,7 @@ begin
//next, convert the color to r,g,b //next, convert the color to r,g,b
ColorToRGB(Color, clR, clG, clB); ColorToRGB(Color, clR, clG, clB);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
// Do we want to "cache" these vars? // Do we want to "cache" these vars?
// We will, for now. Easier to type. // We will, for now. Easier to type.
@ -586,7 +586,7 @@ begin
Result := True; Result := True;
x := xx; x := xx;
y := yy; y := yy;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
Exit; Exit;
end; end;
end; end;
@ -604,7 +604,7 @@ begin
Inc(Ptr, PtrInc); Inc(Ptr, PtrInc);
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
@ -634,7 +634,7 @@ begin
if Cts = 2 then if Cts = 2 then
RGBToHSLNonFixed(clR,clG,clB,H1,S1,L1); RGBToHSLNonFixed(clR,clG,clB,H1,S1,L1);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
// Do we want to "cache" these vars? // Do we want to "cache" these vars?
// We will, for now. Easier to type. // We will, for now. Easier to type.
@ -730,14 +730,14 @@ begin
end; end;
end; end;
Result := False; Result := False;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
Exit; Exit;
Hit: Hit:
Result := True; Result := True;
x := xx; x := xx;
y := yy; y := yy;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColorTolerance(out x, y: Integer; Color, xs, ys, xe, ye, tol: Integer): Boolean; function TMFinder.FindColorTolerance(out x, y: Integer; Color, xs, ys, xe, ye, tol: Integer): Boolean;
@ -766,7 +766,7 @@ begin
if Cts = 2 then if Cts = 2 then
RGBToHSL(clR,clG,clB,H1,S1,L1); RGBToHSL(clR,clG,clB,H1,S1,L1);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
// Do we want to "cache" these vars? // Do we want to "cache" these vars?
// We will, for now. Easier to type. // We will, for now. Easier to type.
@ -821,14 +821,14 @@ begin
end; end;
end; end;
Result := False; Result := False;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
Exit; Exit;
Hit: Hit:
Result := True; Result := True;
x := xx; x := xx;
y := yy; y := yy;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColoredAreaTolerance(var x, y: Integer; Color, xs, ys, xe, ye, MinArea, tol: Integer): Boolean; function TMFinder.FindColoredAreaTolerance(var x, y: Integer; Color, xs, ys, xe, ye, MinArea, tol: Integer): Boolean;
@ -854,7 +854,7 @@ begin
ColorToRGB(Color, clR, clG, clB); ColorToRGB(Color, clR, clG, clB);
if Cts = 2 then if Cts = 2 then
RGBToHSL(clR,clG,clB,H1,S1,L1); RGBToHSL(clR,clG,clB,H1,S1,L1);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
// Do we want to "cache" these vars? // Do we want to "cache" these vars?
// We will, for now. Easier to type. // We will, for now. Easier to type.
@ -899,14 +899,14 @@ begin
end; end;
Result := False; Result := False;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
Exit; Exit;
Hit: Hit:
Result := True; Result := True;
x := xx; x := xx;
y := yy; y := yy;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColorsTolerance(out Points: TPointArray; Color, xs, ys, function TMFinder.FindColorsTolerance(out Points: TPointArray; Color, xs, ys,
@ -930,7 +930,7 @@ begin
if CTS = 2 then if CTS = 2 then
ColorToHSL(color,H1,S1,L1); ColorToHSL(color,H1,S1,L1);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
// Do we want to "cache" these vars? // Do we want to "cache" these vars?
// We will, for now. Easier to type. // We will, for now. Easier to type.
@ -994,7 +994,7 @@ begin
SetLength(Points, C); SetLength(Points, C);
Move(ClientTPA[0], Points[0], C * SizeOf(TPoint)); Move(ClientTPA[0], Points[0], C * SizeOf(TPoint));
Result := C > 0; Result := C > 0;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColorsToleranceOptimised(out Points: TPointArray; Color, xs, ys, function TMFinder.FindColorsToleranceOptimised(out Points: TPointArray; Color, xs, ys,
xe, ye, Tol: Integer): Boolean; xe, ye, Tol: Integer): Boolean;
@ -1017,7 +1017,7 @@ begin
if CTS = 2 then if CTS = 2 then
RGBToHSLNonFixed(clR,clG,clB,H1,S1,L1); RGBToHSLNonFixed(clR,clG,clB,H1,S1,L1);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
// Do we want to "cache" these vars? // Do we want to "cache" these vars?
// We will, for now. Easier to type. // We will, for now. Easier to type.
@ -1122,7 +1122,7 @@ begin
SetLength(Points, C); SetLength(Points, C);
Move(ClientTPA[0], Points[0], C * SizeOf(TPoint)); Move(ClientTPA[0], Points[0], C * SizeOf(TPoint));
Result := C > 0; Result := C > 0;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColorsSpiralTolerance(x, y: Integer; function TMFinder.FindColorsSpiralTolerance(x, y: Integer;
@ -1144,7 +1144,7 @@ begin
ColorToRGB(Color, clR, clG, clB); ColorToRGB(Color, clR, clG, clB);
ColorToHSL(Color, H1, S1, L1); ColorToHSL(Color, H1, S1, L1);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
c := 0; c := 0;
@ -1199,7 +1199,7 @@ begin
SetLength(Points, C); SetLength(Points, C);
Move(ClientTPA[0], Points[0], C * SizeOf(TPoint)); Move(ClientTPA[0], Points[0], C * SizeOf(TPoint));
Result := C > 0; Result := C > 0;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindColors(out TPA: TPointArray; Color, xs, ys, xe, ye: Integer): Boolean; function TMFinder.FindColors(out TPA: TPointArray; Color, xs, ys, xe, ye: Integer): Boolean;
@ -1220,7 +1220,7 @@ begin
ColorToRGB(Color, clR, clG, clB); ColorToRGB(Color, clR, clG, clB);
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
Ptr := PtrData.Ptr; Ptr := PtrData.Ptr;
PtrInc := PtrData.IncPtrWith; PtrInc := PtrData.IncPtrWith;
@ -1246,7 +1246,7 @@ begin
Result := I > 0; Result := I > 0;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
{ Only works with CTS 1 for now.. Since Colorsame doesn't return a boolean :-( } { Only works with CTS 1 for now.. Since Colorsame doesn't return a boolean :-( }
@ -1274,7 +1274,7 @@ begin
dX := xe - xs; dX := xe - xs;
dY := ye - ys; dY := ye - ys;
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
//Caculate the row ptrs //Caculate the row ptrs
MainRowdata:= CalculateRowPtrs(PtrData,dy+1); MainRowdata:= CalculateRowPtrs(PtrData,dy+1);
@ -1321,12 +1321,12 @@ begin
//We have found the mask appearntly, otherwise we would have jumped! Gna Gna. //We have found the mask appearntly, otherwise we would have jumped! Gna Gna.
x := xx + xs; x := xx + xs;
y := yy + ys; y := yy + ys;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
Exit(true); Exit(true);
//Bah not found the mask, lets do nothing and continue! //Bah not found the mask, lets do nothing and continue!
NotFoundMask: NotFoundMask:
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
procedure TMFinder.CheckMask(Mask: TMask); procedure TMFinder.CheckMask(Mask: TMask);
@ -1339,7 +1339,7 @@ function TMFinder.FindBitmap(bitmap: TMufasaBitmap; out x, y: Integer): Boolean;
var var
w,h : integer; w,h : integer;
begin begin
TClient(Client).MWindow.GetDimensions(w,h); TClient(Client).IOManager.GetDimensions(w,h);
result := Self.FindBitmapIn(bitmap,x,y,0,0,w-1,h-1); result := Self.FindBitmapIn(bitmap,x,y,0,0,w-1,h-1);
end; end;
@ -1366,7 +1366,7 @@ begin
dX := xe - xs; dX := xe - xs;
dY := ye - ys; dY := ye - ys;
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
//Caculate the row ptrs //Caculate the row ptrs
MainRowdata:= CalculateRowPtrs(PtrData,dy+1); MainRowdata:= CalculateRowPtrs(PtrData,dy+1);
BmpRowData:= CalculateRowPtrs(bitmap); BmpRowData:= CalculateRowPtrs(bitmap);
@ -1393,14 +1393,14 @@ begin
end; end;
//We did find the Bmp, otherwise we would be at the part below //We did find the Bmp, otherwise we would be at the part below
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
x := xx + xs; x := xx + xs;
y := yy + ys; y := yy + ys;
result := true; result := true;
exit; exit;
NotFoundBmp: NotFoundBmp:
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindBitmapToleranceIn(bitmap: TMufasaBitmap; out x, y: Integer; xs, function TMFinder.FindBitmapToleranceIn(bitmap: TMufasaBitmap; out x, y: Integer; xs,
@ -1428,7 +1428,7 @@ begin
dX := xe - xs; dX := xe - xs;
dY := ye - ys; dY := ye - ys;
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
//Caculate the row ptrs //Caculate the row ptrs
MainRowdata:= CalculateRowPtrs(PtrData,dy+1); MainRowdata:= CalculateRowPtrs(PtrData,dy+1);
BmpRowData:= CalculateRowPtrs(bitmap); BmpRowData:= CalculateRowPtrs(bitmap);
@ -1462,14 +1462,14 @@ begin
end; end;
//We did find the Bmp, otherwise we would be at the part below //We did find the Bmp, otherwise we would be at the part below
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
x := xx + xs; x := xx + xs;
y := yy + ys; y := yy + ys;
result := true; result := true;
exit; exit;
NotFoundBmp: NotFoundBmp:
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindBitmapSpiral(bitmap: TMufasaBitmap; var x, y: Integer; function TMFinder.FindBitmapSpiral(bitmap: TMufasaBitmap; var x, y: Integer;
@ -1495,7 +1495,7 @@ begin
dX := xe - xs; dX := xe - xs;
dY := ye - ys; dY := ye - ys;
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
//Caculate the row ptrs //Caculate the row ptrs
MainRowdata:= CalculateRowPtrs(PtrData,dy+1); MainRowdata:= CalculateRowPtrs(PtrData,dy+1);
BmpRowData:= CalculateRowPtrs(bitmap); BmpRowData:= CalculateRowPtrs(bitmap);
@ -1524,14 +1524,14 @@ begin
end; end;
//We did find the Bmp, otherwise we would be at the part below //We did find the Bmp, otherwise we would be at the part below
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
x := ClientTPA[i].x + xs; x := ClientTPA[i].x + xs;
y := ClientTPA[i].y + ys; y := ClientTPA[i].y + ys;
result := true; result := true;
exit; exit;
NotFoundBmp: NotFoundBmp:
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindBitmapSpiralTolerance(bitmap: TMufasaBitmap; var x, function TMFinder.FindBitmapSpiralTolerance(bitmap: TMufasaBitmap; var x,
@ -1559,7 +1559,7 @@ begin
dX := xe - xs; dX := xe - xs;
dY := ye - ys; dY := ye - ys;
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
//Caculate the row ptrs //Caculate the row ptrs
MainRowdata:= CalculateRowPtrs(PtrData,dy+1); MainRowdata:= CalculateRowPtrs(PtrData,dy+1);
BmpRowData:= CalculateRowPtrs(bitmap); BmpRowData:= CalculateRowPtrs(bitmap);
@ -1602,7 +1602,7 @@ begin
exit; exit;
NotFoundBmp: NotFoundBmp:
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindBitmapsSpiralTolerance(bitmap: TMufasaBitmap; x, function TMFinder.FindBitmapsSpiralTolerance(bitmap: TMufasaBitmap; x,
@ -1631,7 +1631,7 @@ begin
dX := xe - xs; dX := xe - xs;
dY := ye - ys; dY := ye - ys;
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
//Caculate the row ptrs //Caculate the row ptrs
MainRowdata:= CalculateRowPtrs(PtrData,dy+1); MainRowdata:= CalculateRowPtrs(PtrData,dy+1);
BmpRowData:= CalculateRowPtrs(bitmap); BmpRowData:= CalculateRowPtrs(bitmap);
@ -1680,7 +1680,7 @@ begin
SetLength(Points,FoundC); SetLength(Points,FoundC);
Move(ClientTPA[0], Points[0], FoundC * SizeOf(TPoint)); Move(ClientTPA[0], Points[0], FoundC * SizeOf(TPoint));
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
end; end;
function TMFinder.FindDeformedBitmapToleranceIn(bitmap: TMufasaBitmap; out x, function TMFinder.FindDeformedBitmapToleranceIn(bitmap: TMufasaBitmap; out x,
@ -1715,7 +1715,7 @@ begin
dY := ye - ys; dY := ye - ys;
SearchDx := dX; SearchDx := dX;
SearchDy := dY; SearchDy := dY;
PtrData := TClient(Client).MWindow.ReturnData(xs, ys, dX + 1, dY + 1); PtrData := TClient(Client).IOManager.ReturnData(xs, ys, dX + 1, dY + 1);
//Caculate the row ptrs //Caculate the row ptrs
MainRowdata:= CalculateRowPtrs(PtrData,dy+1); MainRowdata:= CalculateRowPtrs(PtrData,dy+1);
BmpRowData:= CalculateRowPtrs(bitmap); BmpRowData:= CalculateRowPtrs(bitmap);
@ -1775,7 +1775,7 @@ begin
BestPT := Point(xx+xs,yy+ys); BestPT := Point(xx+xs,yy+ys);
if GoodCount = TotalC then if GoodCount = TotalC then
begin; begin;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
x := BestPT.x; x := BestPT.x;
y := BestPT.y; y := BestPT.y;
accuracy:= 1; accuracy:= 1;
@ -1783,7 +1783,7 @@ begin
end; end;
end; end;
end; end;
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
if BestCount = 0 then if BestCount = 0 then
Exit; Exit;
accuracy := BestCount / TotalC; accuracy := BestCount / TotalC;
@ -1880,7 +1880,7 @@ begin
C := DTM.c; C := DTM.c;
// Retreive Client Data. // Retreive Client Data.
PtrData := TClient(Client).MWindow.ReturnData(x1, y1, W + 1, H + 1); PtrData := TClient(Client).IOManager.ReturnData(x1, y1, W + 1, H + 1);
cd := CalculateRowPtrs(PtrData, h + 1); cd := CalculateRowPtrs(PtrData, h + 1);
//writeln(format('w,h: %d, %d', [w,h])); //writeln(format('w,h: %d, %d', [w,h]));
@ -1937,7 +1937,7 @@ begin
end; end;
TheEnd: TheEnd:
TClient(Client).MWindow.FreeReturnData; TClient(Client).IOManager.FreeReturnData;
SetLength(Points, pc); SetLength(Points, pc);
if pc > 0 then if pc > 0 then

View File

@ -471,7 +471,7 @@ begin
bmp.SetSize(w + 2, h + 2); bmp.SetSize(w + 2, h + 2);
// Copy the client to out working bitmap. // Copy the client to out working bitmap.
bmp.CopyClientToBitmap(TClient(Client).MWindow, False, 1{0},1, sx, sy, sx + w - 1, sy + h - 1); bmp.CopyClientToBitmap(TClient(Client).IOManager, False, 1{0},1, sx, sy, sx + w - 1, sy + h - 1);
{$IFDEF OCRSAVEBITMAP} {$IFDEF OCRSAVEBITMAP}
bmp.SaveToFile(OCRDebugPath + 'ocrinit.bmp'); bmp.SaveToFile(OCRDebugPath + 'ocrinit.bmp');