소스 검색

use WMGraphics.Real

git-svn-id: https://svn.inf.ethz.ch/svn/lecturers/a2/trunk@7139 8c9fc860-2736-0410-a75d-ab315db34111
eth.morozova 8 년 전
부모
커밋
269bdb7109
1개의 변경된 파일23개의 추가작업 그리고 21개의 파일을 삭제
  1. 23 21
      source/WMGraphicsSmooth.Mod

+ 23 - 21
source/WMGraphicsSmooth.Mod

@@ -14,12 +14,14 @@ CONST
 
 TYPE
 
+	Real* = WMGraphics.Real;
+
 	(**
 		Cancas used for smooth (antialiased) graphics
 	*)
 	Canvas* = OBJECT(WMGraphics.BufferCanvas)
 	VAR
-		lineWidth-: REAL; (** line width in pixels *)
+		lineWidth-: Real; (** line width in pixels *)
 		capType-: LONGINT; (** line cap type *)
 
 		srcOverDstMode: Raster.Mode;
@@ -55,7 +57,7 @@ TYPE
 		(**
 			Set line width in pixels
 		*)
-		PROCEDURE SetLineWidth*(w: REAL);
+		PROCEDURE SetLineWidth*(w: Real);
 		BEGIN
 			IF w < 0.5 THEN w := 0.5; END;
 			lineWidth := w;
@@ -71,7 +73,7 @@ TYPE
 		END SetLineCap;
 
 		PROCEDURE Line(x0, y0, x1, y1: LONGINT; lineColor: WMGraphics.Color; mode: LONGINT);
-		VAR xr0, yr0, xr1, yr1: REAL;
+		VAR xr0, yr0, xr1, yr1: Real;
 		BEGIN
 			IF lineColor # color THEN SetColor(lineColor); END;
 
@@ -93,11 +95,11 @@ TYPE
 		(**
 			Draw an antialiased line represented by real-valued coordinates of the starting and ending points
 		*)
-		PROCEDURE LineReal*(x0, y0, x1, y1: REAL; lineColor: WMGraphics.Color; mode: LONGINT);
+		PROCEDURE LineReal*(x0, y0, x1, y1: Real; lineColor: WMGraphics.Color; mode: LONGINT);
 		VAR
-			dx, dy, g: REAL;
-			x01, y01, x02, y02: REAL;
-			x11, y11, x12, y12: REAL;
+			dx, dy, g: Real;
+			x01, y01, x02, y02: Real;
+			x11, y11, x12, y12: Real;
 			points : ARRAY 4 OF WMGraphics.Point2d;
 		BEGIN
 
@@ -162,7 +164,7 @@ TYPE
 		Based on the "0x5f3759df" algorithm described in Wikipedia ( https://en.wikipedia.org/wiki/Fast_inverse_square_root )
 	*)
 	PROCEDURE InvSqrt(x: REAL): REAL;
-	VAR y: REAL;
+	VAR y: Real;
 	BEGIN
 		y := SYSTEM.VAL(REAL,0x5f3759df - SYSTEM.VAL(LONGINT,x) DIV 2); (* ~4% of error *)
 		RETURN y * ( 1.5E0 - y * y * (x * 0.5E0) ); (* ~0.15% of error *)
@@ -185,15 +187,15 @@ TYPE
 	(*!TODO: optimize the code for performance; consider to use fixed point arithmetics *)
 	PROCEDURE ThinSmoothLineReal(
 												img: Raster.Image;
-												x0, y0, x1, y1: REAL;
+												x0, y0, x1, y1: Real;
 												CONST pixAlphaMap: ARRAY 256 OF Raster.Pixel;
 												VAR srcOverDstMode: Raster.Mode
 												);
 	VAR
 		swapped: BOOLEAN;
 		a, i, incx, incy, x, y, yy, xend: LONGINT;
-		dx, dy, sdx, sdy, dc, dm, dd, d0, d1, v, v0, v1, w: REAL;
-		x0p, y0p, x1p: REAL;
+		dx, dy, sdx, sdy, dc, dm, dd, d0, d1, v, v0, v1, w: Real;
+		x0p, y0p, x1p: Real;
 	BEGIN
 
 		dx := x1 - x0;
@@ -323,13 +325,13 @@ TYPE
 		POSSIBLE COMPILER BUG: if "CONST pixAlphaMap: ARRAY 256 OF Raster.Pixel" is replaced by "CONST pixAlphaMap: ARRAY OF Raster.Pixel" the generated code traps with an access violation!!!
 	*)
 	(*!TODO: optimize the code for performance; consider to use fixed point arithmetics *)
-	PROCEDURE ThickSmoothLineReal(img: Raster.Image; x0, y0, x1, y1: REAL; CONST pixAlphaMap: ARRAY 256 OF Raster.Pixel; VAR srcOverDstMode: Raster.Mode; lineWidth: REAL);
+	PROCEDURE ThickSmoothLineReal(img: Raster.Image; x0, y0, x1, y1: Real; CONST pixAlphaMap: ARRAY 256 OF Raster.Pixel; VAR srcOverDstMode: Raster.Mode; lineWidth: Real);
 	VAR
 		swapped: BOOLEAN;
 		a, i, incx, incy, x, y, yy, xend: LONGINT;
-		dx, dy, sdx, sdy, dc, dm, dd, d0, d1, v, v0, v1, w: REAL;
-		x0p, y0p, x1p: REAL;
-		halfWidth: REAL;
+		dx, dy, sdx, sdy, dc, dm, dd, d0, d1, v, v0, v1, w: Real;
+		x0p, y0p, x1p: Real;
+		halfWidth: Real;
 	BEGIN
 
 		halfWidth := 0.5*lineWidth;
@@ -431,9 +433,9 @@ TYPE
 			INC(x,incx);
 		END;
 	(*VAR
-		dx, dy, ig: REAL;
-		x01, y01, x02, y02: REAL;
-		x11, y11, x12, y12: REAL;
+		dx, dy, ig: Real;
+		x01, y01, x02, y02: Real;
+		x11, y11, x12, y12: Real;
 	BEGIN
 		dx := x1 - x0;
 		dy := y1 - y0;
@@ -459,7 +461,7 @@ TYPE
 		ThinSmoothLineReal(img, x11,y11, x12,y12, pixAlphaMap, srcOverDstMode);*)
 	END ThickSmoothLineReal;
 
-	PROCEDURE Round(x: REAL): LONGINT;
+	PROCEDURE Round(x: Real): LONGINT;
 	BEGIN
 		IF x >= 0 THEN
 			RETURN ENTIER(x+0.5);
@@ -477,9 +479,9 @@ TYPE
 
 		Intersection points are returned in x0, y0, x1, y1
 	*)
-	PROCEDURE ClipLineReal(l, t, r, b: REAL; VAR x0, y0, x1, y1: REAL): BOOLEAN;
+	PROCEDURE ClipLineReal(l, t, r, b: Real; VAR x0, y0, x1, y1: Real): BOOLEAN;
 	VAR
-		dy, dx, x00, y00: REAL;
+		dy, dx, x00, y00: Real;
 	BEGIN
 
 		dx := x1 - x0;