1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87: 88: 89: 90: 91: 92: 93: 94: 95: 96: 97: 98: 99: 100: 101: 102: 103: 104: 105: 106: 107: 108: 109: 110: 111:
| PROCEDURE apf_beliebiger_ausschnitt; VAR m,n,i:longint; p:pbytearray; zwei,x,y,x_k,x1_k,y_k,y2wert,xqu,yqu,summe, deltax,deltay:extended;
procedure laden; asm fld x_k fld y_k fld xqu fld yqu fld y fld x end;
procedure rechnen; asm fmulp fadd ST(0),ST(0) fsub ST(0),ST(3) fxch ST(2) fsubrp fsub ST(0),ST(3) fld ST(0) fmul ST(0),ST(1) fld ST(2) fmul ST(0),ST(3) fld ST(1) fadd ST(0),ST(1) fstp summe fxch ST(1) fxch ST(3) fxch ST(1) fxch ST(2) end;
procedure poppen; asm fstp x fstp y fstp yqu fstp xqu fstp y_k fstp x_k end;
BEGIN ausschnitt_check:=true; deltax:=(c_reel2-c_reel1)/639; deltay:=(c_imag2-c_imag1)/479; y_k:=c_imag1-deltay; zwei:=2.0; m:=0; REPEAT p:=a_bild.ScanLine[m]; y_k:=y_k+deltay; x_k:=c_reel1-deltax; FOR n:=0 TO 639 DO BEGIN x1_k:=x_k+deltax; x_k:=x1_k; x:=0.0; y:=0.0; xqu:=0.0; yqu:=0.0; color:=0; laden; REPEAT rechnen; inc(color) UNTIL (summe > maxsum) OR (color = colormax); poppen; IF form7.checkbox6.checked THEN BEGIN IF (color >= colormin) OR (color = colormax) THEN begin i:=3*n; p[i]:=farbe_blau; p[i+1]:=farbe_gruen; p[i+2]:=farbe_rot; form7.canvas.pixels[n,m]:=farben end END ELSE BEGIN IF (color <= colormin) OR (color = colormax) THEN begin i:=3*n; p[i]:=farbe_blau; p[i+1]:=farbe_gruen; p[i+2]:=farbe_rot; form7.canvas.pixels[n,m]:=farben end END END; m:=succ(m); Application.processMessages UNTIL (m = 480) or ende; daten_aktualisieren(werte_apf_alt); BitBlt(bild_apf.canvas.handle,0,0,640,480, a_bild.canvas.handle,0,0,SRCCOPY) END; |