1
0
mirror of https://github.com/moparisthebest/Simba synced 2024-11-28 12:02:15 -05:00

Removed BadPoints from TDTM because PascalScript cannot handle it.

Changed GoodPoints -> BadPoints.




git-svn-id: http://www.villavu.com/repositories/merlijn/mufasa@374 3f818213-9676-44b0-a9b4-5e4c4e03d09d
This commit is contained in:
Wizzup? 2010-01-04 20:56:47 +00:00
parent f1c1b01cd9
commit 868c1c5d32
14 changed files with 7345 additions and 7323 deletions

View File

@ -11,7 +11,7 @@
<TargetFileExt Value=""/> <TargetFileExt Value=""/>
<Icon Value="0"/> <Icon Value="0"/>
<UseXPManifest Value="True"/> <UseXPManifest Value="True"/>
<ActiveEditorIndexAtStart Value="2"/> <ActiveEditorIndexAtStart Value="0"/>
</General> </General>
<VersionInfo> <VersionInfo>
<ProjectVersion Value=""/> <ProjectVersion Value=""/>
@ -35,14 +35,14 @@
<Filename Value="project1.lpr"/> <Filename Value="project1.lpr"/>
<IsPartOfProject Value="True"/> <IsPartOfProject Value="True"/>
<UnitName Value="project1"/> <UnitName Value="project1"/>
<CursorPos X="29" Y="51"/> <CursorPos X="1" Y="210"/>
<TopLine Value="33"/> <TopLine Value="184"/>
<EditorIndex Value="0"/> <EditorIndex Value="0"/>
<UsageCount Value="74"/> <UsageCount Value="74"/>
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit0> </Unit0>
<Unit1> <Unit1>
<Filename Value="../../../../../usr/lib64/fpc/2.2.4/source/packages/fcl-base/src/custapp.pp"/> <Filename Value="../../../usr/lib64/fpc/2.2.4/source/packages/fcl-base/src/custapp.pp"/>
<UnitName Value="CustApp"/> <UnitName Value="CustApp"/>
<CursorPos X="15" Y="51"/> <CursorPos X="15" Y="51"/>
<TopLine Value="32"/> <TopLine Value="32"/>
@ -85,7 +85,7 @@
<Unit6> <Unit6>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<UnitName Value="finder"/> <UnitName Value="finder"/>
<CursorPos X="69" Y="1901"/> <CursorPos X="31" Y="1907"/>
<TopLine Value="1890"/> <TopLine Value="1890"/>
<EditorIndex Value="2"/> <EditorIndex Value="2"/>
<UsageCount Value="34"/> <UsageCount Value="34"/>
@ -119,7 +119,7 @@
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit9> </Unit9>
<Unit10> <Unit10>
<Filename Value="../../../../Documents/fpc/rtl/objpas/sysutils/diskh.inc"/> <Filename Value="../../../Documents/fpc/rtl/objpas/sysutils/diskh.inc"/>
<CursorPos X="10" Y="18"/> <CursorPos X="10" Y="18"/>
<TopLine Value="1"/> <TopLine Value="1"/>
<UsageCount Value="8"/> <UsageCount Value="8"/>
@ -132,7 +132,7 @@
<UsageCount Value="8"/> <UsageCount Value="8"/>
</Unit11> </Unit11>
<Unit12> <Unit12>
<Filename Value="../../../../Documents/lazarus/lcl/graphics.pp"/> <Filename Value="../../../Documents/lazarus/lcl/graphics.pp"/>
<UnitName Value="Graphics"/> <UnitName Value="Graphics"/>
<CursorPos X="3" Y="1426"/> <CursorPos X="3" Y="1426"/>
<TopLine Value="1411"/> <TopLine Value="1411"/>
@ -148,13 +148,13 @@
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit13> </Unit13>
<Unit14> <Unit14>
<Filename Value="../../../../Documents/fpc/rtl/inc/objpash.inc"/> <Filename Value="../../../Documents/fpc/rtl/inc/objpash.inc"/>
<CursorPos X="22" Y="177"/> <CursorPos X="22" Y="177"/>
<TopLine Value="162"/> <TopLine Value="162"/>
<UsageCount Value="8"/> <UsageCount Value="8"/>
</Unit14> </Unit14>
<Unit15> <Unit15>
<Filename Value="../../../../Documents/lazarus/lcl/intfgraphics.pas"/> <Filename Value="../../../Documents/lazarus/lcl/intfgraphics.pas"/>
<UnitName Value="IntfGraphics"/> <UnitName Value="IntfGraphics"/>
<CursorPos X="30" Y="2975"/> <CursorPos X="30" Y="2975"/>
<TopLine Value="2959"/> <TopLine Value="2959"/>
@ -168,7 +168,7 @@
<UsageCount Value="8"/> <UsageCount Value="8"/>
</Unit16> </Unit16>
<Unit17> <Unit17>
<Filename Value="../../../../Documents/fpc/rtl/i386/mmx.pp"/> <Filename Value="../../../Documents/fpc/rtl/i386/mmx.pp"/>
<UnitName Value="mmx"/> <UnitName Value="mmx"/>
<CursorPos X="80" Y="15"/> <CursorPos X="80" Y="15"/>
<TopLine Value="71"/> <TopLine Value="71"/>
@ -201,7 +201,7 @@
<Loaded Value="True"/> <Loaded Value="True"/>
</Unit20> </Unit20>
<Unit21> <Unit21>
<Filename Value="../../../../Documents/fpc/packages/fcl-base/src/custapp.pp"/> <Filename Value="../../../Documents/fpc/packages/fcl-base/src/custapp.pp"/>
<UnitName Value="CustApp"/> <UnitName Value="CustApp"/>
<CursorPos X="59" Y="48"/> <CursorPos X="59" Y="48"/>
<TopLine Value="18"/> <TopLine Value="18"/>
@ -244,124 +244,124 @@
</Units> </Units>
<JumpHistory Count="30" HistoryIndex="29"> <JumpHistory Count="30" HistoryIndex="29">
<Position1> <Position1>
<Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1618" Column="22" TopLine="1607"/>
</Position1>
<Position2>
<Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1637" Column="18" TopLine="1621"/>
</Position2>
<Position3>
<Filename Value="../../Units/MMLCore/ocr.pas"/> <Filename Value="../../Units/MMLCore/ocr.pas"/>
<Caret Line="31" Column="54" TopLine="13"/> <Caret Line="31" Column="54" TopLine="13"/>
</Position3> </Position1>
<Position4> <Position2>
<Filename Value="../../Units/MMLCore/ocrutil.pas"/> <Filename Value="../../Units/MMLCore/ocrutil.pas"/>
<Caret Line="8" Column="38" TopLine="1"/> <Caret Line="8" Column="38" TopLine="1"/>
</Position4> </Position2>
<Position5> <Position3>
<Filename Value="../../Units/MMLCore/colour_conv.pas"/> <Filename Value="../../Units/MMLCore/colour_conv.pas"/>
<Caret Line="47" Column="31" TopLine="27"/> <Caret Line="47" Column="31" TopLine="27"/>
</Position5> </Position3>
<Position6> <Position4>
<Filename Value="../../Units/MMLCore/ocr.pas"/> <Filename Value="../../Units/MMLCore/ocr.pas"/>
<Caret Line="31" Column="53" TopLine="24"/> <Caret Line="31" Column="53" TopLine="24"/>
</Position4>
<Position5>
<Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="85" Column="74" TopLine="75"/>
</Position5>
<Position6>
<Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="2027" Column="29" TopLine="2002"/>
</Position6> </Position6>
<Position7> <Position7>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="85" Column="74" TopLine="75"/> <Caret Line="2028" Column="37" TopLine="2009"/>
</Position7> </Position7>
<Position8> <Position8>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="2027" Column="29" TopLine="2002"/> <Caret Line="2021" Column="75" TopLine="2004"/>
</Position8> </Position8>
<Position9> <Position9>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="2028" Column="37" TopLine="2009"/> <Caret Line="1832" Column="28" TopLine="1827"/>
</Position9> </Position9>
<Position10> <Position10>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="2021" Column="75" TopLine="2004"/> <Caret Line="1822" Column="1" TopLine="1808"/>
</Position10> </Position10>
<Position11> <Position11>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1832" Column="28" TopLine="1827"/> <Caret Line="1877" Column="23" TopLine="1867"/>
</Position11> </Position11>
<Position12> <Position12>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1822" Column="1" TopLine="1808"/> <Caret Line="62" Column="31" TopLine="44"/>
</Position12> </Position12>
<Position13> <Position13>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1877" Column="23" TopLine="1867"/> <Caret Line="1893" Column="88" TopLine="1867"/>
</Position13> </Position13>
<Position14> <Position14>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="62" Column="31" TopLine="44"/> <Caret Line="2033" Column="30" TopLine="2002"/>
</Position14> </Position14>
<Position15> <Position15>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1893" Column="88" TopLine="1867"/> <Caret Line="1934" Column="32" TopLine="1916"/>
</Position15> </Position15>
<Position16> <Position16>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="2033" Column="30" TopLine="2002"/> <Caret Line="2007" Column="29" TopLine="1989"/>
</Position16> </Position16>
<Position17> <Position17>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1934" Column="32" TopLine="1916"/> <Caret Line="87" Column="28" TopLine="78"/>
</Position17> </Position17>
<Position18> <Position18>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="2007" Column="29" TopLine="1989"/> <Caret Line="2010" Column="81" TopLine="1989"/>
</Position18> </Position18>
<Position19> <Position19>
<Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="87" Column="28" TopLine="78"/>
</Position19>
<Position20>
<Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="2010" Column="81" TopLine="1989"/>
</Position20>
<Position21>
<Filename Value="project1.lpr"/> <Filename Value="project1.lpr"/>
<Caret Line="111" Column="22" TopLine="101"/> <Caret Line="111" Column="22" TopLine="101"/>
</Position19>
<Position20>
<Filename Value="../../Units/MMLCore/dtmutil.pas"/>
<Caret Line="31" Column="24" TopLine="12"/>
</Position20>
<Position21>
<Filename Value="../../Units/MMLCore/dtmutil.pas"/>
<Caret Line="158" Column="46" TopLine="133"/>
</Position21> </Position21>
<Position22> <Position22>
<Filename Value="../../Units/MMLCore/dtmutil.pas"/> <Filename Value="../../Units/MMLCore/dtmutil.pas"/>
<Caret Line="31" Column="24" TopLine="12"/> <Caret Line="148" Column="33" TopLine="119"/>
</Position22> </Position22>
<Position23> <Position23>
<Filename Value="../../Units/MMLCore/dtmutil.pas"/> <Filename Value="../../Units/MMLCore/dtmutil.pas"/>
<Caret Line="158" Column="46" TopLine="133"/> <Caret Line="31" Column="30" TopLine="1"/>
</Position23> </Position23>
<Position24> <Position24>
<Filename Value="../../Units/MMLCore/dtmutil.pas"/>
<Caret Line="148" Column="33" TopLine="119"/>
</Position24>
<Position25>
<Filename Value="../../Units/MMLCore/dtmutil.pas"/>
<Caret Line="31" Column="30" TopLine="1"/>
</Position25>
<Position26>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1898" Column="99" TopLine="1878"/> <Caret Line="1898" Column="99" TopLine="1878"/>
</Position26> </Position24>
<Position27> <Position25>
<Filename Value="../../Units/MMLCore/finder.pas"/> <Filename Value="../../Units/MMLCore/finder.pas"/>
<Caret Line="1902" Column="65" TopLine="1884"/> <Caret Line="1902" Column="65" TopLine="1884"/>
</Position27> </Position25>
<Position28> <Position26>
<Filename Value="project1.lpr"/> <Filename Value="project1.lpr"/>
<Caret Line="51" Column="35" TopLine="34"/> <Caret Line="51" Column="35" TopLine="34"/>
</Position28> </Position26>
<Position29> <Position27>
<Filename Value="../../Units/MMLCore/dtmutil.pas"/> <Filename Value="../../Units/MMLCore/dtmutil.pas"/>
<Caret Line="77" Column="5" TopLine="49"/> <Caret Line="77" Column="5" TopLine="49"/>
</Position29> </Position27>
<Position30> <Position28>
<Filename Value="../../Units/MMLCore/dtm.pas"/> <Filename Value="../../Units/MMLCore/dtm.pas"/>
<Caret Line="31" Column="29" TopLine="1"/> <Caret Line="31" Column="29" TopLine="1"/>
</Position28>
<Position29>
<Filename Value="project1.lpr"/>
<Caret Line="128" Column="41" TopLine="109"/>
</Position29>
<Position30>
<Filename Value="project1.lpr"/>
<Caret Line="62" Column="83" TopLine="38"/>
</Position30> </Position30>
</JumpHistory> </JumpHistory>
</ProjectOptions> </ProjectOptions>

