summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2017-10-04 11:24:55 +0200
committerErich Eckner <git@eckner.net>2017-10-04 11:24:55 +0200
commit4eac8161448d2e195b23ab4b8254a760710f4094 (patch)
treecb61041162d984eed11d0d51c60260837228a4d3
parentc2787b30fdb53533caf9f5da933e6d8e604e4943 (diff)
downloadepost-4eac8161448d2e195b23ab4b8254a760710f4094.tar.xz
typenunit.pas: testeAuszerhalb für kontinuierlich neu
-rw-r--r--typenunit.pas36
1 files changed, 34 insertions, 2 deletions
diff --git a/typenunit.pas b/typenunit.pas
index ff29cf2..bc3a52f 100644
--- a/typenunit.pas
+++ b/typenunit.pas
@@ -279,7 +279,8 @@ type
wmiaExplizit: boolean; // wMia wurde explizit gesetzt
_anzZugehoerigerDaten: longint;
- procedure testeAuszerhalb(const p: tExtPoint);
+ procedure testeAuszerhalb(p: tExtPoint); overload; inline;
+ procedure testeAuszerhalb(l: tLage; x: extended); overload; inline;
procedure holeInfosVonVorgaengern; virtual;
procedure aktualisiereAchsen; virtual;
@@ -1506,13 +1507,27 @@ begin
inherited destroy;
end;
-procedure tTransformation.testeAuszerhalb(const p: tExtPoint);
+procedure tTransformation.testeAuszerhalb(p: tExtPoint);
begin
if (p['x']<0) or (p['x']>inXSTS['x']-1) or
(p['y']<0) or (p['y']>inXSTS['y']-1) then
fehler('Punkt '+tExtPointToStr(p)+' liegt außerhalb des gültigen Eingabebereich (0..'+intToStr(inXSTS['x']-1)+' x 0..'+intToStr(inXSTS['y']-1)+')!');
end;
+procedure tTransformation.testeAuszerhalb(l: tLage; x: extended);
+begin
+ if (x<min(outAchsen[paralleleRichtung[l],'x'],outAchsen[paralleleRichtung[l],'y'])) or
+ (x>max(outAchsen[paralleleRichtung[l],'x'],outAchsen[paralleleRichtung[l],'y'])) then
+ fehler(
+ 'Wert '+
+ myFloatToStr(x)+
+ ' liegt außerhalb des gültigen Bereichs ('+
+ myFloatToStr(min(outAchsen[paralleleRichtung[l],'x'],outAchsen[paralleleRichtung[l],'y']))+
+ '..'+
+ myFloatToStr(max(outAchsen[paralleleRichtung[l],'x'],outAchsen[paralleleRichtung[l],'y']))+
+ ')!');
+end;
+
procedure tTransformation.holeInfosVonVorgaengern;
var
i: longint;
@@ -1943,6 +1958,8 @@ function tKeineTransformation.wertZuPositionAufAchse(const l: tLage; x: extended
var
c: char;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
// ein Wert am Anfang ist einfach linear zu interpolieren
c:=char(ord('y')-byte(l in [lOben,lUnten]));
if x=outAchsen[c,'x'] then
@@ -1955,6 +1972,8 @@ function tKeineTransformation.positionAufAchseZuWert(const l: tLage; x: extended
var
c: char;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
// ein Wert am Anfang ist einfach linear zu interpolieren
c:=char(ord('y')-byte(l in [lOben,lUnten]));
if x=0 then
@@ -2025,6 +2044,8 @@ function tFFTTransformation.wertZuPositionAufAchse(const l: tLage; x: extended;
var
c: char;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
if ((l in [lOben,lUnten]) and not horizontal) or // untransformierte Achse?
((not (l in [lOben,lUnten])) and not vertikal) then
result:=inherited wertZuPositionAufAchse(l,x,auszerhalbIstFehler) // Vorfahren befragen
@@ -2044,6 +2065,8 @@ function tFFTTransformation.positionAufAchseZuWert(const l: tLage; x: extended;
var
c: char;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
if ((l in [lOben,lUnten]) and not horizontal) or // untransformierte Achse?
((not (l in [lOben,lUnten])) and not vertikal) then
result:=inherited positionAufAchseZuWert(l,x,auszerhalbIstFehler) // Vorfahren befragen
@@ -2194,7 +2217,10 @@ end;
function tKonkreteKoordinatenTransformation.transformiereKoordinatenEinzelnIvers(const p: tExtPoint; auszerhalbIstFehler: boolean = true): tExtPoint;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(p);
fehler('tKonkreteKoordinatenTransformation: transformiereKoordinatenEinzelnIvers kann es nicht geben, weil transformiereKoordinatenEinzeln nicht umkehrbar sein muss!');
+ result:=extPoint(0,0);
end;
function tKonkreteKoordinatenTransformation.initAbbildung(syntaxTest: boolean; s: string; xScale,yScale: extended; etf: tExprToFloat): boolean;
@@ -2708,7 +2734,10 @@ end;
function tAgglomeration.positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
fehler('tAgglomeration: positionAufAchseZuWert ist noch nicht implementiert');
+ result:=0;
end;
function tAgglomeration.dumpParams: string;
@@ -2774,7 +2803,10 @@ end;
function tDiagonaleAgglomeration.positionAufAchseZuWert(const l: tLage; x: extended; auszerhalbIstFehler: boolean = true): extended;
begin
+ if auszerhalbIstFehler then
+ testeAuszerhalb(l,x);
fehler('tDiagonaleAgglomeration: positionAufAchseZuWert ist noch nicht implementiert!');
+ result:=0;
end;
function tDiagonaleAgglomeration.dumpParams: string;