]> git.r.bdr.sh - rbdr/tomato-sauce/blobdiff - lib/screens/circle.js
Update code and dpendencies
[rbdr/tomato-sauce] / lib / screens / circle.js
index d8a4d100730ad4b4c3b05732e7b2ea9abaa7c670..d09cb0785e4f6567c1851f92754ded5e21244dbc 100644 (file)
@@ -1,32 +1,36 @@
 'use strict';
 
-// Draws concentric circles. Each ring has its own color.
-const Circle = function (modulation, width, height, renderer) {
-  let response = [];
-
-  let circles = width > height ? height : width;
-
-  for (let i = 0; i < circles; i++) {
-    let centerX = Math.round(width / 2) + 1;
-    let centerY = Math.round(height / 2) + 1;
-
-    let red = Math.floor(Math.random() * 255);
-    let blue = Math.floor(Math.random() * 255);
-    let green = Math.floor(Math.random() * 255);
-
-    for (let j = 0; j < 180; j++) {
-      let angle =  2 * j * (Math.PI / 180);
-      let x = Math.round(centerX + Math.sin(angle) * i);
-      let y = Math.round(centerY + Math.cos(angle) * i);
-
-      if (x <= width && x > 0 && y <= height && y > 0) {
-        let position = `\x1B[${y};${x}H`; // Move cursor to y,x (CSI y;x H)
-        response += `${position}${renderer(red, blue, green)} `;
-      }
+/**
+ * Draws concentric circles. Each ring has its own color.
+ *
+ * @function CircleScreen
+ * @implements IScreen
+ */
+module.exports = function (modulation, width, height, renderer) {
+
+    let response = '';
+
+    const circles = width > height ? height : width;
+
+    for (let i = 0; i < circles; ++i) {
+        const centerX = Math.round(width / 2) + 1;
+        const centerY = Math.round(height / 2) + 1;
+
+        const red = Math.floor(Math.random() * 255);
+        const blue = Math.floor(Math.random() * 255);
+        const green = Math.floor(Math.random() * 255);
+
+        for (let j = 0; j < 180; ++j) {
+            const angle =  2 * j * (Math.PI / 180);
+            const x = Math.round(centerX + Math.sin(angle) * i);
+            const y = Math.round(centerY + Math.cos(angle) * i);
+
+            if (x <= width && x > 0 && y <= height && y > 0) {
+                const position = `\x1B[${y};${x}H`; // Move cursor to y,x (CSI y;x H)
+                response += `${position}${renderer(red, blue, green)} `;
+            }
+        }
     }
-  }
 
-  return response;
+    return response;
 };
-
-module.exports = Circle;