View File

@ -10,7 +10,7 @@ uses
Forms,Interfaces, Forms,Interfaces,
LCLIntf, LCLIntf,
Client, Client,
bitmaps,x ,mufasatypes,dtm,dtmutil, ocrutil bitmaps,{$IFDEF LINUX}x,{$ENDIF}mufasatypes,dtm,dtmutil, ocrutil
{ you can add units after this }; { you can add units after this };
@ -48,7 +48,7 @@ begin
result.ash[i] := 0; result.ash[i] := 0;
{writeln(format('dtm: (%d, %d) c: %d, t: %d, asz: %d', [result.p[i].x, {writeln(format('dtm: (%d, %d) c: %d, t: %d, asz: %d', [result.p[i].x,
result.p[i].y, result.c[i], result.t[i], result.asz[i]])); } result.p[i].y, result.c[i], result.t[i], result.asz[i]])); }
result.gp[i] := false;// random(10) = 1; result.bp[i] := false;// random(10) = 1;
end; end;
result.c[0] := 255; result.c[0] := 255;
PrintpDTM(result); PrintpDTM(result);
@ -125,6 +125,8 @@ begin
writeln(inttostr(length(p))+ ' points found'); writeln(inttostr(length(p))+ ' points found');
setlength(p,0); setlength(p,0);
PrintpDTM(tdtmtopDTM(pDTMToTDTM(dtm)));
{for i := 0 to high(p) do {for i := 0 to high(p) do
writeln(format('%d: (%d, %d)', [i, p[i].x, p[i].y])); } writeln(format('%d: (%d, %d)', [i, p[i].x, p[i].y])); }

