diff options
author | Erich Eckner <git@eckner.net> | 2016-02-04 16:29:43 +0100 |
---|---|---|
committer | Erich Eckner <git@eckner.net> | 2016-02-04 16:29:43 +0100 |
commit | eb7f5e4cb41192b046e208c9c336fa274c24bffd (patch) | |
tree | abd9c2b9e7efaca07155df141a1daad73bcf0e78 | |
parent | 7b784d17de7002aa656832944083b70f40b12350 (diff) | |
download | epost-eb7f5e4cb41192b046e208c9c336fa274c24bffd.tar.xz |
Tagesendstand
-rw-r--r-- | epost.lps | 148 | ||||
-rw-r--r-- | epostunit.pas | 91 | ||||
-rw-r--r-- | typenunit.pas | 653 | ||||
-rw-r--r-- | werteunit.pas | 9 |
4 files changed, 207 insertions, 694 deletions
@@ -7,7 +7,8 @@ <Unit0> <Filename Value="epost.lpr"/> <IsPartOfProject Value="True"/> - <CursorPos X="3" Y="26"/> + <TopLine Value="173"/> + <CursorPos Y="193"/> <UsageCount Value="202"/> <Loaded Value="True"/> </Unit0> @@ -21,9 +22,10 @@ <Unit2> <Filename Value="epostunit.pas"/> <IsPartOfProject Value="True"/> + <IsVisibleTab Value="True"/> <EditorIndex Value="1"/> - <TopLine Value="788"/> - <CursorPos X="3" Y="809"/> + <TopLine Value="400"/> + <CursorPos X="20" Y="426"/> <UsageCount Value="201"/> <Loaded Value="True"/> </Unit2> @@ -38,18 +40,17 @@ <Filename Value="werteunit.pas"/> <IsPartOfProject Value="True"/> <EditorIndex Value="2"/> - <TopLine Value="152"/> - <CursorPos X="3" Y="173"/> + <TopLine Value="3"/> + <CursorPos X="5" Y="24"/> <UsageCount Value="200"/> <Loaded Value="True"/> </Unit4> <Unit5> <Filename Value="typenunit.pas"/> <IsPartOfProject Value="True"/> - <IsVisibleTab Value="True"/> <EditorIndex Value="3"/> - <TopLine Value="1980"/> - <CursorPos X="3" Y="2001"/> + <TopLine Value="400"/> + <CursorPos Y="420"/> <UsageCount Value="200"/> <Loaded Value="True"/> </Unit5> @@ -58,26 +59,26 @@ <EditorIndex Value="-1"/> <TopLine Value="1612"/> <CursorPos X="2" Y="1675"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit6> <Unit7> <Filename Value="../units/mystringlistunit.pas"/> <EditorIndex Value="-1"/> <TopLine Value="356"/> <CursorPos X="43" Y="378"/> - <UsageCount Value="18"/> + <UsageCount Value="17"/> </Unit7> <Unit8> <Filename Value="../units/lowlevelunit.pas"/> <EditorIndex Value="-1"/> - <TopLine Value="23"/> - <CursorPos X="51" Y="44"/> + <TopLine Value="20"/> + <CursorPos Y="40"/> <UsageCount Value="27"/> </Unit8> <Unit9> <Filename Value="../units/randomunit.pas"/> <EditorIndex Value="-1"/> - <UsageCount Value="6"/> + <UsageCount Value="5"/> </Unit9> <Unit10> <Filename Value="../units/matheunit.pas"/> @@ -85,150 +86,149 @@ <TopLine Value="544"/> <CursorPos X="53" Y="567"/> <FoldState Value=" T3q50{m012A"/> - <UsageCount Value="18"/> + <UsageCount Value="17"/> </Unit10> <Unit11> <Filename Value="../units/systemunit.pas"/> <EditorIndex Value="-1"/> <TopLine Value="65"/> <CursorPos X="26" Y="80"/> - <UsageCount Value="19"/> + <UsageCount Value="18"/> </Unit11> <Unit12> <Filename Value="../fpGUI/src/corelib/render/software/agg_2D.pas"/> <EditorIndex Value="-1"/> <TopLine Value="807"/> <CursorPos Y="818"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit12> <Unit13> <Filename Value="../units/protokollunit.pas"/> <EditorIndex Value="-1"/> <TopLine Value="82"/> <CursorPos X="15" Y="30"/> - <UsageCount Value="9"/> + <UsageCount Value="8"/> </Unit13> </Units> <JumpHistory Count="30" HistoryIndex="29"> <Position1> - <Filename Value="epostunit.pas"/> - <Caret Line="6035" Column="3" TopLine="5949"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1794" Column="19" TopLine="1761"/> </Position1> <Position2> - <Filename Value="epostunit.pas"/> - <Caret Line="6041" TopLine="6021"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1834" Column="36" TopLine="1812"/> </Position2> <Position3> - <Filename Value="epostunit.pas"/> - <Caret Line="5452" Column="3" TopLine="5444"/> + <Filename Value="typenunit.pas"/> + <Caret Line="277" Column="43" TopLine="265"/> </Position3> <Position4> - <Filename Value="epostunit.pas"/> - <Caret Line="5342" Column="3" TopLine="5320"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1828" Column="96" TopLine="1816"/> </Position4> <Position5> - <Filename Value="epostunit.pas"/> - <Caret Line="5165" Column="3" TopLine="5141"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1130" Column="40" TopLine="1110"/> </Position5> <Position6> - <Filename Value="epostunit.pas"/> - <Caret Line="5108" Column="3" TopLine="5084"/> + <Filename Value="typenunit.pas"/> + <Caret Line="365" Column="17" TopLine="345"/> </Position6> <Position7> - <Filename Value="epostunit.pas"/> - <Caret Line="5073" Column="3" TopLine="5050"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1221" Column="29" TopLine="1188"/> </Position7> <Position8> - <Filename Value="epostunit.pas"/> - <Caret Line="4504" Column="10" TopLine="4487"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1238" Column="29" TopLine="1205"/> </Position8> <Position9> - <Filename Value="epostunit.pas"/> - <Caret Line="4307" Column="3" TopLine="4286"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1831" Column="42" TopLine="1812"/> </Position9> <Position10> - <Filename Value="epostunit.pas"/> - <Caret Line="4099" Column="3" TopLine="4077"/> + <Filename Value="typenunit.pas"/> </Position10> <Position11> - <Filename Value="epostunit.pas"/> - <Caret Line="4013" Column="3" TopLine="3991"/> + <Filename Value="typenunit.pas"/> + <Caret Line="252" Column="21" TopLine="220"/> </Position11> <Position12> - <Filename Value="epostunit.pas"/> - <Caret Line="4011" TopLine="3991"/> + <Filename Value="typenunit.pas"/> + <Caret Line="299" Column="19" TopLine="267"/> </Position12> <Position13> <Filename Value="typenunit.pas"/> - <Caret Line="863" Column="3" TopLine="842"/> + <Caret Line="1248" Column="33" TopLine="1215"/> </Position13> <Position14> - <Filename Value="epostunit.pas"/> - <Caret Line="3834" Column="128" TopLine="3828"/> + <Filename Value="typenunit.pas"/> + <Caret Line="365" Column="17" TopLine="345"/> </Position14> <Position15> - <Filename Value="epostunit.pas"/> - <Caret Line="3166" Column="3" TopLine="3132"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1221" Column="29" TopLine="1188"/> </Position15> <Position16> - <Filename Value="epostunit.pas"/> - <Caret Line="2860" Column="3" TopLine="2836"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1238" Column="29" TopLine="1205"/> </Position16> <Position17> <Filename Value="epostunit.pas"/> - <Caret Line="2727" Column="3" TopLine="2706"/> + <Caret Line="1959" Column="29" TopLine="1934"/> </Position17> <Position18> - <Filename Value="epostunit.pas"/> - <Caret Line="2410" Column="3" TopLine="2386"/> + <Filename Value="typenunit.pas"/> + <Caret Line="370" Column="16" TopLine="350"/> </Position18> <Position19> - <Filename Value="epostunit.pas"/> - <Caret Line="2368" Column="3" TopLine="2344"/> + <Filename Value="typenunit.pas"/> + <Caret Line="312" Column="28" TopLine="292"/> </Position19> <Position20> - <Filename Value="epostunit.pas"/> - <Caret Line="2197" Column="3" TopLine="2167"/> + <Filename Value="typenunit.pas"/> + <Caret Line="370" Column="28" TopLine="337"/> </Position20> <Position21> - <Filename Value="epostunit.pas"/> - <Caret Line="2105" Column="3" TopLine="2080"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1453" Column="39" TopLine="1420"/> </Position21> <Position22> - <Filename Value="epostunit.pas"/> - <Caret Line="2012" Column="3" TopLine="1987"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1844" Column="38" TopLine="1809"/> </Position22> <Position23> - <Filename Value="epostunit.pas"/> - <Caret Line="1718" Column="3" TopLine="1692"/> + <Filename Value="typenunit.pas"/> + <Caret Line="355" Column="25" TopLine="335"/> </Position23> <Position24> - <Filename Value="epostunit.pas"/> - <Caret Line="1584" Column="3" TopLine="1560"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1764" Column="50" TopLine="1746"/> </Position24> <Position25> - <Filename Value="epostunit.pas"/> - <Caret Line="1525" Column="3" TopLine="1507"/> + <Filename Value="typenunit.pas"/> + <Caret Line="217" Column="3" TopLine="197"/> </Position25> <Position26> - <Filename Value="epostunit.pas"/> - <Caret Line="1370" Column="3" TopLine="1356"/> + <Filename Value="typenunit.pas"/> + <Caret Line="355" Column="25" TopLine="322"/> </Position26> <Position27> - <Filename Value="epostunit.pas"/> - <Caret Line="1036" Column="3" TopLine="1006"/> + <Filename Value="typenunit.pas"/> + <Caret Line="1800" Column="29" TopLine="1779"/> </Position27> <Position28> - <Filename Value="typenunit.pas"/> - <Caret Line="413" Column="5" TopLine="393"/> + <Filename Value="epostunit.pas"/> + <Caret Line="1955" TopLine="1934"/> </Position28> <Position29> <Filename Value="typenunit.pas"/> - <Caret Line="2136" Column="3" TopLine="2084"/> + <Caret Line="1100" Column="122" TopLine="1088"/> </Position29> <Position30> - <Filename Value="typenunit.pas"/> - <Caret Line="200" TopLine="180"/> + <Filename Value="epostunit.pas"/> + <Caret Line="5390" TopLine="5361"/> </Position30> </JumpHistory> </ProjectSession> diff --git a/epostunit.pas b/epostunit.pas index 81bdaf7..144bfb7 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -420,6 +420,10 @@ begin eWerte.params.free; gibAus('Die Werteparameter sind verschieden instaziiert!!!',3); end; + if dWerte.params<>sWerte.params then begin + dWerte.params.free; + gibAus('Die Werteparameter sind verschieden instaziiert!!!',3); + end; sWerte.params.free; eWerte.free; dWerte.free; @@ -1838,8 +1842,7 @@ var i,xmin,xmax,tmin,tmax: longint; quellen: tWerteArray; s: string; - Zeit,schritt: extended; - horizontal: boolean; + Zeit: extended; pSi: pTLLWerteSingle; pDo: pTLLWerteDouble; pEx: pTLLWerteExtended; @@ -1855,8 +1858,11 @@ begin tmin:=-1; tmax:=-1; Zeit:=now; - schritt:=-1; - horizontal:=false; + if not Transformationen.hatNachfolger then + Transformationen.free; + Transformationen:=tAgglomeration.create; + (Transformationen as tAgglomeration).schritt:=-1; + (Transformationen as tAgglomeration).horizontal:=false; repeat if not f.metaReadln(s,true) then begin gibAus('Unerwartetes Dateiende!',3); @@ -1864,36 +1870,36 @@ begin end; if s='Ende' then break; if startetMit('xmin:',s) then begin - xmin:=kont2disk('x',exprtofloat(st,s)); + xmin:=quellen[0].kont2disk('x',exprtofloat(st,s)); continue; end; if startetMit('xmax:',s) then begin - xmax:=kont2disk('x',exprtofloat(st,s)); + xmax:=quellen[0].kont2disk('x',exprtofloat(st,s)); continue; end; if startetMit('tmin:',s) then begin - tmin:=kont2disk('t',exprtofloat(st,s)); + tmin:=quellen[0].kont2disk('t',exprtofloat(st,s)); continue; end; if startetMit('tmax:',s) then begin - tmax:=kont2disk('t',exprtofloat(st,s)); + tmax:=quellen[0].kont2disk('t',exprtofloat(st,s)); continue; end; if startetMit('Schritt:',s) then begin - schritt:=exprtofloat(st,s); + (Transformationen as tAgglomeration).schritt:=exprtofloat(st,s); continue; end; if s='horizontal' then begin - horizontal:=true; + (Transformationen as tAgglomeration).horizontal:=true; continue; end; if s='vertikal' then begin - horizontal:=true; + (Transformationen as tAgglomeration).horizontal:=true; continue; end; setlength(quellen,length(quellen)+1); i:=findeWerte(erstesArgument(s),nil,wertes,Konturen,false); - if i<0 then + if (i<0) or (wertes^[i]=self) then exit; quellen[length(quellen)-1]:=wertes^[i]; if length(quellen)=1 then begin @@ -1934,17 +1940,12 @@ begin if xmin<0 then xmin:=0; if xmax<0 then - xmax:=quellen[0]._xsteps-1; + xmax:=quellen[0].Transformationen.xsteps-1; if tmin<0 then tmin:=0; if tmax<0 then - tmax:=quellen[0]._tsiz-1; + tmax:=quellen[0].Transformationen.tsiz-1; - if not Transformationen.hatNachfolger then - Transformationen.free; - Transformationen:=tAgglomeration.create; - (Transformationen as tAgglomeration).horizontal:=horizontal; - (Transformationen as tAgglomeration).schritt:=schritt; for i:=0 to length(quellen)-1 do (Transformationen as tAgglomeration).addKomponente( tKoordinatenAusschnitt.create( @@ -1955,12 +1956,8 @@ begin _xsteps:=Transformationen.xsteps; _tsiz:=Transformationen.tsiz; - _minW:=quellen[0]._minW; - _maxW:=quellen[0]._maxW; - for i:=1 to length(quellen)-1 do begin - _minW:=min(_minW,quellen[i]._minW); - _maxW:=max(_maxW,quellen[i]._maxW); - end; + _minW:=Transformationen.wmin; + _maxW:=Transformationen.wmax; _np:=quellen[0]._np; _beta:=quellen[0]._beta; @@ -1980,8 +1977,8 @@ begin pSi, xmin,xmax, tmin,tmax, - (1+xmax-xmin)*i*byte(horizontal), - (1+tmax-tmin)*i*byte(not horizontal) + (1+xmax-xmin)*i*byte((Transformationen as tAgglomeration).horizontal), + (1+tmax-tmin)*i*byte(not (Transformationen as tAgglomeration).horizontal) ); end; gDouble: begin @@ -1990,8 +1987,8 @@ begin pDo, xmin,xmax, tmin,tmax, - (1+xmax-xmin)*i*byte(horizontal), - (1+tmax-tmin)*i*byte(not horizontal) + (1+xmax-xmin)*i*byte((Transformationen as tAgglomeration).horizontal), + (1+tmax-tmin)*i*byte(not (Transformationen as tAgglomeration).horizontal) ); end; gExtended: begin @@ -2000,8 +1997,8 @@ begin pEx, xmin,xmax, tmin,tmax, - (1+xmax-xmin)*i*byte(horizontal), - (1+tmax-tmin)*i*byte(not horizontal) + (1+xmax-xmin)*i*byte((Transformationen as tAgglomeration).horizontal), + (1+tmax-tmin)*i*byte(not (Transformationen as tAgglomeration).horizontal) ); end; end; @@ -2655,22 +2652,7 @@ begin (Transformationen as tAgglomeration).addKomponente(quelle.Transformationen); (Transformationen as tAgglomeration).schritt:=(quelle.disk2kont('x',tmax)-quelle.disk2kont('x',tmin))*(1+1/(tmax-tmin)); end; -(* - Transformationen.xsteps:=_xsteps; - Transformationen.tsiz:=_tsiz; - if quelle._tsiz<>1 then begin - Transformationen.xstart:=quelle.disk2kont('t',tmin); // quelle._tstart + tmin/(quelle._tsiz-1)*(quelle._tstop-quelle._tstart); - Transformationen.xstop:= quelle.disk2kont('t',tmax); // quelle._tstart + tmax/(quelle._tsiz-1)*(quelle._tstop-quelle._tstart); - Transformationen.tstart:=0; - Transformationen.tstop:=quelle.disk2kontFak('t',_tsiz-1); // _tsiz/(quelle._tsiz-1)*(quelle._tstop-quelle._tstart); - end - else begin - Transformationen.xstart:=quelle.disk2kont('x',tmin); // _xstart:=quelle._xstart + tmin/(quelle._xsteps-1)*(quelle._xstop-quelle._xstart); - Transformationen.xstop:= quelle.disk2kont('x',tmax); // _xstop:= quelle._xstart + tmax/(quelle._xsteps-1)*(quelle._xstop-quelle._xstart); - Transformationen.tstart:=0; - Transformationen.tstop:=quelle.disk2kontFak('x',_tsiz-1); // _tstop:=_tsiz/(quelle._xsteps-1)*(quelle._xstop-quelle._xstart); - end; -*) + if not st then begin tOf:=(_tsiz-Fenster.Breite) div 2; eWerte.holeRam(3); @@ -3422,21 +3404,6 @@ begin setlength(Beschriftungen,0); for i:=0 to length(Achsen)-1 do begin -(* if Achsen[i].Lage in [lOben,lUnten] then - begin - maw:=xMax/(_xsteps-1)*(_xstop-_xstart)+_xstart; - miw:=xMin/(_xsteps-1)*(_xstop-_xstart)+_xstart; - end - else - begin - maw:=tMax/(_tsiz-1)*(_tstop-_tstart)+_tstart; - miw:=tMin/(_tsiz-1)*(_tstop-_tstart)+_tstart; - end; - schritt:=(maw-miw)/Achsen[i].Striche; - j:=round(ln(schritt)/ln(10)); - schritt:=Achsen[i].faktor*power(10,j); - wert:=ceil(miw/schritt)*schritt; - while wert<=maw do *) if Achsen[i].Lage in [lOben,lUnten] then begin maw:=disk2kont('x',xMax); miw:=disk2Kont('x',xMin); diff --git a/typenunit.pas b/typenunit.pas index 54c98cf..abb1753 100644 --- a/typenunit.pas +++ b/typenunit.pas @@ -221,13 +221,15 @@ type vorgaenger,nachfolger: array of tTransformation; in_xs_ts,out_xs_ts: tIntPoint; in_achsen,out_achsen: t2x2Extended; - out_wmia: tExtPoint; + in_wmia,out_wmia: tExtPoint; wmiaExplizit: boolean; procedure testeAuszerhalb(const p: tExtPoint); - procedure aktualisiereAchsen; virtual; // nicht zum direkten Aufrufen - procedure aktualisiereXsTs; virtual; // nicht zum direkten Aufrufen - procedure aktualisiereWmia; virtual; // nicht zum direkten Aufrufen + + procedure holeInfosVonVorgaengern; virtual; + procedure aktualisiereAchsen; virtual; + procedure aktualisiereXsTs; virtual; + procedure aktualisiereWmia; virtual; function transformiereKoordinatenEinzeln(const p: tExtPoint): tExtPoint; virtual; // wie ändert sich die Position eines Punktes (Paradebeispiel: bei Spiegelung: x -> xsteps-1-x) @@ -272,6 +274,7 @@ type function wertZuPositionAufAchse(const l: tLage; x: extended): extended; virtual; function transformiereWert(const x: extended; const tiefe: longint = -1): extended; property xsteps_tsiz: tIntPoint read out_xs_ts; + property wmia: tExtPoint read out_wmia; function dumpParams: string; virtual; overload; function dumpParams(tiefe: longint): string; overload; property xstart: extended @@ -301,9 +304,11 @@ type end; tKeineTransformation = class (tTransformation) // der Beginn einer Transformationskette, z.B. das Laden von Daten + procedure holeInfosVonVorgaengern; override; end; tUeberlagerung = class (tTransformation) // die Überlagerung mehrer gleichformatiger Daten, z.B. Linearkombination + constructor create; procedure addKomponente(tr: tTransformation); end; tKoordinatenTransformation = class (tTransformation) @@ -360,7 +365,8 @@ type tAgglomeration = class (tKoordinatenTransformation) schritt: extended; horizontal: boolean; - constructor create; overload; + constructor create; + procedure holeInfosVonVorgaengern; override; procedure addKomponente(tr: tTransformation); procedure aktualisiereXsTs; override; procedure aktualisiereAchsen; override; @@ -405,49 +411,6 @@ type // keine Änderung der Achsenbegrenzungen, der Positionen, der Ausdehnung function dumpParams: string; override; end; -(* tTransformationen = class - private - // merkt sich, was mit den Werten und Koordinaten nach einem festen Punkt (dem Einlesen) passiert ist, - // sodass man immer nachvollziehen kann, welcher Punkt woher kam und wie verarbeitet wurde. - // -> sinnvolle Achsenbezeichnungen und Legenden - Schritte: array of tTransformation; - _xtstao: t2x2Extended; - _wmia: tExtPoint; - _xs_ts: tIntPoint; - function gibInhalt(ii: longint): tTransformation; - procedure nimmInhalt(ii: longint; inh: tTransformation); - function gibAchsen: t2x2Extended; - procedure achsenUndGroeszeAktualisieren; - public - property inhalt[ii: longint]: tTransformation - read gibInhalt - write nimmInhalt; default; - constructor create; overload; - constructor create(original: tTransformationen); overload; - destructor destroy; override; - function kopiereVon(original: tTransformationen): boolean; - function count: longint; - function kCount: longint; - function wCount: longint; - function last: tTransformation; - procedure clear; - procedure clearWerte; - procedure addFFT(hor,ver: boolean); - procedure AddSpiegelung; - function add(inh: tTransformation): boolean; overload; - function add(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat): boolean; overload; - function add(syntaxtest: boolean; s: string; xscale,yscale: extended; etf: tExprToFloat): boolean; overload; - procedure addAusschnitt(xmin,xmax,tmin,tmax: longint); - function addAgglomeration(horizontal: boolean; schritt: extended; anzahl: longint): boolean; - function append(inhs: tTransformationen): boolean; - function transformiereKoordinaten(const lage: tLage; const x: extended): extended; overload; - function transformiereKoordinaten(const x,y: extended): tExtPoint; overload; - function transformiereKoordinaten(const p: tExtPoint): tExtPoint; overload; - function transformiereWert(const x: extended): extended; - function dumpParams: string; - procedure berechneZielausdehnung(out grenzen: t2x2Longint); - end; - tTransformationenArray = array of tTransformationen; *) function liesTWerteTransformationen(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat; var tr: tTransformation): boolean; @@ -1134,10 +1097,8 @@ begin for i:=0 to length(vorgaenger)-1 do vorgaenger[i].loescheNachfolger(self); setlength(vorgaenger,0); - if hatNachfolger then begin - gibAus('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!',3); - raise exception.create('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!'); - end; + if hatNachfolger then + fehler('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!'); inherited destroy; end; @@ -1147,10 +1108,8 @@ var begin for i:=0 to length(vorgaenger)-1 do vorgaenger[i].loescheNachfolger(self); - if hatNachfolger then begin - gibAus('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!',3); - raise exception.create('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!'); - end; + if hatNachfolger then + fehler('Ich habe noch '+inttostr(length(nachfolger))+' Nachfolger, da kann ich mich nicht zerstören!'); for i:=0 to length(vorgaenger)-1 do vorgaenger[i].freeAll; setlength(vorgaenger,0); @@ -1160,22 +1119,44 @@ end; procedure tTransformation.testeAuszerhalb(const p: tExtPoint); begin if (p['x']<0) or (p['x']>in_xs_ts['x']-1) or - (p['y']<0) or (p['y']>in_xs_ts['y']-1) then begin - gibAus('Punkt '+tExtPointToStr(p)+' liegt außerhalb des gültigen Eingabebereich (0..'+inttostr(in_xs_ts['x']-1)+' x 0..'+inttostr(in_xs_ts['y']-1)+')!',3); - raise exception.create('Punkt '+tExtPointToStr(p)+' liegt außerhalb des gültigen Eingabebereich (0..'+inttostr(in_xs_ts['x']-1)+' x 0..'+inttostr(in_xs_ts['y']-1)+')!'); + (p['y']<0) or (p['y']>in_xs_ts['y']-1) then + fehler('Punkt '+tExtPointToStr(p)+' liegt außerhalb des gültigen Eingabebereich (0..'+inttostr(in_xs_ts['x']-1)+' x 0..'+inttostr(in_xs_ts['y']-1)+')!'); +end; + +procedure tTransformation.holeInfosVonVorgaengern; +var + i: longint; +begin + in_achsen:=vorgaenger[0].achsen; + for i:=1 to length(vorgaenger)-1 do + if in_achsen <> vorgaenger[i].achsen then + fehler('Vorgänger haben verschiedene Achsen, was generisch nicht zu verstehen ist!'); + in_xs_ts:=vorgaenger[0].xsteps_tsiz; + for i:=1 to length(vorgaenger)-1 do + if in_xs_ts <> vorgaenger[i].xsteps_tsiz then + fehler('Vorgänger haben verschiedene xsteps oder tsiz, was generisch nicht zu verstehen ist!'); + if not wmiaExplizit then begin + in_wmia:=vorgaenger[0].wmia; + for i:=1 to length(vorgaenger)-1 do + if in_wmia <> vorgaenger[i].wmia then + fehler('Vorgänger haben verschiedene wmin oder wmax, was generisch nicht zu verstehen ist!'); end; end; procedure tTransformation.aktualisiereAchsen; // nicht zum direkten Aufrufen begin + out_achsen:=in_achsen; end; procedure tTransformation.aktualisiereXsTs; // nicht zum direkten Aufrufen begin + out_xs_ts:=in_xs_ts; end; procedure tTransformation.aktualisiereWmia; // nicht zum direkten Aufrufen begin + if not wmiaExplizit then + out_wmia:=in_wmia; end; function tTransformation.rXstart: extended; @@ -1185,10 +1166,8 @@ end; procedure tTransformation.wXstart(x: extended); begin - if not (self is tKeineTransformation) then begin - gibAus('Will xstart schreiben, aber bin nicht der Anfang einer Transformationskette!',3); - raise exception.create('Will xstart schreiben, aber bin nicht der Anfang einer Transformationskette!'); - end; + if not (self is tKeineTransformation) then + fehler('Will xstart schreiben, aber bin nicht der Anfang einer Transformationskette!'); in_achsen['x','x']:=x; aktualisiereAlles; end; @@ -1200,10 +1179,8 @@ end; procedure tTransformation.wXstop(x: extended); begin - if not (self is tKeineTransformation) then begin - gibAus('Will xstop schreiben, aber bin nicht der Anfang einer Transformationskette!',3); - raise exception.create('Will xstop schreiben, aber bin nicht der Anfang einer Transformationskette!'); - end; + if not (self is tKeineTransformation) then + fehler('Will xstop schreiben, aber bin nicht der Anfang einer Transformationskette!'); in_achsen['x','y']:=x; aktualisiereAlles; end; @@ -1215,10 +1192,8 @@ end; procedure tTransformation.wTstart(t: extended); begin - if not (self is tKeineTransformation) then begin - gibAus('Will tstart schreiben, aber bin nicht der Anfang einer Transformationskette!',3); - raise exception.create('Will tstart schreiben, aber bin nicht der Anfang einer Transformationskette!'); - end; + if not (self is tKeineTransformation) then + fehler('Will tstart schreiben, aber bin nicht der Anfang einer Transformationskette!'); in_achsen['y','x']:=t; aktualisiereAlles; end; @@ -1230,10 +1205,8 @@ end; procedure tTransformation.wTstop(t: extended); begin - if not (self is tKeineTransformation) then begin - gibAus('Will tstop schreiben, aber bin nicht der Anfang einer Transformationskette!',3); - raise exception.create('Will tstop schreiben, aber bin nicht der Anfang einer Transformationskette!'); - end; + if not (self is tKeineTransformation) then + fehler('Will tstop schreiben, aber bin nicht der Anfang einer Transformationskette!'); in_achsen['y','y']:=t; aktualisiereAlles; end; @@ -1245,6 +1218,11 @@ end; procedure tTransformation.wWmin(w: extended); begin + if (self is tAgglomeration) then begin + if out_wmia['x']<>w then + fehler('Setzen von wmin für Agglomeration nicht erlaubt ( '+floattostr(w)+' ≠ '+floattostr(out_wmia['x'])+' )!'); + exit; + end; out_wmia['x']:=w; wmiaExplizit:=true; aktualisiereAlles; @@ -1257,8 +1235,14 @@ end; procedure tTransformation.wWmax(w: extended); begin + if (self is tAgglomeration) then begin + if out_wmia['y']<>w then + fehler('Setzen von wmax für Agglomeration nicht erlaubt ( '+floattostr(w)+' ≠ '+floattostr(out_wmia['y'])+' )!'); + exit; + end; wmiaExplizit:=true; out_wmia['y']:=w; + aktualisiereAlles; end; function tTransformation.rXsteps: longint; @@ -1268,11 +1252,10 @@ end; procedure tTransformation.wXsteps(x: longint); begin - if not (self is tKeineTransformation) then begin - gibAus('Will xsteps schreiben, aber bin nicht der Anfang einer Transformationskette!',3); - raise exception.create('Will xsteps schreiben, aber bin nicht der Anfang einer Transformationskette!'); - end; + if not (self is tKeineTransformation) then + fehler('Will xsteps schreiben, aber bin nicht der Anfang einer Transformationskette!'); in_xs_ts['x']:=x; + aktualisiereAlles; end; function tTransformation.rTsiz: longint; @@ -1282,11 +1265,10 @@ end; procedure tTransformation.wTsiz(t: longint); begin - if not (self is tKeineTransformation) then begin - gibAus('Will tsiz schreiben, aber bin nicht der Anfang einer Transformationskette!',3); - raise exception.create('Will tsiz schreiben, aber bin nicht der Anfang einer Transformationskette!'); - end; + if not (self is tKeineTransformation) then + fehler('Will tsiz schreiben, aber bin nicht der Anfang einer Transformationskette!'); in_xs_ts['y']:=t; + aktualisiereAlles; end; procedure tTransformation.fuegeNachfolgerHinzu(tr: tTransformation); @@ -1308,8 +1290,7 @@ begin setlength(nachfolger,length(nachfolger)-1); exit; end; - gibAus('Kann zu löschenden Nachfolger nicht finden!',3); - raise exception.create('Kann zu löschenden Nachfolger nicht finden!'); + fehler('Kann zu löschenden Nachfolger nicht finden!'); end; procedure tTransformation.fuegeVorgaengerHinzu(tr: tTransformation); @@ -1318,6 +1299,7 @@ begin setlength(vorgaenger,length(vorgaenger)+1); vorgaenger[length(vorgaenger)-1]:=tr; end; + aktualisiereAlles; end; procedure tTransformation.loescheVorgaenger(tr: tTransformation); @@ -1331,8 +1313,7 @@ begin setlength(vorgaenger,length(vorgaenger)-1); exit; end; - gibAus('Kann zu löschenden Vorgänger nicht finden!',3); - raise exception.create('Kann zu löschenden Vorgänger nicht finden!'); + fehler('Kann zu löschenden Vorgänger nicht finden!'); end; function tTransformation.hatNachfolger: boolean; @@ -1344,6 +1325,7 @@ procedure tTransformation.aktualisiereAlles; // (inkl. Informieren der Nachfolge var i: longint; begin + holeInfosVonVorgaengern; aktualisiereAchsen; aktualisiereWmia; aktualisiereXsTs; @@ -1367,6 +1349,7 @@ begin vorgaenger[0]:=tr; vorgaenger[0].fuegeNachfolgerHinzu(self); result:=true; + aktualisiereAlles; end else result:=vorgaenger[0].ersetzeAnfangDurch(tr); @@ -1453,8 +1436,20 @@ begin result:=result+inttostr(tiefe+1)+': '+dumpParams; end; +// tKeineTransformation ******************************************************** + +procedure tKeineTransformation.holeInfosVonVorgaengern; +begin +end; + // tUeberlagerung ************************************************************** +constructor tUeberlagerung.create; +begin + inherited create; + wmiaExplizit:=true; // nicht sinnvoll berechenbar +end; + procedure tUeberlagerung.addKomponente(tr: tTransformation); begin fuegeVorgaengerHinzu(tr); @@ -1774,6 +1769,7 @@ begin gr['x','y']:=xmax; gr['y','x']:=tmin; gr['y','y']:=tmax; + aktualisiereAlles; end; procedure tKoordinatenAusschnitt.aktualisiereXsTs; @@ -1823,6 +1819,27 @@ begin horizontal:=false; end; +procedure tAgglomeration.holeInfosVonVorgaengern; +var + i: longint; +begin + in_achsen:=vorgaenger[0].achsen; + for i:=1 to length(vorgaenger)-1 do begin + if in_achsen <> vorgaenger[i].achsen then begin + fehler('Vorgänger haben verschiedene Achsen, was bei Agglomeration nicht geht!'); + end; + end; + in_xs_ts:=vorgaenger[0].xsteps_tsiz; + for i:=1 to length(vorgaenger)-1 do + if in_xs_ts <> vorgaenger[i].xsteps_tsiz then + fehler('Vorgänger haben verschiedene xsteps oder tsiz, was bei Agglomeration nicht geht!'); + in_wmia:=vorgaenger[0].wmia; + for i:=1 to length(vorgaenger)-1 do begin + in_wmia['x']:=min(in_wmia['x'],vorgaenger[i].wmia['x']); + in_wmia['y']:=max(in_wmia['y'],vorgaenger[i].wmia['y']); + end; +end; + procedure tAgglomeration.addKomponente(tr: tTransformation); begin fuegeVorgaengerHinzu(tr); @@ -1980,468 +1997,6 @@ begin result:='Betrag'; end; -// tTransformationen *********************************************************** -(* -constructor tTransformationen.create; -begin - inherited create; - setlength(Schritte,0); -end; - -constructor tTransformationen.create(original: tTransformationen); -begin - inherited create; - setlength(Schritte,0); - if not kopiereVon(original) then - halt(1); -end; - -destructor tTransformationen.destroy; -var - i: longint; -begin - for i:=0 to length(Schritte)-1 do - if assigned(Schritte[i]) then - Schritte[i].free; - setlength(Schritte,0); - inherited destroy; -end; - -function tTransformationen.gibInhalt(ii: longint): tTransformation; -begin - result:=Schritte[ii]; -end; - -procedure tTransformationen.nimmInhalt(ii: longint; inh: tTransformation); -begin - Schritte[ii]:=inh; -end; - -function tTransformationen.rXstart: extended; -begin - result:=gibAchsen['x','x']; -end; - -procedure tTransformationen.wXstart(x: extended); -begin - if kCount>0 then begin - gibAus('Will xstart schreiben, aber der kCount ist '+inttostr(kCount),3); - raise exception.create('Will xstart schreiben, aber der kCount ist '+inttostr(kCount)); - end; - _xtstao['x','x']:=x; -end; - -function tTransformationen.rXstop: extended; -begin - result:=gibAchsen['x','y']; -end; - -procedure tTransformationen.wXstop(x: extended); -begin - if kCount>0 then begin - gibAus('Will xstop schreiben, aber der kCount ist '+inttostr(kCount),3); - raise exception.create('Will xstop schreiben, aber der kCount ist '+inttostr(kCount)); - end; - _xtstao['x','y']:=x; -end; - -function tTransformationen.rTstart: extended; -begin - result:=gibAchsen['y','x']; -end; - -procedure tTransformationen.wTstart(t: extended); -begin - if kCount>0 then begin - gibAus('Will tstart schreiben, aber der kCount ist '+inttostr(kCount),3); - raise exception.create('Will tstart schreiben, aber der kCount ist '+inttostr(kCount)); - end; - _xtstao['y','x']:=t; -end; - -function tTransformationen.rTstop: extended; -begin - result:=gibAchsen['y','y']; -end; - -procedure tTransformationen.wTstop(t: extended); -begin - if kCount>0 then begin - gibAus('Will tstop schreiben, aber der kCount ist '+inttostr(kCount),3); - raise exception.create('Will tstop schreiben, aber der kCount ist '+inttostr(kCount)); - end; - _xtstao['y','y']:=t; -end; - -function tTransformationen.rWmin: extended; -begin - result:=_wmia['x']; -end; - -procedure tTransformationen.wWmin(w: extended); -begin - _wmia['x']:=w; -end; - -function tTransformationen.rWmax: extended; -begin - result:=_wmia['y']; -end; - -procedure tTransformationen.wWmax(w: extended); -begin - _wmia['y']:=w; -end; - -function tTransformationen.rXsteps: longint; -begin - result:=xsteps_tsiz['x']; -end; - -procedure tTransformationen.wXsteps(x: longint); -begin - if kCount>0 then begin - gibAus('Will xsteps schreiben, aber der kCount ist '+inttostr(kCount),3); - raise exception.create('Will xsteps schreiben, aber der kCount ist '+inttostr(kCount)); - end; - _xs_ts['x']:=x; -end; - -function tTransformationen.rTsiz: longint; -begin - result:=xsteps_tsiz['y']; -end; - -function tTransformationen.xsteps_tsiz: tIntPoint; -begin - if count=0 then result:=_xs_ts - else result:=last.xsteps_tsiz; -end; - -procedure tTransformationen.wTsiz(t: longint); -begin - if kCount>0 then begin - gibAus('Will tsiz schreiben, aber der kCount ist '+inttostr(kCount),3); - raise exception.create('Will tsiz schreiben, aber der kCount ist '+inttostr(kCount)); - end; - _xs_ts['y']:=t; -end; - -function tTransformationen.count: longint; -begin - result:=length(Schritte); -end; - -function tTransformationen.kCount: longint; -var - i: longint; -begin - result:=0; - for i:=0 to count-1 do - if Inhalt[i] is tKoordinatenTransformation then - inc(result); -end; - -function tTransformationen.wCount: longint; -var - i: longint; -begin - result:=0; - for i:=0 to count-1 do - if Inhalt[i] is tWerteTransformation then - inc(result); -end; - -procedure tTransformationen.achsenUndGroeszeAktualisieren; -var - i: longint; -begin - for i:=0 to count-1 do begin - if i=0 then begin - schritte[i].in_xs_ts:=_xs_ts; - schritte[i].in_achsen:=_xtstao; - end - else begin - schritte[i].in_xs_ts:=schritte[i-1].xsteps_tsiz; - schritte[i].in_achsen:=schritte[i-1].achsen; - end - end; -end; - -function tTransformationen.gibAchsen: t2x2Extended; -begin - if count=0 then result:=_xtstao - else result:=last.achsen; -end; - -function tTransformationen.last: tTransformation; -begin - result:=gibInhalt(count-1); -end; - -procedure tTransformationen.clear; -var - i: longint; -begin - for i:=0 to length(Schritte)-1 do - if assigned(Schritte[i]) then - Schritte[i].free; - setlength(Schritte,0); -end; - -procedure tTransformationen.clearWerte; -var - i,j: longint; -begin - for i:=0 to length(Schritte)-1 do - if assigned(Schritte[i]) and (Schritte[i] is tWerteTransformation) then - Schritte[i].free; - j:=0; - for i:=0 to length(Schritte)-1 do - if assigned(Schritte[i]) then begin - Schritte[j]:=Schritte[i]; - inc(j); - end; - setlength(Schritte,j); - achsenUndGroeszeAktualisieren; -end; - -procedure tTransformationen.addFFT(hor,ver: boolean); -begin - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tFFTTransformation.create; - with last as tFFTTransformation do begin - horizontal:=hor; - vertikal:=ver; - end; - achsenUndGroeszeAktualisieren; -end; - -procedure tTransformationen.AddSpiegelung; -begin - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tSpiegelungsTransformation.create; - achsenUndGroeszeAktualisieren; -end; - -function tTransformationen.add(inh: tTransformation): boolean; -begin - result:=false; - setlength(Schritte,length(Schritte)+1); - if inh is tFFTTransformation then - Schritte[length(Schritte)-1]:=tFFTTransformation.create(inh as tFFTTransformation) - else if inh is tKoordinatenAusschnitt then - Schritte[length(Schritte)-1]:=tKoordinatenAusschnitt.create(inh as tKoordinatenAusschnitt) - else if inh is tAgglomeration then - Schritte[length(Schritte)-1]:=tAgglomeration.create(inh as tAgglomeration) - else if inh is tKonkreteKoordinatenTransformation then - Schritte[length(Schritte)-1]:=tKonkreteKoordinatenTransformation.create(inh as tKonkreteKoordinatenTransformation) - else if inh is tSpiegelungsTransformation then - Schritte[length(Schritte)-1]:=tSpiegelungsTransformation.create - else if inh is tWerteKnickTransformation then - Schritte[length(Schritte)-1]:=tWerteKnickTransformation.create(inh as tWerteKnickTransformation) - else if inh is tWerteLogTransformation then - Schritte[length(Schritte)-1]:=tWerteLogTransformation.create(inh as tWerteLogTransformation) - else if inh is tWerteLogAbsTransformation then - Schritte[length(Schritte)-1]:=tWerteLogAbsTransformation.create(inh as tWerteLogAbsTransformation) - else if inh is tWerteAbsTransformation then - Schritte[length(Schritte)-1]:=tWerteAbsTransformation.create - else begin - gibAus('Ich kann unbekannten Transformationstyp ('+inh.ClassName+') nicht einfügen, da ich ihn nicht kopieren kann!',3); - exit; - end; - achsenUndGroeszeAktualisieren; - result:=true; -end; - -function tTransformationen.add(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat): boolean; -var - i: longint; -begin - result:=false; - if s='Knick' then begin - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tWerteKnickTransformation.create; - with (last as tWerteKnickTransformation) do begin - setlength(parameter,2); - parameter[0]:=0; - parameter[1]:=0; - repeat - if not f.metaReadln(s,true) then begin - gibAus('Unerwartetes Dateiende!',3); - exit; - end; - if s='Ende' then break; - setlength(parameter,length(parameter)+2); - parameter[length(parameter)-2]:= - etf(st,erstesArgument(s,' ')); - if s='' then s:=inttostr(length(parameter) div 2 - 1); - parameter[length(parameter)-1]:= - etf(st,s); - until false; - for i:=0 to length(parameter)-1 do - if odd(i) then - parameter[i]:= - parameter[i]/ - (length(parameter) div 2); - setlength(parameter,length(parameter)+2); - parameter[length(parameter)-2]:= 1; - parameter[length(parameter)-1]:= 1; - end; - result:=true; - exit; - end; - if startetMit('Log:',s) then begin - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tWerteLogTransformation.create; - (last as tWerteLogTransformation).logMin:=etf(st,s); - result:=true; - exit; - end; - if startetMit('AbsLog:',s) then begin - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tWerteLogAbsTransformation.create; - (last as tWerteLogAbsTransformation).logSkala:=etf(st,s); - result:=true; - exit; - end; - if s='Abs' then begin - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tWerteAbsTransformation.create; - result:=true; - exit; - end; - gibAus('Kenne Nachbearbeitungsmethode '''+s+''' nicht!',3); -end; - -function tTransformationen.add(syntaxtest: boolean; s: string; xscale,yscale: extended; etf: tExprToFloat): boolean; -begin - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tKonkreteKoordinatenTransformation.create; - result:=(last as tKonkreteKoordinatenTransformation).initAbbildung(syntaxtest,s,xscale,yscale,etf); - achsenUndGroeszeAktualisieren; -end; - -function tTransformationen.append(inhs: tTransformationen): boolean; -var - i: longint; -begin - result:=true; - for i:=0 to inhs.count-1 do - result:=result and add(inhs[i]); - achsenUndGroeszeAktualisieren; -end; - -procedure tTransformationen.addAusschnitt(xmin,xmax,tmin,tmax: longint); -begin - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tKoordinatenAusschnitt.create; - (last as tKoordinatenAusschnitt).gr['x','x']:=xmin; - (last as tKoordinatenAusschnitt).gr['x','y']:=xmax; - (last as tKoordinatenAusschnitt).gr['y','x']:=tmin; - (last as tKoordinatenAusschnitt).gr['y','y']:=tmax; - achsenUndGroeszeAktualisieren; -end; - -function tTransformationen.addAgglomeration(horizontal: boolean; schritt: extended; anzahl: longint): boolean; -begin - result:=false; - if (xsteps_tsiz[char(ord('y')-byte(horizontal))]>1) xor (schritt<0) then begin - gibAus('Eine explizite Schrittweite ist genau dann anzugeben, wenn die Werte in der Agglomerationsrichtung keine Ausdehnung haben!',3); - exit; - end; - setlength(Schritte,length(Schritte)+1); - Schritte[length(Schritte)-1]:=tAgglomeration.create; - (last as tAgglomeration).horizontal:=horizontal; - (last as tAgglomeration).schritt:=schritt; - (last as tAgglomeration).anzahl:=anzahl; - achsenUndGroeszeAktualisieren; - result:=true; -end; - -function tTransformationen.kopiereVon(original: tTransformationen): boolean; -begin - clear; - _xs_ts:=original._xs_ts; - _xtstao:=original._xtstao; - _wmia:=original._wmia; - result:=append(original); -end; - -function tTransformationen.transformiereKoordinaten(const lage: tLage; const x: extended): extended; -var - p: tExtPoint; - c,d: char; -begin - c:=char(ord('x')+byte(not(lage in [lOben,lUnten]))); - d:=char(ord('x')+byte(lage in [lOben,lUnten])); - - p[d]:=byte(lage in [lRechts,lOben]); - p[c]:=(x-_xtstao[c,'x'])/(_xtstao[c,'y']-_xtstao[c,'x']); - for d:='x' to 'y' do - p[d]:=p[d]*(_xs_ts[d]-1); - p:=transformiereKoordinaten(p); - result:=p[c]/xsteps_tsiz[c]; writeln(' ',floattostr(result)); -end; - -function tTransformationen.transformiereKoordinaten(const x,y: extended): tExtPoint; -begin - result['x']:=x; - result['y']:=y; - result:=transformiereKoordinaten(result); -end; - -function tTransformationen.transformiereKoordinaten(const p: tExtPoint): tExtPoint; -var - i: longint; -begin - result:=p; - for i:=0 to count-1 do - result:=inhalt[i].transformiereKoordinaten(result); -end; - -function tTransformationen.transformiereWert(const x: extended): extended; -var - i: longint; -begin - result:=x; - for i:=0 to count-1 do - result:=inhalt[i].transformiereWert(result); -end; - -function tTransformationen.dumpParams: string; -var - i: longint; -begin - result:=inttostr(xsteps)+' x '+inttostr(tsiz)+' ('+floattostr(xstart)+'..'+floattostr(xstop)+' x '+floattostr(tstart)+'..'+floattostr(tstop)+')'; - for i:=0 to count-1 do - result:=result+#10' '+inhalt[i].dumpParams; -end; - -procedure tTransformationen.berechneZielausdehnung(out grenzen: t2x2Longint); -var - RandPkt: tExtPoint; - i,j,k: longint; - c,d: char; -begin - for c:='x' to 'y' do - for d:='x' to 'y' do - grenzen[c,d]:=-1; - for k:=0 to 1 do - for i:=0 to (_xs_ts['x']*(1-k)+_xs_ts['y']*k)-1 do - for j:=0 to 1 do begin - RandPkt:=transformiereKoordinaten( - i*(1-k) + j*k*(_xs_ts['x']-1), - j*(1-k)*(_xs_ts['y']-1) + i*k); - for c:='x' to 'y' do - for d:='x' to 'y' do - if ((d='y') xor (grenzen[c,d]>floor(RandPkt[c]) + byte(d='y'))) or - ((k=0) and (i=0) and (j=0)) then - grenzen[c,d]:=floor(RandPkt[c]) + byte(d='y'); - end; -end; -*) - function liesTWerteTransformationen(st: boolean; s: string; f: tMyStringlist; etf: tExprToFloat; var tr: tTransformation): boolean; var i: longint; diff --git a/werteunit.pas b/werteunit.pas index c1b66ec..d77c60c 100644 --- a/werteunit.pas +++ b/werteunit.pas @@ -1533,15 +1533,6 @@ begin werte.werte[2*i]:=0; // Ims = 0 werte.werte[2*i+1]:=0; // Dummy-Wavelet end; -(* gibAus('dump:',3); - for i:=0 to werte.tsiz-1 do - if (i=0) or (i=werte.tsiz-1) or - (werte.werte[2*i+1]<>0) or - (werte.werte[2*i]<>werte.werte[2*(i-1)]) or - (werte.werte[2*i]<>werte.werte[2*(i+1)]) then - gibAus(inttostr(i)+' '+floattostr(werte.werte[2*i])+' '+floattostr(werte.werte[2*i+1]),3); - gibAus('ende',3); - exit; *) end; end{of case}; end |