blur.ob 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. (*
  2. http://oberspace.dyndns.org/index.php/topic,484.msg15835.html#msg15835
  3. *)
  4. MODULE Blur;
  5. (*IMPORT dt := DateTime, In, Out, RTL;*)
  6. CONST
  7. W = 640; W1 = 640 - 3;
  8. H = 480; H1 = 480 - 3;
  9. N = 13;
  10. Frames = 1;
  11. TYPE
  12. Plane = ARRAY W*3, H OF CHAR;
  13. VAR
  14. a, b: Plane;
  15. time: REAL;
  16. PROCEDURE Blur2DArray*;
  17. VAR
  18. f, n : INTEGER;
  19. x, y : INTEGER;
  20. color : INTEGER;
  21. BEGIN
  22. FOR f:=1 TO Frames DO
  23. FOR n:=1 TO N DO
  24. FOR y:=1 TO H-2 DO
  25. FOR x:=1 TO W-2 DO
  26. FOR color:=0 TO 2 DO
  27. b[x*3+color,y] := CHR((ORD(a[x*3+color,y+1])+ORD(a[x*3+color,y-1])+ORD(a[(x-1)*3,y])+ORD(a[(x+1)*3,y])) DIV 4);
  28. END
  29. END
  30. END;
  31. FOR y:=1 TO H-2 DO
  32. FOR x:=1 TO W-2 DO
  33. FOR color:=0 TO 2 DO
  34. a[x*3+color,y] := CHR((ORD(b[x*3+color,y+1])+ORD(b[x*3+color,y-1])+ORD(b[(x-1)*3,y])+ORD(b[(x+1)*3,y])) DIV 4);
  35. END
  36. END
  37. END
  38. END
  39. END;
  40. END Blur2DArray;
  41. BEGIN
  42. (*In.Open;
  43. Out.Open;
  44. time := dt.Now();*)
  45. Blur2DArray;
  46. (*Out.FixReal(LONG(FLT(Frames))/((dt.Now() - time) * 86400.D0), 20, 5);
  47. In.Ln;*)
  48. END Blur.