View File

@ -1 +1,7 @@
#define RT_MANIFEST 24
#define CREATEPROCESS_MANIFEST_RESOURCE_ID 1
#define ISOLATIONAWARE_MANIFEST_RESOURCE_ID 2
#define ISOLATIONAWARE_NOSTATICIMPORT_MANIFEST_RESOURCE_ID 3
CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "project1.manifest"
MAINICON ICON "project1.ico" MAINICON ICON "project1.ico"

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +1,11 @@
object Form1: TForm1 object Form1: TForm1
Left = 273 Left = 272
Height = 557 Height = 557
Top = 233 Top = 172
Width = 734 Width = 734
ActiveControl = ScriptPanel ActiveControl = ScriptPanel
Caption = 'THA FUKING MUFASA' Caption = 'THA FUKING MUFASA'
ClientHeight = 537 ClientHeight = 538
ClientWidth = 734 ClientWidth = 734
KeyPreview = True KeyPreview = True
Menu = MainMenu1 Menu = MainMenu1
@ -175,8 +175,8 @@ object Form1: TForm1
end end
object StatusBar: TStatusBar object StatusBar: TStatusBar
Left = 0 Left = 0
Height = 23 Height = 20
Top = 514 Top = 518
Width = 734 Width = 734
Panels = < Panels = <
item item
@ -194,7 +194,7 @@ object Form1: TForm1
object PanelMemo: TPanel object PanelMemo: TPanel
Left = 0 Left = 0
Height = 154 Height = 154
Top = 360 Top = 364
Width = 734 Width = 734
Align = alBottom Align = alBottom
ClientHeight = 154 ClientHeight = 154
@ -214,19 +214,19 @@ object Form1: TForm1
Cursor = crVSplit Cursor = crVSplit
Left = 0 Left = 0
Height = 5 Height = 5
Top = 355 Top = 359
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 = 331 Height = 335
Top = 24 Top = 24
Width = 734 Width = 734
Align = alClient Align = alClient
BevelOuter = bvNone BevelOuter = bvNone
ClientHeight = 331 ClientHeight = 335
ClientWidth = 734 ClientWidth = 734
DockSite = True DockSite = True
TabOrder = 4 TabOrder = 4
@ -234,7 +234,7 @@ object Form1: TForm1
OnDockOver = ScriptPanelDockOver OnDockOver = ScriptPanelDockOver
object PageControl1: TPageControl object PageControl1: TPageControl
Left = 155 Left = 155
Height = 296 Height = 300
Top = 0 Top = 0
Width = 579 Width = 579
Align = alClient Align = alClient
@ -253,7 +253,7 @@ object Form1: TForm1
object SearchPanel: TPanel object SearchPanel: TPanel
Left = 0 Left = 0
Height = 35 Height = 35
Top = 296 Top = 300
Width = 734 Width = 734
Align = alBottom Align = alBottom
BevelOuter = bvSpace BevelOuter = bvSpace
@ -375,7 +375,7 @@ object Form1: TForm1
Left = 320 Left = 320
Height = 17 Height = 17
Top = 7 Top = 7
Width = 72 Width = 74
Caption = 'Match case' Caption = 'Match case'
OnClick = CheckBoxMatchCaseClick OnClick = CheckBoxMatchCaseClick
TabOrder = 1 TabOrder = 1
@ -383,21 +383,23 @@ object Form1: TForm1
end end
object SplitterFunctionList: TSplitter object SplitterFunctionList: TSplitter
Left = 150 Left = 150
Height = 296 Height = 300
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 = 296 Height = 300
Width = 150 Width = 150
ClientHeight = 296 ClientHeight = 300
ClientWidth = 150 ClientWidth = 150
OnEndDock = nil OnEndDock = nil
TabOrder = 3 TabOrder = 3
DesignLeft = 401
DesignTop = 219
inherited FunctionList: TTreeView inherited FunctionList: TTreeView
Height = 257 Height = 261
Width = 150 Width = 150
OnChange = FunctionListChange OnChange = FunctionListChange
OnDeletion = nil OnDeletion = nil
@ -405,7 +407,7 @@ object Form1: TForm1
OnExit = FunctionListExit OnExit = FunctionListExit
end end
inherited editSearchList: TEdit inherited editSearchList: TEdit
Top = 275 Top = 279
Width = 150 Width = 150
OnExit = editSearchListExit OnExit = editSearchListExit
OnKeyDown = editSearchListKeyDown OnKeyDown = editSearchListKeyDown

