diff options
Diffstat (limited to 'epostunit.pas')
-rw-r--r-- | epostunit.pas | 74 |
1 files changed, 40 insertions, 34 deletions
diff --git a/epostunit.pas b/epostunit.pas index dee94bc..8ba0af0 100644 --- a/epostunit.pas +++ b/epostunit.pas @@ -10054,6 +10054,10 @@ begin rahmen:=true; continue; end; + if istDasBefehl('keine Beschriftung',s,bekannteBefehle,false) then begin + setLength(beschriftungsschritte,0); + continue; + end; if istDasBefehl('Beschriftungen:',s,bekannteBefehle,false) then begin setLength(beschriftungsschritte,1); beschriftungsschritte[0].schritte:=0; @@ -10118,43 +10122,45 @@ begin exit; end; - fontRenderer:=tFontRenderer.create(schriftgroesze); + if length(beschriftungsschritte)>0 then begin + fontRenderer:=tFontRenderer.create(schriftgroesze); - gibAus(floatToStr(minDichte)+' '+floatToStr(maxDichte),1); - for i:=0 to length(beschriftungsschritte)-1 do - gibAus(intToStr(i)+' '+floatToStr(beschriftungsschritte[i].bis)+' '+floatToStr(beschriftungsschritte[i].faktor)+' '+intToStr(beschriftungsschritte[i].schritte)+' '+intToStr(byte(beschriftungsschritte[i].linear)),1); + gibAus(floatToStr(minDichte)+' '+floatToStr(maxDichte),1); + for i:=0 to length(beschriftungsschritte)-1 do + gibAus(intToStr(i)+' '+floatToStr(beschriftungsschritte[i].bis)+' '+floatToStr(beschriftungsschritte[i].faktor)+' '+intToStr(beschriftungsschritte[i].schritte)+' '+intToStr(byte(beschriftungsschritte[i].linear)),1); - i:=0; - wert:=minDichte; - schritt:=-1; - while wert<maxDichte do begin - if i>0 then gibAus(intToStr(i)+' '+floatToStr(wert)+' '+floatToStr(schritt)+' '+floatToStr(beschriftungsschritte[i].bis),1); - if ((i<length(beschriftungsschritte)-1) and (wert>beschriftungsschritte[i].bis)) or (i=0) then begin - repeat - inc(i); - until (i>=length(beschriftungsschritte)-1) or (beschriftungsschritte[i].bis>=wert); - if beschriftungsschritte[i].linear then begin - schritt:=(beschriftungsschritte[i].bis-beschriftungsschritte[i-1].bis)/beschriftungsschritte[i].schritte; - schritt:=power(10,round(ln(schritt)/ln(10)))*beschriftungsschritte[i].faktor; - end - else + i:=0; + wert:=minDichte; + schritt:=-1; + while wert<maxDichte do begin + if i>0 then gibAus(intToStr(i)+' '+floatToStr(wert)+' '+floatToStr(schritt)+' '+floatToStr(beschriftungsschritte[i].bis),1); + if ((i<length(beschriftungsschritte)-1) and (wert>beschriftungsschritte[i].bis)) or (i=0) then begin + repeat + inc(i); + until (i>=length(beschriftungsschritte)-1) or (beschriftungsschritte[i].bis>=wert); + if beschriftungsschritte[i].linear then begin + schritt:=(beschriftungsschritte[i].bis-beschriftungsschritte[i-1].bis)/beschriftungsschritte[i].schritte; + schritt:=power(10,round(ln(schritt)/ln(10)))*beschriftungsschritte[i].faktor; + end + else + schritt:=power(10,floor(ln(wert)/ln(10)-beschriftungsschritte[i].schritte))*beschriftungsschritte[i].faktor; + tmp:=round(beschriftungsschritte[i-1].bis/schritt)*schritt; + while tmp<wert do tmp:=(round(tmp/schritt)+1)*schritt; + wert:=tmp; + gibAus(intToStr(i)+' '+floatToStr(wert)+' '+floatToStr(schritt)+' '+floatToStr(beschriftungsschritte[i].bis),1); + end; + setLength(beschriftungen,length(beschriftungen)+1); + beschriftungen[length(beschriftungen)-1]:=tBeschriftung.create; + beschriftungen[length(beschriftungen)-1].bBreite:=breite; + beschriftungen[length(beschriftungen)-1].bHoehe:=hoehe; + beschriftungen[length(beschriftungen)-1].rahmen:=rahmen; + beschriftungen[length(beschriftungen)-1].fontRend:=fontRenderer; + beschriftungen[length(beschriftungen)-1].position:=(wert-minDichte)/(maxDichte-minDichte); + beschriftungen[length(beschriftungen)-1].inhalt:=floatToStr(wert); + if not beschriftungsschritte[i].linear then schritt:=power(10,floor(ln(wert)/ln(10)-beschriftungsschritte[i].schritte))*beschriftungsschritte[i].faktor; - tmp:=round(beschriftungsschritte[i-1].bis/schritt)*schritt; - while tmp<wert do tmp:=(round(tmp/schritt)+1)*schritt; - wert:=tmp; - gibAus(intToStr(i)+' '+floatToStr(wert)+' '+floatToStr(schritt)+' '+floatToStr(beschriftungsschritte[i].bis),1); - end; - setLength(beschriftungen,length(beschriftungen)+1); - beschriftungen[length(beschriftungen)-1]:=tBeschriftung.create; - beschriftungen[length(beschriftungen)-1].bBreite:=breite; - beschriftungen[length(beschriftungen)-1].bHoehe:=hoehe; - beschriftungen[length(beschriftungen)-1].rahmen:=rahmen; - beschriftungen[length(beschriftungen)-1].fontRend:=fontRenderer; - beschriftungen[length(beschriftungen)-1].position:=(wert-minDichte)/(maxDichte-minDichte); - beschriftungen[length(beschriftungen)-1].inhalt:=floatToStr(wert); - if not beschriftungsschritte[i].linear then - schritt:=power(10,floor(ln(wert)/ln(10)-beschriftungsschritte[i].schritte))*beschriftungsschritte[i].faktor; - wert:=(round(wert/schritt)+1)*schritt; + wert:=(round(wert/schritt)+1)*schritt; + end; end; if lineareFarbe then |