From 25197e663c117aa223c904f1e18584eb28790ba8 Mon Sep 17 00:00:00 2001
From: Xavier <xavier@c-est-simple.com>
Date: Fri, 20 Oct 2017 22:54:50 +0200
Subject: [PATCH] Removed some debug stuff Still issues to investigate when
 designing big icons Added screen shot

---
 resources/IconTool.png    | Bin 0 -> 19556 bytes
 resources/glyph2font.html |  41 ++++++++++++++++++++++++--------------
 2 files changed, 26 insertions(+), 15 deletions(-)
 create mode 100644 resources/IconTool.png

diff --git a/resources/IconTool.png b/resources/IconTool.png
new file mode 100644
index 0000000000000000000000000000000000000000..42ffc617c766c24c85165b2696853b7098a1cdb4
GIT binary patch
literal 19556
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

literal 0
HcmV?d00001

diff --git a/resources/glyph2font.html b/resources/glyph2font.html
index b1d63d2..8f02cf2 100644
--- a/resources/glyph2font.html
+++ b/resources/glyph2font.html
@@ -52,8 +52,8 @@
   <body>
     <div id="form">
       <span>Font array name:</span> <input placeholder="Font array name" type="text" id="name" value="My_Font"/><br/>
-      <span>Height:</span> <input placeholder="Font height" type="number" id="height" value="13" max="64"/><br/>
       <span>Width:</span> <input placeholder="Font width" type="number" id="width" value="10"/><br/>
+      <span>Height:</span> <input placeholder="Font height" type="number" id="height" value="13" max="64"/><br/>
       <span>First char code:</span> <input placeholder="First char code" type="number" id="code" value="1" min="1"/><br/>
       <br/>
       <button id="create">Create</button>
@@ -73,11 +73,13 @@
       // 100% vanilla ECS6, no framework or library was injured for this project.
       // This page allows drawing icons in grids and generating the map with the format required by 
       // library for OLED SD1306 screen: https://github.com/squix78/esp8266-oled-ssd1306
+     
       // TODO: 
-      // Implement data parsing to edit existing font
+      // Implement data parsing to edit existing font: from char array data to pixels matrix
       // Implement methods to move glyphs, symetrical input, ...
       // Implement char insertion, non displayable char, ...
-
+      // Submit PR to original project.
+      
       let font;
       class Font {
         constructor(height, width, code) {
@@ -96,9 +98,18 @@
           let header = charContainer.appendChild(document.createElement("th"));
           header.setAttribute("colspan", this.width-1);
           header.textContent = `Character ${this.currentCharCode}`;
-          let removeCharHeader = charContainer.appendChild(document.createElement("th"));
-          removeCharHeader.setAttribute("action", "remove");
-          removeCharHeader.textContent = "x";
+          let deletePixels = charContainer.appendChild(document.createElement("th"));
+          deletePixels.setAttribute("action", "remove");
+          deletePixels.textContent = "x";
+          deletePixels.addEventListener('click', function() {
+            let result = confirm("Delete the pixels ?");
+            if(result) {
+              let pixels = charContainer.getElementsByTagName('td');
+              for(let p = 0; p < pixels.length; p++) {
+                pixels[p].className = '';
+              }
+            } 
+          });
           for(let r = 0; r < this.height; r++) {
           	let rowContainer = charContainer.appendChild(document.createElement("tr"));
             for(let c = 0; c < this.width; c++) {
@@ -112,6 +123,8 @@
           pixel.className = pixel.className == 'on' ? '': 'on';
         }
         
+        // Read from the <td> css class the pixels that need to be on
+        // generates the jump table and font data 
         generate() {
           document.getElementById('header').textContent = '';
           document.getElementById('jump').textContent = '';
@@ -123,20 +136,22 @@
           let charAddr = 0;
           output('jump', '  // Jump table:');
           output('data', '  // Data:');
+          // Browse each character
           for(let ch = 0; ch < charCount; ch++) {
             let charBytes = [];
             let charBits = [];
             let charWidth = 1; // always add one row of off pixels to the right ?
             let rows = chars[ch].getElementsByTagName('tr');
-            
+            // Browse each column
             for(let col = 0; col < this.width ; col++) {
               var bits = ""; // using string because js uses 32b ints when performing bit operations
-              //for(let r = 0; r < rows.length; r++) {
+              // Browse each row starting from the bottom one, going up, and accumulate pixels in
+              // a string: this rotates the glyph
               for(let r = rows.length-1; r >=0 ; r--) {
                 let pixelState = rows[r].children[col].className;
                 bits += (pixelState == 'on' ? '1': '0');           
               }
-              // Need to complete missing bits to have an odd number of bytes
+              // Need to complete missing bits to have a sizeof byte multiple number of bits
               for(let b = 0; b < bits2add; b++) {
                 bits +=  '0';
               }
@@ -144,8 +159,7 @@
               for(let b = 0 ; b < bits.length/16; b+=16) {
                 let word = parseInt(bits.substring(b, b+15), 2);
                 charBytes.push(getLsB(word));
-                charBytes.push(getMsB(word));
-                
+                charBytes.push(getMsB(word));               
               } 
             }
             // Remove bytes with value 0 at the end of the array.
@@ -154,20 +168,17 @@
             }
             
             output('data', `  ${charBytes.join(',')},`);
+            // TODO: last param width is not the best value. Need to compute the actual occupied width
             output('jump', `  ${getMsB(charAddr)}, ${getLsB(charAddr)}, ${toHexString(charBytes.length)}, ${toHexString(this.width)}, `);
             charAddr += charBytes.length;                                           
           }
           output('data', '};');
-
-          
           
           output('header', `const char ${name}[] PROGMEM = {`);
           output('header', `  ${toHexString(this.width)}, // Width: ${this.width}`);
           output('header', `  ${toHexString(this.height)}, // Height: ${this.height}`);          
           output('header', `  ${toHexString(this.firstCharCode)}, // First char: ${this.firstCharCode}`);
           output('header', `  ${toHexString(charCount)}, // Number of chars: ${charCount}`);
-          
-          
         }
       }
       
-- 
GitLab