File diff suppressed because it is too large Load Diff

View File

@ -15,6 +15,7 @@ var
p,pp: TPointArray; p,pp: TPointArray;
c,t,asz,ash: TIntegerArray; c,t,asz,ash: TIntegerArray;
bp:array of boolean;
begin begin
p := [Point(0,0), Point(1,1), Point(-4, -4)]; p := [Point(0,0), Point(1,1), Point(-4, -4)];
@ -23,10 +24,7 @@ begin
asz := [0, 4, 4]; asz := [0, 4, 4];
ash := [dtm_Rectangle, dtm_Rectangle, dtm_Rectangle]; ash := [dtm_Rectangle, dtm_Rectangle, dtm_Rectangle];
setlength(ppdtm.p,2); setlength(ppdtm.p,2);
setlength(ppdtm.c,2); bp:=[false,false,false];
setlength(ppdtm.t,2);
setlength(ppdtm.asz,2);
setlength(ppdtm.ash,2);
ppdtm.l := 3;//We have 3 points.. ppdtm.l := 3;//We have 3 points..
ppdtm.p := p; ppdtm.p := p;
@ -34,6 +32,7 @@ begin
ppdtm.t := t; ppdtm.t := t;
ppdtm.asz := asz; ppdtm.asz := asz;
ppdtm.ash := ash; ppdtm.ash := ash;
ppdtm.bp := bp;
ppdtm.n := 'TestDTM';//Our name! ppdtm.n := 'TestDTM';//Our name!
dtm := AddpDTM(ppdtm); dtm := AddpDTM(ppdtm);

