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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -24,6 +24,7 @@
Sender.Comp.AddConstantN('AppPath','string').SetString(CurrThread.AppPath);
Sender.Comp.AddConstantN('ScriptPath','string').SetString(CurrThread.ScriptPath);
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('TPointArray','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('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('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('TStringArray','Array of string;');

View File

@ -28,8 +28,8 @@ AddFunction(@psWriteln,'procedure writeln(s : string);');
SetCurrSection('DTM');
AddFunction(@PrintpDTM, 'Procedure PrintpDTM(tDTM : pDTM);');
AddFunction(@ps_GetDTM ,'function GetDTM(index: Integer; out dtm: pDTM): Boolean;');
AddFunction(@pDTMToTDTM, 'Function pDTMToTDTM(Const DTM: pDTM): TDTM;');
AddFunction(@tDTMTopDTM, 'Function tDTMTopDTM(Const DTM: TDTM): pDTM;');
AddFunction(@pDTMToTDTM, 'Function pDTMToTDTM(DTM: pDTM): TDTM;');
AddFunction(@tDTMTopDTM, 'Function tDTMTopDTM(DTM: TDTM): pDTM;');
AddFunction(@ps_DTMFromString, 'function DTMFromString(DTMString: String): 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;');

View File

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

View File

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

View File

@ -1819,6 +1819,8 @@ var
// point count
pc: Integer = 0;
goodPoints: Array of Boolean;
label theEnd;
label AnotherLoopEnd;
@ -1838,6 +1840,10 @@ begin
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.
W := x2 - x1;
H := y2 - y1;
@ -1899,7 +1905,7 @@ begin
goto AnotherLoopEnd;
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;
end;
end;

View File

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