Bladeren bron

In.Real fixed, Graph.Circle implemented

Artur Efimov 6 jaren geleden
bovenliggende
commit
951e9a1cd1
10 gewijzigde bestanden met toevoegingen van 45 en 12 verwijderingen
  1. 3 0
      Programs/Book.Mod
  2. 2 0
      data/bin/voc/src/src/runtime/In.Mod
  3. 1 1
      src/Editor.Mod
  4. 1 1
      src/EditorText.Mod
  5. 1 1
      src/FreeOberon.Mod
  6. 33 5
      src/Graph.Mod
  7. 1 1
      src/OV.Mod
  8. 1 1
      src/SDL2.Mod
  9. 1 1
      src/Term.Mod
  10. 1 1
      src/Terminal.Mod

+ 3 - 0
Programs/Book.Mod

@@ -1,8 +1,11 @@
 MODULE Book;
 IMPORT Out, In, G := Graph;
 VAR screen: G.Bitmap;
+
 BEGIN
   screen := G.Init();
+  G.Circle(screen, 50, 50, 45, G.MakeCol(0, 255, 0));
+
   G.Line(screen, FLOOR(200.0), 50, 450, 50, G.MakeCol(255, 0, 0));
   G.Line(screen, 150, 350, 400, 350, G.MakeCol(255, 0, 0));
   G.Line(screen, 200, 50, 150, 350, G.MakeCol(255, 0, 0));

+ 2 - 0
data/bin/voc/src/src/runtime/In.Mod

@@ -140,6 +140,7 @@ PROCEDURE Real*(VAR x: REAL);
 VAR
   str: ARRAY 16 OF CHAR;
 BEGIN
+  StartAndSkip;
   Line(str);
   Strings.StrToReal(str, x);
 END Real;
@@ -148,6 +149,7 @@ PROCEDURE LongReal*(VAR y: LONGREAL);
 VAR
   str: ARRAY 16 OF CHAR;
 BEGIN
+  StartAndSkip;
   Line(str);
   Strings.StrToLongReal(str, y);
 END LongReal;

+ 1 - 1
src/Editor.Mod

@@ -1,5 +1,5 @@
 MODULE Editor;
-(* Copyright 2017 Arthur Yefimov
+(* Copyright 2017-2019 Arthur Yefimov
 
 This file is part of Free Oberon.
 

+ 1 - 1
src/EditorText.Mod

@@ -1,5 +1,5 @@
 MODULE EditorText;
-(* Copyright 2017 Arthur Yefimov
+(* Copyright 2017-2019 Arthur Yefimov
 
 This file is part of Free Oberon.
 

+ 1 - 1
src/FreeOberon.Mod

@@ -1,5 +1,5 @@
 MODULE FreeOberon;
-(* Copyright 2017, 2018 Arthur Yefimov
+(* Copyright 2017-2019 Arthur Yefimov
 
 This file is part of Free Oberon.
 

+ 33 - 5
src/Graph.Mod

@@ -1,5 +1,5 @@
 MODULE Graph;
-(* Copyright 2017 Arthur Yefimov
+(* Copyright 2017-2019 Arthur Yefimov
 
 This file is part of Free Oberon.
 
@@ -573,12 +573,40 @@ BEGIN
   SDL.FillRect(bmp.surface, rect, color)
 END RectFill;
 
-PROCEDURE Circle*(bmp: Bitmap; x, y, r, color: INTEGER);
-BEGIN
+PROCEDURE Circle*(b: Bitmap; cx, cy, r, col: INTEGER);
+VAR x, y, d: INTEGER;
+BEGIN
+  x := 0; y := r; d := 3 - 2 * r;
+  WHILE x <= y DO
+    PutPixel(b, cx + x, cy + y, col);
+    PutPixel(b, cx + y, cy + x, col);
+    PutPixel(b, cx + x, cy - y, col);
+    PutPixel(b, cx + y, cy - x, col);
+    PutPixel(b, cx - x, cy + y, col);
+    PutPixel(b, cx - y, cy + x, col);
+    PutPixel(b, cx - x, cy - y, col);
+    PutPixel(b, cx - y, cy - x, col);
+    IF d < 0 THEN d := d + 4 * x + 6
+    ELSE d := d + 4 * (x - y) + 10; DEC(y)
+    END;
+    INC(x)
+  END
 END Circle;
 
-PROCEDURE CircleFill*(bmp: Bitmap; x, y, r, color: INTEGER);
-BEGIN
+PROCEDURE CircleFill*(b: Bitmap; cx, cy, r, col: INTEGER);
+VAR x, y, d: INTEGER;
+BEGIN
+  x := 0; y := r; d := 3 - 2 * r;
+  WHILE x <= y DO
+    HLine(b, cx - x, cy + y, cx + x, col);
+    HLine(b, cx - y, cy + x, cx + y, col);
+    HLine(b, cx - x, cy - y, cx + x, col);
+    HLine(b, cx - y, cy - x, cx + y, col);
+    IF d < 0 THEN d := d + 4 * x + 6
+    ELSE d := d + 4 * (x - y) + 10; DEC(y)
+    END;
+    INC(x)
+  END
 END CircleFill;
 
 PROCEDURE Ellipse*(bmp: Bitmap; x, y, rx, ry, color: INTEGER);

+ 1 - 1
src/OV.Mod

@@ -1,5 +1,5 @@
 MODULE OV;
-(* Copyright 2017 Arthur Yefimov
+(* Copyright 2017-2019 Arthur Yefimov
 
 This file is part of Free Oberon.
 

+ 1 - 1
src/SDL2.Mod

@@ -1,5 +1,5 @@
 MODULE SDL2;
-(* Copyright 2017 Arthur Yefimov
+(* Copyright 2017-2019 Arthur Yefimov
 
 This file is part of Free Oberon.
 

+ 1 - 1
src/Term.Mod

@@ -1,5 +1,5 @@
 MODULE Term;
-(* Copyright 2017 Arthur Yefimov
+(* Copyright 2017-2019 Arthur Yefimov
 
 This file is part of Free Oberon.
 

+ 1 - 1
src/Terminal.Mod

@@ -1,5 +1,5 @@
 MODULE Terminal;
-(* Copyright 2017 Arthur Yefimov
+(* Copyright 2017-2019 Arthur Yefimov
 
 This file is part of Free Oberon.