View File

@ -24,6 +24,7 @@
Sender.Comp.AddConstantN('AppPath','string').SetString(CurrThread.AppPath); Sender.Comp.AddConstantN('AppPath','string').SetString(CurrThread.AppPath);
Sender.Comp.AddConstantN('ScriptPath','string').SetString(CurrThread.ScriptPath); Sender.Comp.AddConstantN('ScriptPath','string').SetString(CurrThread.ScriptPath);
Sender.Comp.AddTypeS('TIntegerArray', 'Array of integer'); Sender.Comp.AddTypeS('TIntegerArray', 'Array of integer');
Sender.Comp.AddTypeS('TBoolArray', 'Array of Boolean');
Sender.Comp.AddTypes('TBox', 'record X1,Y1,X2,Y2 : Integer; end;'); Sender.Comp.AddTypes('TBox', 'record X1,Y1,X2,Y2 : Integer; end;');
Sender.Comp.AddTypeS('TPointArray','Array of TPoint'); Sender.Comp.AddTypeS('TPointArray','Array of TPoint');
Sender.Comp.AddTypeS('T2DPointArray','Array of Array of TPoint'); Sender.Comp.AddTypeS('T2DPointArray','Array of Array of TPoint');
@ -32,10 +33,10 @@ Sender.Comp.AddTypeS('TBmpMirrorStyle','(MirrorWidth,MirrorHeight,MirrorLine)');
Sender.Comp.AddTypeS('TMask','record White, Black : TPointArray; WhiteHi,BlackHi : integer; W,H : integer;end;'); Sender.Comp.AddTypeS('TMask','record White, Black : TPointArray; WhiteHi,BlackHi : integer; W,H : integer;end;');
Sender.Comp.AddTypes('TDTMPointDef', 'record x, y, Color, Tolerance, AreaSize, AreaShape: integer; Good: Boolean; end;'); Sender.Comp.AddTypes('TDTMPointDef', 'record x, y, Color, Tolerance, AreaSize, AreaShape: integer; end;');
Sender.Comp.AddTypes('TDTMPointDefArray', 'Array Of TDTMPointDef;'); Sender.Comp.AddTypes('TDTMPointDefArray', 'Array Of TDTMPointDef;');
Sender.Comp.AddTypes('TDTM','record MainPoint: TDTMPointDef; SubPoints: TDTMPointDefArray; end;'); Sender.Comp.AddTypes('TDTM','record MainPoint: TDTMPointDef; SubPoints: TDTMPointDefArray; end;');
Sender.Comp.AddTypeS('pDTM','record l: Integer;p: TPointArray;c, t, asz, ash: TIntegerArray; gp: array of boolean; n: String; end;'); Sender.Comp.AddTypeS('pDTM','record l: Integer;p: TPointArray;c, t, asz, ash: TIntegerArray; bp: Array Of Boolean; n: String; end;');
Sender.Comp.AddTypeS('T2DExtendedArray', 'array of array of extended;'); Sender.Comp.AddTypeS('T2DExtendedArray', 'array of array of extended;');
Sender.Comp.AddTypeS('TStringArray','Array of string;'); Sender.Comp.AddTypeS('TStringArray','Array of string;');

