mirror of
https://github.com/moparisthebest/Simba
synced 2025-01-10 21:28:00 -05:00
Woot.
git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@107 3f818213-9676-44b0-a9b4-5e4c4e03d09d
This commit is contained in:
parent
1ff3e33a5e
commit
b970995a3d
@ -33,15 +33,15 @@
|
|||||||
<PackageName Value="LCL"/>
|
<PackageName Value="LCL"/>
|
||||||
</Item2>
|
</Item2>
|
||||||
</RequiredPackages>
|
</RequiredPackages>
|
||||||
<Units Count="130">
|
<Units Count="132">
|
||||||
<Unit0>
|
<Unit0>
|
||||||
<Filename Value="project1.lpr"/>
|
<Filename Value="project1.lpr"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="project1"/>
|
<UnitName Value="project1"/>
|
||||||
<CursorPos X="26" Y="12"/>
|
<CursorPos X="33" Y="12"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="0"/>
|
<EditorIndex Value="0"/>
|
||||||
<UsageCount Value="164"/>
|
<UsageCount Value="166"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit0>
|
</Unit0>
|
||||||
<Unit1>
|
<Unit1>
|
||||||
@ -172,8 +172,8 @@
|
|||||||
<UnitName Value="TestUnit"/>
|
<UnitName Value="TestUnit"/>
|
||||||
<CursorPos X="10" Y="11"/>
|
<CursorPos X="10" Y="11"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="12"/>
|
<EditorIndex Value="14"/>
|
||||||
<UsageCount Value="130"/>
|
<UsageCount Value="132"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit18>
|
</Unit18>
|
||||||
<Unit19>
|
<Unit19>
|
||||||
@ -305,17 +305,17 @@
|
|||||||
<CursorPos X="39" Y="8"/>
|
<CursorPos X="39" Y="8"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="2"/>
|
<EditorIndex Value="2"/>
|
||||||
<UsageCount Value="129"/>
|
<UsageCount Value="131"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit37>
|
</Unit37>
|
||||||
<Unit38>
|
<Unit38>
|
||||||
<Filename Value="../../Units/MMLCore/mufasatypes.pas"/>
|
<Filename Value="../../Units/MMLCore/mufasatypes.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="MufasaTypes"/>
|
<UnitName Value="MufasaTypes"/>
|
||||||
<CursorPos X="15" Y="44"/>
|
<CursorPos X="38" Y="32"/>
|
||||||
<TopLine Value="28"/>
|
<TopLine Value="11"/>
|
||||||
<EditorIndex Value="1"/>
|
<EditorIndex Value="1"/>
|
||||||
<UsageCount Value="129"/>
|
<UsageCount Value="131"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit38>
|
</Unit38>
|
||||||
<Unit39>
|
<Unit39>
|
||||||
@ -331,7 +331,7 @@
|
|||||||
<UnitName Value="files"/>
|
<UnitName Value="files"/>
|
||||||
<CursorPos X="15" Y="76"/>
|
<CursorPos X="15" Y="76"/>
|
||||||
<TopLine Value="47"/>
|
<TopLine Value="47"/>
|
||||||
<UsageCount Value="130"/>
|
<UsageCount Value="132"/>
|
||||||
</Unit40>
|
</Unit40>
|
||||||
<Unit41>
|
<Unit41>
|
||||||
<Filename Value="../../Units/MMLCore/window.pas"/>
|
<Filename Value="../../Units/MMLCore/window.pas"/>
|
||||||
@ -339,7 +339,7 @@
|
|||||||
<UnitName Value="Window"/>
|
<UnitName Value="Window"/>
|
||||||
<CursorPos X="41" Y="243"/>
|
<CursorPos X="41" Y="243"/>
|
||||||
<TopLine Value="228"/>
|
<TopLine Value="228"/>
|
||||||
<UsageCount Value="129"/>
|
<UsageCount Value="131"/>
|
||||||
</Unit41>
|
</Unit41>
|
||||||
<Unit42>
|
<Unit42>
|
||||||
<Filename Value="../../../Documents/lazarus/lcl/forms.pp"/>
|
<Filename Value="../../../Documents/lazarus/lcl/forms.pp"/>
|
||||||
@ -353,8 +353,8 @@
|
|||||||
<UnitName Value="CompTypes"/>
|
<UnitName Value="CompTypes"/>
|
||||||
<CursorPos X="35" Y="727"/>
|
<CursorPos X="35" Y="727"/>
|
||||||
<TopLine Value="712"/>
|
<TopLine Value="712"/>
|
||||||
<EditorIndex Value="7"/>
|
<EditorIndex Value="9"/>
|
||||||
<UsageCount Value="27"/>
|
<UsageCount Value="28"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit43>
|
</Unit43>
|
||||||
<Unit44>
|
<Unit44>
|
||||||
@ -377,7 +377,7 @@
|
|||||||
<UnitName Value="finder"/>
|
<UnitName Value="finder"/>
|
||||||
<CursorPos X="79" Y="29"/>
|
<CursorPos X="79" Y="29"/>
|
||||||
<TopLine Value="15"/>
|
<TopLine Value="15"/>
|
||||||
<UsageCount Value="122"/>
|
<UsageCount Value="124"/>
|
||||||
</Unit46>
|
</Unit46>
|
||||||
<Unit47>
|
<Unit47>
|
||||||
<Filename Value="../../../lazarus/lcl/graphics.pp"/>
|
<Filename Value="../../../lazarus/lcl/graphics.pp"/>
|
||||||
@ -392,7 +392,7 @@
|
|||||||
<UnitName Value="MMLThread"/>
|
<UnitName Value="MMLThread"/>
|
||||||
<CursorPos X="10" Y="62"/>
|
<CursorPos X="10" Y="62"/>
|
||||||
<TopLine Value="50"/>
|
<TopLine Value="50"/>
|
||||||
<UsageCount Value="120"/>
|
<UsageCount Value="122"/>
|
||||||
</Unit48>
|
</Unit48>
|
||||||
<Unit49>
|
<Unit49>
|
||||||
<Filename Value="../../../Documents/fpc/rtl/objpas/classes/classesh.inc"/>
|
<Filename Value="../../../Documents/fpc/rtl/objpas/classes/classesh.inc"/>
|
||||||
@ -404,10 +404,10 @@
|
|||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="mmlpsthread"/>
|
<UnitName Value="mmlpsthread"/>
|
||||||
<CursorPos X="28" Y="138"/>
|
<CursorPos X="7" Y="75"/>
|
||||||
<TopLine Value="123"/>
|
<TopLine Value="61"/>
|
||||||
<EditorIndex Value="8"/>
|
<EditorIndex Value="10"/>
|
||||||
<UsageCount Value="118"/>
|
<UsageCount Value="120"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit50>
|
</Unit50>
|
||||||
<Unit51>
|
<Unit51>
|
||||||
@ -515,10 +515,10 @@
|
|||||||
</Unit65>
|
</Unit65>
|
||||||
<Unit66>
|
<Unit66>
|
||||||
<Filename Value="../../Units/MMLAddon/PSInc/pscompile.inc"/>
|
<Filename Value="../../Units/MMLAddon/PSInc/pscompile.inc"/>
|
||||||
<CursorPos X="42" Y="25"/>
|
<CursorPos X="24" Y="25"/>
|
||||||
<TopLine Value="4"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="9"/>
|
<EditorIndex Value="11"/>
|
||||||
<UsageCount Value="33"/>
|
<UsageCount Value="34"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit66>
|
</Unit66>
|
||||||
<Unit67>
|
<Unit67>
|
||||||
@ -539,7 +539,7 @@
|
|||||||
<UnitName Value="bitmaps"/>
|
<UnitName Value="bitmaps"/>
|
||||||
<CursorPos X="31" Y="430"/>
|
<CursorPos X="31" Y="430"/>
|
||||||
<TopLine Value="419"/>
|
<TopLine Value="419"/>
|
||||||
<UsageCount Value="108"/>
|
<UsageCount Value="110"/>
|
||||||
</Unit69>
|
</Unit69>
|
||||||
<Unit70>
|
<Unit70>
|
||||||
<Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpcanvas.pp"/>
|
<Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpcanvas.pp"/>
|
||||||
@ -557,9 +557,9 @@
|
|||||||
<Unit72>
|
<Unit72>
|
||||||
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/bitmap.inc"/>
|
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/bitmap.inc"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<CursorPos X="30" Y="34"/>
|
<CursorPos X="11" Y="61"/>
|
||||||
<TopLine Value="22"/>
|
<TopLine Value="65"/>
|
||||||
<UsageCount Value="107"/>
|
<UsageCount Value="109"/>
|
||||||
</Unit72>
|
</Unit72>
|
||||||
<Unit73>
|
<Unit73>
|
||||||
<Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpcanvas.inc"/>
|
<Filename Value="../../../FPC/FPCCheckout/packages/fcl-image/src/fpcanvas.inc"/>
|
||||||
@ -691,7 +691,7 @@
|
|||||||
<UnitName Value="colour_conv"/>
|
<UnitName Value="colour_conv"/>
|
||||||
<CursorPos X="11" Y="148"/>
|
<CursorPos X="11" Y="148"/>
|
||||||
<TopLine Value="140"/>
|
<TopLine Value="140"/>
|
||||||
<UsageCount Value="90"/>
|
<UsageCount Value="92"/>
|
||||||
</Unit92>
|
</Unit92>
|
||||||
<Unit93>
|
<Unit93>
|
||||||
<Filename Value="../../../cogat/Units/CogatUnits/compcolors.pas"/>
|
<Filename Value="../../../cogat/Units/CogatUnits/compcolors.pas"/>
|
||||||
@ -750,7 +750,7 @@
|
|||||||
<UnitName Value="plugins"/>
|
<UnitName Value="plugins"/>
|
||||||
<CursorPos X="86" Y="128"/>
|
<CursorPos X="86" Y="128"/>
|
||||||
<TopLine Value="128"/>
|
<TopLine Value="128"/>
|
||||||
<UsageCount Value="84"/>
|
<UsageCount Value="86"/>
|
||||||
</Unit101>
|
</Unit101>
|
||||||
<Unit102>
|
<Unit102>
|
||||||
<Filename Value="../../../Compilertje/Units/CogatUnits/compfiles.pas"/>
|
<Filename Value="../../../Compilertje/Units/CogatUnits/compfiles.pas"/>
|
||||||
@ -832,20 +832,20 @@
|
|||||||
<Unit114>
|
<Unit114>
|
||||||
<Filename Value="../../../cogat/Units/CogatUnits/compdtm.pas"/>
|
<Filename Value="../../../cogat/Units/CogatUnits/compdtm.pas"/>
|
||||||
<UnitName Value="compDTM"/>
|
<UnitName Value="compDTM"/>
|
||||||
<CursorPos X="1" Y="133"/>
|
<CursorPos X="9" Y="79"/>
|
||||||
<TopLine Value="118"/>
|
<TopLine Value="61"/>
|
||||||
<EditorIndex Value="5"/>
|
<EditorIndex Value="6"/>
|
||||||
<UsageCount Value="22"/>
|
<UsageCount Value="23"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit114>
|
</Unit114>
|
||||||
<Unit115>
|
<Unit115>
|
||||||
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<IsPartOfProject Value="True"/>
|
<IsPartOfProject Value="True"/>
|
||||||
<UnitName Value="dtm"/>
|
<UnitName Value="dtm"/>
|
||||||
<CursorPos X="23" Y="395"/>
|
<CursorPos X="1" Y="753"/>
|
||||||
<TopLine Value="357"/>
|
<TopLine Value="498"/>
|
||||||
<EditorIndex Value="3"/>
|
<EditorIndex Value="3"/>
|
||||||
<UsageCount Value="65"/>
|
<UsageCount Value="67"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit115>
|
</Unit115>
|
||||||
<Unit116>
|
<Unit116>
|
||||||
@ -861,8 +861,8 @@
|
|||||||
<UnitName Value="colourpicker"/>
|
<UnitName Value="colourpicker"/>
|
||||||
<CursorPos X="53" Y="33"/>
|
<CursorPos X="53" Y="33"/>
|
||||||
<TopLine Value="15"/>
|
<TopLine Value="15"/>
|
||||||
<EditorIndex Value="10"/>
|
<EditorIndex Value="12"/>
|
||||||
<UsageCount Value="61"/>
|
<UsageCount Value="63"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit117>
|
</Unit117>
|
||||||
<Unit118>
|
<Unit118>
|
||||||
@ -888,7 +888,7 @@
|
|||||||
<UnitName Value="windowselector"/>
|
<UnitName Value="windowselector"/>
|
||||||
<CursorPos X="76" Y="83"/>
|
<CursorPos X="76" Y="83"/>
|
||||||
<TopLine Value="65"/>
|
<TopLine Value="65"/>
|
||||||
<UsageCount Value="51"/>
|
<UsageCount Value="53"/>
|
||||||
</Unit120>
|
</Unit120>
|
||||||
<Unit121>
|
<Unit121>
|
||||||
<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"/>
|
||||||
@ -922,23 +922,25 @@
|
|||||||
<UnitName Value="dtmutil"/>
|
<UnitName Value="dtmutil"/>
|
||||||
<CursorPos X="1" Y="13"/>
|
<CursorPos X="1" Y="13"/>
|
||||||
<TopLine Value="1"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="4"/>
|
<EditorIndex Value="5"/>
|
||||||
<UsageCount Value="38"/>
|
<UsageCount Value="40"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit125>
|
</Unit125>
|
||||||
<Unit126>
|
<Unit126>
|
||||||
<Filename Value="../../../cogat/Units/CogatUnits/compmaths.pas"/>
|
<Filename Value="../../../cogat/Units/CogatUnits/compmaths.pas"/>
|
||||||
<UnitName Value="CompMaths"/>
|
<UnitName Value="CompMaths"/>
|
||||||
<CursorPos X="1" Y="226"/>
|
<CursorPos X="15" Y="640"/>
|
||||||
<TopLine Value="211"/>
|
<TopLine Value="636"/>
|
||||||
|
<EditorIndex Value="7"/>
|
||||||
<UsageCount Value="11"/>
|
<UsageCount Value="11"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
</Unit126>
|
</Unit126>
|
||||||
<Unit127>
|
<Unit127>
|
||||||
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/dtm.inc"/>
|
<Filename Value="../../Units/MMLAddon/PSInc/Wrappers/dtm.inc"/>
|
||||||
<CursorPos X="1" Y="26"/>
|
<CursorPos X="53" Y="14"/>
|
||||||
<TopLine Value="4"/>
|
<TopLine Value="1"/>
|
||||||
<EditorIndex Value="11"/>
|
<EditorIndex Value="13"/>
|
||||||
<UsageCount Value="17"/>
|
<UsageCount Value="18"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit127>
|
</Unit127>
|
||||||
<Unit128>
|
<Unit128>
|
||||||
@ -953,124 +955,149 @@
|
|||||||
<UnitName Value="CompScript"/>
|
<UnitName Value="CompScript"/>
|
||||||
<CursorPos X="1" Y="529"/>
|
<CursorPos X="1" Y="529"/>
|
||||||
<TopLine Value="508"/>
|
<TopLine Value="508"/>
|
||||||
<EditorIndex Value="6"/>
|
<EditorIndex Value="8"/>
|
||||||
<UsageCount Value="13"/>
|
<UsageCount Value="14"/>
|
||||||
<Loaded Value="True"/>
|
<Loaded Value="True"/>
|
||||||
</Unit129>
|
</Unit129>
|
||||||
|
<Unit130>
|
||||||
|
<Filename Value="../../../../Documents/fpc/rtl/objpas/math.pp"/>
|
||||||
|
<UnitName Value="math"/>
|
||||||
|
<CursorPos X="40" Y="34"/>
|
||||||
|
<TopLine Value="19"/>
|
||||||
|
<UsageCount Value="10"/>
|
||||||
|
</Unit130>
|
||||||
|
<Unit131>
|
||||||
|
<Filename Value="../../Units/MMLCore/mmath.pas"/>
|
||||||
|
<IsPartOfProject Value="True"/>
|
||||||
|
<UnitName Value="mmath"/>
|
||||||
|
<CursorPos X="35" Y="45"/>
|
||||||
|
<TopLine Value="9"/>
|
||||||
|
<EditorIndex Value="4"/>
|
||||||
|
<UsageCount Value="20"/>
|
||||||
|
<Loaded Value="True"/>
|
||||||
|
</Unit131>
|
||||||
</Units>
|
</Units>
|
||||||
<JumpHistory Count="28" HistoryIndex="27">
|
<JumpHistory Count="30" HistoryIndex="29">
|
||||||
<Position1>
|
<Position1>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
||||||
<Caret Line="196" Column="48" TopLine="196"/>
|
<Caret Line="8" Column="76" TopLine="1"/>
|
||||||
</Position1>
|
</Position1>
|
||||||
<Position2>
|
<Position2>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
||||||
<Caret Line="69" Column="3" TopLine="54"/>
|
<Caret Line="105" Column="38" TopLine="90"/>
|
||||||
</Position2>
|
</Position2>
|
||||||
<Position3>
|
<Position3>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../../cogat/compscript.pas"/>
|
||||||
<Caret Line="68" Column="1" TopLine="54"/>
|
<Caret Line="38" Column="12" TopLine="23"/>
|
||||||
</Position3>
|
</Position3>
|
||||||
<Position4>
|
<Position4>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../../cogat/compscript.pas"/>
|
||||||
<Caret Line="147" Column="4" TopLine="132"/>
|
<Caret Line="465" Column="24" TopLine="450"/>
|
||||||
</Position4>
|
</Position4>
|
||||||
<Position5>
|
<Position5>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../../cogat/compscript.pas"/>
|
||||||
<Caret Line="16" Column="37" TopLine="2"/>
|
<Caret Line="472" Column="24" TopLine="450"/>
|
||||||
</Position5>
|
</Position5>
|
||||||
<Position6>
|
<Position6>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
||||||
<Caret Line="191" Column="14" TopLine="171"/>
|
<Caret Line="176" Column="20" TopLine="171"/>
|
||||||
</Position6>
|
</Position6>
|
||||||
<Position7>
|
<Position7>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="24" Column="51" TopLine="19"/>
|
<Caret Line="2" Column="46" TopLine="1"/>
|
||||||
</Position7>
|
</Position7>
|
||||||
<Position8>
|
<Position8>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
||||||
<Caret Line="189" Column="1" TopLine="171"/>
|
<Caret Line="138" Column="22" TopLine="122"/>
|
||||||
</Position8>
|
</Position8>
|
||||||
<Position9>
|
<Position9>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLAddon/PSInc/pscompile.inc"/>
|
||||||
<Caret Line="10" Column="50" TopLine="9"/>
|
<Caret Line="18" Column="30" TopLine="1"/>
|
||||||
</Position9>
|
</Position9>
|
||||||
<Position10>
|
<Position10>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../../cogat/Units/CogatUnits/compdtm.pas"/>
|
||||||
<Caret Line="25" Column="41" TopLine="10"/>
|
<Caret Line="61" Column="24" TopLine="41"/>
|
||||||
</Position10>
|
</Position10>
|
||||||
<Position11>
|
<Position11>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="27" Column="47" TopLine="12"/>
|
<Caret Line="8" Column="27" TopLine="1"/>
|
||||||
</Position11>
|
</Position11>
|
||||||
<Position12>
|
<Position12>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
||||||
<Caret Line="236" Column="7" TopLine="231"/>
|
<Caret Line="49" Column="5" TopLine="31"/>
|
||||||
</Position12>
|
</Position12>
|
||||||
<Position13>
|
<Position13>
|
||||||
<Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
|
<Filename Value="../../Units/MMLAddon/PSInc/pscompile.inc"/>
|
||||||
<Caret Line="34" Column="27" TopLine="13"/>
|
<Caret Line="63" Column="30" TopLine="48"/>
|
||||||
</Position13>
|
</Position13>
|
||||||
<Position14>
|
<Position14>
|
||||||
<Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="87" Column="10" TopLine="72"/>
|
<Caret Line="672" Column="16" TopLine="306"/>
|
||||||
</Position14>
|
</Position14>
|
||||||
<Position15>
|
<Position15>
|
||||||
<Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="28" Column="33" TopLine="13"/>
|
<Caret Line="792" Column="34" TopLine="788"/>
|
||||||
</Position15>
|
</Position15>
|
||||||
<Position16>
|
<Position16>
|
||||||
<Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="105" Column="37" TopLine="90"/>
|
<Caret Line="488" Column="4" TopLine="492"/>
|
||||||
</Position16>
|
</Position16>
|
||||||
<Position17>
|
<Position17>
|
||||||
<Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="156" Column="39" TopLine="141"/>
|
<Caret Line="718" Column="4" TopLine="695"/>
|
||||||
</Position17>
|
</Position17>
|
||||||
<Position18>
|
<Position18>
|
||||||
<Filename Value="../../Units/MMLAddon/colourpicker.pas"/>
|
<Filename Value="../../../cogat/Units/CogatUnits/compdtm.pas"/>
|
||||||
<Caret Line="30" Column="49" TopLine="15"/>
|
<Caret Line="79" Column="9" TopLine="61"/>
|
||||||
</Position18>
|
</Position18>
|
||||||
<Position19>
|
<Position19>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../../cogat/Units/CogatUnits/compmaths.pas"/>
|
||||||
<Caret Line="8" Column="76" TopLine="1"/>
|
<Caret Line="17" Column="44" TopLine="1"/>
|
||||||
</Position19>
|
</Position19>
|
||||||
<Position20>
|
<Position20>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../../cogat/Units/CogatUnits/compmaths.pas"/>
|
||||||
<Caret Line="105" Column="38" TopLine="90"/>
|
<Caret Line="53" Column="22" TopLine="38"/>
|
||||||
</Position20>
|
</Position20>
|
||||||
<Position21>
|
<Position21>
|
||||||
<Filename Value="../../../cogat/compscript.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="38" Column="12" TopLine="23"/>
|
<Caret Line="629" Column="32" TopLine="594"/>
|
||||||
</Position21>
|
</Position21>
|
||||||
<Position22>
|
<Position22>
|
||||||
<Filename Value="../../../cogat/compscript.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="465" Column="24" TopLine="450"/>
|
<Caret Line="89" Column="25" TopLine="74"/>
|
||||||
</Position22>
|
</Position22>
|
||||||
<Position23>
|
<Position23>
|
||||||
<Filename Value="../../../cogat/compscript.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="472" Column="24" TopLine="450"/>
|
<Caret Line="228" Column="81" TopLine="224"/>
|
||||||
</Position23>
|
</Position23>
|
||||||
<Position24>
|
<Position24>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="176" Column="20" TopLine="171"/>
|
<Caret Line="80" Column="60" TopLine="74"/>
|
||||||
</Position24>
|
</Position24>
|
||||||
<Position25>
|
<Position25>
|
||||||
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="2" Column="46" TopLine="1"/>
|
<Caret Line="8" Column="66" TopLine="1"/>
|
||||||
</Position25>
|
</Position25>
|
||||||
<Position26>
|
<Position26>
|
||||||
<Filename Value="../../Units/MMLAddon/mmlpsthread.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="138" Column="22" TopLine="122"/>
|
<Caret Line="389" Column="16" TopLine="374"/>
|
||||||
</Position26>
|
</Position26>
|
||||||
<Position27>
|
<Position27>
|
||||||
<Filename Value="../../Units/MMLAddon/PSInc/pscompile.inc"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="18" Column="30" TopLine="1"/>
|
<Caret Line="21" Column="28" TopLine="21"/>
|
||||||
</Position27>
|
</Position27>
|
||||||
<Position28>
|
<Position28>
|
||||||
<Filename Value="../../../cogat/Units/CogatUnits/compdtm.pas"/>
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
<Caret Line="61" Column="24" TopLine="41"/>
|
<Caret Line="26" Column="28" TopLine="21"/>
|
||||||
</Position28>
|
</Position28>
|
||||||
|
<Position29>
|
||||||
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
|
<Caret Line="32" Column="30" TopLine="21"/>
|
||||||
|
</Position29>
|
||||||
|
<Position30>
|
||||||
|
<Filename Value="../../Units/MMLCore/dtm.pas"/>
|
||||||
|
<Caret Line="37" Column="29" TopLine="21"/>
|
||||||
|
</Position30>
|
||||||
</JumpHistory>
|
</JumpHistory>
|
||||||
</ProjectOptions>
|
</ProjectOptions>
|
||||||
<CompilerOptions>
|
<CompilerOptions>
|
||||||
|
@ -9,7 +9,7 @@ uses
|
|||||||
Interfaces, // this includes the LCL widgetset
|
Interfaces, // this includes the LCL widgetset
|
||||||
Forms, LResources, Window, files, MufasaTypes, Client, TestUnit, finder,
|
Forms, LResources, Window, files, MufasaTypes, Client, TestUnit, finder,
|
||||||
MMLThread, mmlpsthread, bitmaps, colour_conv, plugins, DTM, colourpicker,
|
MMLThread, mmlpsthread, bitmaps, colour_conv, plugins, DTM, colourpicker,
|
||||||
windowselector, dtmutil;
|
windowselector, dtmutil, mmath;
|
||||||
|
|
||||||
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
|
{$IFDEF WINDOWS}{$R project1.rc}{$ENDIF}
|
||||||
|
|
||||||
|
@ -9,27 +9,28 @@ const
|
|||||||
|
|
||||||
var
|
var
|
||||||
ppdtm: pdtm;
|
ppdtm: pdtm;
|
||||||
w,h,x,y,dtm: integer;
|
w,h,x,y,dtm,i: integer;
|
||||||
|
|
||||||
|
p,pp: TPointArray;
|
||||||
|
c,t,asz,ash: TIntegerArray;
|
||||||
|
|
||||||
begin
|
begin
|
||||||
|
p := [Point(0,0), Point(1,1)];
|
||||||
|
c := [clWhite, clWhite];
|
||||||
|
t := [0, 0];
|
||||||
|
asz := [0, 0];
|
||||||
|
ash := [dtm_Rectangle, dtm_Rectangle];
|
||||||
setlength(ppdtm.p,2);
|
setlength(ppdtm.p,2);
|
||||||
setlength(ppdtm.c,2);
|
setlength(ppdtm.c,2);
|
||||||
setlength(ppdtm.t,2);
|
setlength(ppdtm.t,2);
|
||||||
setlength(ppdtm.asz,2);
|
setlength(ppdtm.asz,2);
|
||||||
setlength(ppdtm.ash,2);
|
setlength(ppdtm.ash,2);
|
||||||
|
|
||||||
ppdtm.p[0].x := 0;
|
ppdtm.p := p;
|
||||||
ppdtm.p[0].y := 0;
|
ppdtm.c := c;
|
||||||
ppdtm.c[0] := 16777215;
|
ppdtm.t := t;
|
||||||
ppdtm.t[0] := 0;
|
ppdtm.asz := asz;
|
||||||
ppdtm.asz[0] := 0;
|
ppdtm.ash := ash;
|
||||||
ppdtm.asz[0] := dtm_Rectangle;
|
|
||||||
|
|
||||||
ppdtm.p[1].x := 1;
|
|
||||||
ppdtm.p[1].y := 1;
|
|
||||||
ppdtm.c[1] := 16777215;
|
|
||||||
ppdtm.t[1] := 0;
|
|
||||||
ppdtm.asz[1] := 0;
|
|
||||||
ppdtm.asz[1] := dtm_Rectangle;
|
|
||||||
|
|
||||||
dtm := AddpDTM(ppdtm);
|
dtm := AddpDTM(ppdtm);
|
||||||
|
|
||||||
@ -40,4 +41,10 @@ begin
|
|||||||
movemouse(x,y);
|
movemouse(x,y);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
if FindDTMs(dtm, p, 0, 0, w-1, h-1) then
|
||||||
|
begin
|
||||||
|
writeln('Found ' + inttostr(length(p)) + ' DTM(s). First one at ' +
|
||||||
|
inttostr(p[0].x) + ', ' + inttostr(p[0].y));
|
||||||
|
movemouse(p[0].x,p[0].y);
|
||||||
|
end;
|
||||||
end.
|
end.
|
||||||
|
@ -3,6 +3,13 @@ begin
|
|||||||
Result := CurrThread.Client.MDTM.FindDTM(DTM, x, y, x1, y1, x2, y2);
|
Result := CurrThread.Client.MDTM.FindDTM(DTM, x, y, x1, y1, x2, y2);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function ps_FindDTMs(DTM: Integer; var p: TPointArray; x1, y1, x2, y2: Integer): Boolean;
|
||||||
|
begin
|
||||||
|
Result := CurrThread.Client.MDTM.FindDTMs(DTM, p, x1, y1, x2, y2);
|
||||||
|
end;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
function ps_DTMFromString(DTMString: String): Integer;
|
function ps_DTMFromString(DTMString: String): Integer;
|
||||||
var
|
var
|
||||||
dtm: pDTM;
|
dtm: pDTM;
|
||||||
|
@ -22,6 +22,7 @@ Sender.AddFunction(@tDTMTopDTM, 'Function tDTMTopDTM(Const DTM: TDTM): pDTM;');
|
|||||||
Sender.AddFunction(@ps_DTMFromString, 'function DTMFromString(DTMString: String): Integer;');
|
Sender.AddFunction(@ps_DTMFromString, 'function DTMFromString(DTMString: String): Integer;');
|
||||||
Sender.AddFunction(@ps_FreeDTM, 'procedure FreeDTM(DTM: Integer);');
|
Sender.AddFunction(@ps_FreeDTM, 'procedure FreeDTM(DTM: Integer);');
|
||||||
Sender.AddFunction(@ps_FindDTM, 'function FindDTM(DTM: Integer; var x, y: Integer; x1, y1, x2, y2: Integer): Boolean;');
|
Sender.AddFunction(@ps_FindDTM, 'function FindDTM(DTM: Integer; var x, y: Integer; x1, y1, x2, y2: Integer): Boolean;');
|
||||||
|
Sender.AddFunction(@ps_FindDTMs, 'function FindDTMs(DTM: Integer; var p: TPointArray; x1, y1, x2, y2: Integer): Boolean;');
|
||||||
Sender.AddFunction(@ps_addDTM, 'function AddDTM(d: TDTM): Integer;');
|
Sender.AddFunction(@ps_addDTM, 'function AddDTM(d: TDTM): Integer;');
|
||||||
Sender.AddFunction(@ps_addpDTM, 'function AddpDTM(d: pDTM): Integer;');
|
Sender.AddFunction(@ps_addpDTM, 'function AddpDTM(d: pDTM): Integer;');
|
||||||
|
|
||||||
@ -30,6 +31,7 @@ sender.AddFunction(@power,'function pow(base,exponent : extended) : extended');
|
|||||||
Sender.AddFunction(@max,'function Max(a, b: Integer): Integer;');
|
Sender.AddFunction(@max,'function Max(a, b: Integer): Integer;');
|
||||||
Sender.AddFunction(@min,'function Min(a, b: Integer): Integer;');
|
Sender.AddFunction(@min,'function Min(a, b: Integer): Integer;');
|
||||||
Sender.AddFunction(@pssqr,'function Sqr(e : extended) : extended;');
|
Sender.AddFunction(@pssqr,'function Sqr(e : extended) : extended;');
|
||||||
|
Sender.AddFunction(@point,'function Point(x,y:integer) : TPoint;');
|
||||||
|
|
||||||
Sender.AddFunction(@Freeze, 'function freeze:boolean;');
|
Sender.AddFunction(@Freeze, 'function freeze:boolean;');
|
||||||
Sender.AddFunction(@Unfreeze, 'function unfreeze: boolean;');
|
Sender.AddFunction(@Unfreeze, 'function unfreeze: boolean;');
|
||||||
|
@ -18,7 +18,7 @@ type
|
|||||||
|
|
||||||
function FindDTM(DTM: Integer; var x, y: Integer; x1, y1, x2,
|
function FindDTM(DTM: Integer; var x, y: Integer; x1, y1, x2,
|
||||||
y2: Integer): Boolean;
|
y2: Integer): Boolean;
|
||||||
{ function FindDTMs(DTM: Integer; var Points: TPointArray; x1, y1, x2,
|
function FindDTMs(DTM: Integer; var Points: TPointArray; x1, y1, x2,
|
||||||
y2: Integer): Boolean;
|
y2: Integer): Boolean;
|
||||||
function FindDTMRotated(DTM: Integer; var x, y: Integer; x1, y1, x2,
|
function FindDTMRotated(DTM: Integer; var x, y: Integer; x1, y1, x2,
|
||||||
y2: Integer; sAngle, eAngle, aStep: Extended;
|
y2: Integer; sAngle, eAngle, aStep: Extended;
|
||||||
@ -26,9 +26,18 @@ type
|
|||||||
function FindDTMsRotated(DTM: Integer; var Points: TPointArray; x1,
|
function FindDTMsRotated(DTM: Integer; var Points: TPointArray; x1,
|
||||||
y1, x2, y2: Integer; sAngle, eAngle,
|
y1, x2, y2: Integer; sAngle, eAngle,
|
||||||
aStep: Extended; var aFound: T2DExtendedArray)
|
aStep: Extended; var aFound: T2DExtendedArray)
|
||||||
: Boolean; }
|
: Boolean;
|
||||||
function pFindDTM(DTM: pDTM; var x, y: Integer; x1, y1, x2, y2:
|
function pFindDTM(DTM: pDTM; var x, y: Integer; x1, y1, x2, y2:
|
||||||
Integer): Boolean;
|
Integer): Boolean;
|
||||||
|
function pFindDTMs(DTM: pDTM; var Points: TPointArray; x1, y1, x2,
|
||||||
|
y2: Integer): Boolean;
|
||||||
|
function pFindDTMRotated(DTM: pDTM; var x, y: Integer; x1, y1, x2,
|
||||||
|
y2: Integer; sAngle, eAngle, aStep: Extended;
|
||||||
|
var aFound: Extended): Boolean;
|
||||||
|
function pFindDTMsRotated(DTM: pDTM; var Points: TPointArray; x1,
|
||||||
|
y1, x2, y2: Integer; sAngle, eAngle,
|
||||||
|
aStep: Extended; var aFound: T2DExtendedArray)
|
||||||
|
: Boolean;
|
||||||
|
|
||||||
constructor Create(Owner: TObject);
|
constructor Create(Owner: TObject);
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -43,6 +52,7 @@ type
|
|||||||
DTMList: Array Of pDTM;
|
DTMList: Array Of pDTM;
|
||||||
FreeSpots: Array Of Integer;
|
FreeSpots: Array Of Integer;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
const
|
const
|
||||||
dtm_Rectangle = 0;
|
dtm_Rectangle = 0;
|
||||||
dtm_Cross = 1;
|
dtm_Cross = 1;
|
||||||
@ -215,6 +225,31 @@ Begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
End;
|
End;
|
||||||
|
|
||||||
|
function RotatePoints(P: TPointArray; A, cx, cy: Extended): TPointArray; inline;
|
||||||
|
|
||||||
|
var
|
||||||
|
I, L: Integer;
|
||||||
|
|
||||||
|
begin
|
||||||
|
L := High(P);
|
||||||
|
SetLength(Result, L + 1);
|
||||||
|
for I := 0 to L do
|
||||||
|
begin
|
||||||
|
Result[I].X := Round(cx + cos(A) * (p[i].x - cx) - sin(A) * (p[i].y - cy));
|
||||||
|
Result[I].Y := Round(cy + sin(A) * (p[i].x - cx) + cos(A) * (p[i].y - cy));
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
|
{/\
|
||||||
|
Rotates the given point (p) by A (in radians) around the point defined by cx, cy.
|
||||||
|
/\}
|
||||||
|
|
||||||
|
function RotatePoint(p: TPoint; angle, mx, my: Extended): TPoint; inline;
|
||||||
|
|
||||||
|
begin
|
||||||
|
Result.X := Round(mx + cos(angle) * (p.x - mx) - sin(angle) * (p.y - my));
|
||||||
|
Result.Y := Round(my + sin(angle) * (p.x - mx) + cos(angle) * (p.y- my));
|
||||||
|
end;
|
||||||
|
|
||||||
function HexToInt(HexNum: string): LongInt;inline;
|
function HexToInt(HexNum: string): LongInt;inline;
|
||||||
begin
|
begin
|
||||||
@ -390,8 +425,8 @@ begin
|
|||||||
MaxSubPointDist.Y := Max(DTM.p[I].y, MaxSubPointDist.Y);
|
MaxSubPointDist.Y := Max(DTM.p[I].y, MaxSubPointDist.Y);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
X2 := X2 - MaxSubPointDist.X;
|
X2 := X2 - MaxSubPointDist.X - 1;
|
||||||
Y2 := Y2 - MaxSubPointDist.Y;
|
Y2 := Y2 - MaxSubPointDist.Y - 1;
|
||||||
X1 := X1 + MaxSubPointDist.X;
|
X1 := X1 + MaxSubPointDist.X;
|
||||||
Y1 := Y1 + MaxSubPointDist.Y;
|
Y1 := Y1 + MaxSubPointDist.Y;
|
||||||
{If X2 > X1 then
|
{If X2 > X1 then
|
||||||
@ -442,5 +477,369 @@ begin
|
|||||||
Result := False;
|
Result := False;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
{/\
|
||||||
|
Tries to find the given DTM (index). Will return true if it has found one or more
|
||||||
|
DTM's. All the occurances are stored in the Points (TPointArray)
|
||||||
|
/\}
|
||||||
|
|
||||||
|
function TMDTM.FindDTMs(DTM: Integer; Var Points: TPointArray; x1, y1, x2, y2: Integer): Boolean;
|
||||||
|
Var
|
||||||
|
temp: pDTM;
|
||||||
|
Begin
|
||||||
|
If GetDTM(DTM, temp) Then
|
||||||
|
Result := pFindDTMs(temp, Points, x1, y1, x2, y2)
|
||||||
|
Else
|
||||||
|
Begin
|
||||||
|
SetLength(Points, 0);
|
||||||
|
Result := False;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
{/\
|
||||||
|
Tries to find the given pDTM. Will return true if it has found one or more
|
||||||
|
DTM's. All the occurances are stored in the Points (TPointArray)
|
||||||
|
/\}
|
||||||
|
|
||||||
|
Function TMDTM.pFindDTMs(DTM: pDTM; Var Points: TPointArray; x1, y1, x2, y2: Integer): Boolean;
|
||||||
|
|
||||||
|
Var
|
||||||
|
mP: TPointArray;
|
||||||
|
I, J, H, dH: Integer;
|
||||||
|
Found: Boolean;
|
||||||
|
TempTP: TPoint;
|
||||||
|
MaxSubPointDist: TPoint;
|
||||||
|
|
||||||
|
Begin
|
||||||
|
Result := False;
|
||||||
|
MaxSubPointDist := Point(0,0);
|
||||||
|
SetLength(Points, 0);
|
||||||
|
For I := 1 To High(DTM.p) Do
|
||||||
|
Begin
|
||||||
|
DTM.p[I].x := DTM.p[I].x - DTM.p[0].x;
|
||||||
|
DTM.p[I].y := DTM.p[I].y - DTM.p[0].y;
|
||||||
|
End;
|
||||||
|
|
||||||
|
X2 := X2 - MaxSubPointDist.X - 1;
|
||||||
|
Y2 := Y2 - MaxSubPointDist.Y - 1;
|
||||||
|
X1 := X1 + MaxSubPointDist.X;
|
||||||
|
Y1 := Y1 + MaxSubPointDist.Y;
|
||||||
|
{If X2 > X1 then
|
||||||
|
//Exit;
|
||||||
|
If Y2 > Y1 then }
|
||||||
|
//Exit;
|
||||||
|
// Will make sure there are no out of bounds exceptions, and will make it faster
|
||||||
|
|
||||||
|
with TClient(Client) do
|
||||||
|
begin
|
||||||
|
MWindow.Freeze();
|
||||||
|
|
||||||
|
MFinder.FindColorsTolerance(mP, DTM.c[Low(DTM.c)], x1, y1, x2, y2,
|
||||||
|
DTM.t[Low(DTM.t)]);
|
||||||
|
MWindow.GetDimensions(H, dH);
|
||||||
|
end;
|
||||||
|
H := High(mP);
|
||||||
|
dH := High(DTM.p);
|
||||||
|
For I := 0 To H Do
|
||||||
|
Begin
|
||||||
|
Found := True;
|
||||||
|
For J := 1 To dH Do
|
||||||
|
Begin
|
||||||
|
TempTP.X := DTM.p[J].X + mP[I].X;
|
||||||
|
TempTP.Y := DTM.p[J].Y + mP[I].Y;
|
||||||
|
If Not AreaShape(DTM.c[J], DTM.t[J], DTM.asz[J], DTM.ash[J], TempTP) Then
|
||||||
|
Begin
|
||||||
|
Found := False;
|
||||||
|
Break;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
If Found Then
|
||||||
|
Begin
|
||||||
|
Result := True;
|
||||||
|
SetLength(Points, Length(Points) + 1);
|
||||||
|
Points[High(Points)] := mP[I];
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
TClient(Client).MWindow.UnFreeze();
|
||||||
|
Result := Length(Points) > 0;
|
||||||
|
End;
|
||||||
|
|
||||||
|
{/\
|
||||||
|
Tries to find the given DTM (index). If found will put the point the dtm has
|
||||||
|
been found at in x, y and result to true.
|
||||||
|
Will rotate the DTM starting at sAngle, increasing by aStep until eAngle has been reached, or when the DTM has been found.
|
||||||
|
Returns all Angles in an Extended array.
|
||||||
|
/\}
|
||||||
|
|
||||||
|
Function TMDTM.FindDTMRotated(DTM: Integer; Var x, y: Integer; x1, y1, x2, y2: Integer; sAngle, eAngle, aStep: Extended; Var aFound: Extended): Boolean;
|
||||||
|
Var
|
||||||
|
temp: pDTM;
|
||||||
|
Begin
|
||||||
|
If GetDTM(DTM, temp) Then
|
||||||
|
Result := pFindDTMRotated(temp, x, y, x1, y1, x2, y2, sAngle, eAngle, aStep, aFound)
|
||||||
|
Else
|
||||||
|
Begin
|
||||||
|
x := 0;
|
||||||
|
y := 0;
|
||||||
|
aFound := 0.0;
|
||||||
|
Result := False;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
{/\
|
||||||
|
Tries to find the given pDTM. If found will put the point the dtm has
|
||||||
|
been found at in x, y and result to true.
|
||||||
|
Will rotate the DTM starting at sAngle, increasing by aStep until eAngle has been reached, or when the DTM has been found.
|
||||||
|
Returns all Angles in an Extended array.
|
||||||
|
/\}
|
||||||
|
|
||||||
|
Function TMDTM.pFindDTMRotated(DTM: pDTM; Var x, y: Integer; x1, y1, x2, y2: Integer; sAngle, eAngle, aStep: Extended; Var aFound: Extended): Boolean;
|
||||||
|
|
||||||
|
Var
|
||||||
|
mP: TPointArray;
|
||||||
|
I, J, H, dH, R, W: Integer;
|
||||||
|
Angle: Array Of Extended;
|
||||||
|
tAngle: Extended;
|
||||||
|
Found: Boolean;
|
||||||
|
TempTP: TPoint;
|
||||||
|
MaxSubPointDist: TPoint;
|
||||||
|
|
||||||
|
Begin
|
||||||
|
MaxSubPointDist := Point(0,0);
|
||||||
|
For I := 1 To High(DTM.p) Do
|
||||||
|
Begin
|
||||||
|
DTM.p[I].x := DTM.p[I].x - DTM.p[0].x;
|
||||||
|
DTM.p[I].y := DTM.p[I].y - DTM.p[0].y;
|
||||||
|
End;
|
||||||
|
|
||||||
|
X2 := X2 - MaxSubPointDist.X - 1;
|
||||||
|
Y2 := Y2 - MaxSubPointDist.Y - 1;
|
||||||
|
X1 := X1 + MaxSubPointDist.X;
|
||||||
|
Y1 := Y1 + MaxSubPointDist.Y;
|
||||||
|
{If X2 > X1 then
|
||||||
|
//Exit;
|
||||||
|
If Y2 > Y1 then }
|
||||||
|
//Exit;
|
||||||
|
// Will make sure there are no out of bounds exceptions, and will make it faster
|
||||||
|
|
||||||
|
with TClient(Client) do
|
||||||
|
begin
|
||||||
|
MWindow.Freeze();
|
||||||
|
|
||||||
|
MFinder.FindColorsTolerance(mP, DTM.c[Low(DTM.c)], x1, y1, x2, y2,
|
||||||
|
DTM.t[Low(DTM.t)]);
|
||||||
|
MWindow.GetDimensions(H, dH);
|
||||||
|
end;
|
||||||
|
|
||||||
|
H := High(mP);
|
||||||
|
dH := High(DTM.p);
|
||||||
|
For I := 0 To H Do
|
||||||
|
Begin
|
||||||
|
// Use MainPoint's AreaSize and Shape.
|
||||||
|
// For Loop on mP, depending on the AreaShape. Then on all the code beneath
|
||||||
|
// this point, use the var that is retrieved from the for loop.
|
||||||
|
Found := True;
|
||||||
|
SetLength(Angle, 0);
|
||||||
|
Found := True;
|
||||||
|
For J := 1 To dH Do
|
||||||
|
Begin
|
||||||
|
If Length(Angle) = 0 Then
|
||||||
|
Begin
|
||||||
|
tAngle := sAngle;
|
||||||
|
While tAngle <= eAngle Do
|
||||||
|
Begin
|
||||||
|
TempTP.X := DTM.p[J].X + mP[I].X;
|
||||||
|
TempTP.Y := DTM.p[J].Y + mP[I].Y;
|
||||||
|
TempTP := RotatePoint(TempTP, tAngle, mP[I].X, mP[I].Y);
|
||||||
|
If AreaShape(DTM.c[J], DTM.t[J], DTM.asz[J], DTM.ash[J], TempTP) Then
|
||||||
|
Begin
|
||||||
|
SetLength(Angle, Length(Angle) + 1);
|
||||||
|
Angle[High(Angle)] := tAngle;
|
||||||
|
Found := True;
|
||||||
|
End;
|
||||||
|
tAngle := tAngle + aStep;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Found := Length(Angle) > 0;
|
||||||
|
|
||||||
|
For R := 0 To High(Angle) Do
|
||||||
|
Begin
|
||||||
|
TempTP.X := DTM.p[J].X + mP[I].X;
|
||||||
|
TempTP.Y := DTM.p[J].Y + mP[I].Y;
|
||||||
|
TempTP := RotatePoint(TempTP, Angle[R], mP[I].X, mP[I].Y);
|
||||||
|
If Not AreaShape(DTM.c[J], DTM.t[J], DTM.asz[J], DTM.ash[J], TempTP) Then
|
||||||
|
Begin
|
||||||
|
For W := R To High(Angle) - 1 Do
|
||||||
|
Angle[W] := Angle[W + 1];
|
||||||
|
SetLength(Angle, Length(Angle) - 1);
|
||||||
|
If Length(Angle) = 0 Then
|
||||||
|
Begin
|
||||||
|
Found := False;
|
||||||
|
Break;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
If Not Found Then
|
||||||
|
Break;
|
||||||
|
End;
|
||||||
|
|
||||||
|
If Found Then
|
||||||
|
Begin
|
||||||
|
Result := True;
|
||||||
|
x := mP[I].X;
|
||||||
|
y := mP[I].Y;
|
||||||
|
aFound := Angle[0];
|
||||||
|
TClient(Client).MWindow.UnFreeze();
|
||||||
|
Exit;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
TClient(Client).MWindow.UnFreeze();
|
||||||
|
Result := False;
|
||||||
|
End;
|
||||||
|
|
||||||
|
{/\
|
||||||
|
Tries to find the given DTM (index). Will return true if it has found one or more
|
||||||
|
DTM's. All the occurances are stored in the Points (TPointArray)
|
||||||
|
Will rotate the DTM starting at sAngle, increasing by aStep until eAngle has been reached.
|
||||||
|
Does not stop rotating when one occurance of a DTM has been found.
|
||||||
|
Returns all Angles in a Two Dimensional Extended array.
|
||||||
|
/\}
|
||||||
|
|
||||||
|
Function TMDTM.FindDTMsRotated(DTM: Integer; Var Points: TPointArray; x1, y1, x2, y2: Integer; sAngle, eAngle, aStep: Extended; Var aFound: T2DExtendedArray): Boolean;
|
||||||
|
Var
|
||||||
|
temp: pDTM;
|
||||||
|
Begin
|
||||||
|
If GetDTM(DTM, temp) Then
|
||||||
|
Result := pFindDTMsRotated(temp, Points, x1, y1, x2, y2, sAngle, eAngle, aStep, aFound)
|
||||||
|
Else
|
||||||
|
Begin
|
||||||
|
SetLength(Points, 0);
|
||||||
|
SetLength(aFound, 0);
|
||||||
|
Result := False;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
{/\
|
||||||
|
Tries to find the given pDTM. Will return true if it has found one or more
|
||||||
|
DTM's. All the occurances are stored in the Points (TPointArray)
|
||||||
|
Will rotate the DTM starting at sAngle, increasing by aStep until eAngle has been reached.
|
||||||
|
Does not stop rotating when one occurance of a DTM has been found.
|
||||||
|
Returns all Angles in a Two Dimensional Extended array.
|
||||||
|
/\}
|
||||||
|
|
||||||
|
Function TMDTM.pFindDTMsRotated(DTM: pDTM; Var Points: TPointArray; x1, y1, x2, y2: Integer; sAngle, eAngle, aStep: Extended; Var aFound: T2DExtendedArray): Boolean;
|
||||||
|
|
||||||
|
Var
|
||||||
|
mP: TPointArray;
|
||||||
|
I, J, H, dH, R, W, PCount: Integer;
|
||||||
|
Angle: TExtendedArray;
|
||||||
|
tAngle: Extended;
|
||||||
|
Found: Boolean;
|
||||||
|
TempTP: TPoint;
|
||||||
|
MaxSubPointDist: TPoint;
|
||||||
|
|
||||||
|
Begin
|
||||||
|
MaxSubPointDist := Point(0,0);
|
||||||
|
For I := 1 To High(DTM.p) Do
|
||||||
|
Begin
|
||||||
|
DTM.p[I].x := DTM.p[I].x - DTM.p[0].x;
|
||||||
|
DTM.p[I].y := DTM.p[I].y - DTM.p[0].y;
|
||||||
|
End;
|
||||||
|
|
||||||
|
X2 := X2 - MaxSubPointDist.X - 1;
|
||||||
|
Y2 := Y2 - MaxSubPointDist.Y - 1;
|
||||||
|
X1 := X1 + MaxSubPointDist.X;
|
||||||
|
Y1 := Y1 + MaxSubPointDist.Y;
|
||||||
|
{If X2 > X1 then
|
||||||
|
//Exit;
|
||||||
|
If Y2 > Y1 then }
|
||||||
|
//Exit;
|
||||||
|
// Will make sure there are no out of bounds exceptions, and will make it faster
|
||||||
|
|
||||||
|
with TClient(Client) do
|
||||||
|
begin
|
||||||
|
MWindow.Freeze();
|
||||||
|
|
||||||
|
MFinder.FindColorsTolerance(mP, DTM.c[Low(DTM.c)], x1, y1, x2, y2,
|
||||||
|
DTM.t[Low(DTM.t)]);
|
||||||
|
MWindow.GetDimensions(H, dH);
|
||||||
|
end;
|
||||||
|
|
||||||
|
H := High(mP);
|
||||||
|
dH := High(DTM.p);
|
||||||
|
PCount := 0;
|
||||||
|
For I := 0 To H Do
|
||||||
|
Begin
|
||||||
|
//WriteLn('I: ' + IntToStr(I));
|
||||||
|
// Use MainPoint's AreaSize and Shape.
|
||||||
|
// For Loop on mP, depending on the AreaShape. Then on all the code beneath
|
||||||
|
// this point, use the var that is retrieved from the for loop.
|
||||||
|
//Found := True;
|
||||||
|
SetLength(Angle, 0);
|
||||||
|
Found := True;
|
||||||
|
For J := 1 To dH Do
|
||||||
|
Begin
|
||||||
|
If Length(Angle) = 0 Then
|
||||||
|
Begin
|
||||||
|
tAngle := sAngle;
|
||||||
|
While tAngle <= eAngle Do
|
||||||
|
Begin
|
||||||
|
TempTP.X := DTM.p[J].X + mP[I].X;
|
||||||
|
TempTP.Y := DTM.p[J].Y + mP[I].Y;
|
||||||
|
TempTP := RotatePoint(TempTP, tAngle, mP[I].X, mP[I].Y);
|
||||||
|
If AreaShape(DTM.c[J], DTM.t[J], DTM.asz[J], DTM.ash[J], TempTP) Then
|
||||||
|
Begin
|
||||||
|
SetLength(Angle, Length(Angle) + 1);
|
||||||
|
Angle[High(Angle)] := tAngle;
|
||||||
|
Found := True;
|
||||||
|
End;
|
||||||
|
tAngle := tAngle + aStep;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
Found := Length(Angle) > 0;
|
||||||
|
{If Found Then
|
||||||
|
WriteLn('Angle length after first search: ' + IntToStr(Length(Angle))); }
|
||||||
|
For R := 0 To High(Angle) Do
|
||||||
|
Begin
|
||||||
|
TempTP.X := DTM.p[J].X + mP[I].X;
|
||||||
|
TempTP.Y := DTM.p[J].Y + mP[I].Y;
|
||||||
|
TempTP := RotatePoint(TempTP, Angle[R], mP[I].X, mP[I].Y);
|
||||||
|
If Not AreaShape(DTM.c[J], DTM.t[J], DTM.asz[J], DTM.ash[J], TempTP) Then
|
||||||
|
Begin
|
||||||
|
For W := R To High(Angle) - 1 Do
|
||||||
|
Angle[W] := Angle[W + 1];
|
||||||
|
SetLength(Angle, Length(Angle) - 1);
|
||||||
|
If Length(Angle) = 0 Then
|
||||||
|
Begin
|
||||||
|
Found := False;
|
||||||
|
Break;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
If Not Found Then
|
||||||
|
Break;
|
||||||
|
End;
|
||||||
|
|
||||||
|
If Found Then
|
||||||
|
Begin
|
||||||
|
SetLength(Points, PCount + 1);
|
||||||
|
Points[PCount] := mP[I];
|
||||||
|
PCount := PCount + 1;
|
||||||
|
SetLength(aFound, Length(aFound) + 1);
|
||||||
|
aFound[High(aFound)] := Angle;
|
||||||
|
Continue;
|
||||||
|
End;
|
||||||
|
End;
|
||||||
|
|
||||||
|
TClient(Client).MWindow.UnFreeze();
|
||||||
|
Result := Length(Points) > 0;
|
||||||
|
End;
|
||||||
|
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
@ -29,9 +29,14 @@ type
|
|||||||
TVariantArray = Array of Variant;
|
TVariantArray = Array of Variant;
|
||||||
TIntegerArray = Array of Integer;
|
TIntegerArray = Array of Integer;
|
||||||
|
|
||||||
|
TExtendedArray = Array of Extended;
|
||||||
T2DExtendedArray = Array of Array of Extended;
|
T2DExtendedArray = Array of Array of Extended;
|
||||||
|
|
||||||
{ DTM Types }
|
{ DTM Types }
|
||||||
|
{
|
||||||
|
Possibly add .name too?
|
||||||
|
Then one could give DTM names, which would be easy for debugging.
|
||||||
|
}
|
||||||
pDTM = record
|
pDTM = record
|
||||||
p: TPointArray;
|
p: TPointArray;
|
||||||
c, t, asz, ash: TIntegerArray;
|
c, t, asz, ash: TIntegerArray;
|
||||||
|
Loading…
Reference in New Issue
Block a user