From a502abf05190cbb4b1be9130287e19581a25d2bb Mon Sep 17 00:00:00 2001
From: Lauchmelder <robert.trololo@gmail.com>
Date: Tue, 30 Nov 2021 14:08:50 +0100
Subject: [PATCH] basic parser to renderer pipeline

---
 examples/test.gs          |  9 +++++----
 src/geometry.ts           | 38 +++++++++++++++++++++-----------------
 src/parser/instruction.ts |  2 +-
 3 files changed, 27 insertions(+), 22 deletions(-)

diff --git a/examples/test.gs b/examples/test.gs
index 291c48a..49f1677 100644
--- a/examples/test.gs
+++ b/examples/test.gs
@@ -1,9 +1,10 @@
-point(0.2378, -34.389) -> A
-point(2.5, 0) -> B
-[point(-1, 3) -> C]
+point(200, 300) -> A
+point(400, 300) -> B
+[point(300, 128) -> C]
 
 line(A, B) -> AB
 line(B, C)
 line(C, A)
 
-circle(A, len(AB))
\ No newline at end of file
+circle(A, len(AB))
+circle(B, len(AB))
\ No newline at end of file
diff --git a/src/geometry.ts b/src/geometry.ts
index 08a7dfc..584b633 100644
--- a/src/geometry.ts
+++ b/src/geometry.ts
@@ -41,14 +41,9 @@ class Geometry extends HTMLElement
             return;
         }
 
-        for(let instr of parser.instructions)
-        {
-            console.log(instr.eval());
-        }
-
         this.attachShadow({mode: "open"});
         let canvas = document.createElement("canvas");
-        canvas.width = 500;
+        canvas.width = 700;
         canvas.height = 500;
         let context = canvas.getContext("2d");
 
@@ -59,18 +54,27 @@ class Geometry extends HTMLElement
 
 
         this.shapes = []
-        this.shapes.push(new Circle(this.context, new Vector2D(150, 150), 100))
-        this.shapes.push(new Line(this.context, new Vector2D(), new Vector2D(300, 300)))
+        for(let instruction of parser.instructions)
+        {
+            let value = instruction.eval();
+            switch(instruction.getType())
+            {
+                case InstructionType.Line:
+                {
+                    console.log("New line " + value)
+                    this.shapes.push(new Line(this.context, new Vector2D(value[0].x, value[0].y), new Vector2D(value[1].x, value[1].y)));
+                    break;
+                }
+                
+                case InstructionType.Circle:
+                {
+                    console.log("New circle " + value)
+                    this.shapes.push(new Circle(this.context, new Vector2D(value[0].x, value[0].y), value[1]));
+                    break;
+                }
+            }
+        }
 
-        this.shapes.push(new Polygon(this.context,
-            [
-                new Vector2D(150, 150),
-                new Vector2D(150, 250),
-                new Vector2D(250, 250),
-                new Vector2D(250, 150),
-                new Vector2D(300, 300),
-                new Vector2D(250, 350),
-            ]))
         this.redraw();
     }
 
diff --git a/src/parser/instruction.ts b/src/parser/instruction.ts
index 764a139..87848b9 100644
--- a/src/parser/instruction.ts
+++ b/src/parser/instruction.ts
@@ -59,7 +59,7 @@ class CircleInstruction extends Instruction
 {
     constructor()
     {
-        super(InstructionType.Line, 2);
+        super(InstructionType.Circle, 2);
     }
 
     eval()