View File

@ -28,8 +28,8 @@ AddFunction(@psWriteln,'procedure writeln(s : string);');
SetCurrSection('DTM'); SetCurrSection('DTM');
AddFunction(@PrintpDTM, 'Procedure PrintpDTM(tDTM : pDTM);'); AddFunction(@PrintpDTM, 'Procedure PrintpDTM(tDTM : pDTM);');
AddFunction(@ps_GetDTM ,'function GetDTM(index: Integer; out dtm: pDTM): Boolean;'); AddFunction(@ps_GetDTM ,'function GetDTM(index: Integer; out dtm: pDTM): Boolean;');
AddFunction(@pDTMToTDTM, 'Function pDTMToTDTM(Const DTM: pDTM): TDTM;'); AddFunction(@pDTMToTDTM, 'Function pDTMToTDTM(DTM: pDTM): TDTM;');
AddFunction(@tDTMTopDTM, 'Function tDTMTopDTM(Const DTM: TDTM): pDTM;'); AddFunction(@tDTMTopDTM, 'Function tDTMTopDTM(DTM: TDTM): pDTM;');
AddFunction(@ps_DTMFromString, 'function DTMFromString(DTMString: String): Integer;'); AddFunction(@ps_DTMFromString, 'function DTMFromString(DTMString: String): Integer;');
AddFunction(@ps_FreeDTM, 'procedure FreeDTM(DTM: Integer);'); AddFunction(@ps_FreeDTM, 'procedure FreeDTM(DTM: Integer);');
AddFunction(@ps_FindDTM, 'function FindDTM(DTM: Integer; out x, y: Integer; x1, y1, x2, y2: Integer): Boolean;'); AddFunction(@ps_FindDTM, 'function FindDTM(DTM: Integer; out x, y: Integer; x1, y1, x2, y2: Integer): Boolean;');

View File

@ -184,6 +184,7 @@ begin
SetLength(Result.t,DestLen); SetLength(Result.t,DestLen);
SetLength(Result.asz,DestLen); SetLength(Result.asz,DestLen);
SetLength(Result.ash,DestLen); SetLength(Result.ash,DestLen);
SetLength(Result.bp,DestLen);
b := @Self.Bufferstring[1]; b := @Self.Bufferstring[1];
for i := 0 to DestLen - 1 do for i := 0 to DestLen - 1 do
begin; begin;
@ -194,6 +195,7 @@ begin
Result.ash[i] := PInteger(@b^[c+16])^; Result.ash[i] := PInteger(@b^[c+16])^;
Result.c[i] := PInteger(@b^[c+20])^; Result.c[i] := PInteger(@b^[c+20])^;
Result.t[i] := PInteger(@b^[c+24])^; Result.t[i] := PInteger(@b^[c+24])^;
Result.bp[i] := False;
end; end;
end; end;
result.l := length(result.p); result.l := length(result.p);

View File

@ -33,7 +33,7 @@ uses
Function pDTMToTDTM(Const DTM: pDTM): TDTM; Function pDTMToTDTM(Const DTM: pDTM): TDTM;
Function tDTMTopDTM(Const DTM: TDTM): pDTM; Function tDTMTopDTM(Const DTM: TDTM): pDTM;
Procedure PrintpDTM(tDTM : pDTM); Procedure PrintpDTM(aDTM : pDTM);
procedure initdtm(out d: pdtm; len: integer); procedure initdtm(out d: pdtm; len: integer);
function ValidMainPointBox(var dtm: pDTM; const x1, y1, x2, y2: Integer): TBox; function ValidMainPointBox(var dtm: pDTM; const x1, y1, x2, y2: Integer): TBox;
@ -64,7 +64,7 @@ begin
setlength(d.t, len); setlength(d.t, len);
setlength(d.ash, len); setlength(d.ash, len);
setlength(d.asz, len); setlength(d.asz, len);
setlength(d.gp, len); setlength(d.bp, len);
FillChar(d.p[0], SizeOf(TPoint) * len, 0); FillChar(d.p[0], SizeOf(TPoint) * len, 0);
FillChar(d.c[0], SizeOf(Integer) * len, 0); FillChar(d.c[0], SizeOf(Integer) * len, 0);
@ -76,19 +76,19 @@ begin
//FillChar(d.gp[0], SizeOf(Boolean) * len, 0); //FillChar(d.gp[0], SizeOf(Boolean) * len, 0);
for i := 0 to len - 1 do for i := 0 to len - 1 do
d.gp[i] := true; d.bp[i] := False;
end; end;
Procedure PrintpDTM(tDTM : pDTM); Procedure PrintpDTM(aDTM : pDTM);
var var
i : integer; i : integer;
begin; begin;
i := 0; i := 0;
if tdtm.n <> '' then if adtm.n <> '' then
writeln('Name: ' + tdtm.n); writeln('Name: ' + aDTM.n);
WriteLn('MainPoint ' + inttostr(tDTM.p[i].x) + ', ' + inttostr(tDTM.p[i].y) + ' col: ' + inttostr(tDTM.c[i]) + ', tol: ' + inttostr(tDTM.t[i]) + '; ashape ' + inttostr(tdtm.ash[i]) + ' asize ' + inttostr(tdtm.asz[i])+ ', Good: ' + BoolToStr(tdtm.gp[i])); WriteLn('MainPoint ' + inttostr(aDTM.p[i].x) + ', ' + inttostr(aDTM.p[i].y) + ' col: ' + inttostr(aDTM.c[i]) + ', tol: ' + inttostr(aDTM.t[i]) + '; ashape ' + inttostr(aDTM.ash[i]) + ' asize ' + inttostr(aDTM.asz[i])+ ', Bad Point: ' + BoolToStr(aDTM.bp[i]));
for I := 1 to High(tDTM.p) do for I := 1 to High(aDTM.p) do
WriteLn('SubPoint['+IntToStr(I) + '] ' + inttostr(tDTM.p[i].x) + ', ' + inttostr(tDTM.p[i].y) + ' col: ' + inttostr(tDTM.c[i]) + ', tol: ' + inttostr(tDTM.t[i]) + '; ashape ' + inttostr(tdtm.ash[i]) + ' asize ' + inttostr(tdtm.asz[i]) + ', Good: ' + BoolToStr(tdtm.gp[i])); WriteLn('SubPoint['+IntToStr(I) + '] ' + inttostr(aDTM.p[i].x) + ', ' + inttostr(aDTM.p[i].y) + ' col: ' + inttostr(aDTM.c[i]) + ', tol: ' + inttostr(aDTM.t[i]) + '; ashape ' + inttostr(aDTM.ash[i]) + ' asize ' + inttostr(aDTM.asz[i]) + ', Bad Point: ' + BoolToStr(aDTM.bp[i]));
end; end;
Function pDTMToTDTM(Const DTM: pDTM): TDTM; Function pDTMToTDTM(Const DTM: pDTM): TDTM;
@ -106,7 +106,6 @@ Begin
Temp.AreaShape := DTM.ash[i]; Temp.AreaShape := DTM.ash[i];
Temp.Color := DTM.c[i]; Temp.Color := DTM.c[i];
Temp.Tolerance := DTM.t[i]; Temp.Tolerance := DTM.t[i];
Temp.Good:= DTM.gp[i];
End; End;
Result.MainPoint := Temp; Result.MainPoint := Temp;
SetLength(Result.SubPoints, Length(DTM.p) - 1); SetLength(Result.SubPoints, Length(DTM.p) - 1);
@ -120,7 +119,6 @@ Begin
Temp.AreaShape := DTM.ash[i]; Temp.AreaShape := DTM.ash[i];
Temp.Color := DTM.c[i]; Temp.Color := DTM.c[i];
Temp.Tolerance := DTM.t[i]; Temp.Tolerance := DTM.t[i];
Temp.Good:= DTM.gp[i];
Result.SubPoints[I - 1] := Temp; Result.SubPoints[I - 1] := Temp;
End; End;
End; End;
@ -141,7 +139,7 @@ Begin
SetLength(Result.t, Length(DTM.SubPoints) + 1); SetLength(Result.t, Length(DTM.SubPoints) + 1);
SetLength(Result.asz, Length(DTM.SubPoints) + 1); SetLength(Result.asz, Length(DTM.SubPoints) + 1);
SetLength(Result.ash, Length(DTM.SubPoints) + 1); SetLength(Result.ash, Length(DTM.SubPoints) + 1);
SetLength(Result.gp, Length(DTM.SubPoints) + 1); SetLength(Result.bp, Length(DTM.SubPoints) + 1);
Result.p[0].x := DTM.MainPoint.x; Result.p[0].x := DTM.MainPoint.x;
Result.p[0].y := DTM.MainPoint.y; Result.p[0].y := DTM.MainPoint.y;
@ -149,7 +147,6 @@ Begin
Result.t[0] := DTM.MainPoint.Tolerance; Result.t[0] := DTM.MainPoint.Tolerance;
Result.asz[0] := DTM.MainPoint.AreaSize; Result.asz[0] := DTM.MainPoint.AreaSize;
Result.ash[0] := DTM.MainPoint.AreaShape; Result.ash[0] := DTM.MainPoint.AreaShape;
Result.gp[0] := DTM.MainPoint.Good;
For I := 1 To Length(DTM.SubPoints) Do // High + 1 = Length For I := 1 To Length(DTM.SubPoints) Do // High + 1 = Length
Begin Begin
@ -159,9 +156,12 @@ Begin
Result.t[I] := DTM.SubPoints[I - 1].Tolerance; Result.t[I] := DTM.SubPoints[I - 1].Tolerance;
Result.asz[I] := DTM.SubPoints[I - 1].AreaSize; Result.asz[I] := DTM.SubPoints[I - 1].AreaSize;
Result.ash[I] := DTM.SubPoints[I - 1].AreaShape; Result.ash[I] := DTM.SubPoints[I - 1].AreaShape;
Result.gp[I] := DTM.SubPoints[I - 1].Good;
End; End;
Result.l := length(Result.p); Result.l := length(Result.p);
setlength(result.bp, result.l);
for i := 0 to result.l -1 do
result.bp[i] := false;
End; End;
{ TODO: Check if bounds are correct? } { TODO: Check if bounds are correct? }
@ -181,7 +181,7 @@ begin
Exit(False); Exit(False);
if dtm.l <> length(dtm.ash) then if dtm.l <> length(dtm.ash) then
Exit(False); Exit(False);
if dtm.l <> length(dtm.gp) then if dtm.l <> length(dtm.bp) then
Exit(False); Exit(False);
for i := 0 to dtm.l-1 do for i := 0 to dtm.l-1 do
if dtm.asz[i] < 0 then if dtm.asz[i] < 0 then

View File

@ -1819,6 +1819,8 @@ var
// point count // point count
pc: Integer = 0; pc: Integer = 0;
goodPoints: Array of Boolean;
label theEnd; label theEnd;
label AnotherLoopEnd; label AnotherLoopEnd;
@ -1838,6 +1840,10 @@ begin
DefaultOperations(MA.x1, MA.y1, MA.x2, MA.y2); DefaultOperations(MA.x1, MA.y1, MA.x2, MA.y2);
setlength(goodPoints, dtm.l);
for i := 0 to dtm.l - 1 do
goodPoints[i] := not dtm.bp[i];
// Init data structure B. // Init data structure B.
W := x2 - x1; W := x2 - x1;
H := y2 - y1; H := y2 - y1;
@ -1899,7 +1905,7 @@ begin
goto AnotherLoopEnd; goto AnotherLoopEnd;
end; end;
if (b[xxx][yyy+1] and (1 shl i) = 0) and dtm.gp[i] then if (b[xxx][yyy+1] and (1 shl i) = 0) and goodPoints[i] then
goto AnotherLoopEnd; goto AnotherLoopEnd;
end; end;
end; end;

View File

@ -98,7 +98,7 @@ type
l: Integer; l: Integer;
p: TPointArray; p: TPointArray;
c, t, asz, ash: TIntegerArray; c, t, asz, ash: TIntegerArray;
gp: TBoolArray; bp: Array Of Boolean;
n: String; // DOEN n: String; // DOEN
end; end;
@ -106,7 +106,6 @@ type
TDTMPointDef = record TDTMPointDef = record
x, y, Color, Tolerance, AreaSize, AreaShape: integer; x, y, Color, Tolerance, AreaSize, AreaShape: integer;
Good: Boolean;
end; end;
TDTMPointDefArray = Array Of TDTMPointDef; TDTMPointDefArray = Array Of TDTMPointDef;