├── .gitignore ├── FileTab.js ├── Fonts.js ├── Inkplate.js ├── README.md ├── Screen.js ├── UI.js ├── build ├── build.options.json ├── preproc │ └── ctags_target_for_gcc_minus_e.cpp └── sketch │ ├── Fonts │ ├── FreeMono12pt7b.h │ ├── FreeMono18pt7b.h │ ├── FreeMono24pt7b.h │ ├── FreeMono9pt7b.h │ ├── FreeMonoBold12pt7b.h │ ├── FreeMonoBold18pt7b.h │ ├── FreeMonoBold24pt7b.h │ ├── FreeMonoBold9pt7b.h │ ├── FreeMonoBoldOblique12pt7b.h │ ├── FreeMonoBoldOblique18pt7b.h │ ├── FreeMonoBoldOblique24pt7b.h │ ├── FreeMonoBoldOblique9pt7b.h │ ├── FreeMonoOblique12pt7b.h │ ├── FreeMonoOblique18pt7b.h │ ├── FreeMonoOblique24pt7b.h │ ├── FreeMonoOblique9pt7b.h │ ├── FreeSans12pt7b.h │ ├── FreeSans18pt7b.h │ ├── FreeSans24pt7b.h │ ├── FreeSans9pt7b.h │ ├── FreeSansBold12pt7b.h │ ├── FreeSansBold18pt7b.h │ ├── FreeSansBold24pt7b.h │ ├── FreeSansBold9pt7b.h │ ├── FreeSansBoldOblique12pt7b.h │ ├── FreeSansBoldOblique18pt7b.h │ ├── FreeSansBoldOblique24pt7b.h │ ├── FreeSansBoldOblique9pt7b.h │ ├── FreeSansOblique12pt7b.h │ ├── FreeSansOblique18pt7b.h │ ├── FreeSansOblique24pt7b.h │ ├── FreeSansOblique9pt7b.h │ ├── FreeSerif12pt7b.h │ ├── FreeSerif18pt7b.h │ ├── FreeSerif24pt7b.h │ ├── FreeSerif9pt7b.h │ ├── FreeSerifBold12pt7b.h │ ├── FreeSerifBold18pt7b.h │ ├── FreeSerifBold24pt7b.h │ ├── FreeSerifBold9pt7b.h │ ├── FreeSerifBoldItalic12pt7b.h │ ├── FreeSerifBoldItalic18pt7b.h │ ├── FreeSerifBoldItalic24pt7b.h │ ├── FreeSerifBoldItalic9pt7b.h │ ├── FreeSerifItalic12pt7b.h │ ├── FreeSerifItalic18pt7b.h │ ├── FreeSerifItalic24pt7b.h │ ├── FreeSerifItalic9pt7b.h │ ├── Org_01.h │ ├── Picopixel.h │ ├── Tiny3x3a2pt7b.h │ └── TomThumb.h │ ├── generatedUI.h │ └── testScript.ino.cpp ├── fonts.css ├── index.css ├── index.html ├── main.js ├── primitives.js ├── settingsTab.js ├── style.css ├── temp.py ├── testScript ├── .DS_Store ├── Fonts │ ├── FreeMono12pt7b.h │ ├── FreeMono18pt7b.h │ ├── FreeMono24pt7b.h │ ├── FreeMono9pt7b.h │ ├── FreeMonoBold12pt7b.h │ ├── FreeMonoBold18pt7b.h │ ├── FreeMonoBold24pt7b.h │ ├── FreeMonoBold9pt7b.h │ ├── FreeMonoBoldOblique12pt7b.h │ ├── FreeMonoBoldOblique18pt7b.h │ ├── FreeMonoBoldOblique24pt7b.h │ ├── FreeMonoBoldOblique9pt7b.h │ ├── FreeMonoOblique12pt7b.h │ ├── FreeMonoOblique18pt7b.h │ ├── FreeMonoOblique24pt7b.h │ ├── FreeMonoOblique9pt7b.h │ ├── FreeSans12pt7b.h │ ├── FreeSans18pt7b.h │ ├── FreeSans24pt7b.h │ ├── FreeSans9pt7b.h │ ├── FreeSansBold12pt7b.h │ ├── FreeSansBold18pt7b.h │ ├── FreeSansBold24pt7b.h │ ├── FreeSansBold9pt7b.h │ ├── FreeSansBoldOblique12pt7b.h │ ├── FreeSansBoldOblique18pt7b.h │ ├── FreeSansBoldOblique24pt7b.h │ ├── FreeSansBoldOblique9pt7b.h │ ├── FreeSansOblique12pt7b.h │ ├── FreeSansOblique18pt7b.h │ ├── FreeSansOblique24pt7b.h │ ├── FreeSansOblique9pt7b.h │ ├── FreeSerif12pt7b.h │ ├── FreeSerif18pt7b.h │ ├── FreeSerif24pt7b.h │ ├── FreeSerif9pt7b.h │ ├── FreeSerifBold12pt7b.h │ ├── FreeSerifBold18pt7b.h │ ├── FreeSerifBold24pt7b.h │ ├── FreeSerifBold9pt7b.h │ ├── FreeSerifBoldItalic12pt7b.h │ ├── FreeSerifBoldItalic18pt7b.h │ ├── FreeSerifBoldItalic24pt7b.h │ ├── FreeSerifBoldItalic9pt7b.h │ ├── FreeSerifItalic12pt7b.h │ ├── FreeSerifItalic18pt7b.h │ ├── FreeSerifItalic24pt7b.h │ ├── FreeSerifItalic9pt7b.h │ ├── Org_01.h │ ├── Picopixel.h │ ├── Tiny3x3a2pt7b.h │ └── TomThumb.h ├── generatedUI.h └── testScript.ino ├── widgets.js └── widgets ├── clock.js ├── digitalclock.js └── graph.js /.gitignore: -------------------------------------------------------------------------------- 1 | fonts/ 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /FileTab.js: -------------------------------------------------------------------------------- 1 | class FileTab { 2 | constructor() { 3 | 4 | } 5 | 6 | exportC() { 7 | let s = `#include "Arduino.h"\n`; 8 | s += `#include "Inkplate.h"\n`; 9 | 10 | let alreadyIncluded = []; 11 | for (let el of screen.entities) { 12 | if (el.getIncludes) { 13 | let t = el.getIncludes(); 14 | 15 | if (alreadyIncluded.indexOf(t) != -1) 16 | continue; 17 | 18 | alreadyIncluded.push(t); 19 | s += t; 20 | } 21 | } 22 | 23 | s += `\n`; 24 | s += `extern Inkplate display;\n`; 25 | s += `\n`; 26 | 27 | for (let el of screen.entities) 28 | s += el.getCCodeVariables(); 29 | 30 | s += `void mainDraw() {\n`; 31 | 32 | for (let el of screen.entities) 33 | s += el.getCCodeDraw(); 34 | 35 | s += `}\n`; 36 | 37 | let a = document.createElement('a'); 38 | a.href = "data:application/octet-stream," + encodeURIComponent(s); 39 | a.download = 'generatedUI.h'; 40 | a.click(); 41 | } 42 | 43 | save() { 44 | let s = { 45 | widgetCount: widgetsIdCount, 46 | primitiveCount: primitiveIdCount, 47 | entities: screen.entities 48 | }; 49 | 50 | for (let i = 0; i < screen.entities.length; ++i) { 51 | if (screen.entities[i].type == "bitmap" && !screen.entities[i].base64) { 52 | let c = document.createElement('canvas'); 53 | c.width = screen.entities[i].file.width; 54 | c.height = screen.entities[i].file.height; 55 | 56 | let ctx = c.getContext("2d"); 57 | ctx.drawImage(screen.entities[i].file, 0, 0); 58 | 59 | screen.entities[i].base64 = c.toDataURL(); 60 | } 61 | } 62 | 63 | let a = document.createElement('a'); 64 | a.href = "data:application/octet-stream," + encodeURIComponent(JSON.stringify(s)); 65 | a.download = 'save.json'; 66 | a.click(); 67 | 68 | for (let i = 0; i < screen.entities.length; ++i) { 69 | if (screen.entities[i].type == "bitmap" && !screen.entities[i].base64) { 70 | screen.entities[i].base64 = undefined; 71 | } 72 | } 73 | } 74 | 75 | load() { 76 | let a = document.createElement('input'); 77 | a.type = "file"; 78 | a.click(); 79 | 80 | a.oninput = ((el) => { 81 | let f = el.target.files[0]; 82 | var reader = new FileReader(); 83 | 84 | reader.onload = (function () { 85 | let el = JSON.parse(reader.result); 86 | 87 | screen.entities = []; 88 | primitiveIdCount = el.primitiveCount; 89 | widgetsIdCount = el.widgetCount; 90 | 91 | for (let en of el.entities) { 92 | if (en.type == "widget") { 93 | screen.entities.push(_.merge(_.cloneDeep(widgets.find(el => el.name == en.name)), en)); 94 | } else { 95 | if (en.type == "bitmap") { 96 | en.url = en.base64; 97 | en.base64 = undefined; 98 | en.file = new Image(); 99 | en.file.src = en.url; 100 | } 101 | screen.entities.push(_.merge(new primitiveDict[en.type], en)); 102 | } 103 | } 104 | refreshEntitiesScroll(); 105 | }); 106 | 107 | reader.readAsText(f); 108 | }) 109 | } 110 | } -------------------------------------------------------------------------------- /Fonts.js: -------------------------------------------------------------------------------- 1 | class Fonts { 2 | constructor() { 3 | 4 | } 5 | 6 | getName(name) { 7 | return "_" + name.split(" ").join("_"); 8 | } 9 | 10 | toHeader(name) { 11 | // // converter, has bugs 12 | // let canvas = document.createElement("canvas"); 13 | // let ctx = canvas.getContext("2d"); 14 | 15 | // ctx.font = name; 16 | 17 | // let s = ""; 18 | 19 | // for (let i = 32; i <= 126; ++i) 20 | // s += String.fromCharCode(i); 21 | 22 | // canvas.width = globalW; 23 | // canvas.height = parseInt(name) * 1.4; 24 | 25 | // ctx.scale(1, 1); 26 | 27 | // ctx.font = name; 28 | 29 | // let res = `const uint8_t ${this.getName(name)}Bitmaps[] PROGMEM = {\n`; 30 | // let glyph = `const GFXglyph ${this.getName(name)}Glyphs[] PROGMEM = {\n` 31 | // let ptr = 0; 32 | 33 | // for (let i = 0; i < s.length; ++i) { 34 | // ctx.clearRect(0, 0, canvas.width, canvas.height); 35 | // ctx.fillText(s[i], 0, parseInt(name)); 36 | // var imgData = ctx.getImageData(0, 0, ctx.measureText(s[i]).width * 1.06, canvas.height); 37 | 38 | // let arr = []; 39 | 40 | // glyph += `{ ${ptr}, ${Math.ceil(imgData.width / 8) * 8}, ${imgData.height}, ${parseInt(imgData.width * 1.3)}, ${0}, ${0} },\n`; 41 | // ptr += Math.ceil(imgData.width / 8) * imgData.height; 42 | 43 | // for (let j = 0; j < imgData.height; ++j) { 44 | // arr.push(new Array(Math.ceil(imgData.width / 8)).fill(0)); 45 | // for (let k = 0; k < imgData.width; ++k) { 46 | // let idx = k + j * imgData.width; 47 | 48 | // // imgData.data[4 * idx + 0] = 0; 49 | // // imgData.data[4 * idx + 1] = 0; 50 | // // imgData.data[4 * idx + 2] = 0; 51 | // // imgData.data[4 * idx + 3] = 255; 52 | 53 | // if (imgData.data[4 * idx + 3] > 0) { 54 | // let _k = k + (7 - imgData.width % 8); 55 | // arr[j][Math.floor(_k / 8)] |= (1 << (7 - _k % 8)); 56 | // } 57 | // } 58 | // } 59 | 60 | // ctx.putImageData(imgData, 0, 0); 61 | 62 | // ctx.putImageData(imgData, 200, 0); 63 | 64 | // res += "// " + s[i] + "\n"; 65 | // for (let j = 0; j < imgData.height; ++j) { 66 | // for (let k = 0; k < Math.ceil(imgData.width / 8); ++k) { 67 | // res += "0x" + arr[j][k].toString(16) + ", "; 68 | // } 69 | // res += "\n"; 70 | // } 71 | // res += "\n"; 72 | // } 73 | // document.getElementsByClassName("wrapper")[0].appendChild(canvas); 74 | 75 | // glyph += "};\n" 76 | 77 | // res += "};\n\n"; 78 | // res += glyph + "\n"; 79 | 80 | // res += `const GFXfont ${this.getName(name)} PROGMEM = {\n` + 81 | // `(uint8_t *)${this.getName(name)}Bitmaps,\n` + 82 | // `(GFXglyph *)${this.getName(name)}Glyphs,\n` + 83 | // `0x20, 0x7E, (int)${parseInt(name) * 1.3} };\n`; 84 | 85 | // return res; 86 | } 87 | } 88 | 89 | let fonts = new Fonts(); -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Inkplate-GUI-Designer 2 | Web app for designing GUI for Inkplate e-paper displays 3 | 4 | # Configuring Fonts 5 | 6 | The GUI editor is capable of rendering fonts in an accurate way to how Adafruit 7 | GFX will render them on an Inkplate device. 8 | 9 | By default, `fonts.css` is configured with a list of the basic GNU FreeFont 10 | fonts typically used in the [Adafruit GFX font tutorial](https://learn.adafruit.com/adafruit-gfx-graphics-library/using-fonts). 11 | You can acquire the TTFs from their [project page](http://savannah.gnu.org/projects/freefont/) 12 | and place them in the `fonts/` folder for the GUI designer to use them. 13 | 14 | To use custom fonts, place any TTF font in the `fonts/` folder, and update 15 | `fonts.css` to add references to them. 16 | 17 | If using hosted version, you can use all of the GNU FreeFont which is loaded by default. 18 | -------------------------------------------------------------------------------- /UI.js: -------------------------------------------------------------------------------- 1 | class UI { 2 | constructor(ctx, canvas) { 3 | this.ctx = ctx; 4 | this.canvas = canvas; 5 | 6 | this.scale = 1.0; 7 | 8 | this.xOffset = 0; 9 | this.yOffset = 0; 10 | 11 | this.outline = 0; 12 | 13 | this.width = globalW; 14 | this.height = globalH; 15 | } 16 | 17 | scaleX(x) { 18 | return this.xOffset + this.outline + x * (800 / globalW); 19 | } 20 | 21 | scaleY(y) { 22 | return this.yOffset + this.outline + y * (600 / globalH); 23 | } 24 | 25 | drawPicker(x, y) { 26 | this.ctx.beginPath(); 27 | this.ctx.arc(this.scaleX(x), this.scaleY(y), 5, 0, 2 * Math.PI, false); 28 | this.ctx.fillStyle = 'red'; 29 | this.ctx.fill(); 30 | } 31 | 32 | drawAligmentLinesVertical(x, p) { 33 | this.ctx.beginPath(); 34 | 35 | p += 2; 36 | this.ctx.strokeStyle = "#ff0000"; 37 | this.ctx.setLineDash([15, 15, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4].slice(p * 2 - 2, p * 2)); 38 | 39 | this.ctx.moveTo(this.scaleX(x), this.scaleY(0)); 40 | this.ctx.lineTo(this.scaleX(x), this.scaleY(globalH)); 41 | 42 | this.ctx.stroke(); 43 | this.ctx.setLineDash([]); 44 | } 45 | 46 | drawAligmentLinesHorizontal(y, p) { 47 | this.ctx.beginPath(); 48 | 49 | p += 2; 50 | this.ctx.strokeStyle = "#ff0000"; 51 | this.ctx.setLineDash([15, 15, 12, 12, 10, 10, 8, 8, 6, 6, 4, 4].slice(p * 2 - 2, p * 2)); 52 | 53 | this.ctx.moveTo(this.scaleX(0), this.scaleY(y)); 54 | this.ctx.lineTo(this.scaleX(globalW), this.scaleY(y)); 55 | 56 | this.ctx.stroke(); 57 | this.ctx.setLineDash([]); 58 | } 59 | } -------------------------------------------------------------------------------- /build/build.options.json: -------------------------------------------------------------------------------- 1 | { 2 | "additionalFiles": "../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,../..,..", 3 | "builtInLibrariesFolders": "/Applications/Arduino.app/Contents/Java/libraries", 4 | "builtInToolsFolders": "/Applications/Arduino.app/Contents/Java/tools-builder,/Applications/Arduino.app/Contents/Java/hardware/tools/avr,/Users/nitkonitkic/Library/Arduino15/packages", 5 | "compiler.optimization_flags": "", 6 | "customBuildProperties": "build.path=/Users/nitkonitkic/Desktop/code/Inkplate-GUI-Designer/build,build.warn_data_percentage=75,runtime.tools.xtensa-esp32-elf-gcc.path=/Users/nitkonitkic/Library/Arduino15/packages/Croduino_Boards/tools/xtensa-esp32-elf-gcc/1.22.0-80-g6c4433a-5.2.0,runtime.tools.xtensa-esp32-elf-gcc-1.22.0-80-g6c4433a-5.2.0.path=/Users/nitkonitkic/Library/Arduino15/packages/Croduino_Boards/tools/xtensa-esp32-elf-gcc/1.22.0-80-g6c4433a-5.2.0,runtime.tools.mkspiffs.path=/Users/nitkonitkic/Library/Arduino15/packages/Croduino_Boards/tools/mkspiffs/0.2.3,runtime.tools.mkspiffs-0.2.3.path=/Users/nitkonitkic/Library/Arduino15/packages/Croduino_Boards/tools/mkspiffs/0.2.3,runtime.tools.esptool_py.path=/Users/nitkonitkic/Library/Arduino15/packages/Croduino_Boards/tools/esptool_py/2.6.0,runtime.tools.esptool_py-2.6.0.path=/Users/nitkonitkic/Library/Arduino15/packages/Croduino_Boards/tools/esptool_py/2.6.0", 7 | "fqbn": "Croduino_Boards:esp32:Inkplate6:PSRAM=enabled,PartitionScheme=huge_app,CPUFreq=240,UploadSpeed=460800,DebugLevel=none", 8 | "hardwareFolders": "/Applications/Arduino.app/Contents/Java/hardware,/Users/nitkonitkic/Library/Arduino15/packages", 9 | "otherLibrariesFolders": "/Users/nitkonitkic/Documents/Arduino/libraries", 10 | "runtime.ide.version": "10813", 11 | "sketchLocation": "/Users/nitkonitkic/Desktop/code/Inkplate-GUI-Designer/testScript/testScript.ino" 12 | } -------------------------------------------------------------------------------- /build/preproc/ctags_target_for_gcc_minus_e.cpp: -------------------------------------------------------------------------------- 1 | # 1 "/Users/nitkonitkic/Desktop/code/Inkplate-GUI-Designer/testScript/testScript.ino" 2 | # 2 "/Users/nitkonitkic/Desktop/code/Inkplate-GUI-Designer/testScript/testScript.ino" 2 3 | # 3 "/Users/nitkonitkic/Desktop/code/Inkplate-GUI-Designer/testScript/testScript.ino" 2 4 | 5 | Inkplate display(1); 6 | 7 | void setup() { 8 | Serial.begin(115200); 9 | display.begin(); 10 | display.clearDisplay(); 11 | display.clean(); 12 | 13 | mainDraw(); 14 | 15 | display.display(); 16 | } 17 | 18 | void loop() { 19 | // put your main code here, to run repeatedly: 20 | 21 | } 22 | -------------------------------------------------------------------------------- /build/sketch/Fonts/FreeMono9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { 2 | 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, 3 | 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, 4 | 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, 5 | 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, 6 | 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, 7 | 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, 8 | 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, 9 | 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, 10 | 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, 11 | 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, 12 | 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, 13 | 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, 14 | 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, 15 | 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, 16 | 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, 17 | 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, 18 | 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, 19 | 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, 20 | 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, 21 | 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, 22 | 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, 23 | 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, 24 | 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, 25 | 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, 26 | 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, 27 | 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, 28 | 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, 29 | 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, 30 | 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, 31 | 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, 32 | 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 33 | 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, 34 | 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, 35 | 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 36 | 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, 37 | 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, 38 | 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, 39 | 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, 40 | 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, 41 | 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, 42 | 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, 43 | 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, 44 | 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, 45 | 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, 46 | 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, 47 | 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, 48 | 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, 49 | 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, 50 | 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, 51 | 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, 52 | 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, 53 | 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, 54 | 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, 55 | 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, 56 | 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, 57 | 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, 58 | 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, 59 | 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, 60 | 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, 61 | 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, 62 | 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, 63 | 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, 64 | 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, 65 | 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, 66 | 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, 67 | 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, 68 | 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, 69 | 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, 70 | 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, 71 | 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, 72 | 0x2C, 0x61, 0x24, 0x30}; 73 | 74 | const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { 75 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 76 | {0, 2, 11, 11, 4, -10}, // 0x21 '!' 77 | {3, 6, 5, 11, 2, -10}, // 0x22 '"' 78 | {7, 7, 12, 11, 2, -10}, // 0x23 '#' 79 | {18, 8, 12, 11, 1, -10}, // 0x24 '$' 80 | {30, 7, 11, 11, 2, -10}, // 0x25 '%' 81 | {40, 7, 10, 11, 2, -9}, // 0x26 '&' 82 | {49, 3, 5, 11, 4, -10}, // 0x27 ''' 83 | {51, 2, 13, 11, 5, -10}, // 0x28 '(' 84 | {55, 2, 13, 11, 4, -10}, // 0x29 ')' 85 | {59, 7, 7, 11, 2, -10}, // 0x2A '*' 86 | {66, 7, 7, 11, 2, -8}, // 0x2B '+' 87 | {73, 3, 5, 11, 2, -1}, // 0x2C ',' 88 | {75, 9, 1, 11, 1, -5}, // 0x2D '-' 89 | {77, 2, 2, 11, 4, -1}, // 0x2E '.' 90 | {78, 7, 13, 11, 2, -11}, // 0x2F '/' 91 | {90, 7, 11, 11, 2, -10}, // 0x30 '0' 92 | {100, 5, 11, 11, 3, -10}, // 0x31 '1' 93 | {107, 7, 11, 11, 2, -10}, // 0x32 '2' 94 | {117, 8, 11, 11, 1, -10}, // 0x33 '3' 95 | {128, 6, 11, 11, 3, -10}, // 0x34 '4' 96 | {137, 7, 11, 11, 2, -10}, // 0x35 '5' 97 | {147, 7, 11, 11, 2, -10}, // 0x36 '6' 98 | {157, 7, 11, 11, 2, -10}, // 0x37 '7' 99 | {167, 7, 11, 11, 2, -10}, // 0x38 '8' 100 | {177, 7, 11, 11, 2, -10}, // 0x39 '9' 101 | {187, 2, 8, 11, 4, -7}, // 0x3A ':' 102 | {189, 3, 11, 11, 3, -7}, // 0x3B ';' 103 | {194, 8, 8, 11, 1, -8}, // 0x3C '<' 104 | {202, 9, 4, 11, 1, -6}, // 0x3D '=' 105 | {207, 9, 8, 11, 1, -8}, // 0x3E '>' 106 | {216, 7, 10, 11, 2, -9}, // 0x3F '?' 107 | {225, 8, 12, 11, 2, -10}, // 0x40 '@' 108 | {237, 11, 10, 11, 0, -9}, // 0x41 'A' 109 | {251, 9, 10, 11, 1, -9}, // 0x42 'B' 110 | {263, 9, 10, 11, 1, -9}, // 0x43 'C' 111 | {275, 9, 10, 11, 1, -9}, // 0x44 'D' 112 | {287, 9, 10, 11, 1, -9}, // 0x45 'E' 113 | {299, 9, 10, 11, 1, -9}, // 0x46 'F' 114 | {311, 10, 10, 11, 1, -9}, // 0x47 'G' 115 | {324, 9, 10, 11, 1, -9}, // 0x48 'H' 116 | {336, 5, 10, 11, 3, -9}, // 0x49 'I' 117 | {343, 8, 10, 11, 2, -9}, // 0x4A 'J' 118 | {353, 9, 10, 11, 1, -9}, // 0x4B 'K' 119 | {365, 8, 10, 11, 2, -9}, // 0x4C 'L' 120 | {375, 11, 10, 11, 0, -9}, // 0x4D 'M' 121 | {389, 9, 10, 11, 1, -9}, // 0x4E 'N' 122 | {401, 9, 10, 11, 1, -9}, // 0x4F 'O' 123 | {413, 8, 10, 11, 1, -9}, // 0x50 'P' 124 | {423, 9, 13, 11, 1, -9}, // 0x51 'Q' 125 | {438, 9, 10, 11, 1, -9}, // 0x52 'R' 126 | {450, 7, 10, 11, 2, -9}, // 0x53 'S' 127 | {459, 9, 10, 11, 1, -9}, // 0x54 'T' 128 | {471, 9, 10, 11, 1, -9}, // 0x55 'U' 129 | {483, 11, 10, 11, 0, -9}, // 0x56 'V' 130 | {497, 11, 10, 11, 0, -9}, // 0x57 'W' 131 | {511, 9, 10, 11, 1, -9}, // 0x58 'X' 132 | {523, 9, 10, 11, 1, -9}, // 0x59 'Y' 133 | {535, 7, 10, 11, 2, -9}, // 0x5A 'Z' 134 | {544, 2, 13, 11, 5, -10}, // 0x5B '[' 135 | {548, 7, 13, 11, 2, -11}, // 0x5C '\' 136 | {560, 2, 13, 11, 4, -10}, // 0x5D ']' 137 | {564, 7, 5, 11, 2, -10}, // 0x5E '^' 138 | {569, 11, 1, 11, 0, 2}, // 0x5F '_' 139 | {571, 3, 3, 11, 3, -11}, // 0x60 '`' 140 | {573, 9, 8, 11, 1, -7}, // 0x61 'a' 141 | {582, 9, 11, 11, 1, -10}, // 0x62 'b' 142 | {595, 7, 8, 11, 2, -7}, // 0x63 'c' 143 | {602, 9, 11, 11, 1, -10}, // 0x64 'd' 144 | {615, 8, 8, 11, 1, -7}, // 0x65 'e' 145 | {623, 6, 11, 11, 3, -10}, // 0x66 'f' 146 | {632, 9, 11, 11, 1, -7}, // 0x67 'g' 147 | {645, 9, 11, 11, 1, -10}, // 0x68 'h' 148 | {658, 7, 10, 11, 2, -9}, // 0x69 'i' 149 | {667, 5, 13, 11, 3, -9}, // 0x6A 'j' 150 | {676, 8, 11, 11, 2, -10}, // 0x6B 'k' 151 | {687, 7, 11, 11, 2, -10}, // 0x6C 'l' 152 | {697, 9, 8, 11, 1, -7}, // 0x6D 'm' 153 | {706, 9, 8, 11, 1, -7}, // 0x6E 'n' 154 | {715, 9, 8, 11, 1, -7}, // 0x6F 'o' 155 | {724, 9, 11, 11, 1, -7}, // 0x70 'p' 156 | {737, 9, 11, 11, 1, -7}, // 0x71 'q' 157 | {750, 7, 8, 11, 3, -7}, // 0x72 'r' 158 | {757, 7, 8, 11, 2, -7}, // 0x73 's' 159 | {764, 8, 10, 11, 2, -9}, // 0x74 't' 160 | {774, 8, 8, 11, 1, -7}, // 0x75 'u' 161 | {782, 9, 8, 11, 1, -7}, // 0x76 'v' 162 | {791, 9, 8, 11, 1, -7}, // 0x77 'w' 163 | {800, 9, 8, 11, 1, -7}, // 0x78 'x' 164 | {809, 9, 11, 11, 1, -7}, // 0x79 'y' 165 | {822, 7, 8, 11, 2, -7}, // 0x7A 'z' 166 | {829, 3, 13, 11, 4, -10}, // 0x7B '{' 167 | {834, 1, 13, 11, 5, -10}, // 0x7C '|' 168 | {836, 3, 13, 11, 4, -10}, // 0x7D '}' 169 | {841, 7, 3, 11, 2, -6}}; // 0x7E '~' 170 | 171 | const GFXfont FreeMono9pt7b PROGMEM = {(uint8_t *)FreeMono9pt7bBitmaps, 172 | (GFXglyph *)FreeMono9pt7bGlyphs, 0x20, 173 | 0x7E, 18}; 174 | 175 | // Approx. 1516 bytes 176 | -------------------------------------------------------------------------------- /build/sketch/Fonts/FreeMonoBold9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { 2 | 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, 3 | 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, 4 | 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, 5 | 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, 6 | 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, 7 | 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, 8 | 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 9 | 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, 10 | 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, 11 | 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, 12 | 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, 13 | 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, 14 | 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, 15 | 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, 16 | 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, 17 | 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, 18 | 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, 19 | 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, 20 | 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, 21 | 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, 22 | 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, 23 | 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, 24 | 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, 25 | 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, 26 | 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, 27 | 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, 28 | 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, 29 | 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, 30 | 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, 31 | 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, 32 | 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, 33 | 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, 34 | 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, 35 | 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, 36 | 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, 37 | 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, 38 | 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, 39 | 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, 40 | 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, 41 | 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, 42 | 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, 43 | 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, 44 | 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 45 | 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, 46 | 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, 47 | 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, 48 | 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, 49 | 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, 50 | 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, 51 | 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, 52 | 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, 53 | 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, 54 | 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, 55 | 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, 56 | 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 57 | 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 58 | 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, 59 | 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, 60 | 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, 61 | 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, 62 | 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, 63 | 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, 64 | 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, 65 | 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, 66 | 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, 67 | 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, 68 | 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, 69 | 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, 70 | 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, 71 | 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, 72 | 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, 73 | 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, 74 | 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, 75 | 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, 76 | 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, 77 | 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, 78 | 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, 79 | 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, 80 | 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, 81 | 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, 82 | 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, 83 | 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, 84 | 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, 85 | 0x7C, 0xF3, 0xC0, 0xC0}; 86 | 87 | const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { 88 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 89 | {0, 3, 11, 11, 4, -10}, // 0x21 '!' 90 | {5, 7, 5, 11, 2, -10}, // 0x22 '"' 91 | {10, 8, 12, 11, 1, -10}, // 0x23 '#' 92 | {22, 7, 14, 11, 2, -11}, // 0x24 '$' 93 | {35, 7, 11, 11, 2, -10}, // 0x25 '%' 94 | {45, 8, 10, 11, 1, -9}, // 0x26 '&' 95 | {55, 3, 5, 11, 4, -10}, // 0x27 ''' 96 | {57, 4, 14, 11, 5, -10}, // 0x28 '(' 97 | {64, 4, 14, 11, 2, -10}, // 0x29 ')' 98 | {71, 8, 7, 11, 2, -10}, // 0x2A '*' 99 | {78, 8, 9, 11, 2, -8}, // 0x2B '+' 100 | {87, 3, 5, 11, 3, -1}, // 0x2C ',' 101 | {89, 9, 2, 11, 1, -5}, // 0x2D '-' 102 | {92, 2, 2, 11, 4, -1}, // 0x2E '.' 103 | {93, 7, 15, 11, 2, -12}, // 0x2F '/' 104 | {107, 7, 12, 11, 2, -11}, // 0x30 '0' 105 | {118, 7, 11, 11, 2, -10}, // 0x31 '1' 106 | {128, 8, 12, 11, 1, -11}, // 0x32 '2' 107 | {140, 8, 12, 11, 2, -11}, // 0x33 '3' 108 | {152, 7, 10, 11, 2, -9}, // 0x34 '4' 109 | {161, 9, 11, 11, 1, -10}, // 0x35 '5' 110 | {174, 8, 12, 11, 2, -11}, // 0x36 '6' 111 | {186, 8, 11, 11, 1, -10}, // 0x37 '7' 112 | {197, 7, 12, 11, 2, -11}, // 0x38 '8' 113 | {208, 8, 12, 11, 2, -11}, // 0x39 '9' 114 | {220, 2, 8, 11, 4, -7}, // 0x3A ':' 115 | {222, 3, 11, 11, 3, -7}, // 0x3B ';' 116 | {227, 9, 8, 11, 1, -8}, // 0x3C '<' 117 | {236, 9, 6, 11, 1, -7}, // 0x3D '=' 118 | {243, 9, 8, 11, 1, -8}, // 0x3E '>' 119 | {252, 8, 11, 11, 2, -10}, // 0x3F '?' 120 | {263, 9, 15, 11, 1, -11}, // 0x40 '@' 121 | {280, 11, 11, 11, 0, -10}, // 0x41 'A' 122 | {296, 10, 11, 11, 1, -10}, // 0x42 'B' 123 | {310, 9, 11, 11, 1, -10}, // 0x43 'C' 124 | {323, 10, 11, 11, 0, -10}, // 0x44 'D' 125 | {337, 9, 11, 11, 1, -10}, // 0x45 'E' 126 | {350, 9, 11, 11, 1, -10}, // 0x46 'F' 127 | {363, 10, 11, 11, 1, -10}, // 0x47 'G' 128 | {377, 9, 11, 11, 1, -10}, // 0x48 'H' 129 | {390, 6, 11, 11, 3, -10}, // 0x49 'I' 130 | {399, 10, 11, 11, 1, -10}, // 0x4A 'J' 131 | {413, 10, 11, 11, 1, -10}, // 0x4B 'K' 132 | {427, 9, 11, 11, 1, -10}, // 0x4C 'L' 133 | {440, 11, 11, 11, 0, -10}, // 0x4D 'M' 134 | {456, 11, 11, 11, 0, -10}, // 0x4E 'N' 135 | {472, 11, 11, 11, 0, -10}, // 0x4F 'O' 136 | {488, 9, 11, 11, 1, -10}, // 0x50 'P' 137 | {501, 11, 14, 11, 0, -10}, // 0x51 'Q' 138 | {521, 9, 11, 11, 1, -10}, // 0x52 'R' 139 | {534, 9, 11, 11, 1, -10}, // 0x53 'S' 140 | {547, 9, 11, 11, 1, -10}, // 0x54 'T' 141 | {560, 11, 11, 11, 0, -10}, // 0x55 'U' 142 | {576, 11, 11, 11, 0, -10}, // 0x56 'V' 143 | {592, 10, 11, 11, 0, -10}, // 0x57 'W' 144 | {606, 10, 11, 11, 0, -10}, // 0x58 'X' 145 | {620, 10, 11, 11, 0, -10}, // 0x59 'Y' 146 | {634, 8, 11, 11, 2, -10}, // 0x5A 'Z' 147 | {645, 4, 14, 11, 5, -10}, // 0x5B '[' 148 | {652, 7, 15, 11, 2, -12}, // 0x5C '\' 149 | {666, 4, 14, 11, 2, -10}, // 0x5D ']' 150 | {673, 7, 6, 11, 2, -11}, // 0x5E '^' 151 | {679, 11, 2, 11, 0, 3}, // 0x5F '_' 152 | {682, 3, 3, 11, 3, -11}, // 0x60 '`' 153 | {684, 9, 8, 11, 1, -7}, // 0x61 'a' 154 | {693, 10, 11, 11, 0, -10}, // 0x62 'b' 155 | {707, 9, 8, 11, 1, -7}, // 0x63 'c' 156 | {716, 10, 11, 11, 1, -10}, // 0x64 'd' 157 | {730, 9, 8, 11, 1, -7}, // 0x65 'e' 158 | {739, 8, 11, 11, 2, -10}, // 0x66 'f' 159 | {750, 9, 12, 11, 1, -7}, // 0x67 'g' 160 | {764, 9, 11, 11, 1, -10}, // 0x68 'h' 161 | {777, 8, 11, 11, 2, -10}, // 0x69 'i' 162 | {788, 6, 15, 11, 2, -10}, // 0x6A 'j' 163 | {800, 9, 11, 11, 1, -10}, // 0x6B 'k' 164 | {813, 8, 11, 11, 2, -10}, // 0x6C 'l' 165 | {824, 11, 8, 11, 0, -7}, // 0x6D 'm' 166 | {835, 9, 8, 11, 1, -7}, // 0x6E 'n' 167 | {844, 9, 8, 11, 1, -7}, // 0x6F 'o' 168 | {853, 11, 12, 11, 0, -7}, // 0x70 'p' 169 | {870, 11, 12, 11, 0, -7}, // 0x71 'q' 170 | {887, 9, 8, 11, 1, -7}, // 0x72 'r' 171 | {896, 8, 8, 11, 2, -7}, // 0x73 's' 172 | {904, 8, 11, 11, 1, -10}, // 0x74 't' 173 | {915, 9, 8, 11, 1, -7}, // 0x75 'u' 174 | {924, 11, 8, 11, 0, -7}, // 0x76 'v' 175 | {935, 11, 8, 11, 0, -7}, // 0x77 'w' 176 | {946, 9, 8, 11, 1, -7}, // 0x78 'x' 177 | {955, 10, 12, 11, 0, -7}, // 0x79 'y' 178 | {970, 7, 8, 11, 2, -7}, // 0x7A 'z' 179 | {977, 4, 14, 11, 3, -10}, // 0x7B '{' 180 | {984, 2, 14, 11, 5, -10}, // 0x7C '|' 181 | {988, 4, 14, 11, 4, -10}, // 0x7D '}' 182 | {995, 9, 4, 11, 1, -6}}; // 0x7E '~' 183 | 184 | const GFXfont FreeMonoBold9pt7b PROGMEM = {(uint8_t *)FreeMonoBold9pt7bBitmaps, 185 | (GFXglyph *)FreeMonoBold9pt7bGlyphs, 186 | 0x20, 0x7E, 18}; 187 | 188 | // Approx. 1672 bytes 189 | -------------------------------------------------------------------------------- /build/sketch/Fonts/FreeMonoOblique9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { 2 | 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, 3 | 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, 4 | 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, 5 | 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, 6 | 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, 7 | 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, 8 | 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, 9 | 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, 10 | 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 11 | 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, 12 | 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, 13 | 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, 14 | 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, 15 | 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, 16 | 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, 17 | 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, 18 | 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, 19 | 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, 20 | 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, 21 | 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, 22 | 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, 23 | 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, 24 | 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, 25 | 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, 26 | 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, 27 | 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, 28 | 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, 29 | 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, 30 | 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, 31 | 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, 32 | 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, 33 | 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, 34 | 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, 35 | 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, 36 | 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, 37 | 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, 38 | 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, 39 | 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, 40 | 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, 41 | 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, 42 | 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, 43 | 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, 44 | 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, 45 | 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, 46 | 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, 47 | 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, 48 | 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, 49 | 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, 50 | 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, 51 | 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, 52 | 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, 53 | 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, 54 | 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, 55 | 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, 56 | 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, 57 | 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, 58 | 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, 59 | 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, 60 | 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, 61 | 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, 62 | 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, 63 | 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, 64 | 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, 65 | 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, 66 | 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, 67 | 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, 68 | 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 69 | 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, 70 | 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, 71 | 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, 72 | 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, 73 | 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, 74 | 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, 75 | 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, 76 | 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, 77 | 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, 78 | 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, 79 | 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, 80 | 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, 81 | 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, 82 | 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, 83 | 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30}; 84 | 85 | const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { 86 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 87 | {0, 4, 11, 11, 4, -10}, // 0x21 '!' 88 | {6, 5, 5, 11, 4, -10}, // 0x22 '"' 89 | {10, 9, 12, 11, 2, -10}, // 0x23 '#' 90 | {24, 8, 12, 11, 3, -10}, // 0x24 '$' 91 | {36, 9, 11, 11, 2, -10}, // 0x25 '%' 92 | {49, 7, 10, 11, 2, -9}, // 0x26 '&' 93 | {58, 2, 5, 11, 6, -10}, // 0x27 ''' 94 | {60, 4, 13, 11, 6, -10}, // 0x28 '(' 95 | {67, 4, 13, 11, 3, -10}, // 0x29 ')' 96 | {74, 7, 7, 11, 4, -10}, // 0x2A '*' 97 | {81, 9, 8, 11, 2, -8}, // 0x2B '+' 98 | {90, 4, 5, 11, 2, -1}, // 0x2C ',' 99 | {93, 9, 1, 11, 2, -5}, // 0x2D '-' 100 | {95, 2, 2, 11, 4, -1}, // 0x2E '.' 101 | {96, 9, 13, 11, 2, -11}, // 0x2F '/' 102 | {111, 7, 11, 11, 3, -10}, // 0x30 '0' 103 | {121, 7, 11, 11, 2, -10}, // 0x31 '1' 104 | {131, 9, 11, 11, 2, -10}, // 0x32 '2' 105 | {144, 9, 11, 11, 2, -10}, // 0x33 '3' 106 | {157, 8, 11, 11, 2, -10}, // 0x34 '4' 107 | {168, 9, 11, 11, 2, -10}, // 0x35 '5' 108 | {181, 8, 11, 11, 3, -10}, // 0x36 '6' 109 | {192, 7, 11, 11, 4, -10}, // 0x37 '7' 110 | {202, 8, 11, 11, 3, -10}, // 0x38 '8' 111 | {213, 8, 11, 11, 3, -10}, // 0x39 '9' 112 | {224, 3, 8, 11, 4, -7}, // 0x3A ':' 113 | {227, 5, 11, 11, 2, -7}, // 0x3B ';' 114 | {234, 9, 8, 11, 2, -8}, // 0x3C '<' 115 | {243, 9, 4, 11, 2, -6}, // 0x3D '=' 116 | {248, 9, 8, 11, 2, -8}, // 0x3E '>' 117 | {257, 7, 10, 11, 4, -9}, // 0x3F '?' 118 | {266, 7, 12, 11, 3, -10}, // 0x40 '@' 119 | {277, 11, 10, 11, 0, -9}, // 0x41 'A' 120 | {291, 10, 10, 11, 1, -9}, // 0x42 'B' 121 | {304, 9, 10, 11, 2, -9}, // 0x43 'C' 122 | {316, 10, 10, 11, 1, -9}, // 0x44 'D' 123 | {329, 10, 10, 11, 1, -9}, // 0x45 'E' 124 | {342, 11, 10, 11, 1, -9}, // 0x46 'F' 125 | {356, 9, 10, 11, 2, -9}, // 0x47 'G' 126 | {368, 11, 10, 11, 1, -9}, // 0x48 'H' 127 | {382, 9, 10, 11, 2, -9}, // 0x49 'I' 128 | {394, 11, 10, 11, 2, -9}, // 0x4A 'J' 129 | {408, 11, 10, 11, 1, -9}, // 0x4B 'K' 130 | {422, 10, 10, 11, 1, -9}, // 0x4C 'L' 131 | {435, 13, 10, 11, 0, -9}, // 0x4D 'M' 132 | {452, 11, 10, 11, 1, -9}, // 0x4E 'N' 133 | {466, 9, 10, 11, 2, -9}, // 0x4F 'O' 134 | {478, 10, 10, 11, 1, -9}, // 0x50 'P' 135 | {491, 9, 13, 11, 2, -9}, // 0x51 'Q' 136 | {506, 10, 10, 11, 1, -9}, // 0x52 'R' 137 | {519, 9, 10, 11, 2, -9}, // 0x53 'S' 138 | {531, 9, 10, 11, 3, -9}, // 0x54 'T' 139 | {543, 10, 10, 11, 2, -9}, // 0x55 'U' 140 | {556, 11, 10, 11, 2, -9}, // 0x56 'V' 141 | {570, 11, 10, 11, 2, -9}, // 0x57 'W' 142 | {584, 11, 10, 11, 1, -9}, // 0x58 'X' 143 | {598, 9, 10, 11, 3, -9}, // 0x59 'Y' 144 | {610, 9, 10, 11, 2, -9}, // 0x5A 'Z' 145 | {622, 5, 13, 11, 5, -10}, // 0x5B '[' 146 | {631, 4, 14, 11, 4, -11}, // 0x5C '\' 147 | {638, 5, 13, 11, 2, -10}, // 0x5D ']' 148 | {647, 7, 5, 11, 3, -10}, // 0x5E '^' 149 | {652, 11, 1, 11, 0, 2}, // 0x5F '_' 150 | {654, 2, 3, 11, 5, -11}, // 0x60 '`' 151 | {655, 9, 8, 11, 2, -7}, // 0x61 'a' 152 | {664, 11, 11, 11, 0, -10}, // 0x62 'b' 153 | {680, 10, 8, 11, 2, -7}, // 0x63 'c' 154 | {690, 9, 11, 11, 2, -10}, // 0x64 'd' 155 | {703, 9, 8, 11, 2, -7}, // 0x65 'e' 156 | {712, 10, 11, 11, 2, -10}, // 0x66 'f' 157 | {726, 10, 11, 11, 2, -7}, // 0x67 'g' 158 | {740, 10, 11, 11, 1, -10}, // 0x68 'h' 159 | {754, 8, 11, 11, 2, -10}, // 0x69 'i' 160 | {765, 9, 14, 11, 1, -10}, // 0x6A 'j' 161 | {781, 9, 11, 11, 1, -10}, // 0x6B 'k' 162 | {794, 8, 11, 11, 2, -10}, // 0x6C 'l' 163 | {805, 11, 8, 11, 0, -7}, // 0x6D 'm' 164 | {816, 9, 8, 11, 1, -7}, // 0x6E 'n' 165 | {825, 9, 8, 11, 2, -7}, // 0x6F 'o' 166 | {834, 11, 11, 11, 0, -7}, // 0x70 'p' 167 | {850, 10, 11, 11, 2, -7}, // 0x71 'q' 168 | {864, 9, 8, 11, 2, -7}, // 0x72 'r' 169 | {873, 8, 8, 11, 2, -7}, // 0x73 's' 170 | {881, 7, 10, 11, 2, -9}, // 0x74 't' 171 | {890, 9, 8, 11, 2, -7}, // 0x75 'u' 172 | {899, 10, 8, 11, 2, -7}, // 0x76 'v' 173 | {909, 10, 8, 11, 2, -7}, // 0x77 'w' 174 | {919, 10, 8, 11, 1, -7}, // 0x78 'x' 175 | {929, 12, 11, 11, 0, -7}, // 0x79 'y' 176 | {946, 8, 8, 11, 2, -7}, // 0x7A 'z' 177 | {954, 6, 13, 11, 4, -10}, // 0x7B '{' 178 | {964, 3, 12, 11, 5, -9}, // 0x7C '|' 179 | {969, 6, 13, 11, 3, -10}, // 0x7D '}' 180 | {979, 7, 3, 11, 3, -6}}; // 0x7E '~' 181 | 182 | const GFXfont FreeMonoOblique9pt7b PROGMEM = { 183 | (uint8_t *)FreeMonoOblique9pt7bBitmaps, 184 | (GFXglyph *)FreeMonoOblique9pt7bGlyphs, 0x20, 0x7E, 18}; 185 | 186 | // Approx. 1654 bytes 187 | -------------------------------------------------------------------------------- /build/sketch/Fonts/FreeSans9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { 2 | 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, 3 | 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, 4 | 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, 5 | 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, 6 | 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, 7 | 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, 8 | 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, 9 | 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, 10 | 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, 11 | 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, 12 | 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, 13 | 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, 14 | 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, 15 | 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, 16 | 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, 17 | 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, 18 | 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, 19 | 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, 20 | 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 21 | 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, 22 | 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, 23 | 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, 24 | 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, 25 | 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, 26 | 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, 27 | 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, 28 | 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, 29 | 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, 30 | 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, 31 | 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, 32 | 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, 33 | 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, 34 | 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, 35 | 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 36 | 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, 37 | 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, 38 | 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, 39 | 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, 40 | 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 41 | 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, 42 | 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 43 | 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, 44 | 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, 45 | 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, 46 | 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, 47 | 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, 48 | 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, 49 | 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, 50 | 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, 51 | 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, 52 | 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 53 | 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, 54 | 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 55 | 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 56 | 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, 57 | 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, 58 | 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, 59 | 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 60 | 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, 61 | 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, 62 | 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, 63 | 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, 64 | 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, 65 | 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, 66 | 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 67 | 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 68 | 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, 69 | 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 70 | 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, 71 | 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, 72 | 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, 73 | 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, 74 | 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, 75 | 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, 76 | 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, 77 | 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 78 | 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 79 | 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, 80 | 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, 81 | 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, 82 | 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, 83 | 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, 84 | 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 85 | 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 86 | 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 87 | 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, 88 | 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, 89 | 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 90 | 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, 91 | 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, 92 | 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, 93 | 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, 94 | 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, 95 | 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, 96 | 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, 97 | 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38}; 98 | 99 | const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { 100 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 101 | {0, 2, 13, 6, 2, -12}, // 0x21 '!' 102 | {4, 5, 4, 6, 1, -12}, // 0x22 '"' 103 | {7, 10, 12, 10, 0, -11}, // 0x23 '#' 104 | {22, 9, 16, 10, 1, -13}, // 0x24 '$' 105 | {40, 16, 13, 16, 1, -12}, // 0x25 '%' 106 | {66, 11, 13, 12, 1, -12}, // 0x26 '&' 107 | {84, 2, 4, 4, 1, -12}, // 0x27 ''' 108 | {85, 4, 17, 6, 1, -12}, // 0x28 '(' 109 | {94, 4, 17, 6, 1, -12}, // 0x29 ')' 110 | {103, 5, 5, 7, 1, -12}, // 0x2A '*' 111 | {107, 6, 8, 11, 3, -7}, // 0x2B '+' 112 | {113, 2, 4, 5, 2, 0}, // 0x2C ',' 113 | {114, 4, 1, 6, 1, -4}, // 0x2D '-' 114 | {115, 2, 1, 5, 1, 0}, // 0x2E '.' 115 | {116, 5, 13, 5, 0, -12}, // 0x2F '/' 116 | {125, 8, 13, 10, 1, -12}, // 0x30 '0' 117 | {138, 4, 13, 10, 3, -12}, // 0x31 '1' 118 | {145, 9, 13, 10, 1, -12}, // 0x32 '2' 119 | {160, 8, 13, 10, 1, -12}, // 0x33 '3' 120 | {173, 7, 13, 10, 2, -12}, // 0x34 '4' 121 | {185, 9, 13, 10, 1, -12}, // 0x35 '5' 122 | {200, 9, 13, 10, 1, -12}, // 0x36 '6' 123 | {215, 8, 13, 10, 0, -12}, // 0x37 '7' 124 | {228, 9, 13, 10, 1, -12}, // 0x38 '8' 125 | {243, 8, 13, 10, 1, -12}, // 0x39 '9' 126 | {256, 2, 10, 5, 1, -9}, // 0x3A ':' 127 | {259, 3, 12, 5, 1, -8}, // 0x3B ';' 128 | {264, 9, 9, 11, 1, -8}, // 0x3C '<' 129 | {275, 9, 4, 11, 1, -5}, // 0x3D '=' 130 | {280, 9, 9, 11, 1, -8}, // 0x3E '>' 131 | {291, 9, 13, 10, 1, -12}, // 0x3F '?' 132 | {306, 17, 16, 18, 1, -12}, // 0x40 '@' 133 | {340, 12, 13, 12, 0, -12}, // 0x41 'A' 134 | {360, 11, 13, 12, 1, -12}, // 0x42 'B' 135 | {378, 11, 13, 13, 1, -12}, // 0x43 'C' 136 | {396, 11, 13, 13, 1, -12}, // 0x44 'D' 137 | {414, 9, 13, 11, 1, -12}, // 0x45 'E' 138 | {429, 8, 13, 11, 1, -12}, // 0x46 'F' 139 | {442, 12, 13, 14, 1, -12}, // 0x47 'G' 140 | {462, 11, 13, 13, 1, -12}, // 0x48 'H' 141 | {480, 2, 13, 5, 2, -12}, // 0x49 'I' 142 | {484, 7, 13, 10, 1, -12}, // 0x4A 'J' 143 | {496, 11, 13, 12, 1, -12}, // 0x4B 'K' 144 | {514, 8, 13, 10, 1, -12}, // 0x4C 'L' 145 | {527, 13, 13, 15, 1, -12}, // 0x4D 'M' 146 | {549, 11, 13, 13, 1, -12}, // 0x4E 'N' 147 | {567, 13, 13, 14, 1, -12}, // 0x4F 'O' 148 | {589, 10, 13, 12, 1, -12}, // 0x50 'P' 149 | {606, 13, 14, 14, 1, -12}, // 0x51 'Q' 150 | {629, 12, 13, 13, 1, -12}, // 0x52 'R' 151 | {649, 10, 13, 12, 1, -12}, // 0x53 'S' 152 | {666, 9, 13, 11, 1, -12}, // 0x54 'T' 153 | {681, 11, 13, 13, 1, -12}, // 0x55 'U' 154 | {699, 11, 13, 12, 0, -12}, // 0x56 'V' 155 | {717, 17, 13, 17, 0, -12}, // 0x57 'W' 156 | {745, 12, 13, 12, 0, -12}, // 0x58 'X' 157 | {765, 12, 13, 12, 0, -12}, // 0x59 'Y' 158 | {785, 10, 13, 11, 1, -12}, // 0x5A 'Z' 159 | {802, 3, 17, 5, 1, -12}, // 0x5B '[' 160 | {809, 5, 13, 5, 0, -12}, // 0x5C '\' 161 | {818, 3, 17, 5, 0, -12}, // 0x5D ']' 162 | {825, 7, 7, 8, 1, -12}, // 0x5E '^' 163 | {832, 10, 1, 10, 0, 3}, // 0x5F '_' 164 | {834, 4, 3, 5, 0, -12}, // 0x60 '`' 165 | {836, 9, 10, 10, 1, -9}, // 0x61 'a' 166 | {848, 9, 13, 10, 1, -12}, // 0x62 'b' 167 | {863, 8, 10, 9, 1, -9}, // 0x63 'c' 168 | {873, 8, 13, 10, 1, -12}, // 0x64 'd' 169 | {886, 8, 10, 10, 1, -9}, // 0x65 'e' 170 | {896, 4, 13, 5, 1, -12}, // 0x66 'f' 171 | {903, 8, 14, 10, 1, -9}, // 0x67 'g' 172 | {917, 8, 13, 10, 1, -12}, // 0x68 'h' 173 | {930, 2, 13, 4, 1, -12}, // 0x69 'i' 174 | {934, 4, 17, 4, 0, -12}, // 0x6A 'j' 175 | {943, 9, 13, 9, 1, -12}, // 0x6B 'k' 176 | {958, 2, 13, 4, 1, -12}, // 0x6C 'l' 177 | {962, 13, 10, 15, 1, -9}, // 0x6D 'm' 178 | {979, 8, 10, 10, 1, -9}, // 0x6E 'n' 179 | {989, 8, 10, 10, 1, -9}, // 0x6F 'o' 180 | {999, 9, 13, 10, 1, -9}, // 0x70 'p' 181 | {1014, 8, 13, 10, 1, -9}, // 0x71 'q' 182 | {1027, 5, 10, 6, 1, -9}, // 0x72 'r' 183 | {1034, 8, 10, 9, 1, -9}, // 0x73 's' 184 | {1044, 4, 12, 5, 1, -11}, // 0x74 't' 185 | {1050, 8, 10, 10, 1, -9}, // 0x75 'u' 186 | {1060, 9, 10, 9, 0, -9}, // 0x76 'v' 187 | {1072, 13, 10, 13, 0, -9}, // 0x77 'w' 188 | {1089, 8, 10, 9, 0, -9}, // 0x78 'x' 189 | {1099, 9, 14, 9, 0, -9}, // 0x79 'y' 190 | {1115, 7, 10, 9, 1, -9}, // 0x7A 'z' 191 | {1124, 4, 17, 6, 1, -12}, // 0x7B '{' 192 | {1133, 2, 17, 4, 2, -12}, // 0x7C '|' 193 | {1138, 4, 17, 6, 1, -12}, // 0x7D '}' 194 | {1147, 7, 3, 9, 1, -7}}; // 0x7E '~' 195 | 196 | const GFXfont FreeSans9pt7b PROGMEM = {(uint8_t *)FreeSans9pt7bBitmaps, 197 | (GFXglyph *)FreeSans9pt7bGlyphs, 0x20, 198 | 0x7E, 22}; 199 | 200 | // Approx. 1822 bytes 201 | -------------------------------------------------------------------------------- /build/sketch/Fonts/FreeSerif9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { 2 | 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, 3 | 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, 4 | 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, 5 | 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, 6 | 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, 7 | 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, 8 | 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, 9 | 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, 10 | 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 11 | 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, 12 | 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, 13 | 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, 14 | 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, 15 | 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, 16 | 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, 17 | 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, 18 | 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, 19 | 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, 20 | 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, 21 | 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, 22 | 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, 23 | 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, 24 | 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 25 | 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, 26 | 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, 27 | 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, 28 | 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, 29 | 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, 30 | 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, 31 | 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, 32 | 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, 33 | 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, 34 | 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, 35 | 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, 36 | 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, 37 | 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, 38 | 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, 39 | 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, 40 | 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, 41 | 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, 42 | 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 43 | 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, 44 | 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, 45 | 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, 46 | 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, 47 | 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, 48 | 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, 49 | 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, 50 | 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, 51 | 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, 52 | 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, 53 | 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, 54 | 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 55 | 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, 56 | 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, 57 | 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, 58 | 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, 59 | 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, 60 | 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, 61 | 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, 62 | 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, 63 | 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, 64 | 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, 65 | 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, 66 | 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, 67 | 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, 68 | 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, 69 | 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, 70 | 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, 71 | 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, 72 | 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, 73 | 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, 74 | 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, 75 | 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, 76 | 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, 77 | 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, 78 | 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, 79 | 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, 80 | 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, 81 | 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, 82 | 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, 83 | 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, 84 | 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, 85 | 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, 86 | 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, 87 | 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, 88 | 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, 89 | 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, 90 | 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, 91 | 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0}; 92 | 93 | const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { 94 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 95 | {0, 2, 12, 6, 2, -11}, // 0x21 '!' 96 | {3, 5, 4, 7, 1, -11}, // 0x22 '"' 97 | {6, 9, 12, 9, 0, -11}, // 0x23 '#' 98 | {20, 8, 14, 9, 1, -12}, // 0x24 '$' 99 | {34, 13, 12, 15, 1, -11}, // 0x25 '%' 100 | {54, 13, 13, 14, 1, -12}, // 0x26 '&' 101 | {76, 2, 4, 4, 1, -11}, // 0x27 ''' 102 | {77, 5, 15, 6, 1, -11}, // 0x28 '(' 103 | {87, 5, 15, 6, 0, -11}, // 0x29 ')' 104 | {97, 6, 8, 9, 3, -11}, // 0x2A '*' 105 | {103, 9, 9, 10, 0, -8}, // 0x2B '+' 106 | {114, 2, 3, 4, 2, 0}, // 0x2C ',' 107 | {115, 4, 1, 6, 1, -3}, // 0x2D '-' 108 | {116, 2, 2, 5, 1, -1}, // 0x2E '.' 109 | {117, 5, 12, 5, 0, -11}, // 0x2F '/' 110 | {125, 9, 13, 9, 0, -12}, // 0x30 '0' 111 | {140, 5, 13, 9, 2, -12}, // 0x31 '1' 112 | {149, 8, 12, 9, 1, -11}, // 0x32 '2' 113 | {161, 8, 12, 9, 0, -11}, // 0x33 '3' 114 | {173, 7, 12, 9, 1, -11}, // 0x34 '4' 115 | {184, 8, 12, 9, 0, -11}, // 0x35 '5' 116 | {196, 8, 13, 9, 1, -12}, // 0x36 '6' 117 | {209, 8, 12, 9, 0, -11}, // 0x37 '7' 118 | {221, 7, 13, 9, 1, -12}, // 0x38 '8' 119 | {233, 8, 14, 9, 1, -12}, // 0x39 '9' 120 | {247, 2, 8, 5, 1, -7}, // 0x3A ':' 121 | {249, 3, 10, 5, 1, -7}, // 0x3B ';' 122 | {253, 9, 9, 10, 1, -8}, // 0x3C '<' 123 | {264, 9, 5, 10, 1, -6}, // 0x3D '=' 124 | {270, 10, 9, 10, 0, -8}, // 0x3E '>' 125 | {282, 7, 13, 8, 1, -12}, // 0x3F '?' 126 | {294, 12, 13, 16, 2, -12}, // 0x40 '@' 127 | {314, 13, 12, 13, 0, -11}, // 0x41 'A' 128 | {334, 11, 12, 11, 0, -11}, // 0x42 'B' 129 | {351, 11, 12, 12, 1, -11}, // 0x43 'C' 130 | {368, 12, 12, 13, 0, -11}, // 0x44 'D' 131 | {386, 10, 12, 11, 1, -11}, // 0x45 'E' 132 | {401, 9, 12, 10, 1, -11}, // 0x46 'F' 133 | {415, 12, 12, 13, 1, -11}, // 0x47 'G' 134 | {433, 11, 12, 13, 1, -11}, // 0x48 'H' 135 | {450, 4, 12, 6, 1, -11}, // 0x49 'I' 136 | {456, 6, 12, 7, 0, -11}, // 0x4A 'J' 137 | {465, 12, 12, 13, 1, -11}, // 0x4B 'K' 138 | {483, 10, 12, 11, 1, -11}, // 0x4C 'L' 139 | {498, 15, 12, 16, 0, -11}, // 0x4D 'M' 140 | {521, 11, 12, 13, 1, -11}, // 0x4E 'N' 141 | {538, 11, 13, 13, 1, -12}, // 0x4F 'O' 142 | {556, 9, 12, 10, 1, -11}, // 0x50 'P' 143 | {570, 11, 16, 13, 1, -12}, // 0x51 'Q' 144 | {592, 11, 12, 12, 1, -11}, // 0x52 'R' 145 | {609, 9, 12, 10, 0, -11}, // 0x53 'S' 146 | {623, 11, 12, 11, 0, -11}, // 0x54 'T' 147 | {640, 11, 12, 13, 1, -11}, // 0x55 'U' 148 | {657, 12, 12, 13, 0, -11}, // 0x56 'V' 149 | {675, 17, 12, 17, 0, -11}, // 0x57 'W' 150 | {701, 13, 12, 13, 0, -11}, // 0x58 'X' 151 | {721, 12, 12, 13, 0, -11}, // 0x59 'Y' 152 | {739, 11, 12, 11, 0, -11}, // 0x5A 'Z' 153 | {756, 3, 15, 6, 2, -11}, // 0x5B '[' 154 | {762, 5, 12, 5, 0, -11}, // 0x5C '\' 155 | {770, 3, 15, 6, 1, -11}, // 0x5D ']' 156 | {776, 8, 7, 8, 0, -11}, // 0x5E '^' 157 | {783, 9, 1, 9, 0, 2}, // 0x5F '_' 158 | {785, 4, 3, 5, 0, -11}, // 0x60 '`' 159 | {787, 7, 8, 8, 1, -7}, // 0x61 'a' 160 | {794, 9, 13, 9, 0, -12}, // 0x62 'b' 161 | {809, 7, 8, 8, 0, -7}, // 0x63 'c' 162 | {816, 9, 13, 9, 0, -12}, // 0x64 'd' 163 | {831, 8, 8, 8, 0, -7}, // 0x65 'e' 164 | {839, 7, 13, 7, 1, -12}, // 0x66 'f' 165 | {851, 10, 12, 8, 0, -7}, // 0x67 'g' 166 | {866, 9, 13, 9, 0, -12}, // 0x68 'h' 167 | {881, 4, 11, 5, 1, -10}, // 0x69 'i' 168 | {887, 5, 15, 6, 0, -10}, // 0x6A 'j' 169 | {897, 9, 13, 9, 1, -12}, // 0x6B 'k' 170 | {912, 4, 13, 5, 1, -12}, // 0x6C 'l' 171 | {919, 14, 8, 14, 0, -7}, // 0x6D 'm' 172 | {933, 9, 8, 9, 0, -7}, // 0x6E 'n' 173 | {942, 9, 8, 9, 0, -7}, // 0x6F 'o' 174 | {951, 9, 12, 9, 0, -7}, // 0x70 'p' 175 | {965, 9, 12, 9, 0, -7}, // 0x71 'q' 176 | {979, 6, 8, 6, 0, -7}, // 0x72 'r' 177 | {985, 6, 8, 7, 1, -7}, // 0x73 's' 178 | {991, 5, 9, 5, 0, -8}, // 0x74 't' 179 | {997, 9, 8, 9, 0, -7}, // 0x75 'u' 180 | {1006, 8, 8, 8, 0, -7}, // 0x76 'v' 181 | {1014, 12, 8, 12, 0, -7}, // 0x77 'w' 182 | {1026, 9, 8, 9, 0, -7}, // 0x78 'x' 183 | {1035, 8, 12, 8, 0, -7}, // 0x79 'y' 184 | {1047, 7, 8, 7, 1, -7}, // 0x7A 'z' 185 | {1054, 5, 16, 9, 1, -12}, // 0x7B '{' 186 | {1064, 1, 12, 4, 1, -11}, // 0x7C '|' 187 | {1066, 5, 16, 9, 3, -11}, // 0x7D '}' 188 | {1076, 9, 3, 9, 0, -5}}; // 0x7E '~' 189 | 190 | const GFXfont FreeSerif9pt7b PROGMEM = {(uint8_t *)FreeSerif9pt7bBitmaps, 191 | (GFXglyph *)FreeSerif9pt7bGlyphs, 0x20, 192 | 0x7E, 22}; 193 | 194 | // Approx. 1752 bytes 195 | -------------------------------------------------------------------------------- /build/sketch/Fonts/Org_01.h: -------------------------------------------------------------------------------- 1 | // Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, 2 | // stylized font with all characters within a 6 pixel height. 3 | 4 | const uint8_t Org_01Bitmaps[] PROGMEM = { 5 | 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, 6 | 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, 7 | 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, 8 | 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, 9 | 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, 10 | 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, 11 | 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, 12 | 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, 13 | 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, 14 | 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, 15 | 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, 16 | 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, 17 | 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, 18 | 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, 19 | 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, 20 | 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, 21 | 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, 22 | 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, 23 | 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, 24 | 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, 25 | 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, 26 | 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, 27 | 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0}; 28 | 29 | const GFXglyph Org_01Glyphs[] PROGMEM = {{0, 0, 0, 6, 0, 1}, // 0x20 ' ' 30 | {0, 1, 5, 2, 0, -4}, // 0x21 '!' 31 | {1, 3, 1, 4, 0, -4}, // 0x22 '"' 32 | {2, 5, 5, 6, 0, -4}, // 0x23 '#' 33 | {6, 5, 5, 6, 0, -4}, // 0x24 '$' 34 | {10, 5, 5, 6, 0, -4}, // 0x25 '%' 35 | {14, 5, 5, 6, 0, -4}, // 0x26 '&' 36 | {18, 1, 1, 2, 0, -4}, // 0x27 ''' 37 | {19, 2, 5, 3, 0, -4}, // 0x28 '(' 38 | {21, 2, 5, 3, 0, -4}, // 0x29 ')' 39 | {23, 3, 3, 4, 0, -3}, // 0x2A '*' 40 | {25, 3, 3, 4, 0, -3}, // 0x2B '+' 41 | {27, 1, 2, 2, 0, 0}, // 0x2C ',' 42 | {28, 4, 1, 5, 0, -2}, // 0x2D '-' 43 | {29, 1, 1, 2, 0, 0}, // 0x2E '.' 44 | {30, 5, 5, 6, 0, -4}, // 0x2F '/' 45 | {34, 5, 5, 6, 0, -4}, // 0x30 '0' 46 | {38, 1, 5, 2, 0, -4}, // 0x31 '1' 47 | {39, 5, 5, 6, 0, -4}, // 0x32 '2' 48 | {43, 5, 5, 6, 0, -4}, // 0x33 '3' 49 | {47, 5, 5, 6, 0, -4}, // 0x34 '4' 50 | {51, 5, 5, 6, 0, -4}, // 0x35 '5' 51 | {55, 5, 5, 6, 0, -4}, // 0x36 '6' 52 | {59, 5, 5, 6, 0, -4}, // 0x37 '7' 53 | {63, 5, 5, 6, 0, -4}, // 0x38 '8' 54 | {67, 5, 5, 6, 0, -4}, // 0x39 '9' 55 | {71, 1, 4, 2, 0, -3}, // 0x3A ':' 56 | {72, 1, 4, 2, 0, -3}, // 0x3B ';' 57 | {73, 3, 5, 4, 0, -4}, // 0x3C '<' 58 | {75, 4, 3, 5, 0, -3}, // 0x3D '=' 59 | {77, 3, 5, 4, 0, -4}, // 0x3E '>' 60 | {79, 5, 5, 6, 0, -4}, // 0x3F '?' 61 | {83, 5, 5, 6, 0, -4}, // 0x40 '@' 62 | {87, 5, 5, 6, 0, -4}, // 0x41 'A' 63 | {91, 5, 5, 6, 0, -4}, // 0x42 'B' 64 | {95, 5, 5, 6, 0, -4}, // 0x43 'C' 65 | {99, 5, 5, 6, 0, -4}, // 0x44 'D' 66 | {103, 5, 5, 6, 0, -4}, // 0x45 'E' 67 | {107, 5, 5, 6, 0, -4}, // 0x46 'F' 68 | {111, 5, 5, 6, 0, -4}, // 0x47 'G' 69 | {115, 5, 5, 6, 0, -4}, // 0x48 'H' 70 | {119, 5, 5, 6, 0, -4}, // 0x49 'I' 71 | {123, 5, 5, 6, 0, -4}, // 0x4A 'J' 72 | {127, 5, 5, 6, 0, -4}, // 0x4B 'K' 73 | {131, 5, 5, 6, 0, -4}, // 0x4C 'L' 74 | {135, 5, 5, 6, 0, -4}, // 0x4D 'M' 75 | {139, 5, 5, 6, 0, -4}, // 0x4E 'N' 76 | {143, 5, 5, 6, 0, -4}, // 0x4F 'O' 77 | {147, 5, 5, 6, 0, -4}, // 0x50 'P' 78 | {151, 5, 5, 6, 0, -4}, // 0x51 'Q' 79 | {155, 5, 5, 6, 0, -4}, // 0x52 'R' 80 | {159, 5, 5, 6, 0, -4}, // 0x53 'S' 81 | {163, 5, 5, 6, 0, -4}, // 0x54 'T' 82 | {167, 5, 5, 6, 0, -4}, // 0x55 'U' 83 | {171, 5, 5, 6, 0, -4}, // 0x56 'V' 84 | {175, 5, 5, 6, 0, -4}, // 0x57 'W' 85 | {179, 5, 5, 6, 0, -4}, // 0x58 'X' 86 | {183, 5, 5, 6, 0, -4}, // 0x59 'Y' 87 | {187, 5, 5, 6, 0, -4}, // 0x5A 'Z' 88 | {191, 2, 5, 3, 0, -4}, // 0x5B '[' 89 | {193, 5, 5, 6, 0, -4}, // 0x5C '\' 90 | {197, 2, 5, 3, 0, -4}, // 0x5D ']' 91 | {199, 3, 2, 4, 0, -4}, // 0x5E '^' 92 | {200, 5, 1, 6, 0, 1}, // 0x5F '_' 93 | {201, 1, 1, 2, 0, -4}, // 0x60 '`' 94 | {202, 4, 4, 5, 0, -3}, // 0x61 'a' 95 | {204, 4, 5, 5, 0, -4}, // 0x62 'b' 96 | {207, 4, 4, 5, 0, -3}, // 0x63 'c' 97 | {209, 4, 5, 5, 0, -4}, // 0x64 'd' 98 | {212, 4, 4, 5, 0, -3}, // 0x65 'e' 99 | {214, 3, 5, 4, 0, -4}, // 0x66 'f' 100 | {216, 4, 5, 5, 0, -3}, // 0x67 'g' 101 | {219, 4, 5, 5, 0, -4}, // 0x68 'h' 102 | {222, 1, 4, 2, 0, -3}, // 0x69 'i' 103 | {223, 2, 5, 3, 0, -3}, // 0x6A 'j' 104 | {225, 4, 5, 5, 0, -4}, // 0x6B 'k' 105 | {228, 1, 5, 2, 0, -4}, // 0x6C 'l' 106 | {229, 5, 4, 6, 0, -3}, // 0x6D 'm' 107 | {232, 4, 4, 5, 0, -3}, // 0x6E 'n' 108 | {234, 4, 4, 5, 0, -3}, // 0x6F 'o' 109 | {236, 4, 5, 5, 0, -3}, // 0x70 'p' 110 | {239, 4, 5, 5, 0, -3}, // 0x71 'q' 111 | {242, 4, 4, 5, 0, -3}, // 0x72 'r' 112 | {244, 4, 4, 5, 0, -3}, // 0x73 's' 113 | {246, 5, 5, 6, 0, -4}, // 0x74 't' 114 | {250, 4, 4, 5, 0, -3}, // 0x75 'u' 115 | {252, 4, 4, 5, 0, -3}, // 0x76 'v' 116 | {254, 5, 4, 6, 0, -3}, // 0x77 'w' 117 | {257, 4, 4, 5, 0, -3}, // 0x78 'x' 118 | {259, 4, 5, 5, 0, -3}, // 0x79 'y' 119 | {262, 4, 4, 5, 0, -3}, // 0x7A 'z' 120 | {264, 3, 5, 4, 0, -4}, // 0x7B '{' 121 | {266, 1, 5, 2, 0, -4}, // 0x7C '|' 122 | {267, 3, 5, 4, 0, -4}, // 0x7D '}' 123 | {269, 5, 3, 6, 0, -3}}; // 0x7E '~' 124 | 125 | const GFXfont Org_01 PROGMEM = {(uint8_t *)Org_01Bitmaps, 126 | (GFXglyph *)Org_01Glyphs, 0x20, 0x7E, 7}; 127 | 128 | // Approx. 943 bytes 129 | -------------------------------------------------------------------------------- /build/sketch/Fonts/Picopixel.h: -------------------------------------------------------------------------------- 1 | // Picopixel by Sebastian Weber. A tiny font 2 | // with all characters within a 6 pixel height. 3 | 4 | const uint8_t PicopixelBitmaps[] PROGMEM = { 5 | 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, 6 | 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, 7 | 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, 8 | 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, 9 | 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, 10 | 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, 11 | 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, 12 | 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, 13 | 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, 14 | 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, 15 | 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, 16 | 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, 17 | 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, 18 | 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, 19 | 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A}; 20 | 21 | const GFXglyph PicopixelGlyphs[] PROGMEM = {{0, 0, 0, 2, 0, 1}, // 0x20 ' ' 22 | {0, 1, 5, 2, 0, -4}, // 0x21 '!' 23 | {1, 3, 2, 4, 0, -4}, // 0x22 '"' 24 | {2, 5, 5, 6, 0, -4}, // 0x23 '#' 25 | {6, 3, 6, 4, 0, -4}, // 0x24 '$' 26 | {9, 3, 5, 4, 0, -4}, // 0x25 '%' 27 | {11, 4, 5, 5, 0, -4}, // 0x26 '&' 28 | {14, 1, 2, 2, 0, -4}, // 0x27 ''' 29 | {15, 2, 5, 3, 0, -4}, // 0x28 '(' 30 | {17, 2, 5, 3, 0, -4}, // 0x29 ')' 31 | {19, 3, 3, 4, 0, -3}, // 0x2A '*' 32 | {21, 3, 3, 4, 0, -3}, // 0x2B '+' 33 | {23, 2, 2, 3, 0, 0}, // 0x2C ',' 34 | {24, 3, 1, 4, 0, -2}, // 0x2D '-' 35 | {25, 1, 1, 2, 0, 0}, // 0x2E '.' 36 | {26, 3, 5, 4, 0, -4}, // 0x2F '/' 37 | {28, 3, 5, 4, 0, -4}, // 0x30 '0' 38 | {30, 2, 5, 3, 0, -4}, // 0x31 '1' 39 | {32, 3, 5, 4, 0, -4}, // 0x32 '2' 40 | {34, 3, 5, 4, 0, -4}, // 0x33 '3' 41 | {36, 3, 5, 4, 0, -4}, // 0x34 '4' 42 | {38, 3, 5, 4, 0, -4}, // 0x35 '5' 43 | {40, 3, 5, 4, 0, -4}, // 0x36 '6' 44 | {42, 3, 5, 4, 0, -4}, // 0x37 '7' 45 | {44, 3, 5, 4, 0, -4}, // 0x38 '8' 46 | {46, 3, 5, 4, 0, -4}, // 0x39 '9' 47 | {48, 1, 3, 2, 0, -3}, // 0x3A ':' 48 | {49, 2, 4, 3, 0, -3}, // 0x3B ';' 49 | {50, 2, 3, 3, 0, -3}, // 0x3C '<' 50 | {51, 3, 3, 4, 0, -3}, // 0x3D '=' 51 | {53, 2, 3, 3, 0, -3}, // 0x3E '>' 52 | {54, 3, 5, 4, 0, -4}, // 0x3F '?' 53 | {56, 3, 5, 4, 0, -4}, // 0x40 '@' 54 | {58, 3, 5, 4, 0, -4}, // 0x41 'A' 55 | {60, 3, 5, 4, 0, -4}, // 0x42 'B' 56 | {62, 3, 5, 4, 0, -4}, // 0x43 'C' 57 | {64, 3, 5, 4, 0, -4}, // 0x44 'D' 58 | {66, 3, 5, 4, 0, -4}, // 0x45 'E' 59 | {68, 3, 5, 4, 0, -4}, // 0x46 'F' 60 | {70, 3, 5, 4, 0, -4}, // 0x47 'G' 61 | {72, 3, 5, 4, 0, -4}, // 0x48 'H' 62 | {74, 1, 5, 2, 0, -4}, // 0x49 'I' 63 | {75, 3, 5, 4, 0, -4}, // 0x4A 'J' 64 | {77, 3, 5, 4, 0, -4}, // 0x4B 'K' 65 | {79, 3, 5, 4, 0, -4}, // 0x4C 'L' 66 | {81, 5, 5, 6, 0, -4}, // 0x4D 'M' 67 | {85, 4, 5, 5, 0, -4}, // 0x4E 'N' 68 | {88, 3, 5, 4, 0, -4}, // 0x4F 'O' 69 | {90, 3, 5, 4, 0, -4}, // 0x50 'P' 70 | {92, 3, 6, 4, 0, -4}, // 0x51 'Q' 71 | {95, 3, 5, 4, 0, -4}, // 0x52 'R' 72 | {97, 3, 5, 4, 0, -4}, // 0x53 'S' 73 | {99, 3, 5, 4, 0, -4}, // 0x54 'T' 74 | {101, 3, 5, 4, 0, -4}, // 0x55 'U' 75 | {103, 3, 5, 4, 0, -4}, // 0x56 'V' 76 | {105, 5, 5, 6, 0, -4}, // 0x57 'W' 77 | {109, 3, 5, 4, 0, -4}, // 0x58 'X' 78 | {111, 3, 5, 4, 0, -4}, // 0x59 'Y' 79 | {113, 3, 5, 4, 0, -4}, // 0x5A 'Z' 80 | {115, 2, 5, 3, 0, -4}, // 0x5B '[' 81 | {117, 3, 5, 4, 0, -4}, // 0x5C '\' 82 | {119, 2, 5, 3, 0, -4}, // 0x5D ']' 83 | {121, 3, 2, 4, 0, -4}, // 0x5E '^' 84 | {122, 4, 1, 4, 0, 1}, // 0x5F '_' 85 | {123, 2, 2, 3, 0, -4}, // 0x60 '`' 86 | {124, 3, 4, 4, 0, -3}, // 0x61 'a' 87 | {126, 3, 5, 4, 0, -4}, // 0x62 'b' 88 | {128, 3, 3, 4, 0, -2}, // 0x63 'c' 89 | {130, 3, 5, 4, 0, -4}, // 0x64 'd' 90 | {132, 3, 4, 4, 0, -3}, // 0x65 'e' 91 | {134, 2, 5, 3, 0, -4}, // 0x66 'f' 92 | {136, 3, 5, 4, 0, -3}, // 0x67 'g' 93 | {138, 3, 5, 4, 0, -4}, // 0x68 'h' 94 | {140, 1, 5, 2, 0, -4}, // 0x69 'i' 95 | {141, 2, 6, 3, 0, -4}, // 0x6A 'j' 96 | {143, 3, 5, 4, 0, -4}, // 0x6B 'k' 97 | {145, 2, 5, 3, 0, -4}, // 0x6C 'l' 98 | {147, 5, 3, 6, 0, -2}, // 0x6D 'm' 99 | {149, 3, 3, 4, 0, -2}, // 0x6E 'n' 100 | {151, 3, 3, 4, 0, -2}, // 0x6F 'o' 101 | {153, 3, 4, 4, 0, -2}, // 0x70 'p' 102 | {155, 3, 4, 4, 0, -2}, // 0x71 'q' 103 | {157, 2, 3, 3, 0, -2}, // 0x72 'r' 104 | {158, 3, 4, 4, 0, -3}, // 0x73 's' 105 | {160, 2, 5, 3, 0, -4}, // 0x74 't' 106 | {162, 3, 3, 4, 0, -2}, // 0x75 'u' 107 | {164, 3, 3, 4, 0, -2}, // 0x76 'v' 108 | {166, 5, 3, 6, 0, -2}, // 0x77 'w' 109 | {168, 3, 3, 4, 0, -2}, // 0x78 'x' 110 | {170, 3, 4, 4, 0, -2}, // 0x79 'y' 111 | {172, 3, 4, 4, 0, -3}, // 0x7A 'z' 112 | {174, 3, 5, 4, 0, -4}, // 0x7B '{' 113 | {176, 1, 6, 2, 0, -4}, // 0x7C '|' 114 | {177, 3, 5, 4, 0, -4}, // 0x7D '}' 115 | {179, 4, 2, 5, 0, -3}}; // 0x7E '~' 116 | 117 | const GFXfont Picopixel PROGMEM = {(uint8_t *)PicopixelBitmaps, 118 | (GFXglyph *)PicopixelGlyphs, 0x20, 0x7E, 7}; 119 | 120 | // Approx. 852 bytes 121 | -------------------------------------------------------------------------------- /build/sketch/Fonts/Tiny3x3a2pt7b.h: -------------------------------------------------------------------------------- 1 | /** 2 | ** The FontStruction “Tiny3x3a” 3 | ** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is 4 | ** licensed under a Creative Commons Attribution Non-commercial Share Alike 5 | *license 6 | ** (http://creativecommons.org/licenses/by-nc-sa/3.0/). 7 | ** “Tiny3x3a” was originally cloned (copied) from the FontStruction 8 | ** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant 9 | ** Grant, which is licensed under a Creative Commons Attribution Non-commercial 10 | ** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). 11 | * 12 | * Converted by eadmaster with fontconvert 13 | **/ 14 | 15 | const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { 16 | 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, 17 | 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, 18 | 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, 19 | 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, 20 | 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, 21 | 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, 22 | 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, 23 | 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, 24 | 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, 25 | 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, 26 | 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, 27 | 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78}; 28 | 29 | const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { 30 | {0, 0, 0, 4, 0, 1}, // 0x20 ' ' 31 | {0, 1, 2, 3, 1, -2}, // 0x21 '!' 32 | {1, 3, 2, 4, 0, -2}, // 0x22 '"' 33 | {2, 3, 3, 4, 0, -2}, // 0x23 '#' 34 | {4, 3, 3, 4, 0, -2}, // 0x24 '$' 35 | {6, 3, 3, 4, 0, -2}, // 0x25 '%' 36 | {8, 3, 3, 4, 0, -2}, // 0x26 '&' 37 | {10, 1, 1, 3, 1, -2}, // 0x27 ''' 38 | {11, 2, 3, 3, 0, -2}, // 0x28 '(' 39 | {12, 2, 3, 4, 1, -2}, // 0x29 ')' 40 | {13, 2, 2, 4, 1, -2}, // 0x2A '*' 41 | {14, 3, 3, 4, 0, -2}, // 0x2B '+' 42 | {16, 1, 2, 2, 0, 0}, // 0x2C ',' 43 | {17, 3, 1, 4, 0, -1}, // 0x2D '-' 44 | {18, 1, 1, 2, 0, 0}, // 0x2E '.' 45 | {19, 3, 3, 4, 0, -2}, // 0x2F '/' 46 | {21, 3, 3, 4, 0, -2}, // 0x30 '0' 47 | {23, 2, 3, 3, 0, -2}, // 0x31 '1' 48 | {24, 3, 3, 4, 0, -2}, // 0x32 '2' 49 | {26, 3, 3, 4, 0, -2}, // 0x33 '3' 50 | {28, 3, 3, 4, 0, -2}, // 0x34 '4' 51 | {30, 3, 3, 4, 0, -2}, // 0x35 '5' 52 | {32, 3, 3, 4, 0, -2}, // 0x36 '6' 53 | {34, 3, 3, 4, 0, -2}, // 0x37 '7' 54 | {36, 3, 3, 4, 0, -2}, // 0x38 '8' 55 | {38, 3, 3, 4, 0, -2}, // 0x39 '9' 56 | {40, 1, 3, 3, 1, -2}, // 0x3A ':' 57 | {41, 2, 3, 3, 0, -1}, // 0x3B ';' 58 | {42, 2, 3, 3, 0, -2}, // 0x3C '<' 59 | {43, 3, 3, 4, 0, -2}, // 0x3D '=' 60 | {45, 2, 3, 4, 1, -2}, // 0x3E '>' 61 | {46, 2, 3, 4, 1, -2}, // 0x3F '?' 62 | {47, 3, 3, 4, 0, -2}, // 0x40 '@' 63 | {49, 3, 3, 4, 0, -2}, // 0x41 'A' 64 | {51, 3, 3, 4, 0, -2}, // 0x42 'B' 65 | {53, 3, 3, 4, 0, -2}, // 0x43 'C' 66 | {55, 3, 3, 4, 0, -2}, // 0x44 'D' 67 | {57, 3, 3, 4, 0, -2}, // 0x45 'E' 68 | {59, 3, 3, 4, 0, -2}, // 0x46 'F' 69 | {61, 3, 3, 4, 0, -2}, // 0x47 'G' 70 | {63, 3, 3, 4, 0, -2}, // 0x48 'H' 71 | {65, 1, 3, 3, 1, -2}, // 0x49 'I' 72 | {66, 3, 3, 4, 0, -2}, // 0x4A 'J' 73 | {68, 3, 3, 4, 0, -2}, // 0x4B 'K' 74 | {70, 3, 3, 4, 0, -2}, // 0x4C 'L' 75 | {72, 3, 3, 4, 0, -2}, // 0x4D 'M' 76 | {74, 3, 3, 4, 0, -2}, // 0x4E 'N' 77 | {76, 3, 3, 4, 0, -2}, // 0x4F 'O' 78 | {78, 3, 3, 4, 0, -2}, // 0x50 'P' 79 | {80, 3, 3, 4, 0, -2}, // 0x51 'Q' 80 | {82, 3, 3, 4, 0, -2}, // 0x52 'R' 81 | {84, 3, 3, 4, 0, -2}, // 0x53 'S' 82 | {86, 3, 3, 4, 0, -2}, // 0x54 'T' 83 | {88, 3, 3, 4, 0, -2}, // 0x55 'U' 84 | {90, 3, 3, 4, 0, -2}, // 0x56 'V' 85 | {92, 3, 3, 4, 0, -2}, // 0x57 'W' 86 | {94, 3, 3, 4, 0, -2}, // 0x58 'X' 87 | {96, 3, 3, 4, 0, -2}, // 0x59 'Y' 88 | {98, 3, 3, 4, 0, -2}, // 0x5A 'Z' 89 | {100, 2, 3, 3, 0, -2}, // 0x5B '[' 90 | {101, 3, 3, 4, 0, -2}, // 0x5C '\' 91 | {103, 2, 3, 4, 1, -2}, // 0x5D ']' 92 | {104, 3, 2, 4, 0, -2}, // 0x5E '^' 93 | {105, 3, 1, 4, 0, 0}, // 0x5F '_' 94 | {106, 2, 2, 3, 0, -2}, // 0x60 '`' 95 | {107, 2, 2, 3, 0, -1}, // 0x61 'a' 96 | {108, 2, 3, 3, 0, -2}, // 0x62 'b' 97 | {109, 2, 2, 3, 0, -1}, // 0x63 'c' 98 | {110, 2, 3, 3, 0, -2}, // 0x64 'd' 99 | {111, 2, 2, 3, 0, -1}, // 0x65 'e' 100 | {112, 2, 3, 3, 0, -2}, // 0x66 'f' 101 | {113, 2, 3, 3, 0, -1}, // 0x67 'g' 102 | {114, 2, 3, 3, 0, -2}, // 0x68 'h' 103 | {115, 1, 2, 2, 0, -1}, // 0x69 'i' 104 | {116, 2, 3, 3, 0, -1}, // 0x6A 'j' 105 | {117, 3, 3, 4, 0, -2}, // 0x6B 'k' 106 | {119, 2, 3, 3, 0, -2}, // 0x6C 'l' 107 | {120, 3, 2, 4, 0, -1}, // 0x6D 'm' 108 | {121, 3, 2, 4, 0, -1}, // 0x6E 'n' 109 | {122, 2, 2, 3, 0, -1}, // 0x6F 'o' 110 | {123, 2, 3, 3, 0, -1}, // 0x70 'p' 111 | {124, 2, 3, 3, 0, -1}, // 0x71 'q' 112 | {125, 2, 2, 3, 0, -1}, // 0x72 'r' 113 | {126, 2, 2, 3, 0, -1}, // 0x73 's' 114 | {127, 3, 3, 4, 0, -2}, // 0x74 't' 115 | {129, 3, 2, 4, 0, -1}, // 0x75 'u' 116 | {130, 3, 2, 4, 0, -1}, // 0x76 'v' 117 | {131, 3, 2, 4, 0, -1}, // 0x77 'w' 118 | {132, 2, 2, 3, 0, -1}, // 0x78 'x' 119 | {133, 3, 3, 4, 0, -1}, // 0x79 'y' 120 | {135, 2, 2, 3, 0, -1}, // 0x7A 'z' 121 | {136, 3, 3, 4, 0, -2}, // 0x7B '{' 122 | {138, 1, 4, 3, 1, -2}, // 0x7C '|' 123 | {139, 3, 3, 4, 0, -2}, // 0x7D '}' 124 | {141, 3, 2, 4, 0, -2}}; // 0x7E '~' 125 | 126 | const GFXfont Tiny3x3a2pt7b PROGMEM = {(uint8_t *)Tiny3x3a2pt7bBitmaps, 127 | (GFXglyph *)Tiny3x3a2pt7bGlyphs, 0x20, 128 | 0x7E, 4}; 129 | 130 | // Approx. 814 bytes 131 | -------------------------------------------------------------------------------- /build/sketch/generatedUI.h: -------------------------------------------------------------------------------- 1 | #include "Arduino.h" 2 | #include "Inkplate.h" 3 | #include "res/Fonts/FreeSansBold24pt7b.h" 4 | 5 | extern Inkplate display; 6 | 7 | String text0_content = "Hello there!"; 8 | int text0_cursor_x = 300; 9 | int text0_cursor_y = 290; 10 | const GFXfont *text0_font = &24px FreeSansBold24pt7b; 11 | 12 | int rect0_a_x = 90; 13 | int rect0_a_y = 89; 14 | int rect0_b_x = 638; 15 | int rect0_b_y = 487; 16 | int rect0_fill = -1; 17 | int rect0_radius = -1; 18 | int rect0_color = 0; 19 | 20 | void mainDraw() { 21 | display.setFont(text0_font); 22 | display.setTextColor(0, 7); display.setTextSize(1); display.setCursor(text0_cursor_x, text0_cursor_y); 23 | display.print(text0_content); 24 | 25 | if (rect0_radius != -1 && rect0_fill != -1) 26 | display.fillRoundRect(rect0_a_x, rect0_a_y, rect0_b_x - rect0_a_x, rect0_b_y - rect0_a_y, rect0_radius, rect0_color); 27 | else if (rect0_radius != -1 && rect0_fill == -1) 28 | display.drawRoundRect(rect0_a_x, rect0_a_y, rect0_b_x - rect0_a_x, rect0_b_y - rect0_a_y, rect0_radius, rect0_color); 29 | else if (rect0_radius == -1 && rect0_fill != -1) 30 | display.fillRect(rect0_a_x, rect0_a_y, rect0_b_x - rect0_a_x, rect0_b_y - rect0_a_y, rect0_color); 31 | else if (rect0_radius == -1 && rect0_fill == -1) 32 | display.drawRect(rect0_a_x, rect0_a_y, rect0_b_x - rect0_a_x, rect0_b_y - rect0_a_y, rect0_color); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /build/sketch/testScript.ino.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #line 1 "/Users/nitkonitkic/Desktop/code/Inkplate-GUI-Designer/testScript/testScript.ino" 3 | #include "Inkplate.h" 4 | #include "generatedUI.h" 5 | 6 | Inkplate display(INKPLATE_3BIT); 7 | 8 | void setup() { 9 | Serial.begin(115200); 10 | display.begin(); 11 | display.clearDisplay(); 12 | display.clean(); 13 | 14 | mainDraw(); 15 | 16 | display.display(); 17 | } 18 | 19 | void loop() { 20 | // put your main code here, to run repeatedly: 21 | 22 | } 23 | 24 | -------------------------------------------------------------------------------- /fonts.css: -------------------------------------------------------------------------------- 1 | @font-face { 2 | font-family: "FreeMono"; 3 | src: url("/fonts/FreeMono.ttf") format("truetype"); 4 | } 5 | 6 | @font-face { 7 | font-family: "FreeMonoBold"; 8 | src: url("/fonts/FreeMonoBold.ttf") format("truetype"); 9 | } 10 | 11 | @font-face { 12 | font-family: "FreeMonoBoldOblique"; 13 | src: url("/fonts/FreeMonoBoldOblique.ttf") format("truetype"); 14 | } 15 | 16 | @font-face { 17 | font-family: "FreeMonoOblique"; 18 | src: url("/fonts/FreeMonoOblique.ttf") format("truetype"); 19 | } 20 | 21 | @font-face { 22 | font-family: "FreeSans"; 23 | src: url("/fonts/FreeSans.ttf") format("truetype"); 24 | } 25 | 26 | @font-face { 27 | font-family: "FreeSansBold"; 28 | src: url("/fonts/FreeSansBold.ttf") format("truetype"); 29 | } 30 | 31 | @font-face { 32 | font-family: "FreeSansBoldOblique"; 33 | src: url("/fonts/FreeSansBoldOblique.ttf") format("truetype"); 34 | } 35 | 36 | @font-face { 37 | font-family: "FreeSansOblique"; 38 | src: url("/fonts/FreeSansOblique.ttf") format("truetype"); 39 | } 40 | 41 | @font-face { 42 | font-family: "FreeSerif"; 43 | src: url("/fonts/FreeSerif.ttf") format("truetype"); 44 | } 45 | 46 | @font-face { 47 | font-family: "FreeSerifBold"; 48 | src: url("/fonts/FreeSerifBold.ttf") format("truetype"); 49 | } 50 | 51 | @font-face { 52 | font-family: "FreeSerifBoldItalic"; 53 | src: url("/fonts/FreeSerifBoldItalic.ttf") format("truetype"); 54 | } 55 | 56 | @font-face { 57 | font-family: "FreeSerifItalic"; 58 | src: url("/fonts/FreeSerifItalic.ttf") format("truetype"); 59 | } 60 | -------------------------------------------------------------------------------- /index.css: -------------------------------------------------------------------------------- 1 | html, 2 | body { 3 | width: 100%; 4 | height: 100%; 5 | margin: 0; 6 | overflow: hidden; 7 | } 8 | 9 | .wrapper { 10 | height: 100%; 11 | display: flex; 12 | flex-direction: column; 13 | flex-wrap: wrap; 14 | justify-content: flex-start; 15 | align-items: stretch; 16 | align-content: stretch; 17 | } 18 | 19 | .header { 20 | background-color: #0e84cc; 21 | display: flex; 22 | flex-direction: column; 23 | flex-wrap: wrap; 24 | justify-content: flex-start; 25 | align-items: stretch; 26 | align-content: stretch; 27 | } 28 | 29 | .footer { 30 | height: 25px; 31 | background-color: #0e84cc; 32 | text-align: center; 33 | } 34 | 35 | .content { 36 | flex: 1; 37 | display: flex; 38 | flex-direction: row; 39 | flex-wrap: wrap; 40 | justify-content: flex-start; 41 | align-items: stretch; 42 | align-content: stretch; 43 | overflow-y: auto; 44 | } 45 | 46 | .scrollWrap { 47 | width: 100%; 48 | display: flex; 49 | overflow: auto; 50 | height: 100%; 51 | direction: rtl; 52 | } 53 | 54 | .components { 55 | display: flex; 56 | min-height: min-content; 57 | background-color: #cccccc; 58 | } 59 | 60 | .primitiveItem { 61 | padding-left: 3px !important; 62 | padding-top: 2px !important; 63 | padding-bottom: 2px !important; 64 | padding-right: 3px !important; 65 | background-color: #cccccc; 66 | } 67 | 68 | .screen { 69 | flex: 1 70 | } -------------------------------------------------------------------------------- /main.js: -------------------------------------------------------------------------------- 1 | window.requestAnimationFrame(loop); 2 | 3 | var canvas = document.getElementById("canvas"); 4 | var ctx = canvas.getContext("2d"); 5 | 6 | let screen = new Screen(ctx, canvas); 7 | 8 | let fileTab = new FileTab(); 9 | 10 | for (let w of widgets) { 11 | let el = document.createElement("BUTTON"); 12 | el.classList = "list-group-item list-group-item-action primitiveItem".split(); 13 | el.innerHTML = w.name; 14 | el.onclick = () => { 15 | screen.addWidget(w.name) 16 | }; 17 | document.getElementById("widgets").appendChild(el); 18 | } 19 | 20 | function loop() { 21 | ctx.canvas.width = document.getElementById("screen").offsetWidth * 0.99; 22 | ctx.canvas.height = document.getElementById("screen").offsetHeight * 0.99; 23 | 24 | screen.draw(); 25 | 26 | window.requestAnimationFrame(loop); 27 | } 28 | 29 | function selectComponent(component) { 30 | screen.selectComponent(component); 31 | } 32 | 33 | function refreshEntitiesScroll() { 34 | document.getElementById("entities_list").innerHTML = ""; 35 | for (let i = 0; i < screen.entities.length; ++i) { 36 | let btn = document.createElement("button"); 37 | btn.onclick = () => screen.editComponent(screen.entities[i]); 38 | btn.className = "list-group-item list-group-item-action primitiveItem"; 39 | btn.innerHTML = screen.entities[i].type.charAt(0).toUpperCase() + screen.entities[i].type.slice(1) + screen.entities[i].id; 40 | document.getElementById("entities_list").appendChild(btn); 41 | } 42 | } -------------------------------------------------------------------------------- /style.css: -------------------------------------------------------------------------------- 1 | .dropdown { 2 | margin: 8px 16px 0px 16px; 3 | } 4 | 5 | h1 { 6 | position: relative; 7 | display: inline; 8 | font-size: 20pt; 9 | color: #fff; 10 | margin: 0px 32px 0px 0px; 11 | top: 3px; 12 | } 13 | 14 | .scrollWrap { 15 | margin: 0; 16 | width: 200px; 17 | background-color: #f6f6f6; 18 | } 19 | 20 | .list-group { 21 | font-size: 16px; 22 | padding: 0; 23 | margin: 0; 24 | position: relative; 25 | width: 100%; 26 | } 27 | 28 | .list-group-set { 29 | margin: 8px; 30 | } 31 | 32 | .primitiveItem { 33 | border-color: #cccccc; 34 | border-width: 0px 1px 1px 1px; 35 | padding: 4px 8px !important; 36 | transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; 37 | } 38 | 39 | button.primitiveItem:hover { 40 | background-color: #dddddd; 41 | } 42 | 43 | button.primitiveItem:active { 44 | background-color: #aaaaaa !important; 45 | } 46 | 47 | .primitiveItem:last-child { 48 | border-bottom-right-radius: 8px; 49 | border-bottom-left-radius: 8px; 50 | } 51 | 52 | .list-group-bottom-inner .primitiveItem:last-child { 53 | border-width: 0px 1px 1px 0px; 54 | border-bottom-right-radius: 8px; 55 | border-bottom-left-radius: 0px; 56 | } 57 | 58 | h5.primitiveItem { 59 | background-color: #0e84cc; 60 | color: #fff; 61 | border-style: solid; 62 | border-color: #0e84cc; 63 | border-width: 1px 1px 0px 1px; 64 | border-top-right-radius: 8px !important; 65 | border-top-left-radius: 8px !important; 66 | margin-bottom: 0px; 67 | } 68 | 69 | #widgets { 70 | border-bottom-right-radius: 8px; 71 | border-bottom-left-radius: 8px; 72 | } 73 | 74 | .list-group-bottom { 75 | margin: 8px; 76 | position: absolute; 77 | left: 0px; 78 | bottom: 0px; 79 | width: 92%; 80 | } 81 | 82 | .list-group-bottom-inner { 83 | max-height: 300px; 84 | overflow: scroll; 85 | overflow-x: hidden; 86 | background-color: #f6f6f6; 87 | } 88 | 89 | .settings-outer { 90 | width: 300px; 91 | position: relative; 92 | background-color: #f6f6f6; 93 | } 94 | 95 | .settings-box { 96 | margin: 8px; 97 | } 98 | 99 | h3#content { 100 | background-color: #0e84cc; 101 | color: #fff; 102 | border-style: solid; 103 | border-color: #0e84cc; 104 | border-width: 1px 1px 0px 1px; 105 | border-top-right-radius: 8px; 106 | border-top-left-radius: 8px; 107 | margin-bottom: 0px; 108 | padding: 5px 6px 6px 6px; 109 | } 110 | 111 | .settings-inner { 112 | background-color: #fff; 113 | border-style: solid; 114 | border-color: #cccccc; 115 | border-width: 0px 1px 1px 1px; 116 | border-bottom-right-radius: 8px; 117 | border-bottom-left-radius: 8px; 118 | padding: 12px; 119 | } 120 | 121 | .settings-inner > a { 122 | color: #0e84cc; 123 | font-size: 8pt; 124 | text-align: center; 125 | display: block; 126 | margin-top: 16px; 127 | } 128 | 129 | .cname > a { 130 | color: #0e84cc; 131 | font-size: 8pt; 132 | text-align: center; 133 | display: block; 134 | margin-top: 16px; 135 | } 136 | 137 | .input-group>.input-group-prepend>.input-group-text { 138 | padding: 4px 8px 4px 5px; 139 | } 140 | 141 | .input-group { 142 | padding: 4px 8px 4px 5px; 143 | } 144 | 145 | .input-group-text { 146 | border-color: #cccccc; 147 | } 148 | 149 | .input-group>.custom-select:not(:first-child), .input-group>.form-control:not(:first-child) { 150 | border-color: #cccccc; 151 | 152 | } 153 | 154 | input[type="range"] { 155 | margin-left: 8px; 156 | } 157 | 158 | .settings-inner > hr { 159 | height: 0px; 160 | border-style: solid; 161 | border-color: #cccccc; 162 | border-width: 1px 0px 0px 0px; 163 | margin: 8px -12px 12px -12px; 164 | } 165 | 166 | .btn-danger { 167 | padding: 4px 8px 6px 8px !important; 168 | } 169 | 170 | .dropdown-version > .input-group-prepend { 171 | margin: 0px; 172 | } 173 | 174 | .dropdown-version > select { 175 | padding: 4px 8px 5px 7px; 176 | width: 120px; 177 | border-width: 1px 1px 1px 0px; 178 | border-top-right-radius: .25rem; 179 | border-bottom-right-radius: .25rem; 180 | border-color: #cccccc; 181 | font-size: 12pt; 182 | line-height: 1.5; 183 | } 184 | 185 | .dropdown-version > .input-group-prepend > .input-group-text { 186 | padding: 4px 10px 4px 10px; 187 | margin: 0px; 188 | border-width: 1px 1px 1px 1px; 189 | border-top-left-radius: .25rem; 190 | border-bottom-left-radius: .25rem; 191 | font-size: 12pt; 192 | } 193 | 194 | .dropdown-version { 195 | padding: 0px 0px 12px 0px; 196 | display: inline-flex; 197 | width: auto; 198 | } 199 | 200 | .dropdown-button { 201 | display: inline; 202 | position: relative; 203 | top: -2px; 204 | padding: 4px 10px 4px 10px; 205 | color: #495057; 206 | font-size: 12pt; 207 | margin: 0px 7px 0px 7px; 208 | background-color: #fff; 209 | border-width: 1px 1px 1px 1px; 210 | border-color: #cccccc; 211 | } 212 | 213 | 214 | .dropdown-button:hover { 215 | color: #495057 !important; 216 | background-color: #dddddd !important; 217 | border-color: #cccccc !important; 218 | } 219 | 220 | .dropdown-button:active { 221 | color: #495057 !important; 222 | background-color: #aaaaaa !important; 223 | border-color: #999999 !important; 224 | } 225 | 226 | .dropdown-button:focus { 227 | color: #495057 !important; 228 | background-color: #fff !important; 229 | border-color: #cccccc !important; 230 | } 231 | 232 | .dropdown-button-check { 233 | top: -3px; 234 | padding: 3px 10px 6px 12px; 235 | margin: 0px 8px 0px 8px; 236 | } 237 | 238 | .dropdown-checkbox { 239 | position: relative; 240 | top: 1px; 241 | height: auto; 242 | } 243 | 244 | .dropdown-button-right { 245 | top: 3px; 246 | } 247 | 248 | .footer { 249 | width: 100%; 250 | color: #fff; 251 | } 252 | 253 | .footer > .footer-left { 254 | float: right; 255 | padding-right: 10px; 256 | } 257 | 258 | .footer > .footer-center { 259 | float: center; 260 | padding-left: 10px; 261 | } 262 | 263 | .footer > .footer-right { 264 | float: left; 265 | padding-left: 10px; 266 | } 267 | 268 | .footer > span > a { 269 | color: #fff; 270 | text-decoration: underline; 271 | } 272 | 273 | .footer > span > a:hover { 274 | color: #ccf; 275 | text-decoration: underline; 276 | } 277 | 278 | .btn-create { 279 | color: #fff !important; 280 | background-color: #0e84cc !important; 281 | border-color: #0e84cc !important; 282 | transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; 283 | } 284 | 285 | .btn-create:hover { 286 | color: #fff !important; 287 | background-color: #0d6da8 !important; 288 | border-color: #0d6da8 !important; 289 | } 290 | 291 | .btn-create:active { 292 | color: #fff !important; 293 | background-color: #094c74 !important; 294 | border-color: #094c74 !important; 295 | } 296 | 297 | .btn-file { 298 | height: 36px !important; 299 | } 300 | 301 | .variables-edit-title { 302 | padding: 0px; 303 | text-align: center; 304 | display: block; 305 | } 306 | 307 | .variables-edit-text { 308 | border-bottom-left-radius: 0px; 309 | border-bottom-right-radius: 0px; 310 | border-width: 1px 1px 0px 1px; 311 | } 312 | 313 | .input-group > textarea { 314 | border-top-left-radius: 0px !important; 315 | border-top-right-radius: 0px !important; 316 | border-bottom-left-radius: .25rem !important; 317 | border-bottom-right-radius: .25rem !important; 318 | } 319 | 320 | @media (min-width:1240px) { 321 | .resize-br-1 { 322 | display: none; 323 | } 324 | 325 | .resize-br-2 { 326 | display: none; 327 | } 328 | 329 | .resize-br-3 { 330 | display: none; 331 | } 332 | 333 | .resize-br-4 { 334 | display: none; 335 | } 336 | } 337 | 338 | @media (max-width:1239px) { 339 | .resize-br-1 { 340 | display: block; 341 | } 342 | 343 | .resize-br-2 { 344 | display: none; 345 | } 346 | 347 | .resize-br-3 { 348 | display: none; 349 | } 350 | 351 | .resize-br-4 { 352 | display: none; 353 | } 354 | 355 | .dropdown-button-resize-br1 { 356 | margin-bottom: 12px; 357 | } 358 | 359 | label.dropdown-button-resize-br1 { 360 | padding: 5px 10px 6px 12px; 361 | top: -8px; 362 | margin-bottom: 0px; 363 | } 364 | 365 | .dropdown-button-right { 366 | top: -46px; 367 | } 368 | } 369 | 370 | @media (max-width:859px) { 371 | .dropdown-button-right { 372 | top: -2px; 373 | } 374 | } 375 | 376 | @media (max-width:709px) { 377 | .resize-br-1 { 378 | display: none; 379 | } 380 | 381 | .resize-br-2 { 382 | display: block; 383 | } 384 | 385 | .resize-br-3 { 386 | display: none; 387 | } 388 | 389 | .resize-br-4 { 390 | display: none; 391 | } 392 | 393 | .dropdown-button-right { 394 | top: -90px; 395 | } 396 | 397 | .dropdown-button-resize-br1 { 398 | margin-bottom: 0px; 399 | } 400 | 401 | label.dropdown-button-resize-br1 { 402 | padding: 5px 10px 6px 12px; 403 | top: -2px; 404 | margin-bottom: 0px; 405 | } 406 | 407 | .dropdown { 408 | height: 96px; 409 | } 410 | 411 | .dropdown-version { 412 | padding: 15px 0px 12px 0px; 413 | display: inline-flex; 414 | } 415 | } 416 | 417 | @media (max-width:649px) { 418 | .resize-br-1 { 419 | display: block; 420 | } 421 | 422 | .resize-br-2 { 423 | display: block; 424 | } 425 | 426 | .resize-br-3 { 427 | display: none; 428 | } 429 | 430 | .resize-br-4 { 431 | display: none; 432 | } 433 | 434 | label.dropdown-button-resize-br1 { 435 | margin-left: 0px; 436 | } 437 | 438 | .dropdown { 439 | height: 140px; 440 | } 441 | } 442 | 443 | @media (max-width:559px) { 444 | .resize-br-3 { 445 | display: block; 446 | } 447 | 448 | .dropdown-button-right { 449 | top: -80px; 450 | } 451 | } 452 | 453 | @media (max-width:449px) { 454 | .resize-br-3 { 455 | display: block; 456 | } 457 | 458 | .resize-br-4 { 459 | display: block; 460 | } 461 | 462 | .dropdown-version { 463 | display: grid; 464 | padding-bottom: 0px; 465 | } 466 | 467 | .dropdown-version > .input-group-prepend { 468 | display: block; 469 | } 470 | 471 | .dropdown-version > .input-group-prepend > .input-group-text { 472 | border-top-left-radius: .25rem !important; 473 | border-top-right-radius: .25rem !important; 474 | border-bottom-left-radius: 0px !important; 475 | border-bottom-right-radius: 0px !important; 476 | } 477 | 478 | .dropdown-version > select { 479 | display: block; 480 | width: auto; 481 | border-top-left-radius: 0px !important; 482 | border-top-right-radius: 0px !important; 483 | border-bottom-left-radius: .25rem !important; 484 | border-bottom-right-radius: .25rem !important; 485 | } 486 | 487 | label.dropdown-button-resize-br1 { 488 | top: -14px; 489 | display: block; 490 | width: 100%; 491 | } 492 | 493 | .dropdown-button-resize-br1 { 494 | top: -4px; 495 | margin-left: 0px; 496 | margin-right: 0px; 497 | display: block; 498 | width: 100%; 499 | } 500 | 501 | .dropdown-button-right { 502 | margin: 0px 14px 14px 0px; 503 | top: -15px; 504 | float: left !important; 505 | width: 100%; 506 | } 507 | 508 | .dropdown { 509 | height: 350px; 510 | } 511 | } -------------------------------------------------------------------------------- /temp.py: -------------------------------------------------------------------------------- 1 | s = [ 2 | [[93, 80], [111, 63], [118, 110]], 3 | [[111, 63], [118, 110], [287, 64]], 4 | [[111, 63], [118, 110], [287, 64]], 5 | [[267, 107], [287, 64], [118, 110],], 6 | [[267, 107], [287, 64], [296, 79]], 7 | [[86, 86], [70, 97], [108, 111]], 8 | [[70, 97], [108, 111], [90, 248]], 9 | [[90, 248], [49, 251], [70, 97],], 10 | [[90, 248], [49, 251], [65, 269]], 11 | [[41, 302], [65, 282], [83, 303],], 12 | [[41, 302], [83, 303], [62, 440]], 13 | [[41, 302], [19, 456], [62, 440],], 14 | [[19, 456], [62, 440], [30, 466]], 15 | [[71, 277], [96, 252], [90, 299],], 16 | [[96, 252], [90, 299], [243, 253]], 17 | [[243, 253], [237, 297], [90, 299]], 18 | [[243, 253], [237, 297], [262, 274]], 19 | [[270, 110], [302, 85], [315, 99]], 20 | [[315, 99], [270, 110], [250, 250]], 21 | [[315, 100], [291, 251], [250, 250]], 22 | [[250, 250], [291, 251], [270, 270]], 23 | [[269, 281], [244, 302], [286, 302],], 24 | [[244, 302], [286, 302], [266, 453]], 25 | [[266, 453], [224, 440], [244, 302],], 26 | [[224, 440], [266, 453], [247, 465]], 27 | [[48, 489], [37, 474], [70, 442]], 28 | [[48, 489], [70, 442], [217, 444]], 29 | [[217, 444], [48, 489], [222, 489]], 30 | [[222, 489], [217, 444], [240, 474]], 31 | ] 32 | 33 | for x in s: 34 | for y in x: 35 | print(str(y[1] - 50) + ", ", end="") 36 | -------------------------------------------------------------------------------- /testScript/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/SolderedElectronics/Inkplate-GUI-Designer/192626ca5ce3657e20479e81fa0d52cdd32e293f/testScript/.DS_Store -------------------------------------------------------------------------------- /testScript/Fonts/FreeMono9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeMono9pt7bBitmaps[] PROGMEM = { 2 | 0xAA, 0xA8, 0x0C, 0xED, 0x24, 0x92, 0x48, 0x24, 0x48, 0x91, 0x2F, 0xE4, 3 | 0x89, 0x7F, 0x28, 0x51, 0x22, 0x40, 0x08, 0x3E, 0x62, 0x40, 0x30, 0x0E, 4 | 0x01, 0x81, 0xC3, 0xBE, 0x08, 0x08, 0x71, 0x12, 0x23, 0x80, 0x23, 0xB8, 5 | 0x0E, 0x22, 0x44, 0x70, 0x38, 0x81, 0x02, 0x06, 0x1A, 0x65, 0x46, 0xC8, 6 | 0xEC, 0xE9, 0x24, 0x5A, 0xAA, 0xA9, 0x40, 0xA9, 0x55, 0x5A, 0x80, 0x10, 7 | 0x22, 0x4B, 0xE3, 0x05, 0x11, 0x00, 0x10, 0x20, 0x47, 0xF1, 0x02, 0x04, 8 | 0x00, 0x6B, 0x48, 0xFF, 0x00, 0xF0, 0x02, 0x08, 0x10, 0x60, 0x81, 0x04, 9 | 0x08, 0x20, 0x41, 0x02, 0x08, 0x00, 0x38, 0x8A, 0x0C, 0x18, 0x30, 0x60, 10 | 0xC1, 0x82, 0x88, 0xE0, 0x27, 0x28, 0x42, 0x10, 0x84, 0x21, 0x3E, 0x38, 11 | 0x8A, 0x08, 0x10, 0x20, 0x82, 0x08, 0x61, 0x03, 0xF8, 0x7C, 0x06, 0x02, 12 | 0x02, 0x1C, 0x06, 0x01, 0x01, 0x01, 0x42, 0x3C, 0x18, 0xA2, 0x92, 0x8A, 13 | 0x28, 0xBF, 0x08, 0x21, 0xC0, 0x7C, 0x81, 0x03, 0xE4, 0x40, 0x40, 0x81, 14 | 0x03, 0x88, 0xE0, 0x1E, 0x41, 0x04, 0x0B, 0x98, 0xB0, 0xC1, 0xC2, 0x88, 15 | 0xE0, 0xFE, 0x04, 0x08, 0x20, 0x40, 0x82, 0x04, 0x08, 0x20, 0x40, 0x38, 16 | 0x8A, 0x0C, 0x14, 0x47, 0x11, 0x41, 0x83, 0x8C, 0xE0, 0x38, 0x8A, 0x1C, 17 | 0x18, 0x68, 0xCE, 0x81, 0x04, 0x13, 0xC0, 0xF0, 0x0F, 0x6C, 0x00, 0xD2, 18 | 0xD2, 0x00, 0x03, 0x04, 0x18, 0x60, 0x60, 0x18, 0x04, 0x03, 0xFF, 0x80, 19 | 0x00, 0x1F, 0xF0, 0x40, 0x18, 0x03, 0x00, 0x60, 0x20, 0x60, 0xC0, 0x80, 20 | 0x3D, 0x84, 0x08, 0x30, 0xC2, 0x00, 0x00, 0x00, 0x30, 0x3C, 0x46, 0x82, 21 | 0x8E, 0xB2, 0xA2, 0xA2, 0x9F, 0x80, 0x80, 0x40, 0x3C, 0x3C, 0x01, 0x40, 22 | 0x28, 0x09, 0x01, 0x10, 0x42, 0x0F, 0xC1, 0x04, 0x40, 0x9E, 0x3C, 0xFE, 23 | 0x21, 0x90, 0x48, 0x67, 0xE2, 0x09, 0x02, 0x81, 0x41, 0xFF, 0x80, 0x3E, 24 | 0xB0, 0xF0, 0x30, 0x08, 0x04, 0x02, 0x00, 0x80, 0x60, 0x8F, 0x80, 0xFE, 25 | 0x21, 0x90, 0x68, 0x14, 0x0A, 0x05, 0x02, 0x83, 0x43, 0x7F, 0x00, 0xFF, 26 | 0x20, 0x90, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x81, 0x40, 0xFF, 0xC0, 0xFF, 27 | 0xA0, 0x50, 0x08, 0x87, 0xC2, 0x21, 0x00, 0x80, 0x40, 0x78, 0x00, 0x1E, 28 | 0x98, 0x6C, 0x0A, 0x00, 0x80, 0x20, 0xF8, 0x0B, 0x02, 0x60, 0x87, 0xC0, 29 | 0xE3, 0xA0, 0x90, 0x48, 0x27, 0xF2, 0x09, 0x04, 0x82, 0x41, 0x71, 0xC0, 30 | 0xF9, 0x08, 0x42, 0x10, 0x84, 0x27, 0xC0, 0x1F, 0x02, 0x02, 0x02, 0x02, 31 | 0x02, 0x82, 0x82, 0xC6, 0x78, 0xE3, 0xA1, 0x11, 0x09, 0x05, 0x83, 0x21, 32 | 0x08, 0x84, 0x41, 0x70, 0xC0, 0xE0, 0x40, 0x40, 0x40, 0x40, 0x40, 0x41, 33 | 0x41, 0x41, 0xFF, 0xE0, 0xEC, 0x19, 0x45, 0x28, 0xA4, 0xA4, 0x94, 0x91, 34 | 0x12, 0x02, 0x40, 0x5C, 0x1C, 0xC3, 0xB0, 0x94, 0x4A, 0x24, 0x92, 0x49, 35 | 0x14, 0x8A, 0x43, 0x70, 0x80, 0x1E, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 36 | 0x02, 0x82, 0x63, 0x0F, 0x00, 0xFE, 0x43, 0x41, 0x41, 0x42, 0x7C, 0x40, 37 | 0x40, 0x40, 0xF0, 0x1C, 0x31, 0x90, 0x50, 0x18, 0x0C, 0x06, 0x02, 0x82, 38 | 0x63, 0x1F, 0x04, 0x07, 0x92, 0x30, 0xFE, 0x21, 0x90, 0x48, 0x24, 0x23, 39 | 0xE1, 0x10, 0x84, 0x41, 0x70, 0xC0, 0x3A, 0xCD, 0x0A, 0x03, 0x01, 0x80, 40 | 0xC1, 0xC7, 0x78, 0xFF, 0xC4, 0x62, 0x21, 0x00, 0x80, 0x40, 0x20, 0x10, 41 | 0x08, 0x1F, 0x00, 0xE3, 0xA0, 0x90, 0x48, 0x24, 0x12, 0x09, 0x04, 0x82, 42 | 0x22, 0x0E, 0x00, 0xF1, 0xE8, 0x10, 0x82, 0x10, 0x42, 0x10, 0x22, 0x04, 43 | 0x80, 0x50, 0x0C, 0x00, 0x80, 0xF1, 0xE8, 0x09, 0x11, 0x25, 0x44, 0xA8, 44 | 0x55, 0x0C, 0xA1, 0x8C, 0x31, 0x84, 0x30, 0xE3, 0xA0, 0x88, 0x82, 0x80, 45 | 0x80, 0xC0, 0x90, 0x44, 0x41, 0x71, 0xC0, 0xE3, 0xA0, 0x88, 0x82, 0x81, 46 | 0x40, 0x40, 0x20, 0x10, 0x08, 0x1F, 0x00, 0xFD, 0x0A, 0x20, 0x81, 0x04, 47 | 0x10, 0x21, 0x83, 0xFC, 0xEA, 0xAA, 0xAA, 0xC0, 0x80, 0x81, 0x03, 0x02, 48 | 0x04, 0x04, 0x08, 0x08, 0x10, 0x10, 0x20, 0x20, 0xD5, 0x55, 0x55, 0xC0, 49 | 0x10, 0x51, 0x22, 0x28, 0x20, 0xFF, 0xE0, 0x88, 0x80, 0x7E, 0x00, 0x80, 50 | 0x47, 0xEC, 0x14, 0x0A, 0x0C, 0xFB, 0xC0, 0x20, 0x10, 0x0B, 0xC6, 0x12, 51 | 0x05, 0x02, 0x81, 0x40, 0xB0, 0xB7, 0x80, 0x3A, 0x8E, 0x0C, 0x08, 0x10, 52 | 0x10, 0x9E, 0x03, 0x00, 0x80, 0x47, 0xA4, 0x34, 0x0A, 0x05, 0x02, 0x81, 53 | 0x21, 0x8F, 0x60, 0x3C, 0x43, 0x81, 0xFF, 0x80, 0x80, 0x61, 0x3E, 0x3D, 54 | 0x04, 0x3E, 0x41, 0x04, 0x10, 0x41, 0x0F, 0x80, 0x3D, 0xA1, 0xA0, 0x50, 55 | 0x28, 0x14, 0x09, 0x0C, 0x7A, 0x01, 0x01, 0x87, 0x80, 0xC0, 0x20, 0x10, 56 | 0x0B, 0xC6, 0x32, 0x09, 0x04, 0x82, 0x41, 0x20, 0xB8, 0xE0, 0x10, 0x01, 57 | 0xC0, 0x81, 0x02, 0x04, 0x08, 0x11, 0xFC, 0x10, 0x3E, 0x10, 0x84, 0x21, 58 | 0x08, 0x42, 0x3F, 0x00, 0xC0, 0x40, 0x40, 0x4F, 0x44, 0x58, 0x70, 0x48, 59 | 0x44, 0x42, 0xC7, 0x70, 0x20, 0x40, 0x81, 0x02, 0x04, 0x08, 0x10, 0x23, 60 | 0xF8, 0xB7, 0x64, 0x62, 0x31, 0x18, 0x8C, 0x46, 0x23, 0x91, 0x5E, 0x31, 61 | 0x90, 0x48, 0x24, 0x12, 0x09, 0x05, 0xC7, 0x3E, 0x31, 0xA0, 0x30, 0x18, 62 | 0x0C, 0x05, 0x8C, 0x7C, 0xDE, 0x30, 0x90, 0x28, 0x14, 0x0A, 0x05, 0x84, 63 | 0xBC, 0x40, 0x20, 0x38, 0x00, 0x3D, 0xA1, 0xA0, 0x50, 0x28, 0x14, 0x09, 64 | 0x0C, 0x7A, 0x01, 0x00, 0x80, 0xE0, 0xCE, 0xA1, 0x82, 0x04, 0x08, 0x10, 65 | 0x7C, 0x3A, 0x8D, 0x0B, 0x80, 0xF0, 0x70, 0xDE, 0x40, 0x40, 0xFC, 0x40, 66 | 0x40, 0x40, 0x40, 0x40, 0x41, 0x3E, 0xC3, 0x41, 0x41, 0x41, 0x41, 0x41, 67 | 0x43, 0x3D, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x20, 0xA0, 0x50, 0x10, 0xE3, 68 | 0xC0, 0x92, 0x4B, 0x25, 0x92, 0xA9, 0x98, 0x44, 0xE3, 0x31, 0x05, 0x01, 69 | 0x01, 0x41, 0x11, 0x05, 0xC7, 0xE3, 0xA0, 0x90, 0x84, 0x42, 0x40, 0xA0, 70 | 0x60, 0x10, 0x10, 0x08, 0x3E, 0x00, 0xFD, 0x08, 0x20, 0x82, 0x08, 0x10, 71 | 0xBF, 0x29, 0x24, 0xA2, 0x49, 0x26, 0xFF, 0xF8, 0x89, 0x24, 0x8A, 0x49, 72 | 0x2C, 0x61, 0x24, 0x30}; 73 | 74 | const GFXglyph FreeMono9pt7bGlyphs[] PROGMEM = { 75 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 76 | {0, 2, 11, 11, 4, -10}, // 0x21 '!' 77 | {3, 6, 5, 11, 2, -10}, // 0x22 '"' 78 | {7, 7, 12, 11, 2, -10}, // 0x23 '#' 79 | {18, 8, 12, 11, 1, -10}, // 0x24 '$' 80 | {30, 7, 11, 11, 2, -10}, // 0x25 '%' 81 | {40, 7, 10, 11, 2, -9}, // 0x26 '&' 82 | {49, 3, 5, 11, 4, -10}, // 0x27 ''' 83 | {51, 2, 13, 11, 5, -10}, // 0x28 '(' 84 | {55, 2, 13, 11, 4, -10}, // 0x29 ')' 85 | {59, 7, 7, 11, 2, -10}, // 0x2A '*' 86 | {66, 7, 7, 11, 2, -8}, // 0x2B '+' 87 | {73, 3, 5, 11, 2, -1}, // 0x2C ',' 88 | {75, 9, 1, 11, 1, -5}, // 0x2D '-' 89 | {77, 2, 2, 11, 4, -1}, // 0x2E '.' 90 | {78, 7, 13, 11, 2, -11}, // 0x2F '/' 91 | {90, 7, 11, 11, 2, -10}, // 0x30 '0' 92 | {100, 5, 11, 11, 3, -10}, // 0x31 '1' 93 | {107, 7, 11, 11, 2, -10}, // 0x32 '2' 94 | {117, 8, 11, 11, 1, -10}, // 0x33 '3' 95 | {128, 6, 11, 11, 3, -10}, // 0x34 '4' 96 | {137, 7, 11, 11, 2, -10}, // 0x35 '5' 97 | {147, 7, 11, 11, 2, -10}, // 0x36 '6' 98 | {157, 7, 11, 11, 2, -10}, // 0x37 '7' 99 | {167, 7, 11, 11, 2, -10}, // 0x38 '8' 100 | {177, 7, 11, 11, 2, -10}, // 0x39 '9' 101 | {187, 2, 8, 11, 4, -7}, // 0x3A ':' 102 | {189, 3, 11, 11, 3, -7}, // 0x3B ';' 103 | {194, 8, 8, 11, 1, -8}, // 0x3C '<' 104 | {202, 9, 4, 11, 1, -6}, // 0x3D '=' 105 | {207, 9, 8, 11, 1, -8}, // 0x3E '>' 106 | {216, 7, 10, 11, 2, -9}, // 0x3F '?' 107 | {225, 8, 12, 11, 2, -10}, // 0x40 '@' 108 | {237, 11, 10, 11, 0, -9}, // 0x41 'A' 109 | {251, 9, 10, 11, 1, -9}, // 0x42 'B' 110 | {263, 9, 10, 11, 1, -9}, // 0x43 'C' 111 | {275, 9, 10, 11, 1, -9}, // 0x44 'D' 112 | {287, 9, 10, 11, 1, -9}, // 0x45 'E' 113 | {299, 9, 10, 11, 1, -9}, // 0x46 'F' 114 | {311, 10, 10, 11, 1, -9}, // 0x47 'G' 115 | {324, 9, 10, 11, 1, -9}, // 0x48 'H' 116 | {336, 5, 10, 11, 3, -9}, // 0x49 'I' 117 | {343, 8, 10, 11, 2, -9}, // 0x4A 'J' 118 | {353, 9, 10, 11, 1, -9}, // 0x4B 'K' 119 | {365, 8, 10, 11, 2, -9}, // 0x4C 'L' 120 | {375, 11, 10, 11, 0, -9}, // 0x4D 'M' 121 | {389, 9, 10, 11, 1, -9}, // 0x4E 'N' 122 | {401, 9, 10, 11, 1, -9}, // 0x4F 'O' 123 | {413, 8, 10, 11, 1, -9}, // 0x50 'P' 124 | {423, 9, 13, 11, 1, -9}, // 0x51 'Q' 125 | {438, 9, 10, 11, 1, -9}, // 0x52 'R' 126 | {450, 7, 10, 11, 2, -9}, // 0x53 'S' 127 | {459, 9, 10, 11, 1, -9}, // 0x54 'T' 128 | {471, 9, 10, 11, 1, -9}, // 0x55 'U' 129 | {483, 11, 10, 11, 0, -9}, // 0x56 'V' 130 | {497, 11, 10, 11, 0, -9}, // 0x57 'W' 131 | {511, 9, 10, 11, 1, -9}, // 0x58 'X' 132 | {523, 9, 10, 11, 1, -9}, // 0x59 'Y' 133 | {535, 7, 10, 11, 2, -9}, // 0x5A 'Z' 134 | {544, 2, 13, 11, 5, -10}, // 0x5B '[' 135 | {548, 7, 13, 11, 2, -11}, // 0x5C '\' 136 | {560, 2, 13, 11, 4, -10}, // 0x5D ']' 137 | {564, 7, 5, 11, 2, -10}, // 0x5E '^' 138 | {569, 11, 1, 11, 0, 2}, // 0x5F '_' 139 | {571, 3, 3, 11, 3, -11}, // 0x60 '`' 140 | {573, 9, 8, 11, 1, -7}, // 0x61 'a' 141 | {582, 9, 11, 11, 1, -10}, // 0x62 'b' 142 | {595, 7, 8, 11, 2, -7}, // 0x63 'c' 143 | {602, 9, 11, 11, 1, -10}, // 0x64 'd' 144 | {615, 8, 8, 11, 1, -7}, // 0x65 'e' 145 | {623, 6, 11, 11, 3, -10}, // 0x66 'f' 146 | {632, 9, 11, 11, 1, -7}, // 0x67 'g' 147 | {645, 9, 11, 11, 1, -10}, // 0x68 'h' 148 | {658, 7, 10, 11, 2, -9}, // 0x69 'i' 149 | {667, 5, 13, 11, 3, -9}, // 0x6A 'j' 150 | {676, 8, 11, 11, 2, -10}, // 0x6B 'k' 151 | {687, 7, 11, 11, 2, -10}, // 0x6C 'l' 152 | {697, 9, 8, 11, 1, -7}, // 0x6D 'm' 153 | {706, 9, 8, 11, 1, -7}, // 0x6E 'n' 154 | {715, 9, 8, 11, 1, -7}, // 0x6F 'o' 155 | {724, 9, 11, 11, 1, -7}, // 0x70 'p' 156 | {737, 9, 11, 11, 1, -7}, // 0x71 'q' 157 | {750, 7, 8, 11, 3, -7}, // 0x72 'r' 158 | {757, 7, 8, 11, 2, -7}, // 0x73 's' 159 | {764, 8, 10, 11, 2, -9}, // 0x74 't' 160 | {774, 8, 8, 11, 1, -7}, // 0x75 'u' 161 | {782, 9, 8, 11, 1, -7}, // 0x76 'v' 162 | {791, 9, 8, 11, 1, -7}, // 0x77 'w' 163 | {800, 9, 8, 11, 1, -7}, // 0x78 'x' 164 | {809, 9, 11, 11, 1, -7}, // 0x79 'y' 165 | {822, 7, 8, 11, 2, -7}, // 0x7A 'z' 166 | {829, 3, 13, 11, 4, -10}, // 0x7B '{' 167 | {834, 1, 13, 11, 5, -10}, // 0x7C '|' 168 | {836, 3, 13, 11, 4, -10}, // 0x7D '}' 169 | {841, 7, 3, 11, 2, -6}}; // 0x7E '~' 170 | 171 | const GFXfont FreeMono9pt7b PROGMEM = {(uint8_t *)FreeMono9pt7bBitmaps, 172 | (GFXglyph *)FreeMono9pt7bGlyphs, 0x20, 173 | 0x7E, 18}; 174 | 175 | // Approx. 1516 bytes 176 | -------------------------------------------------------------------------------- /testScript/Fonts/FreeMonoBold9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeMonoBold9pt7bBitmaps[] PROGMEM = { 2 | 0xFF, 0xFF, 0xD2, 0x1F, 0x80, 0xEC, 0x89, 0x12, 0x24, 0x40, 0x36, 0x36, 3 | 0x36, 0x7F, 0x7F, 0x36, 0xFF, 0xFF, 0x3C, 0x3C, 0x3C, 0x00, 0x18, 0xFF, 4 | 0xFE, 0x3C, 0x1F, 0x1F, 0x83, 0x46, 0x8D, 0xF0, 0xC1, 0x83, 0x00, 0x61, 5 | 0x22, 0x44, 0x86, 0x67, 0x37, 0x11, 0x22, 0x4C, 0x70, 0x3C, 0x7E, 0x60, 6 | 0x60, 0x30, 0x7B, 0xDF, 0xCE, 0xFF, 0x7F, 0xC9, 0x24, 0x37, 0x66, 0xCC, 7 | 0xCC, 0xCC, 0x66, 0x31, 0xCE, 0x66, 0x33, 0x33, 0x33, 0x66, 0xC8, 0x18, 8 | 0x18, 0xFF, 0xFF, 0x3C, 0x3C, 0x66, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 9 | 0x18, 0x18, 0x18, 0x6B, 0x48, 0xFF, 0xFF, 0xC0, 0xF0, 0x02, 0x0C, 0x18, 10 | 0x60, 0xC3, 0x06, 0x0C, 0x30, 0x61, 0x83, 0x0C, 0x18, 0x20, 0x00, 0x38, 11 | 0xFB, 0xBE, 0x3C, 0x78, 0xF1, 0xE3, 0xC7, 0xDD, 0xF1, 0xC0, 0x38, 0xF3, 12 | 0x60, 0xC1, 0x83, 0x06, 0x0C, 0x18, 0xFD, 0xF8, 0x3C, 0xFE, 0xC7, 0x03, 13 | 0x03, 0x06, 0x0C, 0x18, 0x70, 0xE3, 0xFF, 0xFF, 0x7C, 0xFE, 0x03, 0x03, 14 | 0x03, 0x1E, 0x1E, 0x07, 0x03, 0x03, 0xFE, 0x7C, 0x1C, 0x38, 0xB1, 0x64, 15 | 0xD9, 0xBF, 0xFF, 0x3E, 0x7C, 0x7E, 0x3F, 0x18, 0x0F, 0xC7, 0xF3, 0x1C, 16 | 0x06, 0x03, 0xC3, 0xFF, 0x9F, 0x80, 0x0F, 0x3F, 0x30, 0x60, 0x60, 0xDC, 17 | 0xFE, 0xE3, 0xC3, 0x63, 0x7E, 0x3C, 0xFF, 0xFF, 0xC3, 0x03, 0x06, 0x06, 18 | 0x06, 0x0C, 0x0C, 0x0C, 0x18, 0x38, 0xFB, 0x1E, 0x3C, 0x6F, 0x9F, 0x63, 19 | 0xC7, 0x8F, 0xF1, 0xC0, 0x3C, 0x7E, 0xE6, 0xC3, 0xC3, 0xE7, 0x7F, 0x3B, 20 | 0x06, 0x0E, 0xFC, 0xF0, 0xF0, 0x0F, 0x6C, 0x00, 0x1A, 0xD2, 0x00, 0x01, 21 | 0x83, 0x87, 0x0E, 0x0F, 0x80, 0xE0, 0x1C, 0x03, 0xFF, 0xFF, 0xC0, 0x00, 22 | 0x0F, 0xFF, 0xFC, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0xF9, 0xE3, 0xC1, 0x80, 23 | 0x7C, 0xFE, 0xC7, 0x03, 0x0E, 0x1C, 0x00, 0x00, 0x00, 0x30, 0x30, 0x1E, 24 | 0x1F, 0x1C, 0xDC, 0x6C, 0x76, 0x7B, 0x6D, 0xB6, 0xDB, 0x6F, 0xF3, 0xFC, 25 | 0x06, 0x33, 0xF8, 0x78, 0x3C, 0x07, 0xC0, 0x38, 0x05, 0x81, 0xB0, 0x36, 26 | 0x0F, 0xE1, 0xFC, 0x71, 0xDF, 0x7F, 0xEF, 0x80, 0xFF, 0x3F, 0xE6, 0x19, 27 | 0x86, 0x7F, 0x1F, 0xE6, 0x1D, 0x83, 0x60, 0xFF, 0xFF, 0xF0, 0x1F, 0xBF, 28 | 0xD8, 0xF8, 0x3C, 0x06, 0x03, 0x01, 0x80, 0x61, 0xBF, 0xC7, 0xC0, 0xFE, 29 | 0x3F, 0xE6, 0x19, 0x83, 0x60, 0xD8, 0x36, 0x0D, 0x83, 0x61, 0xBF, 0xEF, 30 | 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC3, 0x61, 0xFF, 31 | 0xFF, 0xE0, 0xFF, 0xFF, 0xD8, 0x6D, 0xB7, 0xC3, 0xE1, 0xB0, 0xC0, 0x60, 32 | 0x7C, 0x3E, 0x00, 0x1F, 0x9F, 0xE6, 0x1B, 0x06, 0xC0, 0x30, 0x0C, 0x7F, 33 | 0x1F, 0xE1, 0x9F, 0xE3, 0xF0, 0xF7, 0xFB, 0xD8, 0xCC, 0x66, 0x33, 0xF9, 34 | 0xFC, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0xFF, 0xF3, 0x0C, 0x30, 0xC3, 0x0C, 35 | 0x33, 0xFF, 0xC0, 0x1F, 0xC7, 0xF0, 0x30, 0x0C, 0x03, 0x00, 0xCC, 0x33, 36 | 0x0C, 0xC7, 0x3F, 0x87, 0xC0, 0xF7, 0xBD, 0xE6, 0x61, 0xB0, 0x78, 0x1F, 37 | 0x06, 0xE1, 0x98, 0x63, 0x3C, 0xFF, 0x3C, 0xFC, 0x7E, 0x0C, 0x06, 0x03, 38 | 0x01, 0x80, 0xC6, 0x63, 0x31, 0xFF, 0xFF, 0xE0, 0xE0, 0xFE, 0x3D, 0xC7, 39 | 0x3D, 0xE7, 0xBC, 0xD7, 0x9B, 0xB3, 0x76, 0x60, 0xDE, 0x3F, 0xC7, 0x80, 40 | 0xE1, 0xFE, 0x3D, 0xE3, 0x3C, 0x66, 0xCC, 0xDD, 0x99, 0xB3, 0x1E, 0x63, 41 | 0xDE, 0x3B, 0xC3, 0x00, 0x1F, 0x07, 0xF1, 0xC7, 0x70, 0x7C, 0x07, 0x80, 42 | 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 0x00, 0xFE, 0x7F, 0x98, 0x6C, 43 | 0x36, 0x1B, 0xF9, 0xF8, 0xC0, 0x60, 0x7C, 0x3E, 0x00, 0x1F, 0x07, 0xF1, 44 | 0xC7, 0x70, 0x7C, 0x07, 0x80, 0xF0, 0x1F, 0x07, 0x71, 0xC7, 0xF0, 0x7C, 45 | 0x0C, 0x33, 0xFE, 0x7F, 0x80, 0xFC, 0x7F, 0x18, 0xCC, 0x66, 0x73, 0xF1, 46 | 0xF0, 0xCC, 0x63, 0x7D, 0xFE, 0x60, 0x3F, 0xBF, 0xF0, 0x78, 0x0F, 0x03, 47 | 0xF8, 0x3F, 0x83, 0xC3, 0xFF, 0xBF, 0x80, 0xFF, 0xFF, 0xF6, 0x7B, 0x3D, 48 | 0x98, 0xC0, 0x60, 0x30, 0x18, 0x3F, 0x1F, 0x80, 0xF1, 0xFE, 0x3D, 0x83, 49 | 0x30, 0x66, 0x0C, 0xC1, 0x98, 0x33, 0x06, 0x60, 0xC7, 0xF0, 0x7C, 0x00, 50 | 0xFB, 0xFF, 0x7D, 0xC3, 0x18, 0xC3, 0x18, 0x36, 0x06, 0xC0, 0x50, 0x0E, 51 | 0x01, 0xC0, 0x10, 0x00, 0xFB, 0xFE, 0xF6, 0x0D, 0x93, 0x6E, 0xDB, 0xB7, 52 | 0xAD, 0xEE, 0x7B, 0x8E, 0xE3, 0x18, 0xF3, 0xFC, 0xF7, 0x38, 0xFC, 0x1E, 53 | 0x03, 0x01, 0xE0, 0xCC, 0x73, 0xBC, 0xFF, 0x3C, 0xF3, 0xFC, 0xF7, 0x38, 54 | 0xCC, 0x1E, 0x07, 0x80, 0xC0, 0x30, 0x0C, 0x0F, 0xC3, 0xF0, 0xFE, 0xFE, 55 | 0xC6, 0xCC, 0x18, 0x18, 0x30, 0x63, 0xC3, 0xFF, 0xFF, 0xFF, 0xCC, 0xCC, 56 | 0xCC, 0xCC, 0xCC, 0xFF, 0x01, 0x03, 0x06, 0x06, 0x0C, 0x0C, 0x18, 0x18, 57 | 0x30, 0x30, 0x60, 0x60, 0xC0, 0x80, 0xFF, 0x33, 0x33, 0x33, 0x33, 0x33, 58 | 0xFF, 0x10, 0x71, 0xE3, 0x6C, 0x70, 0x40, 0xFF, 0xFF, 0xFC, 0x88, 0x80, 59 | 0x7E, 0x3F, 0x8F, 0xCF, 0xEE, 0x36, 0x1B, 0xFE, 0xFF, 0xE0, 0x38, 0x06, 60 | 0x01, 0xBC, 0x7F, 0x9C, 0x76, 0x0D, 0x83, 0x71, 0xFF, 0xEE, 0xF0, 0x3F, 61 | 0xBF, 0xF8, 0x78, 0x3C, 0x07, 0x05, 0xFE, 0x7E, 0x03, 0x80, 0xE0, 0x18, 62 | 0xF6, 0x7F, 0xB8, 0xEC, 0x1B, 0x06, 0xE3, 0x9F, 0xF3, 0xFC, 0x3E, 0x3F, 63 | 0xB0, 0xFF, 0xFF, 0xFE, 0x01, 0xFE, 0x7E, 0x1F, 0x3F, 0x30, 0x7E, 0x7E, 64 | 0x30, 0x30, 0x30, 0x30, 0xFE, 0xFE, 0x3F, 0xBF, 0xF9, 0xD8, 0x6C, 0x37, 65 | 0x39, 0xFC, 0x76, 0x03, 0x01, 0x8F, 0xC7, 0xC0, 0xE0, 0x70, 0x18, 0x0D, 66 | 0xC7, 0xF3, 0x99, 0x8C, 0xC6, 0x63, 0x7B, 0xFD, 0xE0, 0x18, 0x18, 0x00, 67 | 0x78, 0x78, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0x18, 0x60, 0x3F, 0xFC, 68 | 0x30, 0xC3, 0x0C, 0x30, 0xC3, 0x0F, 0xFF, 0x80, 0xE0, 0x70, 0x18, 0x0D, 69 | 0xE6, 0xF3, 0xE1, 0xE0, 0xF8, 0x6E, 0x73, 0xF9, 0xE0, 0x78, 0x78, 0x18, 70 | 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xFF, 0xFF, 0xFD, 0x9F, 0xF9, 0x9B, 71 | 0x33, 0x66, 0x6C, 0xCD, 0xBD, 0xFF, 0xBF, 0xEE, 0x7F, 0x98, 0xCC, 0x66, 72 | 0x33, 0x1B, 0xDF, 0xEF, 0x3E, 0x3F, 0xB8, 0xF8, 0x3C, 0x1F, 0x1D, 0xFC, 73 | 0x7C, 0xEF, 0x1F, 0xF9, 0xC3, 0xB0, 0x36, 0x06, 0xE1, 0xDF, 0xF3, 0x78, 74 | 0x60, 0x0C, 0x03, 0xE0, 0x7C, 0x00, 0x1E, 0xEF, 0xFF, 0x87, 0x60, 0x6C, 75 | 0x0D, 0xC3, 0x9F, 0xF0, 0xF6, 0x00, 0xC0, 0x18, 0x0F, 0x81, 0xF0, 0x77, 76 | 0xBF, 0xCF, 0x06, 0x03, 0x01, 0x83, 0xF9, 0xFC, 0x3F, 0xFF, 0xC3, 0xFC, 77 | 0x3F, 0xC3, 0xFF, 0xFC, 0x60, 0x60, 0x60, 0xFE, 0xFE, 0x60, 0x60, 0x60, 78 | 0x61, 0x7F, 0x3E, 0xE7, 0x73, 0x98, 0xCC, 0x66, 0x33, 0x19, 0xFE, 0x7F, 79 | 0xFB, 0xFF, 0x7C, 0xC6, 0x18, 0xC1, 0xB0, 0x36, 0x03, 0x80, 0x70, 0xF1, 80 | 0xFE, 0x3D, 0xBB, 0x37, 0x63, 0xF8, 0x77, 0x0E, 0xE1, 0x8C, 0xF7, 0xFB, 81 | 0xCD, 0x83, 0x83, 0xC3, 0xBB, 0xDF, 0xEF, 0xF3, 0xFC, 0xF6, 0x18, 0xCC, 82 | 0x33, 0x07, 0x81, 0xE0, 0x30, 0x0C, 0x06, 0x0F, 0xC3, 0xF0, 0xFF, 0xFF, 83 | 0x30, 0xC3, 0x0C, 0x7F, 0xFF, 0x37, 0x66, 0x66, 0xCC, 0x66, 0x66, 0x73, 84 | 0xFF, 0xFF, 0xFF, 0xF0, 0xCE, 0x66, 0x66, 0x33, 0x66, 0x66, 0xEC, 0x70, 85 | 0x7C, 0xF3, 0xC0, 0xC0}; 86 | 87 | const GFXglyph FreeMonoBold9pt7bGlyphs[] PROGMEM = { 88 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 89 | {0, 3, 11, 11, 4, -10}, // 0x21 '!' 90 | {5, 7, 5, 11, 2, -10}, // 0x22 '"' 91 | {10, 8, 12, 11, 1, -10}, // 0x23 '#' 92 | {22, 7, 14, 11, 2, -11}, // 0x24 '$' 93 | {35, 7, 11, 11, 2, -10}, // 0x25 '%' 94 | {45, 8, 10, 11, 1, -9}, // 0x26 '&' 95 | {55, 3, 5, 11, 4, -10}, // 0x27 ''' 96 | {57, 4, 14, 11, 5, -10}, // 0x28 '(' 97 | {64, 4, 14, 11, 2, -10}, // 0x29 ')' 98 | {71, 8, 7, 11, 2, -10}, // 0x2A '*' 99 | {78, 8, 9, 11, 2, -8}, // 0x2B '+' 100 | {87, 3, 5, 11, 3, -1}, // 0x2C ',' 101 | {89, 9, 2, 11, 1, -5}, // 0x2D '-' 102 | {92, 2, 2, 11, 4, -1}, // 0x2E '.' 103 | {93, 7, 15, 11, 2, -12}, // 0x2F '/' 104 | {107, 7, 12, 11, 2, -11}, // 0x30 '0' 105 | {118, 7, 11, 11, 2, -10}, // 0x31 '1' 106 | {128, 8, 12, 11, 1, -11}, // 0x32 '2' 107 | {140, 8, 12, 11, 2, -11}, // 0x33 '3' 108 | {152, 7, 10, 11, 2, -9}, // 0x34 '4' 109 | {161, 9, 11, 11, 1, -10}, // 0x35 '5' 110 | {174, 8, 12, 11, 2, -11}, // 0x36 '6' 111 | {186, 8, 11, 11, 1, -10}, // 0x37 '7' 112 | {197, 7, 12, 11, 2, -11}, // 0x38 '8' 113 | {208, 8, 12, 11, 2, -11}, // 0x39 '9' 114 | {220, 2, 8, 11, 4, -7}, // 0x3A ':' 115 | {222, 3, 11, 11, 3, -7}, // 0x3B ';' 116 | {227, 9, 8, 11, 1, -8}, // 0x3C '<' 117 | {236, 9, 6, 11, 1, -7}, // 0x3D '=' 118 | {243, 9, 8, 11, 1, -8}, // 0x3E '>' 119 | {252, 8, 11, 11, 2, -10}, // 0x3F '?' 120 | {263, 9, 15, 11, 1, -11}, // 0x40 '@' 121 | {280, 11, 11, 11, 0, -10}, // 0x41 'A' 122 | {296, 10, 11, 11, 1, -10}, // 0x42 'B' 123 | {310, 9, 11, 11, 1, -10}, // 0x43 'C' 124 | {323, 10, 11, 11, 0, -10}, // 0x44 'D' 125 | {337, 9, 11, 11, 1, -10}, // 0x45 'E' 126 | {350, 9, 11, 11, 1, -10}, // 0x46 'F' 127 | {363, 10, 11, 11, 1, -10}, // 0x47 'G' 128 | {377, 9, 11, 11, 1, -10}, // 0x48 'H' 129 | {390, 6, 11, 11, 3, -10}, // 0x49 'I' 130 | {399, 10, 11, 11, 1, -10}, // 0x4A 'J' 131 | {413, 10, 11, 11, 1, -10}, // 0x4B 'K' 132 | {427, 9, 11, 11, 1, -10}, // 0x4C 'L' 133 | {440, 11, 11, 11, 0, -10}, // 0x4D 'M' 134 | {456, 11, 11, 11, 0, -10}, // 0x4E 'N' 135 | {472, 11, 11, 11, 0, -10}, // 0x4F 'O' 136 | {488, 9, 11, 11, 1, -10}, // 0x50 'P' 137 | {501, 11, 14, 11, 0, -10}, // 0x51 'Q' 138 | {521, 9, 11, 11, 1, -10}, // 0x52 'R' 139 | {534, 9, 11, 11, 1, -10}, // 0x53 'S' 140 | {547, 9, 11, 11, 1, -10}, // 0x54 'T' 141 | {560, 11, 11, 11, 0, -10}, // 0x55 'U' 142 | {576, 11, 11, 11, 0, -10}, // 0x56 'V' 143 | {592, 10, 11, 11, 0, -10}, // 0x57 'W' 144 | {606, 10, 11, 11, 0, -10}, // 0x58 'X' 145 | {620, 10, 11, 11, 0, -10}, // 0x59 'Y' 146 | {634, 8, 11, 11, 2, -10}, // 0x5A 'Z' 147 | {645, 4, 14, 11, 5, -10}, // 0x5B '[' 148 | {652, 7, 15, 11, 2, -12}, // 0x5C '\' 149 | {666, 4, 14, 11, 2, -10}, // 0x5D ']' 150 | {673, 7, 6, 11, 2, -11}, // 0x5E '^' 151 | {679, 11, 2, 11, 0, 3}, // 0x5F '_' 152 | {682, 3, 3, 11, 3, -11}, // 0x60 '`' 153 | {684, 9, 8, 11, 1, -7}, // 0x61 'a' 154 | {693, 10, 11, 11, 0, -10}, // 0x62 'b' 155 | {707, 9, 8, 11, 1, -7}, // 0x63 'c' 156 | {716, 10, 11, 11, 1, -10}, // 0x64 'd' 157 | {730, 9, 8, 11, 1, -7}, // 0x65 'e' 158 | {739, 8, 11, 11, 2, -10}, // 0x66 'f' 159 | {750, 9, 12, 11, 1, -7}, // 0x67 'g' 160 | {764, 9, 11, 11, 1, -10}, // 0x68 'h' 161 | {777, 8, 11, 11, 2, -10}, // 0x69 'i' 162 | {788, 6, 15, 11, 2, -10}, // 0x6A 'j' 163 | {800, 9, 11, 11, 1, -10}, // 0x6B 'k' 164 | {813, 8, 11, 11, 2, -10}, // 0x6C 'l' 165 | {824, 11, 8, 11, 0, -7}, // 0x6D 'm' 166 | {835, 9, 8, 11, 1, -7}, // 0x6E 'n' 167 | {844, 9, 8, 11, 1, -7}, // 0x6F 'o' 168 | {853, 11, 12, 11, 0, -7}, // 0x70 'p' 169 | {870, 11, 12, 11, 0, -7}, // 0x71 'q' 170 | {887, 9, 8, 11, 1, -7}, // 0x72 'r' 171 | {896, 8, 8, 11, 2, -7}, // 0x73 's' 172 | {904, 8, 11, 11, 1, -10}, // 0x74 't' 173 | {915, 9, 8, 11, 1, -7}, // 0x75 'u' 174 | {924, 11, 8, 11, 0, -7}, // 0x76 'v' 175 | {935, 11, 8, 11, 0, -7}, // 0x77 'w' 176 | {946, 9, 8, 11, 1, -7}, // 0x78 'x' 177 | {955, 10, 12, 11, 0, -7}, // 0x79 'y' 178 | {970, 7, 8, 11, 2, -7}, // 0x7A 'z' 179 | {977, 4, 14, 11, 3, -10}, // 0x7B '{' 180 | {984, 2, 14, 11, 5, -10}, // 0x7C '|' 181 | {988, 4, 14, 11, 4, -10}, // 0x7D '}' 182 | {995, 9, 4, 11, 1, -6}}; // 0x7E '~' 183 | 184 | const GFXfont FreeMonoBold9pt7b PROGMEM = {(uint8_t *)FreeMonoBold9pt7bBitmaps, 185 | (GFXglyph *)FreeMonoBold9pt7bGlyphs, 186 | 0x20, 0x7E, 18}; 187 | 188 | // Approx. 1672 bytes 189 | -------------------------------------------------------------------------------- /testScript/Fonts/FreeMonoOblique9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeMonoOblique9pt7bBitmaps[] PROGMEM = { 2 | 0x11, 0x22, 0x24, 0x40, 0x00, 0xC0, 0xDE, 0xE5, 0x29, 0x00, 0x09, 0x05, 3 | 0x02, 0x82, 0x47, 0xF8, 0xA0, 0x51, 0xFE, 0x28, 0x14, 0x0A, 0x09, 0x00, 4 | 0x08, 0x1D, 0x23, 0x40, 0x70, 0x1C, 0x02, 0x82, 0x84, 0x78, 0x20, 0x20, 5 | 0x1C, 0x11, 0x08, 0x83, 0x80, 0x18, 0x71, 0xC0, 0x1C, 0x11, 0x08, 0x83, 6 | 0x80, 0x1E, 0x60, 0x81, 0x03, 0x0A, 0x65, 0x46, 0x88, 0xE8, 0xFA, 0x80, 7 | 0x12, 0x24, 0x48, 0x88, 0x88, 0x88, 0x80, 0x01, 0x11, 0x11, 0x11, 0x22, 8 | 0x44, 0x80, 0x10, 0x22, 0x5B, 0xC3, 0x0A, 0x22, 0x00, 0x04, 0x02, 0x02, 9 | 0x1F, 0xF0, 0x80, 0x40, 0x20, 0x00, 0x36, 0x4C, 0x80, 0xFF, 0x80, 0xF0, 10 | 0x00, 0x80, 0x80, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10, 11 | 0x08, 0x08, 0x00, 0x1C, 0x45, 0x0A, 0x18, 0x30, 0x61, 0x42, 0x85, 0x11, 12 | 0xC0, 0x04, 0x38, 0x90, 0x20, 0x81, 0x02, 0x04, 0x08, 0x23, 0xF8, 0x07, 13 | 0x04, 0xC4, 0x20, 0x10, 0x10, 0x30, 0x20, 0x20, 0x60, 0x40, 0x3F, 0x80, 14 | 0x0F, 0x00, 0x40, 0x20, 0x20, 0x60, 0x18, 0x04, 0x02, 0x01, 0x43, 0x1E, 15 | 0x00, 0x03, 0x05, 0x0A, 0x12, 0x22, 0x22, 0x42, 0x7F, 0x04, 0x04, 0x1E, 16 | 0x1F, 0x88, 0x08, 0x05, 0xC3, 0x30, 0x08, 0x04, 0x02, 0x02, 0x42, 0x1E, 17 | 0x00, 0x07, 0x18, 0x20, 0x40, 0x5C, 0xA6, 0xC2, 0x82, 0x82, 0xC4, 0x78, 18 | 0xFF, 0x04, 0x10, 0x20, 0x82, 0x04, 0x10, 0x20, 0x81, 0x00, 0x1E, 0x23, 19 | 0x41, 0x41, 0x62, 0x1C, 0x66, 0x82, 0x82, 0x84, 0x78, 0x1E, 0x23, 0x41, 20 | 0x41, 0x43, 0x65, 0x3A, 0x02, 0x04, 0x18, 0xE0, 0x6C, 0x00, 0x36, 0x18, 21 | 0xC0, 0x00, 0x19, 0x8C, 0xC4, 0x00, 0x01, 0x83, 0x06, 0x0C, 0x06, 0x00, 22 | 0x80, 0x30, 0x04, 0xFF, 0x80, 0x00, 0x1F, 0xF0, 0x20, 0x0C, 0x01, 0x00, 23 | 0x60, 0x20, 0x60, 0xC1, 0x80, 0x3D, 0x8E, 0x08, 0x10, 0xC6, 0x08, 0x00, 24 | 0x01, 0x80, 0x1C, 0x45, 0x0A, 0x79, 0x34, 0x69, 0x4E, 0x81, 0x03, 0x03, 25 | 0xC0, 0x0F, 0x00, 0x60, 0x12, 0x02, 0x40, 0x88, 0x21, 0x07, 0xE1, 0x04, 26 | 0x20, 0x5E, 0x3C, 0x3F, 0x84, 0x11, 0x04, 0x82, 0x3F, 0x88, 0x32, 0x04, 27 | 0x81, 0x60, 0xBF, 0xC0, 0x1E, 0x98, 0xD0, 0x28, 0x08, 0x04, 0x02, 0x01, 28 | 0x00, 0x41, 0x1F, 0x00, 0x3F, 0x0C, 0x22, 0x04, 0x81, 0x20, 0x48, 0x12, 29 | 0x09, 0x02, 0x43, 0x3F, 0x00, 0x3F, 0xC4, 0x11, 0x00, 0x88, 0x3E, 0x08, 30 | 0x82, 0x00, 0x82, 0x60, 0xBF, 0xE0, 0x3F, 0xE2, 0x08, 0x40, 0x11, 0x03, 31 | 0xE0, 0x44, 0x08, 0x01, 0x00, 0x60, 0x1F, 0x00, 0x1E, 0x98, 0xD0, 0x08, 32 | 0x08, 0x04, 0x7A, 0x05, 0x02, 0x41, 0x1F, 0x00, 0x3D, 0xE2, 0x18, 0x42, 33 | 0x08, 0x43, 0xF8, 0x41, 0x08, 0x21, 0x08, 0x21, 0x1E, 0xF0, 0x3F, 0x82, 34 | 0x02, 0x01, 0x00, 0x80, 0x40, 0x20, 0x20, 0x10, 0x7F, 0x00, 0x0F, 0xE0, 35 | 0x20, 0x04, 0x00, 0x80, 0x10, 0x02, 0x20, 0x84, 0x10, 0x84, 0x0F, 0x00, 36 | 0x3C, 0xE2, 0x10, 0x44, 0x11, 0x02, 0xC0, 0x64, 0x08, 0x81, 0x08, 0x61, 37 | 0x1E, 0x38, 0x3E, 0x02, 0x00, 0x80, 0x20, 0x10, 0x04, 0x01, 0x04, 0x42, 38 | 0x10, 0xBF, 0xE0, 0x38, 0x38, 0xC3, 0x05, 0x28, 0x29, 0x42, 0x52, 0x13, 39 | 0x10, 0x99, 0x84, 0x08, 0x20, 0x47, 0x8F, 0x00, 0x70, 0xE6, 0x08, 0xA1, 40 | 0x14, 0x22, 0x48, 0x49, 0x11, 0x22, 0x14, 0x43, 0x1E, 0x20, 0x1E, 0x18, 41 | 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x00, 0x3F, 0x84, 42 | 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x00, 0x80, 0x60, 0x3E, 0x00, 0x1E, 43 | 0x18, 0x90, 0x28, 0x18, 0x0C, 0x06, 0x05, 0x02, 0x46, 0x1E, 0x08, 0x0F, 44 | 0x44, 0x60, 0x3F, 0x84, 0x31, 0x04, 0x81, 0x20, 0x8F, 0xC2, 0x10, 0x84, 45 | 0x60, 0xBC, 0x10, 0x0F, 0x88, 0xC8, 0x24, 0x01, 0x80, 0x38, 0x05, 0x02, 46 | 0xC2, 0x5E, 0x00, 0xFF, 0xC4, 0x44, 0x02, 0x01, 0x00, 0x80, 0x40, 0x60, 47 | 0x20, 0x7E, 0x00, 0xF1, 0xD0, 0x24, 0x09, 0x02, 0x41, 0xA0, 0x48, 0x12, 48 | 0x04, 0xC6, 0x1F, 0x00, 0xF1, 0xE8, 0x11, 0x02, 0x20, 0x82, 0x20, 0x44, 49 | 0x09, 0x01, 0x40, 0x28, 0x02, 0x00, 0xF1, 0xE8, 0x09, 0x12, 0x26, 0x45, 50 | 0x48, 0xAA, 0x29, 0x45, 0x28, 0xC6, 0x18, 0xC0, 0x38, 0xE2, 0x08, 0x26, 51 | 0x05, 0x00, 0x40, 0x18, 0x04, 0x81, 0x08, 0x41, 0x1C, 0x70, 0xE3, 0xA0, 52 | 0x90, 0x84, 0x81, 0x80, 0x80, 0x40, 0x20, 0x20, 0x7E, 0x00, 0x3F, 0x90, 53 | 0x88, 0x80, 0x80, 0x80, 0x80, 0x80, 0x82, 0x82, 0x7F, 0x00, 0x39, 0x08, 54 | 0x44, 0x21, 0x08, 0x42, 0x21, 0x0E, 0x00, 0x88, 0x44, 0x44, 0x22, 0x22, 55 | 0x11, 0x11, 0x38, 0x42, 0x11, 0x08, 0x42, 0x10, 0x84, 0x2E, 0x00, 0x08, 56 | 0x28, 0x92, 0x18, 0x20, 0xFF, 0xC0, 0xA4, 0x3E, 0x00, 0x80, 0x47, 0xA4, 57 | 0x34, 0x12, 0x18, 0xF7, 0x38, 0x01, 0x00, 0x40, 0x09, 0xE1, 0xC6, 0x20, 58 | 0x44, 0x09, 0x01, 0x30, 0x46, 0x13, 0xBC, 0x00, 0x1F, 0x48, 0x74, 0x0A, 59 | 0x00, 0x80, 0x20, 0x0C, 0x18, 0xF8, 0x01, 0x80, 0x40, 0x23, 0x96, 0x32, 60 | 0x0A, 0x05, 0x02, 0x81, 0x61, 0x1F, 0xE0, 0x1F, 0x30, 0xD0, 0x3F, 0xF8, 61 | 0x04, 0x01, 0x00, 0x7C, 0x07, 0xC3, 0x00, 0x80, 0xFE, 0x10, 0x04, 0x01, 62 | 0x00, 0x40, 0x10, 0x08, 0x0F, 0xE0, 0x1D, 0xD8, 0xC4, 0x12, 0x04, 0x82, 63 | 0x20, 0x8C, 0x61, 0xE8, 0x02, 0x01, 0x07, 0x80, 0x30, 0x04, 0x01, 0x00, 64 | 0x5C, 0x38, 0x88, 0x22, 0x08, 0x82, 0x21, 0x18, 0x4F, 0x3C, 0x04, 0x04, 65 | 0x00, 0x38, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 0xFF, 0x01, 0x00, 0x80, 66 | 0x03, 0xF0, 0x10, 0x08, 0x04, 0x02, 0x02, 0x01, 0x00, 0x80, 0x40, 0x47, 67 | 0xC0, 0x38, 0x08, 0x04, 0x02, 0x71, 0x20, 0xA0, 0xA0, 0x68, 0x24, 0x11, 68 | 0x38, 0xE0, 0x3C, 0x04, 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x10, 0x10, 69 | 0xFF, 0x3E, 0xE2, 0x64, 0x88, 0x91, 0x12, 0x24, 0x48, 0x91, 0x17, 0x33, 70 | 0x37, 0x14, 0x4C, 0x24, 0x12, 0x09, 0x08, 0x85, 0xE3, 0x1E, 0x10, 0x90, 71 | 0x30, 0x18, 0x0C, 0x0B, 0x08, 0x78, 0x33, 0xC3, 0x8C, 0x40, 0x88, 0x12, 72 | 0x02, 0x60, 0x8C, 0x31, 0x78, 0x20, 0x08, 0x03, 0xE0, 0x00, 0x1C, 0xD8, 73 | 0xC4, 0x12, 0x04, 0x81, 0x20, 0x4C, 0x21, 0xF8, 0x02, 0x00, 0x81, 0xF0, 74 | 0x73, 0x8E, 0x04, 0x04, 0x02, 0x01, 0x00, 0x81, 0xFC, 0x1F, 0x61, 0x40, 75 | 0x3C, 0x03, 0x81, 0x82, 0xFC, 0x10, 0x63, 0xF9, 0x02, 0x04, 0x10, 0x20, 76 | 0x40, 0x7C, 0xE3, 0x10, 0x90, 0x48, 0x24, 0x22, 0x11, 0x18, 0xF6, 0xF3, 77 | 0xD0, 0x44, 0x10, 0x88, 0x24, 0x09, 0x02, 0x80, 0x40, 0xE1, 0xD0, 0x24, 78 | 0x91, 0x24, 0x55, 0x19, 0x86, 0x61, 0x10, 0x39, 0xC4, 0x20, 0xB0, 0x30, 79 | 0x0C, 0x04, 0x86, 0x13, 0x8E, 0x3C, 0x71, 0x04, 0x10, 0x40, 0x88, 0x09, 80 | 0x00, 0xA0, 0x06, 0x00, 0x40, 0x08, 0x01, 0x00, 0xFC, 0x00, 0x7F, 0x42, 81 | 0x04, 0x08, 0x10, 0x20, 0x42, 0xFE, 0x0C, 0x41, 0x04, 0x30, 0x8C, 0x08, 82 | 0x21, 0x04, 0x10, 0x60, 0x24, 0x94, 0x92, 0x52, 0x40, 0x18, 0x20, 0x82, 83 | 0x10, 0x40, 0xC4, 0x10, 0x82, 0x08, 0xC0, 0x61, 0x24, 0x30}; 84 | 85 | const GFXglyph FreeMonoOblique9pt7bGlyphs[] PROGMEM = { 86 | {0, 0, 0, 11, 0, 1}, // 0x20 ' ' 87 | {0, 4, 11, 11, 4, -10}, // 0x21 '!' 88 | {6, 5, 5, 11, 4, -10}, // 0x22 '"' 89 | {10, 9, 12, 11, 2, -10}, // 0x23 '#' 90 | {24, 8, 12, 11, 3, -10}, // 0x24 '$' 91 | {36, 9, 11, 11, 2, -10}, // 0x25 '%' 92 | {49, 7, 10, 11, 2, -9}, // 0x26 '&' 93 | {58, 2, 5, 11, 6, -10}, // 0x27 ''' 94 | {60, 4, 13, 11, 6, -10}, // 0x28 '(' 95 | {67, 4, 13, 11, 3, -10}, // 0x29 ')' 96 | {74, 7, 7, 11, 4, -10}, // 0x2A '*' 97 | {81, 9, 8, 11, 2, -8}, // 0x2B '+' 98 | {90, 4, 5, 11, 2, -1}, // 0x2C ',' 99 | {93, 9, 1, 11, 2, -5}, // 0x2D '-' 100 | {95, 2, 2, 11, 4, -1}, // 0x2E '.' 101 | {96, 9, 13, 11, 2, -11}, // 0x2F '/' 102 | {111, 7, 11, 11, 3, -10}, // 0x30 '0' 103 | {121, 7, 11, 11, 2, -10}, // 0x31 '1' 104 | {131, 9, 11, 11, 2, -10}, // 0x32 '2' 105 | {144, 9, 11, 11, 2, -10}, // 0x33 '3' 106 | {157, 8, 11, 11, 2, -10}, // 0x34 '4' 107 | {168, 9, 11, 11, 2, -10}, // 0x35 '5' 108 | {181, 8, 11, 11, 3, -10}, // 0x36 '6' 109 | {192, 7, 11, 11, 4, -10}, // 0x37 '7' 110 | {202, 8, 11, 11, 3, -10}, // 0x38 '8' 111 | {213, 8, 11, 11, 3, -10}, // 0x39 '9' 112 | {224, 3, 8, 11, 4, -7}, // 0x3A ':' 113 | {227, 5, 11, 11, 2, -7}, // 0x3B ';' 114 | {234, 9, 8, 11, 2, -8}, // 0x3C '<' 115 | {243, 9, 4, 11, 2, -6}, // 0x3D '=' 116 | {248, 9, 8, 11, 2, -8}, // 0x3E '>' 117 | {257, 7, 10, 11, 4, -9}, // 0x3F '?' 118 | {266, 7, 12, 11, 3, -10}, // 0x40 '@' 119 | {277, 11, 10, 11, 0, -9}, // 0x41 'A' 120 | {291, 10, 10, 11, 1, -9}, // 0x42 'B' 121 | {304, 9, 10, 11, 2, -9}, // 0x43 'C' 122 | {316, 10, 10, 11, 1, -9}, // 0x44 'D' 123 | {329, 10, 10, 11, 1, -9}, // 0x45 'E' 124 | {342, 11, 10, 11, 1, -9}, // 0x46 'F' 125 | {356, 9, 10, 11, 2, -9}, // 0x47 'G' 126 | {368, 11, 10, 11, 1, -9}, // 0x48 'H' 127 | {382, 9, 10, 11, 2, -9}, // 0x49 'I' 128 | {394, 11, 10, 11, 2, -9}, // 0x4A 'J' 129 | {408, 11, 10, 11, 1, -9}, // 0x4B 'K' 130 | {422, 10, 10, 11, 1, -9}, // 0x4C 'L' 131 | {435, 13, 10, 11, 0, -9}, // 0x4D 'M' 132 | {452, 11, 10, 11, 1, -9}, // 0x4E 'N' 133 | {466, 9, 10, 11, 2, -9}, // 0x4F 'O' 134 | {478, 10, 10, 11, 1, -9}, // 0x50 'P' 135 | {491, 9, 13, 11, 2, -9}, // 0x51 'Q' 136 | {506, 10, 10, 11, 1, -9}, // 0x52 'R' 137 | {519, 9, 10, 11, 2, -9}, // 0x53 'S' 138 | {531, 9, 10, 11, 3, -9}, // 0x54 'T' 139 | {543, 10, 10, 11, 2, -9}, // 0x55 'U' 140 | {556, 11, 10, 11, 2, -9}, // 0x56 'V' 141 | {570, 11, 10, 11, 2, -9}, // 0x57 'W' 142 | {584, 11, 10, 11, 1, -9}, // 0x58 'X' 143 | {598, 9, 10, 11, 3, -9}, // 0x59 'Y' 144 | {610, 9, 10, 11, 2, -9}, // 0x5A 'Z' 145 | {622, 5, 13, 11, 5, -10}, // 0x5B '[' 146 | {631, 4, 14, 11, 4, -11}, // 0x5C '\' 147 | {638, 5, 13, 11, 2, -10}, // 0x5D ']' 148 | {647, 7, 5, 11, 3, -10}, // 0x5E '^' 149 | {652, 11, 1, 11, 0, 2}, // 0x5F '_' 150 | {654, 2, 3, 11, 5, -11}, // 0x60 '`' 151 | {655, 9, 8, 11, 2, -7}, // 0x61 'a' 152 | {664, 11, 11, 11, 0, -10}, // 0x62 'b' 153 | {680, 10, 8, 11, 2, -7}, // 0x63 'c' 154 | {690, 9, 11, 11, 2, -10}, // 0x64 'd' 155 | {703, 9, 8, 11, 2, -7}, // 0x65 'e' 156 | {712, 10, 11, 11, 2, -10}, // 0x66 'f' 157 | {726, 10, 11, 11, 2, -7}, // 0x67 'g' 158 | {740, 10, 11, 11, 1, -10}, // 0x68 'h' 159 | {754, 8, 11, 11, 2, -10}, // 0x69 'i' 160 | {765, 9, 14, 11, 1, -10}, // 0x6A 'j' 161 | {781, 9, 11, 11, 1, -10}, // 0x6B 'k' 162 | {794, 8, 11, 11, 2, -10}, // 0x6C 'l' 163 | {805, 11, 8, 11, 0, -7}, // 0x6D 'm' 164 | {816, 9, 8, 11, 1, -7}, // 0x6E 'n' 165 | {825, 9, 8, 11, 2, -7}, // 0x6F 'o' 166 | {834, 11, 11, 11, 0, -7}, // 0x70 'p' 167 | {850, 10, 11, 11, 2, -7}, // 0x71 'q' 168 | {864, 9, 8, 11, 2, -7}, // 0x72 'r' 169 | {873, 8, 8, 11, 2, -7}, // 0x73 's' 170 | {881, 7, 10, 11, 2, -9}, // 0x74 't' 171 | {890, 9, 8, 11, 2, -7}, // 0x75 'u' 172 | {899, 10, 8, 11, 2, -7}, // 0x76 'v' 173 | {909, 10, 8, 11, 2, -7}, // 0x77 'w' 174 | {919, 10, 8, 11, 1, -7}, // 0x78 'x' 175 | {929, 12, 11, 11, 0, -7}, // 0x79 'y' 176 | {946, 8, 8, 11, 2, -7}, // 0x7A 'z' 177 | {954, 6, 13, 11, 4, -10}, // 0x7B '{' 178 | {964, 3, 12, 11, 5, -9}, // 0x7C '|' 179 | {969, 6, 13, 11, 3, -10}, // 0x7D '}' 180 | {979, 7, 3, 11, 3, -6}}; // 0x7E '~' 181 | 182 | const GFXfont FreeMonoOblique9pt7b PROGMEM = { 183 | (uint8_t *)FreeMonoOblique9pt7bBitmaps, 184 | (GFXglyph *)FreeMonoOblique9pt7bGlyphs, 0x20, 0x7E, 18}; 185 | 186 | // Approx. 1654 bytes 187 | -------------------------------------------------------------------------------- /testScript/Fonts/FreeSans9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeSans9pt7bBitmaps[] PROGMEM = { 2 | 0xFF, 0xFF, 0xF8, 0xC0, 0xDE, 0xF7, 0x20, 0x09, 0x86, 0x41, 0x91, 0xFF, 3 | 0x13, 0x04, 0xC3, 0x20, 0xC8, 0xFF, 0x89, 0x82, 0x61, 0x90, 0x10, 0x1F, 4 | 0x14, 0xDA, 0x3D, 0x1E, 0x83, 0x40, 0x78, 0x17, 0x08, 0xF4, 0x7A, 0x35, 5 | 0x33, 0xF0, 0x40, 0x20, 0x38, 0x10, 0xEC, 0x20, 0xC6, 0x20, 0xC6, 0x40, 6 | 0xC6, 0x40, 0x6C, 0x80, 0x39, 0x00, 0x01, 0x3C, 0x02, 0x77, 0x02, 0x63, 7 | 0x04, 0x63, 0x04, 0x77, 0x08, 0x3C, 0x0E, 0x06, 0x60, 0xCC, 0x19, 0x81, 8 | 0xE0, 0x18, 0x0F, 0x03, 0x36, 0xC2, 0xD8, 0x73, 0x06, 0x31, 0xE3, 0xC4, 9 | 0xFE, 0x13, 0x26, 0x6C, 0xCC, 0xCC, 0xC4, 0x66, 0x23, 0x10, 0x8C, 0x46, 10 | 0x63, 0x33, 0x33, 0x32, 0x66, 0x4C, 0x80, 0x25, 0x7E, 0xA5, 0x00, 0x30, 11 | 0xC3, 0x3F, 0x30, 0xC3, 0x0C, 0xD6, 0xF0, 0xC0, 0x08, 0x44, 0x21, 0x10, 12 | 0x84, 0x42, 0x11, 0x08, 0x00, 0x3C, 0x66, 0x42, 0xC3, 0xC3, 0xC3, 0xC3, 13 | 0xC3, 0xC3, 0xC3, 0x42, 0x66, 0x3C, 0x11, 0x3F, 0x33, 0x33, 0x33, 0x33, 14 | 0x30, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x1C, 0x1C, 0x1C, 0x18, 0x18, 15 | 0x10, 0x08, 0x07, 0xF8, 0x3C, 0x66, 0xC3, 0xC3, 0x03, 0x06, 0x1C, 0x07, 16 | 0x03, 0xC3, 0xC3, 0x66, 0x3C, 0x0C, 0x18, 0x71, 0x62, 0xC9, 0xA3, 0x46, 17 | 0xFE, 0x18, 0x30, 0x60, 0xC0, 0x7F, 0x20, 0x10, 0x08, 0x08, 0x07, 0xF3, 18 | 0x8C, 0x03, 0x01, 0x80, 0xF0, 0x6C, 0x63, 0xE0, 0x1E, 0x31, 0x98, 0x78, 19 | 0x0C, 0x06, 0xF3, 0x8D, 0x83, 0xC1, 0xE0, 0xD0, 0x6C, 0x63, 0xE0, 0xFF, 20 | 0x03, 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x18, 0x18, 0x10, 0x30, 0x30, 21 | 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1B, 0x18, 0xF8, 0xC6, 0xC1, 0xE0, 0xF0, 22 | 0x6C, 0x63, 0xE0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x03, 23 | 0x03, 0xC2, 0x66, 0x3C, 0xC0, 0x00, 0x30, 0xC0, 0x00, 0x00, 0x64, 0xA0, 24 | 0x00, 0x81, 0xC7, 0x8E, 0x0C, 0x07, 0x80, 0x70, 0x0E, 0x01, 0x80, 0xFF, 25 | 0x80, 0x00, 0x1F, 0xF0, 0x00, 0x70, 0x0E, 0x01, 0xC0, 0x18, 0x38, 0x71, 26 | 0xC0, 0x80, 0x00, 0x3E, 0x31, 0xB0, 0x78, 0x30, 0x18, 0x18, 0x38, 0x18, 27 | 0x18, 0x0C, 0x00, 0x00, 0x01, 0x80, 0x03, 0xF0, 0x06, 0x0E, 0x06, 0x01, 28 | 0x86, 0x00, 0x66, 0x1D, 0xBB, 0x31, 0xCF, 0x18, 0xC7, 0x98, 0x63, 0xCC, 29 | 0x31, 0xE6, 0x11, 0xB3, 0x99, 0xCC, 0xF7, 0x86, 0x00, 0x01, 0x80, 0x00, 30 | 0x70, 0x40, 0x0F, 0xE0, 0x06, 0x00, 0xF0, 0x0F, 0x00, 0x90, 0x19, 0x81, 31 | 0x98, 0x10, 0x83, 0x0C, 0x3F, 0xC2, 0x04, 0x60, 0x66, 0x06, 0xC0, 0x30, 32 | 0xFF, 0x18, 0x33, 0x03, 0x60, 0x6C, 0x0D, 0x83, 0x3F, 0xC6, 0x06, 0xC0, 33 | 0x78, 0x0F, 0x01, 0xE0, 0x6F, 0xF8, 0x1F, 0x86, 0x19, 0x81, 0xA0, 0x3C, 34 | 0x01, 0x80, 0x30, 0x06, 0x00, 0xC0, 0x68, 0x0D, 0x83, 0x18, 0x61, 0xF0, 35 | 0xFF, 0x18, 0x33, 0x03, 0x60, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 36 | 0x78, 0x0F, 0x03, 0x60, 0xCF, 0xF0, 0xFF, 0xE0, 0x30, 0x18, 0x0C, 0x06, 37 | 0x03, 0xFD, 0x80, 0xC0, 0x60, 0x30, 0x18, 0x0F, 0xF8, 0xFF, 0xC0, 0xC0, 38 | 0xC0, 0xC0, 0xC0, 0xFE, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0x0F, 0x83, 39 | 0x0E, 0x60, 0x66, 0x03, 0xC0, 0x0C, 0x00, 0xC1, 0xFC, 0x03, 0xC0, 0x36, 40 | 0x03, 0x60, 0x73, 0x0F, 0x0F, 0x10, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 41 | 0x07, 0x80, 0xFF, 0xFE, 0x03, 0xC0, 0x78, 0x0F, 0x01, 0xE0, 0x3C, 0x06, 42 | 0xFF, 0xFF, 0xFF, 0xC0, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x07, 43 | 0x8F, 0x1E, 0x27, 0x80, 0xC0, 0xD8, 0x33, 0x0C, 0x63, 0x0C, 0xC1, 0xB8, 44 | 0x3F, 0x07, 0x30, 0xC3, 0x18, 0x63, 0x06, 0x60, 0x6C, 0x0C, 0xC0, 0xC0, 45 | 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0, 0xFF, 0xE0, 46 | 0x3F, 0x01, 0xFC, 0x1F, 0xE0, 0xFD, 0x05, 0xEC, 0x6F, 0x63, 0x79, 0x13, 47 | 0xCD, 0x9E, 0x6C, 0xF1, 0x47, 0x8E, 0x3C, 0x71, 0x80, 0xE0, 0x7C, 0x0F, 48 | 0xC1, 0xE8, 0x3D, 0x87, 0x98, 0xF1, 0x1E, 0x33, 0xC3, 0x78, 0x6F, 0x07, 49 | 0xE0, 0x7C, 0x0E, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 0x6C, 0x01, 0xE0, 50 | 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x0C, 0x60, 0xC0, 0xF8, 51 | 0x00, 0xFF, 0x30, 0x6C, 0x0F, 0x03, 0xC0, 0xF0, 0x6F, 0xF3, 0x00, 0xC0, 52 | 0x30, 0x0C, 0x03, 0x00, 0xC0, 0x00, 0x0F, 0x81, 0x83, 0x18, 0x0C, 0xC0, 53 | 0x6C, 0x01, 0xE0, 0x0F, 0x00, 0x78, 0x03, 0xC0, 0x1B, 0x01, 0x98, 0x6C, 54 | 0x60, 0xC0, 0xFB, 0x00, 0x08, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 55 | 0x6C, 0x0C, 0xFF, 0x8C, 0x0E, 0xC0, 0x6C, 0x06, 0xC0, 0x6C, 0x06, 0xC0, 56 | 0x70, 0x3F, 0x18, 0x6C, 0x0F, 0x03, 0xC0, 0x1E, 0x01, 0xF0, 0x0E, 0x00, 57 | 0xF0, 0x3C, 0x0D, 0x86, 0x3F, 0x00, 0xFF, 0x86, 0x03, 0x01, 0x80, 0xC0, 58 | 0x60, 0x30, 0x18, 0x0C, 0x06, 0x03, 0x01, 0x80, 0xC0, 0xC0, 0x78, 0x0F, 59 | 0x01, 0xE0, 0x3C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x78, 0x0F, 0x01, 60 | 0xB0, 0x61, 0xF0, 0xC0, 0x6C, 0x0D, 0x81, 0x10, 0x63, 0x0C, 0x61, 0x04, 61 | 0x60, 0xCC, 0x19, 0x01, 0x60, 0x3C, 0x07, 0x00, 0x60, 0xC1, 0x81, 0x30, 62 | 0xE1, 0x98, 0x70, 0xCC, 0x28, 0x66, 0x26, 0x21, 0x13, 0x30, 0xC8, 0x98, 63 | 0x6C, 0x4C, 0x14, 0x34, 0x0A, 0x1A, 0x07, 0x07, 0x03, 0x03, 0x80, 0x81, 64 | 0x80, 0x60, 0x63, 0x0C, 0x30, 0xC1, 0x98, 0x0F, 0x00, 0xE0, 0x06, 0x00, 65 | 0xF0, 0x19, 0x01, 0x98, 0x30, 0xC6, 0x0E, 0x60, 0x60, 0xC0, 0x36, 0x06, 66 | 0x30, 0xC3, 0x0C, 0x19, 0x81, 0xD8, 0x0F, 0x00, 0x60, 0x06, 0x00, 0x60, 67 | 0x06, 0x00, 0x60, 0x06, 0x00, 0xFF, 0xC0, 0x60, 0x30, 0x0C, 0x06, 0x03, 68 | 0x01, 0xC0, 0x60, 0x30, 0x18, 0x06, 0x03, 0x00, 0xFF, 0xC0, 0xFB, 0x6D, 69 | 0xB6, 0xDB, 0x6D, 0xB6, 0xE0, 0x84, 0x10, 0x84, 0x10, 0x84, 0x10, 0x84, 70 | 0x10, 0x80, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xDB, 0xE0, 0x30, 0x60, 0xA2, 71 | 0x44, 0xD8, 0xA1, 0x80, 0xFF, 0xC0, 0xC6, 0x30, 0x7E, 0x71, 0xB0, 0xC0, 72 | 0x60, 0xF3, 0xDB, 0x0D, 0x86, 0xC7, 0x3D, 0xC0, 0xC0, 0x60, 0x30, 0x1B, 73 | 0xCE, 0x36, 0x0F, 0x07, 0x83, 0xC1, 0xE0, 0xF0, 0x7C, 0x6D, 0xE0, 0x3C, 74 | 0x66, 0xC3, 0xC0, 0xC0, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x03, 0x03, 0x03, 75 | 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 0x3B, 0x3C, 0x66, 76 | 0xC3, 0xC3, 0xFF, 0xC0, 0xC0, 0xC3, 0x66, 0x3C, 0x36, 0x6F, 0x66, 0x66, 77 | 0x66, 0x66, 0x60, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x67, 78 | 0x3B, 0x03, 0x03, 0xC6, 0x7C, 0xC0, 0xC0, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 79 | 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xFF, 0xFF, 0xC0, 0x30, 0x03, 80 | 0x33, 0x33, 0x33, 0x33, 0x33, 0x33, 0xE0, 0xC0, 0x60, 0x30, 0x18, 0x4C, 81 | 0x46, 0x63, 0x61, 0xF0, 0xEC, 0x62, 0x31, 0x98, 0x6C, 0x30, 0xFF, 0xFF, 82 | 0xFF, 0xC0, 0xDE, 0xF7, 0x1C, 0xF0, 0xC7, 0x86, 0x3C, 0x31, 0xE1, 0x8F, 83 | 0x0C, 0x78, 0x63, 0xC3, 0x1E, 0x18, 0xC0, 0xDE, 0xE3, 0xC3, 0xC3, 0xC3, 84 | 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0x3C, 0x66, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 85 | 0xC3, 0x66, 0x3C, 0xDE, 0x71, 0xB0, 0x78, 0x3C, 0x1E, 0x0F, 0x07, 0x83, 86 | 0xE3, 0x6F, 0x30, 0x18, 0x0C, 0x00, 0x3B, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 87 | 0xC3, 0xC3, 0x67, 0x3B, 0x03, 0x03, 0x03, 0xDF, 0x31, 0x8C, 0x63, 0x18, 88 | 0xC6, 0x00, 0x3E, 0xE3, 0xC0, 0xC0, 0xE0, 0x3C, 0x07, 0xC3, 0xE3, 0x7E, 89 | 0x66, 0xF6, 0x66, 0x66, 0x66, 0x67, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 0xC3, 90 | 0xC3, 0xC3, 0xC7, 0x7B, 0xC1, 0xA0, 0x98, 0xCC, 0x42, 0x21, 0xB0, 0xD0, 91 | 0x28, 0x1C, 0x0C, 0x00, 0xC6, 0x1E, 0x38, 0x91, 0xC4, 0xCA, 0x66, 0xD3, 92 | 0x16, 0xD0, 0xA6, 0x87, 0x1C, 0x38, 0xC0, 0xC6, 0x00, 0x43, 0x62, 0x36, 93 | 0x1C, 0x18, 0x1C, 0x3C, 0x26, 0x62, 0x43, 0xC1, 0x21, 0x98, 0xCC, 0x42, 94 | 0x61, 0xB0, 0xD0, 0x38, 0x1C, 0x0C, 0x06, 0x03, 0x01, 0x03, 0x00, 0xFE, 95 | 0x0C, 0x30, 0xC1, 0x86, 0x18, 0x20, 0xC1, 0xFC, 0x36, 0x66, 0x66, 0x6E, 96 | 0xCE, 0x66, 0x66, 0x66, 0x30, 0xFF, 0xFF, 0xFF, 0xFF, 0xC0, 0xC6, 0x66, 97 | 0x66, 0x67, 0x37, 0x66, 0x66, 0x66, 0xC0, 0x61, 0x24, 0x38}; 98 | 99 | const GFXglyph FreeSans9pt7bGlyphs[] PROGMEM = { 100 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 101 | {0, 2, 13, 6, 2, -12}, // 0x21 '!' 102 | {4, 5, 4, 6, 1, -12}, // 0x22 '"' 103 | {7, 10, 12, 10, 0, -11}, // 0x23 '#' 104 | {22, 9, 16, 10, 1, -13}, // 0x24 '$' 105 | {40, 16, 13, 16, 1, -12}, // 0x25 '%' 106 | {66, 11, 13, 12, 1, -12}, // 0x26 '&' 107 | {84, 2, 4, 4, 1, -12}, // 0x27 ''' 108 | {85, 4, 17, 6, 1, -12}, // 0x28 '(' 109 | {94, 4, 17, 6, 1, -12}, // 0x29 ')' 110 | {103, 5, 5, 7, 1, -12}, // 0x2A '*' 111 | {107, 6, 8, 11, 3, -7}, // 0x2B '+' 112 | {113, 2, 4, 5, 2, 0}, // 0x2C ',' 113 | {114, 4, 1, 6, 1, -4}, // 0x2D '-' 114 | {115, 2, 1, 5, 1, 0}, // 0x2E '.' 115 | {116, 5, 13, 5, 0, -12}, // 0x2F '/' 116 | {125, 8, 13, 10, 1, -12}, // 0x30 '0' 117 | {138, 4, 13, 10, 3, -12}, // 0x31 '1' 118 | {145, 9, 13, 10, 1, -12}, // 0x32 '2' 119 | {160, 8, 13, 10, 1, -12}, // 0x33 '3' 120 | {173, 7, 13, 10, 2, -12}, // 0x34 '4' 121 | {185, 9, 13, 10, 1, -12}, // 0x35 '5' 122 | {200, 9, 13, 10, 1, -12}, // 0x36 '6' 123 | {215, 8, 13, 10, 0, -12}, // 0x37 '7' 124 | {228, 9, 13, 10, 1, -12}, // 0x38 '8' 125 | {243, 8, 13, 10, 1, -12}, // 0x39 '9' 126 | {256, 2, 10, 5, 1, -9}, // 0x3A ':' 127 | {259, 3, 12, 5, 1, -8}, // 0x3B ';' 128 | {264, 9, 9, 11, 1, -8}, // 0x3C '<' 129 | {275, 9, 4, 11, 1, -5}, // 0x3D '=' 130 | {280, 9, 9, 11, 1, -8}, // 0x3E '>' 131 | {291, 9, 13, 10, 1, -12}, // 0x3F '?' 132 | {306, 17, 16, 18, 1, -12}, // 0x40 '@' 133 | {340, 12, 13, 12, 0, -12}, // 0x41 'A' 134 | {360, 11, 13, 12, 1, -12}, // 0x42 'B' 135 | {378, 11, 13, 13, 1, -12}, // 0x43 'C' 136 | {396, 11, 13, 13, 1, -12}, // 0x44 'D' 137 | {414, 9, 13, 11, 1, -12}, // 0x45 'E' 138 | {429, 8, 13, 11, 1, -12}, // 0x46 'F' 139 | {442, 12, 13, 14, 1, -12}, // 0x47 'G' 140 | {462, 11, 13, 13, 1, -12}, // 0x48 'H' 141 | {480, 2, 13, 5, 2, -12}, // 0x49 'I' 142 | {484, 7, 13, 10, 1, -12}, // 0x4A 'J' 143 | {496, 11, 13, 12, 1, -12}, // 0x4B 'K' 144 | {514, 8, 13, 10, 1, -12}, // 0x4C 'L' 145 | {527, 13, 13, 15, 1, -12}, // 0x4D 'M' 146 | {549, 11, 13, 13, 1, -12}, // 0x4E 'N' 147 | {567, 13, 13, 14, 1, -12}, // 0x4F 'O' 148 | {589, 10, 13, 12, 1, -12}, // 0x50 'P' 149 | {606, 13, 14, 14, 1, -12}, // 0x51 'Q' 150 | {629, 12, 13, 13, 1, -12}, // 0x52 'R' 151 | {649, 10, 13, 12, 1, -12}, // 0x53 'S' 152 | {666, 9, 13, 11, 1, -12}, // 0x54 'T' 153 | {681, 11, 13, 13, 1, -12}, // 0x55 'U' 154 | {699, 11, 13, 12, 0, -12}, // 0x56 'V' 155 | {717, 17, 13, 17, 0, -12}, // 0x57 'W' 156 | {745, 12, 13, 12, 0, -12}, // 0x58 'X' 157 | {765, 12, 13, 12, 0, -12}, // 0x59 'Y' 158 | {785, 10, 13, 11, 1, -12}, // 0x5A 'Z' 159 | {802, 3, 17, 5, 1, -12}, // 0x5B '[' 160 | {809, 5, 13, 5, 0, -12}, // 0x5C '\' 161 | {818, 3, 17, 5, 0, -12}, // 0x5D ']' 162 | {825, 7, 7, 8, 1, -12}, // 0x5E '^' 163 | {832, 10, 1, 10, 0, 3}, // 0x5F '_' 164 | {834, 4, 3, 5, 0, -12}, // 0x60 '`' 165 | {836, 9, 10, 10, 1, -9}, // 0x61 'a' 166 | {848, 9, 13, 10, 1, -12}, // 0x62 'b' 167 | {863, 8, 10, 9, 1, -9}, // 0x63 'c' 168 | {873, 8, 13, 10, 1, -12}, // 0x64 'd' 169 | {886, 8, 10, 10, 1, -9}, // 0x65 'e' 170 | {896, 4, 13, 5, 1, -12}, // 0x66 'f' 171 | {903, 8, 14, 10, 1, -9}, // 0x67 'g' 172 | {917, 8, 13, 10, 1, -12}, // 0x68 'h' 173 | {930, 2, 13, 4, 1, -12}, // 0x69 'i' 174 | {934, 4, 17, 4, 0, -12}, // 0x6A 'j' 175 | {943, 9, 13, 9, 1, -12}, // 0x6B 'k' 176 | {958, 2, 13, 4, 1, -12}, // 0x6C 'l' 177 | {962, 13, 10, 15, 1, -9}, // 0x6D 'm' 178 | {979, 8, 10, 10, 1, -9}, // 0x6E 'n' 179 | {989, 8, 10, 10, 1, -9}, // 0x6F 'o' 180 | {999, 9, 13, 10, 1, -9}, // 0x70 'p' 181 | {1014, 8, 13, 10, 1, -9}, // 0x71 'q' 182 | {1027, 5, 10, 6, 1, -9}, // 0x72 'r' 183 | {1034, 8, 10, 9, 1, -9}, // 0x73 's' 184 | {1044, 4, 12, 5, 1, -11}, // 0x74 't' 185 | {1050, 8, 10, 10, 1, -9}, // 0x75 'u' 186 | {1060, 9, 10, 9, 0, -9}, // 0x76 'v' 187 | {1072, 13, 10, 13, 0, -9}, // 0x77 'w' 188 | {1089, 8, 10, 9, 0, -9}, // 0x78 'x' 189 | {1099, 9, 14, 9, 0, -9}, // 0x79 'y' 190 | {1115, 7, 10, 9, 1, -9}, // 0x7A 'z' 191 | {1124, 4, 17, 6, 1, -12}, // 0x7B '{' 192 | {1133, 2, 17, 4, 2, -12}, // 0x7C '|' 193 | {1138, 4, 17, 6, 1, -12}, // 0x7D '}' 194 | {1147, 7, 3, 9, 1, -7}}; // 0x7E '~' 195 | 196 | const GFXfont FreeSans9pt7b PROGMEM = {(uint8_t *)FreeSans9pt7bBitmaps, 197 | (GFXglyph *)FreeSans9pt7bGlyphs, 0x20, 198 | 0x7E, 22}; 199 | 200 | // Approx. 1822 bytes 201 | -------------------------------------------------------------------------------- /testScript/Fonts/FreeSerif9pt7b.h: -------------------------------------------------------------------------------- 1 | const uint8_t FreeSerif9pt7bBitmaps[] PROGMEM = { 2 | 0xFF, 0xEA, 0x03, 0xDE, 0xF7, 0x20, 0x11, 0x09, 0x04, 0x82, 0x4F, 0xF9, 3 | 0x10, 0x89, 0xFF, 0x24, 0x12, 0x09, 0x0C, 0x80, 0x10, 0x7C, 0xD6, 0xD2, 4 | 0xD0, 0xF0, 0x38, 0x1E, 0x17, 0x93, 0x93, 0xD6, 0x7C, 0x10, 0x38, 0x43, 5 | 0x3C, 0x39, 0x21, 0x8A, 0x0C, 0x50, 0x65, 0x39, 0xCB, 0x20, 0xB9, 0x05, 6 | 0x88, 0x4C, 0x44, 0x64, 0x21, 0xC0, 0x0E, 0x00, 0xC8, 0x06, 0x40, 0x32, 7 | 0x01, 0xA0, 0x07, 0x78, 0x31, 0x87, 0x88, 0x46, 0x86, 0x34, 0x30, 0xC1, 8 | 0xC7, 0x17, 0xCF, 0x00, 0xFE, 0x08, 0x88, 0x84, 0x63, 0x18, 0xC6, 0x10, 9 | 0x82, 0x08, 0x20, 0x82, 0x08, 0x21, 0x0C, 0x63, 0x18, 0xC4, 0x22, 0x22, 10 | 0x00, 0x63, 0x9A, 0xDC, 0x72, 0xB6, 0x08, 0x08, 0x04, 0x02, 0x01, 0x0F, 11 | 0xF8, 0x40, 0x20, 0x10, 0x08, 0x00, 0xD8, 0xF0, 0xF0, 0x08, 0x84, 0x22, 12 | 0x10, 0x8C, 0x42, 0x31, 0x00, 0x1C, 0x31, 0x98, 0xD8, 0x3C, 0x1E, 0x0F, 13 | 0x07, 0x83, 0xC1, 0xE0, 0xD8, 0xC4, 0x61, 0xC0, 0x13, 0x8C, 0x63, 0x18, 14 | 0xC6, 0x31, 0x8C, 0x67, 0x80, 0x3C, 0x4E, 0x86, 0x06, 0x06, 0x04, 0x0C, 15 | 0x08, 0x10, 0x20, 0x41, 0xFE, 0x3C, 0xC6, 0x06, 0x04, 0x1C, 0x3E, 0x07, 16 | 0x03, 0x03, 0x03, 0x06, 0xF8, 0x04, 0x18, 0x71, 0x64, 0xC9, 0xA3, 0x46, 17 | 0xFE, 0x18, 0x30, 0x60, 0x0F, 0x10, 0x20, 0x3C, 0x0E, 0x07, 0x03, 0x03, 18 | 0x03, 0x02, 0x04, 0xF8, 0x07, 0x1C, 0x30, 0x60, 0x60, 0xDC, 0xE6, 0xC3, 19 | 0xC3, 0xC3, 0x43, 0x66, 0x3C, 0x7F, 0x82, 0x02, 0x02, 0x04, 0x04, 0x04, 20 | 0x08, 0x08, 0x08, 0x10, 0x10, 0x3C, 0x8F, 0x1E, 0x3E, 0x4F, 0x06, 0x36, 21 | 0xC7, 0x8F, 0x1B, 0x33, 0xC0, 0x3C, 0x66, 0xC2, 0xC3, 0xC3, 0xC3, 0xC3, 22 | 0x63, 0x3F, 0x06, 0x06, 0x0C, 0x38, 0x60, 0xF0, 0x0F, 0xD8, 0x00, 0x03, 23 | 0x28, 0x01, 0x87, 0x0E, 0x1C, 0x0C, 0x03, 0x80, 0x70, 0x0E, 0x00, 0x80, 24 | 0xFF, 0x80, 0x00, 0x00, 0x0F, 0xF8, 0x80, 0x1C, 0x01, 0xC0, 0x1C, 0x01, 25 | 0xC0, 0xE0, 0xE0, 0xE0, 0xC0, 0x00, 0x79, 0x1A, 0x18, 0x30, 0x60, 0x83, 26 | 0x04, 0x10, 0x20, 0x40, 0x03, 0x00, 0x0F, 0x83, 0x8C, 0x60, 0x26, 0x02, 27 | 0xC7, 0x9C, 0xC9, 0xD8, 0x9D, 0x99, 0xD9, 0x26, 0xEC, 0x60, 0x03, 0x04, 28 | 0x0F, 0x80, 0x02, 0x00, 0x10, 0x01, 0xC0, 0x16, 0x00, 0x98, 0x04, 0xC0, 29 | 0x43, 0x03, 0xF8, 0x20, 0x61, 0x03, 0x18, 0x1D, 0xE1, 0xF0, 0xFF, 0x86, 30 | 0x1C, 0xC1, 0x98, 0x33, 0x0C, 0x7E, 0x0C, 0x31, 0x83, 0x30, 0x66, 0x0C, 31 | 0xC3, 0x7F, 0xC0, 0x1F, 0x26, 0x1D, 0x81, 0xE0, 0x1C, 0x01, 0x80, 0x30, 32 | 0x06, 0x00, 0xC0, 0x0C, 0x00, 0xC1, 0x8F, 0xC0, 0xFF, 0x03, 0x1C, 0x30, 33 | 0x63, 0x07, 0x30, 0x33, 0x03, 0x30, 0x33, 0x03, 0x30, 0x33, 0x06, 0x30, 34 | 0xCF, 0xF0, 0xFF, 0x98, 0x26, 0x01, 0x80, 0x61, 0x1F, 0xC6, 0x11, 0x80, 35 | 0x60, 0x18, 0x16, 0x0F, 0xFE, 0xFF, 0xB0, 0x58, 0x0C, 0x06, 0x13, 0xF9, 36 | 0x84, 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x23, 0x0E, 0x60, 0x26, 37 | 0x00, 0xC0, 0x0C, 0x0F, 0xC0, 0x6C, 0x06, 0xC0, 0x66, 0x06, 0x30, 0x60, 38 | 0xF8, 0xF1, 0xEC, 0x19, 0x83, 0x30, 0x66, 0x0C, 0xFF, 0x98, 0x33, 0x06, 39 | 0x60, 0xCC, 0x19, 0x83, 0x78, 0xF0, 0xF6, 0x66, 0x66, 0x66, 0x66, 0x6F, 40 | 0x3C, 0x61, 0x86, 0x18, 0x61, 0x86, 0x18, 0x6D, 0xBC, 0xF3, 0xE6, 0x08, 41 | 0x61, 0x06, 0x20, 0x64, 0x07, 0x80, 0x6C, 0x06, 0x60, 0x63, 0x06, 0x18, 42 | 0x60, 0xCF, 0x3F, 0xF0, 0x18, 0x06, 0x01, 0x80, 0x60, 0x18, 0x06, 0x01, 43 | 0x80, 0x60, 0x18, 0x16, 0x0B, 0xFE, 0xF0, 0x0E, 0x70, 0x38, 0xE0, 0x71, 44 | 0xE1, 0x62, 0xC2, 0xC5, 0xC9, 0x89, 0x93, 0x13, 0x26, 0x23, 0x8C, 0x47, 45 | 0x18, 0x84, 0x33, 0x88, 0xF0, 0xE0, 0xEE, 0x09, 0xC1, 0x2C, 0x25, 0xC4, 46 | 0x9C, 0x91, 0x92, 0x1A, 0x41, 0xC8, 0x19, 0x03, 0x70, 0x20, 0x1F, 0x06, 47 | 0x31, 0x83, 0x20, 0x2C, 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x09, 48 | 0x83, 0x18, 0xC1, 0xF0, 0xFE, 0x31, 0x98, 0x6C, 0x36, 0x1B, 0x19, 0xF8, 49 | 0xC0, 0x60, 0x30, 0x18, 0x1E, 0x00, 0x1F, 0x06, 0x31, 0x83, 0x20, 0x2C, 50 | 0x07, 0x80, 0xF0, 0x1E, 0x03, 0xC0, 0x68, 0x19, 0x83, 0x18, 0xC0, 0xE0, 51 | 0x0E, 0x00, 0xE0, 0x07, 0xFE, 0x0C, 0x61, 0x86, 0x30, 0xC6, 0x18, 0xC6, 52 | 0x1F, 0x83, 0x70, 0x67, 0x0C, 0x71, 0x87, 0x78, 0x70, 0x1D, 0x31, 0x98, 53 | 0x4C, 0x07, 0x80, 0xE0, 0x1C, 0x07, 0x01, 0xA0, 0xD8, 0xCB, 0xC0, 0xFF, 54 | 0xF8, 0xCE, 0x18, 0x83, 0x00, 0x60, 0x0C, 0x01, 0x80, 0x30, 0x06, 0x00, 55 | 0xC0, 0x18, 0x07, 0x80, 0xF0, 0xEC, 0x09, 0x81, 0x30, 0x26, 0x04, 0xC0, 56 | 0x98, 0x13, 0x02, 0x60, 0x4C, 0x08, 0xC2, 0x0F, 0x80, 0xF8, 0x77, 0x02, 57 | 0x30, 0x23, 0x04, 0x18, 0x41, 0x84, 0x0C, 0x80, 0xC8, 0x07, 0x00, 0x70, 58 | 0x02, 0x00, 0x20, 0xFB, 0xE7, 0xB0, 0xC0, 0x8C, 0x20, 0x86, 0x18, 0x41, 59 | 0x8C, 0x40, 0xCB, 0x20, 0x65, 0x90, 0x1A, 0x70, 0x0E, 0x38, 0x03, 0x1C, 60 | 0x01, 0x04, 0x00, 0x82, 0x00, 0xFC, 0xF9, 0x83, 0x06, 0x10, 0x19, 0x00, 61 | 0xD0, 0x03, 0x00, 0x1C, 0x01, 0x30, 0x11, 0xC1, 0x86, 0x08, 0x19, 0xE3, 62 | 0xF0, 0xF8, 0xF6, 0x06, 0x30, 0x41, 0x88, 0x1D, 0x00, 0xD0, 0x06, 0x00, 63 | 0x60, 0x06, 0x00, 0x60, 0x06, 0x00, 0xF0, 0x3F, 0xCC, 0x11, 0x06, 0x01, 64 | 0x80, 0x70, 0x0C, 0x03, 0x00, 0xE0, 0x38, 0x06, 0x05, 0xC1, 0x7F, 0xE0, 65 | 0xFB, 0x6D, 0xB6, 0xDB, 0x6D, 0xB8, 0x82, 0x10, 0x82, 0x10, 0x86, 0x10, 66 | 0x86, 0x10, 0xED, 0xB6, 0xDB, 0x6D, 0xB6, 0xF8, 0x18, 0x1C, 0x34, 0x26, 67 | 0x62, 0x42, 0xC1, 0xFF, 0x80, 0x84, 0x20, 0x79, 0x98, 0x30, 0xE6, 0xD9, 68 | 0xB3, 0x3F, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC3, 0x61, 69 | 0xB0, 0xD8, 0x6C, 0x63, 0xE0, 0x3C, 0xCF, 0x06, 0x0C, 0x18, 0x18, 0x9E, 70 | 0x01, 0x03, 0x80, 0xC0, 0x60, 0x31, 0xD9, 0x9D, 0x86, 0xC3, 0x61, 0xB0, 71 | 0xCC, 0x63, 0xF0, 0x3C, 0x46, 0xFE, 0xC0, 0xC0, 0xE1, 0x62, 0x3C, 0x1E, 72 | 0x41, 0x83, 0x06, 0x1E, 0x18, 0x30, 0x60, 0xC1, 0x83, 0x0F, 0x00, 0x3C, 73 | 0x19, 0xF6, 0x31, 0x8C, 0x1E, 0x08, 0x04, 0x01, 0xFC, 0x40, 0xB0, 0x2E, 74 | 0x11, 0xF8, 0x20, 0x70, 0x18, 0x0C, 0x06, 0x03, 0x71, 0xCC, 0xC6, 0x63, 75 | 0x31, 0x98, 0xCC, 0x6F, 0x78, 0x60, 0x02, 0xE6, 0x66, 0x66, 0xF0, 0x18, 76 | 0x00, 0x33, 0x8C, 0x63, 0x18, 0xC6, 0x31, 0x8B, 0x80, 0x20, 0x70, 0x18, 77 | 0x0C, 0x06, 0x03, 0x3D, 0x88, 0xD8, 0x78, 0x36, 0x19, 0x8C, 0x6F, 0x78, 78 | 0x2E, 0x66, 0x66, 0x66, 0x66, 0x66, 0xF0, 0xEE, 0x71, 0xCE, 0x66, 0x31, 79 | 0x98, 0xC6, 0x63, 0x19, 0x8C, 0x66, 0x31, 0xBD, 0xEF, 0xEE, 0x39, 0x98, 80 | 0xCC, 0x66, 0x33, 0x19, 0x8D, 0xEF, 0x3E, 0x31, 0xB0, 0x78, 0x3C, 0x1E, 81 | 0x0D, 0x8C, 0x7C, 0xEE, 0x39, 0x98, 0x6C, 0x36, 0x1B, 0x0D, 0x8C, 0xFC, 82 | 0x60, 0x30, 0x18, 0x1E, 0x00, 0x3D, 0x31, 0xB0, 0xD8, 0x6C, 0x36, 0x1B, 83 | 0x8C, 0xFE, 0x03, 0x01, 0x80, 0xC0, 0xF0, 0x6D, 0xC6, 0x18, 0x61, 0x86, 84 | 0x3C, 0x76, 0x38, 0x58, 0x3E, 0x38, 0xFE, 0x27, 0x98, 0xC6, 0x31, 0x8C, 85 | 0x38, 0xE7, 0x31, 0x98, 0xCC, 0x66, 0x33, 0x19, 0x8C, 0x7F, 0xF3, 0x61, 86 | 0x22, 0x32, 0x14, 0x1C, 0x08, 0x08, 0xEF, 0x36, 0x61, 0x62, 0x22, 0x32, 87 | 0x35, 0x41, 0x9C, 0x18, 0x81, 0x08, 0xF7, 0x12, 0x0E, 0x03, 0x01, 0xC1, 88 | 0x21, 0x09, 0xCF, 0xF3, 0x61, 0x62, 0x32, 0x34, 0x14, 0x1C, 0x08, 0x08, 89 | 0x08, 0x10, 0xE0, 0xFD, 0x18, 0x60, 0x83, 0x0C, 0x70, 0xFE, 0x19, 0x8C, 90 | 0x63, 0x18, 0xC4, 0x61, 0x8C, 0x63, 0x18, 0xC3, 0xFF, 0xF0, 0xC3, 0x18, 91 | 0xC6, 0x31, 0x84, 0x33, 0x18, 0xC6, 0x31, 0x98, 0x70, 0x24, 0xC1, 0xC0}; 92 | 93 | const GFXglyph FreeSerif9pt7bGlyphs[] PROGMEM = { 94 | {0, 0, 0, 5, 0, 1}, // 0x20 ' ' 95 | {0, 2, 12, 6, 2, -11}, // 0x21 '!' 96 | {3, 5, 4, 7, 1, -11}, // 0x22 '"' 97 | {6, 9, 12, 9, 0, -11}, // 0x23 '#' 98 | {20, 8, 14, 9, 1, -12}, // 0x24 '$' 99 | {34, 13, 12, 15, 1, -11}, // 0x25 '%' 100 | {54, 13, 13, 14, 1, -12}, // 0x26 '&' 101 | {76, 2, 4, 4, 1, -11}, // 0x27 ''' 102 | {77, 5, 15, 6, 1, -11}, // 0x28 '(' 103 | {87, 5, 15, 6, 0, -11}, // 0x29 ')' 104 | {97, 6, 8, 9, 3, -11}, // 0x2A '*' 105 | {103, 9, 9, 10, 0, -8}, // 0x2B '+' 106 | {114, 2, 3, 4, 2, 0}, // 0x2C ',' 107 | {115, 4, 1, 6, 1, -3}, // 0x2D '-' 108 | {116, 2, 2, 5, 1, -1}, // 0x2E '.' 109 | {117, 5, 12, 5, 0, -11}, // 0x2F '/' 110 | {125, 9, 13, 9, 0, -12}, // 0x30 '0' 111 | {140, 5, 13, 9, 2, -12}, // 0x31 '1' 112 | {149, 8, 12, 9, 1, -11}, // 0x32 '2' 113 | {161, 8, 12, 9, 0, -11}, // 0x33 '3' 114 | {173, 7, 12, 9, 1, -11}, // 0x34 '4' 115 | {184, 8, 12, 9, 0, -11}, // 0x35 '5' 116 | {196, 8, 13, 9, 1, -12}, // 0x36 '6' 117 | {209, 8, 12, 9, 0, -11}, // 0x37 '7' 118 | {221, 7, 13, 9, 1, -12}, // 0x38 '8' 119 | {233, 8, 14, 9, 1, -12}, // 0x39 '9' 120 | {247, 2, 8, 5, 1, -7}, // 0x3A ':' 121 | {249, 3, 10, 5, 1, -7}, // 0x3B ';' 122 | {253, 9, 9, 10, 1, -8}, // 0x3C '<' 123 | {264, 9, 5, 10, 1, -6}, // 0x3D '=' 124 | {270, 10, 9, 10, 0, -8}, // 0x3E '>' 125 | {282, 7, 13, 8, 1, -12}, // 0x3F '?' 126 | {294, 12, 13, 16, 2, -12}, // 0x40 '@' 127 | {314, 13, 12, 13, 0, -11}, // 0x41 'A' 128 | {334, 11, 12, 11, 0, -11}, // 0x42 'B' 129 | {351, 11, 12, 12, 1, -11}, // 0x43 'C' 130 | {368, 12, 12, 13, 0, -11}, // 0x44 'D' 131 | {386, 10, 12, 11, 1, -11}, // 0x45 'E' 132 | {401, 9, 12, 10, 1, -11}, // 0x46 'F' 133 | {415, 12, 12, 13, 1, -11}, // 0x47 'G' 134 | {433, 11, 12, 13, 1, -11}, // 0x48 'H' 135 | {450, 4, 12, 6, 1, -11}, // 0x49 'I' 136 | {456, 6, 12, 7, 0, -11}, // 0x4A 'J' 137 | {465, 12, 12, 13, 1, -11}, // 0x4B 'K' 138 | {483, 10, 12, 11, 1, -11}, // 0x4C 'L' 139 | {498, 15, 12, 16, 0, -11}, // 0x4D 'M' 140 | {521, 11, 12, 13, 1, -11}, // 0x4E 'N' 141 | {538, 11, 13, 13, 1, -12}, // 0x4F 'O' 142 | {556, 9, 12, 10, 1, -11}, // 0x50 'P' 143 | {570, 11, 16, 13, 1, -12}, // 0x51 'Q' 144 | {592, 11, 12, 12, 1, -11}, // 0x52 'R' 145 | {609, 9, 12, 10, 0, -11}, // 0x53 'S' 146 | {623, 11, 12, 11, 0, -11}, // 0x54 'T' 147 | {640, 11, 12, 13, 1, -11}, // 0x55 'U' 148 | {657, 12, 12, 13, 0, -11}, // 0x56 'V' 149 | {675, 17, 12, 17, 0, -11}, // 0x57 'W' 150 | {701, 13, 12, 13, 0, -11}, // 0x58 'X' 151 | {721, 12, 12, 13, 0, -11}, // 0x59 'Y' 152 | {739, 11, 12, 11, 0, -11}, // 0x5A 'Z' 153 | {756, 3, 15, 6, 2, -11}, // 0x5B '[' 154 | {762, 5, 12, 5, 0, -11}, // 0x5C '\' 155 | {770, 3, 15, 6, 1, -11}, // 0x5D ']' 156 | {776, 8, 7, 8, 0, -11}, // 0x5E '^' 157 | {783, 9, 1, 9, 0, 2}, // 0x5F '_' 158 | {785, 4, 3, 5, 0, -11}, // 0x60 '`' 159 | {787, 7, 8, 8, 1, -7}, // 0x61 'a' 160 | {794, 9, 13, 9, 0, -12}, // 0x62 'b' 161 | {809, 7, 8, 8, 0, -7}, // 0x63 'c' 162 | {816, 9, 13, 9, 0, -12}, // 0x64 'd' 163 | {831, 8, 8, 8, 0, -7}, // 0x65 'e' 164 | {839, 7, 13, 7, 1, -12}, // 0x66 'f' 165 | {851, 10, 12, 8, 0, -7}, // 0x67 'g' 166 | {866, 9, 13, 9, 0, -12}, // 0x68 'h' 167 | {881, 4, 11, 5, 1, -10}, // 0x69 'i' 168 | {887, 5, 15, 6, 0, -10}, // 0x6A 'j' 169 | {897, 9, 13, 9, 1, -12}, // 0x6B 'k' 170 | {912, 4, 13, 5, 1, -12}, // 0x6C 'l' 171 | {919, 14, 8, 14, 0, -7}, // 0x6D 'm' 172 | {933, 9, 8, 9, 0, -7}, // 0x6E 'n' 173 | {942, 9, 8, 9, 0, -7}, // 0x6F 'o' 174 | {951, 9, 12, 9, 0, -7}, // 0x70 'p' 175 | {965, 9, 12, 9, 0, -7}, // 0x71 'q' 176 | {979, 6, 8, 6, 0, -7}, // 0x72 'r' 177 | {985, 6, 8, 7, 1, -7}, // 0x73 's' 178 | {991, 5, 9, 5, 0, -8}, // 0x74 't' 179 | {997, 9, 8, 9, 0, -7}, // 0x75 'u' 180 | {1006, 8, 8, 8, 0, -7}, // 0x76 'v' 181 | {1014, 12, 8, 12, 0, -7}, // 0x77 'w' 182 | {1026, 9, 8, 9, 0, -7}, // 0x78 'x' 183 | {1035, 8, 12, 8, 0, -7}, // 0x79 'y' 184 | {1047, 7, 8, 7, 1, -7}, // 0x7A 'z' 185 | {1054, 5, 16, 9, 1, -12}, // 0x7B '{' 186 | {1064, 1, 12, 4, 1, -11}, // 0x7C '|' 187 | {1066, 5, 16, 9, 3, -11}, // 0x7D '}' 188 | {1076, 9, 3, 9, 0, -5}}; // 0x7E '~' 189 | 190 | const GFXfont FreeSerif9pt7b PROGMEM = {(uint8_t *)FreeSerif9pt7bBitmaps, 191 | (GFXglyph *)FreeSerif9pt7bGlyphs, 0x20, 192 | 0x7E, 22}; 193 | 194 | // Approx. 1752 bytes 195 | -------------------------------------------------------------------------------- /testScript/Fonts/Org_01.h: -------------------------------------------------------------------------------- 1 | // Org_v01 by Orgdot (www.orgdot.com/aliasfonts). A tiny, 2 | // stylized font with all characters within a 6 pixel height. 3 | 4 | const uint8_t Org_01Bitmaps[] PROGMEM = { 5 | 0xE8, 0xA0, 0x57, 0xD5, 0xF5, 0x00, 0xFD, 0x3E, 0x5F, 0x80, 0x88, 0x88, 6 | 0x88, 0x80, 0xF4, 0xBF, 0x2E, 0x80, 0x80, 0x6A, 0x40, 0x95, 0x80, 0xAA, 7 | 0x80, 0x5D, 0x00, 0xC0, 0xF0, 0x80, 0x08, 0x88, 0x88, 0x00, 0xFC, 0x63, 8 | 0x1F, 0x80, 0xF8, 0xF8, 0x7F, 0x0F, 0x80, 0xF8, 0x7E, 0x1F, 0x80, 0x8C, 9 | 0x7E, 0x10, 0x80, 0xFC, 0x3E, 0x1F, 0x80, 0xFC, 0x3F, 0x1F, 0x80, 0xF8, 10 | 0x42, 0x10, 0x80, 0xFC, 0x7F, 0x1F, 0x80, 0xFC, 0x7E, 0x1F, 0x80, 0x90, 11 | 0xB0, 0x2A, 0x22, 0xF0, 0xF0, 0x88, 0xA8, 0xF8, 0x4E, 0x02, 0x00, 0xFD, 12 | 0x6F, 0x0F, 0x80, 0xFC, 0x7F, 0x18, 0x80, 0xF4, 0x7D, 0x1F, 0x00, 0xFC, 13 | 0x21, 0x0F, 0x80, 0xF4, 0x63, 0x1F, 0x00, 0xFC, 0x3F, 0x0F, 0x80, 0xFC, 14 | 0x3F, 0x08, 0x00, 0xFC, 0x2F, 0x1F, 0x80, 0x8C, 0x7F, 0x18, 0x80, 0xF9, 15 | 0x08, 0x4F, 0x80, 0x78, 0x85, 0x2F, 0x80, 0x8D, 0xB1, 0x68, 0x80, 0x84, 16 | 0x21, 0x0F, 0x80, 0xFD, 0x6B, 0x5A, 0x80, 0xFC, 0x63, 0x18, 0x80, 0xFC, 17 | 0x63, 0x1F, 0x80, 0xFC, 0x7F, 0x08, 0x00, 0xFC, 0x63, 0x3F, 0x80, 0xFC, 18 | 0x7F, 0x29, 0x00, 0xFC, 0x3E, 0x1F, 0x80, 0xF9, 0x08, 0x42, 0x00, 0x8C, 19 | 0x63, 0x1F, 0x80, 0x8C, 0x62, 0xA2, 0x00, 0xAD, 0x6B, 0x5F, 0x80, 0x8A, 20 | 0x88, 0xA8, 0x80, 0x8C, 0x54, 0x42, 0x00, 0xF8, 0x7F, 0x0F, 0x80, 0xEA, 21 | 0xC0, 0x82, 0x08, 0x20, 0x80, 0xD5, 0xC0, 0x54, 0xF8, 0x80, 0xF1, 0xFF, 22 | 0x8F, 0x99, 0xF0, 0xF8, 0x8F, 0x1F, 0x99, 0xF0, 0xFF, 0x8F, 0x6B, 0xA4, 23 | 0xF9, 0x9F, 0x10, 0x8F, 0x99, 0x90, 0xF0, 0x55, 0xC0, 0x8A, 0xF9, 0x90, 24 | 0xF8, 0xFD, 0x63, 0x10, 0xF9, 0x99, 0xF9, 0x9F, 0xF9, 0x9F, 0x80, 0xF9, 25 | 0x9F, 0x20, 0xF8, 0x88, 0x47, 0x1F, 0x27, 0xC8, 0x42, 0x00, 0x99, 0x9F, 26 | 0x99, 0x97, 0x8C, 0x6B, 0xF0, 0x96, 0x69, 0x99, 0x9F, 0x10, 0x2E, 0x8F, 27 | 0x2B, 0x22, 0xF8, 0x89, 0xA8, 0x0F, 0xE0}; 28 | 29 | const GFXglyph Org_01Glyphs[] PROGMEM = {{0, 0, 0, 6, 0, 1}, // 0x20 ' ' 30 | {0, 1, 5, 2, 0, -4}, // 0x21 '!' 31 | {1, 3, 1, 4, 0, -4}, // 0x22 '"' 32 | {2, 5, 5, 6, 0, -4}, // 0x23 '#' 33 | {6, 5, 5, 6, 0, -4}, // 0x24 '$' 34 | {10, 5, 5, 6, 0, -4}, // 0x25 '%' 35 | {14, 5, 5, 6, 0, -4}, // 0x26 '&' 36 | {18, 1, 1, 2, 0, -4}, // 0x27 ''' 37 | {19, 2, 5, 3, 0, -4}, // 0x28 '(' 38 | {21, 2, 5, 3, 0, -4}, // 0x29 ')' 39 | {23, 3, 3, 4, 0, -3}, // 0x2A '*' 40 | {25, 3, 3, 4, 0, -3}, // 0x2B '+' 41 | {27, 1, 2, 2, 0, 0}, // 0x2C ',' 42 | {28, 4, 1, 5, 0, -2}, // 0x2D '-' 43 | {29, 1, 1, 2, 0, 0}, // 0x2E '.' 44 | {30, 5, 5, 6, 0, -4}, // 0x2F '/' 45 | {34, 5, 5, 6, 0, -4}, // 0x30 '0' 46 | {38, 1, 5, 2, 0, -4}, // 0x31 '1' 47 | {39, 5, 5, 6, 0, -4}, // 0x32 '2' 48 | {43, 5, 5, 6, 0, -4}, // 0x33 '3' 49 | {47, 5, 5, 6, 0, -4}, // 0x34 '4' 50 | {51, 5, 5, 6, 0, -4}, // 0x35 '5' 51 | {55, 5, 5, 6, 0, -4}, // 0x36 '6' 52 | {59, 5, 5, 6, 0, -4}, // 0x37 '7' 53 | {63, 5, 5, 6, 0, -4}, // 0x38 '8' 54 | {67, 5, 5, 6, 0, -4}, // 0x39 '9' 55 | {71, 1, 4, 2, 0, -3}, // 0x3A ':' 56 | {72, 1, 4, 2, 0, -3}, // 0x3B ';' 57 | {73, 3, 5, 4, 0, -4}, // 0x3C '<' 58 | {75, 4, 3, 5, 0, -3}, // 0x3D '=' 59 | {77, 3, 5, 4, 0, -4}, // 0x3E '>' 60 | {79, 5, 5, 6, 0, -4}, // 0x3F '?' 61 | {83, 5, 5, 6, 0, -4}, // 0x40 '@' 62 | {87, 5, 5, 6, 0, -4}, // 0x41 'A' 63 | {91, 5, 5, 6, 0, -4}, // 0x42 'B' 64 | {95, 5, 5, 6, 0, -4}, // 0x43 'C' 65 | {99, 5, 5, 6, 0, -4}, // 0x44 'D' 66 | {103, 5, 5, 6, 0, -4}, // 0x45 'E' 67 | {107, 5, 5, 6, 0, -4}, // 0x46 'F' 68 | {111, 5, 5, 6, 0, -4}, // 0x47 'G' 69 | {115, 5, 5, 6, 0, -4}, // 0x48 'H' 70 | {119, 5, 5, 6, 0, -4}, // 0x49 'I' 71 | {123, 5, 5, 6, 0, -4}, // 0x4A 'J' 72 | {127, 5, 5, 6, 0, -4}, // 0x4B 'K' 73 | {131, 5, 5, 6, 0, -4}, // 0x4C 'L' 74 | {135, 5, 5, 6, 0, -4}, // 0x4D 'M' 75 | {139, 5, 5, 6, 0, -4}, // 0x4E 'N' 76 | {143, 5, 5, 6, 0, -4}, // 0x4F 'O' 77 | {147, 5, 5, 6, 0, -4}, // 0x50 'P' 78 | {151, 5, 5, 6, 0, -4}, // 0x51 'Q' 79 | {155, 5, 5, 6, 0, -4}, // 0x52 'R' 80 | {159, 5, 5, 6, 0, -4}, // 0x53 'S' 81 | {163, 5, 5, 6, 0, -4}, // 0x54 'T' 82 | {167, 5, 5, 6, 0, -4}, // 0x55 'U' 83 | {171, 5, 5, 6, 0, -4}, // 0x56 'V' 84 | {175, 5, 5, 6, 0, -4}, // 0x57 'W' 85 | {179, 5, 5, 6, 0, -4}, // 0x58 'X' 86 | {183, 5, 5, 6, 0, -4}, // 0x59 'Y' 87 | {187, 5, 5, 6, 0, -4}, // 0x5A 'Z' 88 | {191, 2, 5, 3, 0, -4}, // 0x5B '[' 89 | {193, 5, 5, 6, 0, -4}, // 0x5C '\' 90 | {197, 2, 5, 3, 0, -4}, // 0x5D ']' 91 | {199, 3, 2, 4, 0, -4}, // 0x5E '^' 92 | {200, 5, 1, 6, 0, 1}, // 0x5F '_' 93 | {201, 1, 1, 2, 0, -4}, // 0x60 '`' 94 | {202, 4, 4, 5, 0, -3}, // 0x61 'a' 95 | {204, 4, 5, 5, 0, -4}, // 0x62 'b' 96 | {207, 4, 4, 5, 0, -3}, // 0x63 'c' 97 | {209, 4, 5, 5, 0, -4}, // 0x64 'd' 98 | {212, 4, 4, 5, 0, -3}, // 0x65 'e' 99 | {214, 3, 5, 4, 0, -4}, // 0x66 'f' 100 | {216, 4, 5, 5, 0, -3}, // 0x67 'g' 101 | {219, 4, 5, 5, 0, -4}, // 0x68 'h' 102 | {222, 1, 4, 2, 0, -3}, // 0x69 'i' 103 | {223, 2, 5, 3, 0, -3}, // 0x6A 'j' 104 | {225, 4, 5, 5, 0, -4}, // 0x6B 'k' 105 | {228, 1, 5, 2, 0, -4}, // 0x6C 'l' 106 | {229, 5, 4, 6, 0, -3}, // 0x6D 'm' 107 | {232, 4, 4, 5, 0, -3}, // 0x6E 'n' 108 | {234, 4, 4, 5, 0, -3}, // 0x6F 'o' 109 | {236, 4, 5, 5, 0, -3}, // 0x70 'p' 110 | {239, 4, 5, 5, 0, -3}, // 0x71 'q' 111 | {242, 4, 4, 5, 0, -3}, // 0x72 'r' 112 | {244, 4, 4, 5, 0, -3}, // 0x73 's' 113 | {246, 5, 5, 6, 0, -4}, // 0x74 't' 114 | {250, 4, 4, 5, 0, -3}, // 0x75 'u' 115 | {252, 4, 4, 5, 0, -3}, // 0x76 'v' 116 | {254, 5, 4, 6, 0, -3}, // 0x77 'w' 117 | {257, 4, 4, 5, 0, -3}, // 0x78 'x' 118 | {259, 4, 5, 5, 0, -3}, // 0x79 'y' 119 | {262, 4, 4, 5, 0, -3}, // 0x7A 'z' 120 | {264, 3, 5, 4, 0, -4}, // 0x7B '{' 121 | {266, 1, 5, 2, 0, -4}, // 0x7C '|' 122 | {267, 3, 5, 4, 0, -4}, // 0x7D '}' 123 | {269, 5, 3, 6, 0, -3}}; // 0x7E '~' 124 | 125 | const GFXfont Org_01 PROGMEM = {(uint8_t *)Org_01Bitmaps, 126 | (GFXglyph *)Org_01Glyphs, 0x20, 0x7E, 7}; 127 | 128 | // Approx. 943 bytes 129 | -------------------------------------------------------------------------------- /testScript/Fonts/Picopixel.h: -------------------------------------------------------------------------------- 1 | // Picopixel by Sebastian Weber. A tiny font 2 | // with all characters within a 6 pixel height. 3 | 4 | const uint8_t PicopixelBitmaps[] PROGMEM = { 5 | 0xE8, 0xB4, 0x57, 0xD5, 0xF5, 0x00, 0x4E, 0x3E, 0x80, 0xA5, 0x4A, 0x4A, 6 | 0x5A, 0x50, 0xC0, 0x6A, 0x40, 0x95, 0x80, 0xAA, 0x80, 0x5D, 0x00, 0x60, 7 | 0xE0, 0x80, 0x25, 0x48, 0x56, 0xD4, 0x75, 0x40, 0xC5, 0x4E, 0xC5, 0x1C, 8 | 0x97, 0x92, 0xF3, 0x1C, 0x53, 0x54, 0xE5, 0x48, 0x55, 0x54, 0x55, 0x94, 9 | 0xA0, 0x46, 0x64, 0xE3, 0x80, 0x98, 0xC5, 0x04, 0x56, 0xC6, 0x57, 0xDA, 10 | 0xD7, 0x5C, 0x72, 0x46, 0xD6, 0xDC, 0xF3, 0xCE, 0xF3, 0x48, 0x72, 0xD4, 11 | 0xB7, 0xDA, 0xF8, 0x24, 0xD4, 0xBB, 0x5A, 0x92, 0x4E, 0x8E, 0xEB, 0x58, 12 | 0x80, 0x9D, 0xB9, 0x90, 0x56, 0xD4, 0xD7, 0x48, 0x56, 0xD4, 0x40, 0xD7, 13 | 0x5A, 0x71, 0x1C, 0xE9, 0x24, 0xB6, 0xD4, 0xB6, 0xA4, 0x8C, 0x6B, 0x55, 14 | 0x00, 0xB5, 0x5A, 0xB5, 0x24, 0xE5, 0x4E, 0xEA, 0xC0, 0x91, 0x12, 0xD5, 15 | 0xC0, 0x54, 0xF0, 0x90, 0xC7, 0xF0, 0x93, 0x5E, 0x71, 0x80, 0x25, 0xDE, 16 | 0x5E, 0x30, 0x6E, 0x80, 0x77, 0x9C, 0x93, 0x5A, 0xB8, 0x45, 0x60, 0x92, 17 | 0xEA, 0xAA, 0x40, 0xD5, 0x6A, 0xD6, 0x80, 0x55, 0x00, 0xD7, 0x40, 0x75, 18 | 0x90, 0xE8, 0x71, 0xE0, 0xBA, 0x40, 0xB5, 0x80, 0xB5, 0x00, 0x8D, 0x54, 19 | 0xAA, 0x80, 0xAC, 0xE0, 0xE5, 0x70, 0x6A, 0x26, 0xFC, 0xC8, 0xAC, 0x5A}; 20 | 21 | const GFXglyph PicopixelGlyphs[] PROGMEM = {{0, 0, 0, 2, 0, 1}, // 0x20 ' ' 22 | {0, 1, 5, 2, 0, -4}, // 0x21 '!' 23 | {1, 3, 2, 4, 0, -4}, // 0x22 '"' 24 | {2, 5, 5, 6, 0, -4}, // 0x23 '#' 25 | {6, 3, 6, 4, 0, -4}, // 0x24 '$' 26 | {9, 3, 5, 4, 0, -4}, // 0x25 '%' 27 | {11, 4, 5, 5, 0, -4}, // 0x26 '&' 28 | {14, 1, 2, 2, 0, -4}, // 0x27 ''' 29 | {15, 2, 5, 3, 0, -4}, // 0x28 '(' 30 | {17, 2, 5, 3, 0, -4}, // 0x29 ')' 31 | {19, 3, 3, 4, 0, -3}, // 0x2A '*' 32 | {21, 3, 3, 4, 0, -3}, // 0x2B '+' 33 | {23, 2, 2, 3, 0, 0}, // 0x2C ',' 34 | {24, 3, 1, 4, 0, -2}, // 0x2D '-' 35 | {25, 1, 1, 2, 0, 0}, // 0x2E '.' 36 | {26, 3, 5, 4, 0, -4}, // 0x2F '/' 37 | {28, 3, 5, 4, 0, -4}, // 0x30 '0' 38 | {30, 2, 5, 3, 0, -4}, // 0x31 '1' 39 | {32, 3, 5, 4, 0, -4}, // 0x32 '2' 40 | {34, 3, 5, 4, 0, -4}, // 0x33 '3' 41 | {36, 3, 5, 4, 0, -4}, // 0x34 '4' 42 | {38, 3, 5, 4, 0, -4}, // 0x35 '5' 43 | {40, 3, 5, 4, 0, -4}, // 0x36 '6' 44 | {42, 3, 5, 4, 0, -4}, // 0x37 '7' 45 | {44, 3, 5, 4, 0, -4}, // 0x38 '8' 46 | {46, 3, 5, 4, 0, -4}, // 0x39 '9' 47 | {48, 1, 3, 2, 0, -3}, // 0x3A ':' 48 | {49, 2, 4, 3, 0, -3}, // 0x3B ';' 49 | {50, 2, 3, 3, 0, -3}, // 0x3C '<' 50 | {51, 3, 3, 4, 0, -3}, // 0x3D '=' 51 | {53, 2, 3, 3, 0, -3}, // 0x3E '>' 52 | {54, 3, 5, 4, 0, -4}, // 0x3F '?' 53 | {56, 3, 5, 4, 0, -4}, // 0x40 '@' 54 | {58, 3, 5, 4, 0, -4}, // 0x41 'A' 55 | {60, 3, 5, 4, 0, -4}, // 0x42 'B' 56 | {62, 3, 5, 4, 0, -4}, // 0x43 'C' 57 | {64, 3, 5, 4, 0, -4}, // 0x44 'D' 58 | {66, 3, 5, 4, 0, -4}, // 0x45 'E' 59 | {68, 3, 5, 4, 0, -4}, // 0x46 'F' 60 | {70, 3, 5, 4, 0, -4}, // 0x47 'G' 61 | {72, 3, 5, 4, 0, -4}, // 0x48 'H' 62 | {74, 1, 5, 2, 0, -4}, // 0x49 'I' 63 | {75, 3, 5, 4, 0, -4}, // 0x4A 'J' 64 | {77, 3, 5, 4, 0, -4}, // 0x4B 'K' 65 | {79, 3, 5, 4, 0, -4}, // 0x4C 'L' 66 | {81, 5, 5, 6, 0, -4}, // 0x4D 'M' 67 | {85, 4, 5, 5, 0, -4}, // 0x4E 'N' 68 | {88, 3, 5, 4, 0, -4}, // 0x4F 'O' 69 | {90, 3, 5, 4, 0, -4}, // 0x50 'P' 70 | {92, 3, 6, 4, 0, -4}, // 0x51 'Q' 71 | {95, 3, 5, 4, 0, -4}, // 0x52 'R' 72 | {97, 3, 5, 4, 0, -4}, // 0x53 'S' 73 | {99, 3, 5, 4, 0, -4}, // 0x54 'T' 74 | {101, 3, 5, 4, 0, -4}, // 0x55 'U' 75 | {103, 3, 5, 4, 0, -4}, // 0x56 'V' 76 | {105, 5, 5, 6, 0, -4}, // 0x57 'W' 77 | {109, 3, 5, 4, 0, -4}, // 0x58 'X' 78 | {111, 3, 5, 4, 0, -4}, // 0x59 'Y' 79 | {113, 3, 5, 4, 0, -4}, // 0x5A 'Z' 80 | {115, 2, 5, 3, 0, -4}, // 0x5B '[' 81 | {117, 3, 5, 4, 0, -4}, // 0x5C '\' 82 | {119, 2, 5, 3, 0, -4}, // 0x5D ']' 83 | {121, 3, 2, 4, 0, -4}, // 0x5E '^' 84 | {122, 4, 1, 4, 0, 1}, // 0x5F '_' 85 | {123, 2, 2, 3, 0, -4}, // 0x60 '`' 86 | {124, 3, 4, 4, 0, -3}, // 0x61 'a' 87 | {126, 3, 5, 4, 0, -4}, // 0x62 'b' 88 | {128, 3, 3, 4, 0, -2}, // 0x63 'c' 89 | {130, 3, 5, 4, 0, -4}, // 0x64 'd' 90 | {132, 3, 4, 4, 0, -3}, // 0x65 'e' 91 | {134, 2, 5, 3, 0, -4}, // 0x66 'f' 92 | {136, 3, 5, 4, 0, -3}, // 0x67 'g' 93 | {138, 3, 5, 4, 0, -4}, // 0x68 'h' 94 | {140, 1, 5, 2, 0, -4}, // 0x69 'i' 95 | {141, 2, 6, 3, 0, -4}, // 0x6A 'j' 96 | {143, 3, 5, 4, 0, -4}, // 0x6B 'k' 97 | {145, 2, 5, 3, 0, -4}, // 0x6C 'l' 98 | {147, 5, 3, 6, 0, -2}, // 0x6D 'm' 99 | {149, 3, 3, 4, 0, -2}, // 0x6E 'n' 100 | {151, 3, 3, 4, 0, -2}, // 0x6F 'o' 101 | {153, 3, 4, 4, 0, -2}, // 0x70 'p' 102 | {155, 3, 4, 4, 0, -2}, // 0x71 'q' 103 | {157, 2, 3, 3, 0, -2}, // 0x72 'r' 104 | {158, 3, 4, 4, 0, -3}, // 0x73 's' 105 | {160, 2, 5, 3, 0, -4}, // 0x74 't' 106 | {162, 3, 3, 4, 0, -2}, // 0x75 'u' 107 | {164, 3, 3, 4, 0, -2}, // 0x76 'v' 108 | {166, 5, 3, 6, 0, -2}, // 0x77 'w' 109 | {168, 3, 3, 4, 0, -2}, // 0x78 'x' 110 | {170, 3, 4, 4, 0, -2}, // 0x79 'y' 111 | {172, 3, 4, 4, 0, -3}, // 0x7A 'z' 112 | {174, 3, 5, 4, 0, -4}, // 0x7B '{' 113 | {176, 1, 6, 2, 0, -4}, // 0x7C '|' 114 | {177, 3, 5, 4, 0, -4}, // 0x7D '}' 115 | {179, 4, 2, 5, 0, -3}}; // 0x7E '~' 116 | 117 | const GFXfont Picopixel PROGMEM = {(uint8_t *)PicopixelBitmaps, 118 | (GFXglyph *)PicopixelGlyphs, 0x20, 0x7E, 7}; 119 | 120 | // Approx. 852 bytes 121 | -------------------------------------------------------------------------------- /testScript/Fonts/Tiny3x3a2pt7b.h: -------------------------------------------------------------------------------- 1 | /** 2 | ** The FontStruction “Tiny3x3a” 3 | ** (https://fontstruct.com/fontstructions/show/670512) by “Michaelangel007” is 4 | ** licensed under a Creative Commons Attribution Non-commercial Share Alike 5 | *license 6 | ** (http://creativecommons.org/licenses/by-nc-sa/3.0/). 7 | ** “Tiny3x3a” was originally cloned (copied) from the FontStruction 8 | ** “CHECKER” (https://fontstruct.com/fontstructions/show/2391) by Wolf grant 9 | ** Grant, which is licensed under a Creative Commons Attribution Non-commercial 10 | ** Share Alike license (http://creativecommons.org/licenses/by-nc-sa/3.0/). 11 | * 12 | * Converted by eadmaster with fontconvert 13 | **/ 14 | 15 | const uint8_t Tiny3x3a2pt7bBitmaps[] PROGMEM = { 16 | 0xC0, 0xB4, 0xBF, 0x80, 0x6B, 0x00, 0xDD, 0x80, 0x59, 0x80, 0x80, 0x64, 17 | 0x98, 0xF0, 0x5D, 0x00, 0xC0, 0xE0, 0x80, 0x2A, 0x00, 0x55, 0x00, 0x94, 18 | 0xC9, 0x80, 0xEF, 0x80, 0xBC, 0x80, 0x6B, 0x00, 0x9F, 0x80, 0xE4, 0x80, 19 | 0x7F, 0x00, 0xFC, 0x80, 0xA0, 0x58, 0x64, 0xE3, 0x80, 0x98, 0xD8, 0xD8, 20 | 0x80, 0x5E, 0x80, 0xDF, 0x80, 0x71, 0x80, 0xD7, 0x00, 0xFB, 0x80, 0xFA, 21 | 0x00, 0xD7, 0x80, 0xBE, 0x80, 0xE0, 0x27, 0x00, 0xBA, 0x80, 0x93, 0x80, 22 | 0xFE, 0x80, 0xF6, 0x80, 0xF7, 0x80, 0xFE, 0x00, 0xF7, 0x00, 0xDE, 0x80, 23 | 0x6B, 0x00, 0xE9, 0x00, 0xB7, 0x80, 0xB5, 0x00, 0xBF, 0x80, 0xAA, 0x80, 24 | 0xA9, 0x00, 0xEB, 0x80, 0xEC, 0x88, 0x80, 0xDC, 0x54, 0xE0, 0x90, 0x70, 25 | 0xBC, 0xF0, 0x7C, 0xB0, 0x68, 0xFC, 0xBC, 0xC0, 0x58, 0x9A, 0x80, 0xA4, 26 | 0xDC, 0xD4, 0xF0, 0xF8, 0xF4, 0xE0, 0x60, 0x59, 0x80, 0xBC, 0xA8, 0xEC, 27 | 0xF0, 0xAC, 0x80, 0x90, 0x79, 0x80, 0xF0, 0xCF, 0x00, 0x78}; 28 | 29 | const GFXglyph Tiny3x3a2pt7bGlyphs[] PROGMEM = { 30 | {0, 0, 0, 4, 0, 1}, // 0x20 ' ' 31 | {0, 1, 2, 3, 1, -2}, // 0x21 '!' 32 | {1, 3, 2, 4, 0, -2}, // 0x22 '"' 33 | {2, 3, 3, 4, 0, -2}, // 0x23 '#' 34 | {4, 3, 3, 4, 0, -2}, // 0x24 '$' 35 | {6, 3, 3, 4, 0, -2}, // 0x25 '%' 36 | {8, 3, 3, 4, 0, -2}, // 0x26 '&' 37 | {10, 1, 1, 3, 1, -2}, // 0x27 ''' 38 | {11, 2, 3, 3, 0, -2}, // 0x28 '(' 39 | {12, 2, 3, 4, 1, -2}, // 0x29 ')' 40 | {13, 2, 2, 4, 1, -2}, // 0x2A '*' 41 | {14, 3, 3, 4, 0, -2}, // 0x2B '+' 42 | {16, 1, 2, 2, 0, 0}, // 0x2C ',' 43 | {17, 3, 1, 4, 0, -1}, // 0x2D '-' 44 | {18, 1, 1, 2, 0, 0}, // 0x2E '.' 45 | {19, 3, 3, 4, 0, -2}, // 0x2F '/' 46 | {21, 3, 3, 4, 0, -2}, // 0x30 '0' 47 | {23, 2, 3, 3, 0, -2}, // 0x31 '1' 48 | {24, 3, 3, 4, 0, -2}, // 0x32 '2' 49 | {26, 3, 3, 4, 0, -2}, // 0x33 '3' 50 | {28, 3, 3, 4, 0, -2}, // 0x34 '4' 51 | {30, 3, 3, 4, 0, -2}, // 0x35 '5' 52 | {32, 3, 3, 4, 0, -2}, // 0x36 '6' 53 | {34, 3, 3, 4, 0, -2}, // 0x37 '7' 54 | {36, 3, 3, 4, 0, -2}, // 0x38 '8' 55 | {38, 3, 3, 4, 0, -2}, // 0x39 '9' 56 | {40, 1, 3, 3, 1, -2}, // 0x3A ':' 57 | {41, 2, 3, 3, 0, -1}, // 0x3B ';' 58 | {42, 2, 3, 3, 0, -2}, // 0x3C '<' 59 | {43, 3, 3, 4, 0, -2}, // 0x3D '=' 60 | {45, 2, 3, 4, 1, -2}, // 0x3E '>' 61 | {46, 2, 3, 4, 1, -2}, // 0x3F '?' 62 | {47, 3, 3, 4, 0, -2}, // 0x40 '@' 63 | {49, 3, 3, 4, 0, -2}, // 0x41 'A' 64 | {51, 3, 3, 4, 0, -2}, // 0x42 'B' 65 | {53, 3, 3, 4, 0, -2}, // 0x43 'C' 66 | {55, 3, 3, 4, 0, -2}, // 0x44 'D' 67 | {57, 3, 3, 4, 0, -2}, // 0x45 'E' 68 | {59, 3, 3, 4, 0, -2}, // 0x46 'F' 69 | {61, 3, 3, 4, 0, -2}, // 0x47 'G' 70 | {63, 3, 3, 4, 0, -2}, // 0x48 'H' 71 | {65, 1, 3, 3, 1, -2}, // 0x49 'I' 72 | {66, 3, 3, 4, 0, -2}, // 0x4A 'J' 73 | {68, 3, 3, 4, 0, -2}, // 0x4B 'K' 74 | {70, 3, 3, 4, 0, -2}, // 0x4C 'L' 75 | {72, 3, 3, 4, 0, -2}, // 0x4D 'M' 76 | {74, 3, 3, 4, 0, -2}, // 0x4E 'N' 77 | {76, 3, 3, 4, 0, -2}, // 0x4F 'O' 78 | {78, 3, 3, 4, 0, -2}, // 0x50 'P' 79 | {80, 3, 3, 4, 0, -2}, // 0x51 'Q' 80 | {82, 3, 3, 4, 0, -2}, // 0x52 'R' 81 | {84, 3, 3, 4, 0, -2}, // 0x53 'S' 82 | {86, 3, 3, 4, 0, -2}, // 0x54 'T' 83 | {88, 3, 3, 4, 0, -2}, // 0x55 'U' 84 | {90, 3, 3, 4, 0, -2}, // 0x56 'V' 85 | {92, 3, 3, 4, 0, -2}, // 0x57 'W' 86 | {94, 3, 3, 4, 0, -2}, // 0x58 'X' 87 | {96, 3, 3, 4, 0, -2}, // 0x59 'Y' 88 | {98, 3, 3, 4, 0, -2}, // 0x5A 'Z' 89 | {100, 2, 3, 3, 0, -2}, // 0x5B '[' 90 | {101, 3, 3, 4, 0, -2}, // 0x5C '\' 91 | {103, 2, 3, 4, 1, -2}, // 0x5D ']' 92 | {104, 3, 2, 4, 0, -2}, // 0x5E '^' 93 | {105, 3, 1, 4, 0, 0}, // 0x5F '_' 94 | {106, 2, 2, 3, 0, -2}, // 0x60 '`' 95 | {107, 2, 2, 3, 0, -1}, // 0x61 'a' 96 | {108, 2, 3, 3, 0, -2}, // 0x62 'b' 97 | {109, 2, 2, 3, 0, -1}, // 0x63 'c' 98 | {110, 2, 3, 3, 0, -2}, // 0x64 'd' 99 | {111, 2, 2, 3, 0, -1}, // 0x65 'e' 100 | {112, 2, 3, 3, 0, -2}, // 0x66 'f' 101 | {113, 2, 3, 3, 0, -1}, // 0x67 'g' 102 | {114, 2, 3, 3, 0, -2}, // 0x68 'h' 103 | {115, 1, 2, 2, 0, -1}, // 0x69 'i' 104 | {116, 2, 3, 3, 0, -1}, // 0x6A 'j' 105 | {117, 3, 3, 4, 0, -2}, // 0x6B 'k' 106 | {119, 2, 3, 3, 0, -2}, // 0x6C 'l' 107 | {120, 3, 2, 4, 0, -1}, // 0x6D 'm' 108 | {121, 3, 2, 4, 0, -1}, // 0x6E 'n' 109 | {122, 2, 2, 3, 0, -1}, // 0x6F 'o' 110 | {123, 2, 3, 3, 0, -1}, // 0x70 'p' 111 | {124, 2, 3, 3, 0, -1}, // 0x71 'q' 112 | {125, 2, 2, 3, 0, -1}, // 0x72 'r' 113 | {126, 2, 2, 3, 0, -1}, // 0x73 's' 114 | {127, 3, 3, 4, 0, -2}, // 0x74 't' 115 | {129, 3, 2, 4, 0, -1}, // 0x75 'u' 116 | {130, 3, 2, 4, 0, -1}, // 0x76 'v' 117 | {131, 3, 2, 4, 0, -1}, // 0x77 'w' 118 | {132, 2, 2, 3, 0, -1}, // 0x78 'x' 119 | {133, 3, 3, 4, 0, -1}, // 0x79 'y' 120 | {135, 2, 2, 3, 0, -1}, // 0x7A 'z' 121 | {136, 3, 3, 4, 0, -2}, // 0x7B '{' 122 | {138, 1, 4, 3, 1, -2}, // 0x7C '|' 123 | {139, 3, 3, 4, 0, -2}, // 0x7D '}' 124 | {141, 3, 2, 4, 0, -2}}; // 0x7E '~' 125 | 126 | const GFXfont Tiny3x3a2pt7b PROGMEM = {(uint8_t *)Tiny3x3a2pt7bBitmaps, 127 | (GFXglyph *)Tiny3x3a2pt7bGlyphs, 0x20, 128 | 0x7E, 4}; 129 | 130 | // Approx. 814 bytes 131 | -------------------------------------------------------------------------------- /testScript/generatedUI.h: -------------------------------------------------------------------------------- 1 | #include "Arduino.h" 2 | #include "Inkplate.h" 3 | #include "Fonts/FreeSansBold24pt7b.h" 4 | 5 | extern Inkplate display; 6 | 7 | String text0_content = "Hello there!"; 8 | int text0_cursor_x = 300; 9 | int text0_cursor_y = 290; 10 | const GFXfont *text0_font = &24px FreeSansBold24pt7b; 11 | 12 | int rect0_a_x = 90; 13 | int rect0_a_y = 89; 14 | int rect0_b_x = 638; 15 | int rect0_b_y = 487; 16 | int rect0_fill = -1; 17 | int rect0_radius = -1; 18 | int rect0_color = 0; 19 | 20 | void mainDraw() { 21 | display.setFont(text0_font); 22 | display.setTextColor(0, 7); display.setTextSize(1); display.setCursor(text0_cursor_x, text0_cursor_y); 23 | display.print(text0_content); 24 | 25 | if (rect0_radius != -1 && rect0_fill != -1) 26 | display.fillRoundRect(rect0_a_x, rect0_a_y, rect0_b_x - rect0_a_x, rect0_b_y - rect0_a_y, rect0_radius, rect0_color); 27 | else if (rect0_radius != -1 && rect0_fill == -1) 28 | display.drawRoundRect(rect0_a_x, rect0_a_y, rect0_b_x - rect0_a_x, rect0_b_y - rect0_a_y, rect0_radius, rect0_color); 29 | else if (rect0_radius == -1 && rect0_fill != -1) 30 | display.fillRect(rect0_a_x, rect0_a_y, rect0_b_x - rect0_a_x, rect0_b_y - rect0_a_y, rect0_color); 31 | else if (rect0_radius == -1 && rect0_fill == -1) 32 | display.drawRect(rect0_a_x, rect0_a_y, rect0_b_x - rect0_a_x, rect0_b_y - rect0_a_y, rect0_color); 33 | 34 | } 35 | -------------------------------------------------------------------------------- /testScript/testScript.ino: -------------------------------------------------------------------------------- 1 | #include "Inkplate.h" 2 | #include "generatedUI.h" 3 | 4 | Inkplate display(INKPLATE_3BIT); 5 | 6 | void setup() { 7 | Serial.begin(115200); 8 | display.begin(); 9 | display.clearDisplay(); 10 | display.clean(); 11 | 12 | mainDraw(); 13 | 14 | display.display(); 15 | } 16 | 17 | void loop() { 18 | // put your main code here, to run repeatedly: 19 | 20 | } 21 | -------------------------------------------------------------------------------- /widgets.js: -------------------------------------------------------------------------------- 1 | // To be filled in extarnal files 2 | 3 | let widgets = [] 4 | 5 | let widgetsIdCount = 0; -------------------------------------------------------------------------------- /widgets/clock.js: -------------------------------------------------------------------------------- 1 | let clock = { 2 | name: "Clock", 3 | type: "widget", 4 | id: 0, 5 | infoLink: { 6 | label: "Click here for info!", 7 | url: "https://inkplate.readthedocs.io/en/latest/gui-designer.html#editing-widgets" 8 | }, 9 | variables: { 10 | "center": { 11 | type: "coordinate", 12 | default: { 13 | x: 50, 14 | y: 50 15 | }, 16 | value: null, 17 | set: function (_x, _y) { 18 | this.default.x = _x; 19 | this.default.y = _y; 20 | }, 21 | distSqr: function (_x, _y) { 22 | return (this.default.x - _x) ** 2 + (this.default.y - _y) ** 2; 23 | }, 24 | }, 25 | "size": { 26 | default: 64, 27 | value: null 28 | }, 29 | "h": { 30 | default: 9, 31 | value: null 32 | }, 33 | "m": { 34 | default: 41, 35 | value: null 36 | }, 37 | }, 38 | draw: function (display) { 39 | let variables = {}; 40 | 41 | for (const [key, value] of Object.entries(this.variables)) { 42 | if (value.value) 43 | variables[key] = value.value; 44 | else 45 | variables[key] = value.default; 46 | } 47 | 48 | this._draw(display, variables); 49 | }, 50 | _draw: function (display, variables) { 51 | 52 | let r0 = variables["size"] / 2 * 0.55; 53 | let r1 = variables["size"] / 2 * 0.65; 54 | let r2 = variables["size"] / 2 * 0.9; 55 | let r3 = variables["size"] / 2 * 1.0; 56 | 57 | for (let i = 0; i < 60; ++i) { 58 | if (i % 5 == 0) 59 | display.drawThickLine(variables["center"].x + r1 * Math.cos(i / 60 * 2 * Math.PI), 60 | variables["center"].y + r1 * Math.sin(i / 60 * 2 * Math.PI), 61 | variables["center"].x + r3 * Math.cos(i / 60 * 2 * Math.PI), 62 | variables["center"].y + r3 * Math.sin(i / 60 * 2 * Math.PI), 0, 3); 63 | else if (variables["size"] > 150) 64 | display.drawLine(variables["center"].x + r1 * Math.cos(i / 60 * 2 * Math.PI), 65 | variables["center"].y + r1 * Math.sin(i / 60 * 2 * Math.PI), 66 | variables["center"].x + r2 * Math.cos(i / 60 * 2 * Math.PI), 67 | variables["center"].y + r2 * Math.sin(i / 60 * 2 * Math.PI), 2); 68 | } 69 | 70 | display.drawThickLine(variables["center"].x, 71 | variables["center"].y, 72 | variables["center"].x + r0 * Math.cos((variables["h"] - 3 + variables["m"] / 60) / 12 * 2 * Math.PI), 73 | variables["center"].y + r0 * Math.sin((variables["h"] - 3 + variables["m"] / 60) / 12 * 2 * Math.PI), 2, 2); 74 | 75 | display.drawThickLine(variables["center"].x, 76 | variables["center"].y, 77 | variables["center"].x + r2 * Math.cos((variables["m"] - 15) / 60 * 2 * Math.PI), 78 | variables["center"].y + r2 * Math.sin((variables["m"] - 15) / 60 * 2 * Math.PI), 2, 2); 79 | }, 80 | getCCodeVariables: function () { 81 | return `` + 82 | `int widget${this.id}_h = ${this.variables["h"].value || this.variables["h"].default};\n` + 83 | `int widget${this.id}_m = ${this.variables["m"].value || this.variables["m"].default};\n` + 84 | `int widget${this.id}_center_x = ${this.variables["center"].value ? this.variables["center"].value.x : this.variables["center"].default.x};\n` + 85 | `int widget${this.id}_center_y = ${this.variables["center"].value ? this.variables["center"].value.y : this.variables["center"].default.y};\n` + 86 | `int widget${this.id}_size = ${this.variables["size"].value || this.variables["size"].default};\n` + 87 | `int widget${this.id}_r0 = (double)widget${this.id}_size / 2 * 0.55;\n` + 88 | `int widget${this.id}_r1 = (double)widget${this.id}_size / 2 * 0.65;\n` + 89 | `int widget${this.id}_r2 = (double)widget${this.id}_size / 2 * 0.9;\n` + 90 | `int widget${this.id}_r3 = (double)widget${this.id}_size / 2 * 1.0;\n\n`; 91 | }, 92 | getCCodeDraw: function () { 93 | return `` + 94 | ` for (int i = 0; i < 60; ++i) {\n` + 95 | ` if (i % 5 == 0)\n` + 96 | ` display.drawThickLine(widget${this.id}_center_x + widget${this.id}_r1 * cos((double)i / 60.0 * 2.0 * 3.14159265),\n` + 97 | ` widget${this.id}_center_y + widget${this.id}_r1 * sin((double)i / 60.0 * 2.0 * 3.14159265),\n` + 98 | ` widget${this.id}_center_x + widget${this.id}_r3 * cos((double)i / 60.0 * 2.0 * 3.14159265),\n` + 99 | ` widget${this.id}_center_y + widget${this.id}_r3 * sin((double)i / 60.0 * 2.0 * 3.14159265), 0, 3);\n` + 100 | ` else if (widget${this.id}_size > 150)\n` + 101 | ` display.drawLine(widget${this.id}_center_x + widget${this.id}_r1 * cos((double)i / 60.0 * 2.0 * 3.14159265),\n` + 102 | ` widget${this.id}_center_y + widget${this.id}_r1 * sin((double)i / 60.0 * 2.0 * 3.14159265),\n` + 103 | ` widget${this.id}_center_x + widget${this.id}_r2 * cos((double)i / 60.0 * 2.0 * 3.14159265),\n` + 104 | ` widget${this.id}_center_y + widget${this.id}_r2 * sin((double)i / 60.0 * 2.0 * 3.14159265), 2);\n` + 105 | ` }\n` + 106 | ` display.drawThickLine(widget${this.id}_center_x,\n` + 107 | ` widget${this.id}_center_y,\n ` + 108 | ` widget${this.id}_center_x + widget${this.id}_r0 * cos((double)(widget${this.id}_h - 3.0 + widget${this.id}_m / 60.0) / 12.0 * 2.0 * 3.14159265),\n ` + 109 | ` widget${this.id}_center_y + widget${this.id}_r0 * sin((double)(widget${this.id}_h - 3.0 + widget${this.id}_m / 60.0) / 12.0 * 2.0 * 3.14159265), 2, 2);\n ` + 110 | `\n` + 111 | ` display.drawThickLine(widget${this.id}_center_x,\n` + 112 | ` widget${this.id}_center_y,\n` + 113 | ` widget${this.id}_center_x + widget${this.id}_r2 * cos((double)(widget${this.id}_m - 15.0) / 60.0 * 2.0 * 3.14159265),\n` + 114 | ` widget${this.id}_center_y + widget${this.id}_r2 * sin((double)(widget${this.id}_m - 15.0) / 60.0 * 2.0 * 3.14159265), 2, 2);\n\n`; 115 | }, 116 | modifiers: ["center"], 117 | z: 0 118 | }; 119 | 120 | widgets.push(clock); -------------------------------------------------------------------------------- /widgets/digitalclock.js: -------------------------------------------------------------------------------- 1 | let digitalClock = { 2 | name: "Digital clock", 3 | type: "widget", 4 | id: 0, 5 | infoLink: { 6 | label: "Click here for info!", 7 | url: "https://inkplate.readthedocs.io/en/latest/gui-designer.html#editing-widgets" 8 | }, 9 | variables: { 10 | "location": { 11 | type: "coordinate", 12 | default: { 13 | x: 15, 14 | y: 15 15 | }, 16 | value: null, 17 | set: function (_x, _y) { 18 | this.default.x = _x; 19 | this.default.y = _y; 20 | }, 21 | distSqr: function (_x, _y) { 22 | return (this.default.x - _x) ** 2 + (this.default.y - _y) ** 2; 23 | }, 24 | }, 25 | "size": { 26 | default: 64, 27 | value: null 28 | }, 29 | "h": { 30 | default: 9, 31 | value: null 32 | }, 33 | "m": { 34 | default: 41, 35 | value: null 36 | }, 37 | }, 38 | draw: function (display) { 39 | let variables = {}; 40 | 41 | for (const [key, value] of Object.entries(this.variables)) { 42 | if (value.value) 43 | variables[key] = value.value; 44 | else 45 | variables[key] = value.default; 46 | } 47 | 48 | this._draw(display, variables); 49 | }, 50 | _draw: function (display, variables) { 51 | let bitmask = [119, 48, 93, 121, 58, 107, 111, 49, 127, 59]; 52 | 53 | let triangleX = [83, 101, 108, 101, 108, 277, 101, 108, 277, 257, 277, 108, 257, 277, 286, 76, 60, 98, 60, 98, 80, 80, 39, 60, 80, 39, 55, 31, 55, 73, 31, 73, 52, 31, 9, 52, 9, 52, 20, 61, 86, 80, 86, 80, 233, 233, 227, 80, 233, 227, 252, 260, 292, 305, 305, 260, 240, 305, 281, 240, 240, 281, 260, 259, 234, 276, 234, 276, 256, 256, 214, 234, 214, 256, 237, 38, 27, 60, 38, 60, 207, 207, 38, 212, 212, 207, 230]; 54 | let triangleY = [30, 13, 60, 13, 60, 14, 13, 60, 14, 57, 14, 60, 57, 14, 29, 36, 47, 61, 47, 61, 198, 198, 201, 47, 198, 201, 219, 252, 232, 253, 252, 253, 390, 252, 406, 390, 406, 390, 416, 227, 202, 249, 202, 249, 203, 203, 247, 249, 203, 247, 224, 60, 35, 49, 49, 60, 200, 50, 201, 200, 200, 201, 220, 231, 252, 252, 252, 252, 403, 403, 390, 252, 390, 403, 415, 439, 424, 392, 439, 392, 394, 394, 439, 439, 439, 394, 424]; 55 | 56 | let maxX = 310; 57 | let maxY = 440; 58 | 59 | for (let i = 0; i < 4; ++i) { 60 | for (let j = 0; j < triangleX.length; j += 3) { 61 | let b = bitmask[[Math.floor(variables["h"] / 10 % 10), Math.floor(variables["h"] % 10), Math.floor(variables["m"] / 10 % 10), Math.floor(variables["m"] % 10)][i]]; 62 | if (b & (1 << parseInt((j - 1) / (3 * 4)))) { 63 | display.fillTriangle( 64 | i * maxX / maxY * variables["size"] * 1.1 + variables["location"].x + maxX / maxY * variables["size"] * triangleX[j + 0] / maxX, 65 | variables["location"].y + variables["size"] * triangleY[j + 0] / maxY, 66 | 67 | i * maxX / maxY * variables["size"] * 1.1 + variables["location"].x + maxX / maxY * variables["size"] * triangleX[j + 1] / maxX, 68 | variables["location"].y + variables["size"] * triangleY[j + 1] / maxY, 69 | 70 | i * maxX / maxY * variables["size"] * 1.1 + variables["location"].x + maxX / maxY * variables["size"] * triangleX[j + 2] / maxX, 71 | variables["location"].y + variables["size"] * triangleY[j + 2] / maxY, 72 | 73 | 0); 74 | } 75 | } 76 | } 77 | 78 | let r = 0.05 * variables["size"]; 79 | 80 | display.fillCircle(variables["location"].x + 4 * maxX / maxY * variables["size"] * 1.075 / 2, variables["location"].y + variables["size"] * 0.4, r, 0); 81 | display.fillCircle(variables["location"].x + 4 * maxX / maxY * variables["size"] * 1.075 / 2, variables["location"].y + variables["size"] * 0.6, r, 0); 82 | }, 83 | getCCodeVariables: function () { 84 | return `` + 85 | `int digital_clock${this.id}_h = ${this.variables["h"].value || this.variables["h"].default};\n` + 86 | `int digital_clock${this.id}_m = ${this.variables["m"].value || this.variables["m"].default};\n` + 87 | `int digital_clock${this.id}_location_x = ${this.variables["location"].value ? this.variables["location"].value.x : this.variables["location"].default.x};\n` + 88 | `int digital_clock${this.id}_location_y = ${this.variables["location"].value ? this.variables["location"].value.y : this.variables["location"].default.y};\n` + 89 | `int digital_clock${this.id}_size = ${this.variables["size"].value || this.variables["size"].default};\n` + 90 | `int digital_clock${this.id}_bitmask[] = {119, 48, 93, 121, 58, 107, 111, 49, 127, 59};\n` + 91 | `int digital_clock${this.id}_triangleX[] = {83, 101, 108, 101, 108, 277, 101, 108, 277, 257, 277, 108, 257, 277, 286, 76, 60, 98, 60, 98, 80, 80, 39, 60, 80, 39, 55, 31, 55, 73, 31, 73, 52, 31, 9, 52, 9, 52, 20, 61, 86, 80, 86, 80, 233, 233, 227, 80, 233, 227, 252, 260, 292, 305, 305, 260, 240, 305, 281, 240, 240, 281, 260, 259, 234, 276, 234, 276, 256, 256, 214, 234, 214, 256, 237, 38, 27, 60, 38, 60, 207, 207, 38, 212, 212, 207, 230};\n` + 92 | `int digital_clock${this.id}_triangleY[] = {30, 13, 60, 13, 60, 14, 13, 60, 14, 57, 14, 60, 57, 14, 29, 36, 47, 61, 47, 61, 198, 198, 201, 47, 198, 201, 219, 252, 232, 253, 252, 253, 390, 252, 406, 390, 406, 390, 416, 227, 202, 249, 202, 249, 203, 203, 247, 249, 203, 247, 224, 60, 35, 49, 49, 60, 200, 50, 201, 200, 200, 201, 220, 231, 252, 252, 252, 252, 403, 403, 390, 252, 390, 403, 415, 439, 424, 392, 439, 392, 394, 394, 439, 439, 439, 394, 424};\n` + 93 | `int digital_clock${this.id}_maxX = 310;\n` + 94 | `int digital_clock${this.id}_maxY = 440;\n` + 95 | `\n`; 96 | }, 97 | getCCodeDraw: function () { 98 | return ` for (int i = 0; i < 4; ++i) {\n` + 99 | ` for (int j = 0; j < sizeof(digital_clock${this.id}_triangleX) / sizeof(digital_clock${this.id}_triangleX[0]); j += 3) {\n` + 100 | ` int temp[4] = {digital_clock${this.id}_h / 10 % 10, digital_clock${this.id}_h % 10, digital_clock${this.id}_m / 10 % 10, digital_clock${this.id}_m % 10};\n` + 101 | ` int b = digital_clock${this.id}_bitmask[temp[i]];\n` + 102 | ` if (b & (1 << ((j - 1) / (3 * 4)))) {\n` + 103 | ` display.fillTriangle(\n` + 104 | ` (int)((float)i * (float)digital_clock${this.id}_maxX / (float)digital_clock${this.id}_maxY * (float)digital_clock${this.id}_size * 1.1 + (float)digital_clock${this.id}_location_x + (float)digital_clock${this.id}_maxX / (float)digital_clock${this.id}_maxY * (float)digital_clock${this.id}_size * (float)digital_clock${this.id}_triangleX[j + 0] / (float)digital_clock${this.id}_maxX),\n` + 105 | ` (int)((float)digital_clock${this.id}_location_y + (float)digital_clock${this.id}_size * (float)digital_clock${this.id}_triangleY[j + 0] / (float)digital_clock${this.id}_maxY),\n` + 106 | `\n` + 107 | ` (int)((float)i * (float)digital_clock${this.id}_maxX / (float)digital_clock${this.id}_maxY * (float)digital_clock${this.id}_size * 1.1 + (float)digital_clock${this.id}_location_x + (float)digital_clock${this.id}_maxX / (float)digital_clock${this.id}_maxY * (float)digital_clock${this.id}_size * (float)digital_clock${this.id}_triangleX[j + 1] / (float)digital_clock${this.id}_maxX),\n` + 108 | ` (int)((float)digital_clock${this.id}_location_y + (float)digital_clock${this.id}_size * (float)digital_clock${this.id}_triangleY[j + 1] / (float)digital_clock${this.id}_maxY),\n` + 109 | `\n` + 110 | ` (int)((float)i * (float)digital_clock${this.id}_maxX / (float)digital_clock${this.id}_maxY * (float)digital_clock${this.id}_size * 1.1 + (float)digital_clock${this.id}_location_x + (float)digital_clock${this.id}_maxX / (float)digital_clock${this.id}_maxY * (float)digital_clock${this.id}_size * (float)digital_clock${this.id}_triangleX[j + 2] / (float)digital_clock${this.id}_maxX),\n` + 111 | ` (int)((float)digital_clock${this.id}_location_y + (float)digital_clock${this.id}_size * (float)digital_clock${this.id}_triangleY[j + 2] / (float)digital_clock${this.id}_maxY),\n` + 112 | `\n` + 113 | ` 0);\n` + 114 | ` }\n` + 115 | ` }\n` + 116 | ` }\n` + 117 | `\n` + 118 | ` int digital_clock${this.id}_r = 0.05 * (float)digital_clock${this.id}_size;\n` + 119 | `\n` + 120 | ` display.fillCircle((int)((float)digital_clock${this.id}_location_x + 4.0 * (float)digital_clock${this.id}_maxX / (float)digital_clock${this.id}_maxY * (float)digital_clock${this.id}_size * 1.075 / 2.0), (int)((float)digital_clock${this.id}_location_y + (float)digital_clock${this.id}_size * 0.4), digital_clock${this.id}_r, 0);\n` + 121 | ` display.fillCircle((int)((float)digital_clock${this.id}_location_x + 4.0 * (float)digital_clock${this.id}_maxX / (float)digital_clock${this.id}_maxY * (float)digital_clock${this.id}_size * 1.075 / 2.0), (int)((float)digital_clock${this.id}_location_y + (float)digital_clock${this.id}_size * 0.6), digital_clock${this.id}_r, 0);\n`; 122 | 123 | }, 124 | 125 | modifiers: ["location"], 126 | z: 0 127 | }; 128 | 129 | widgets.push(digitalClock); -------------------------------------------------------------------------------- /widgets/graph.js: -------------------------------------------------------------------------------- 1 | let graph = { 2 | name: "Graph", 3 | type: "widget", 4 | id: 0, 5 | infoLink: { 6 | label: "Click here for info!", 7 | url: "https://inkplate.readthedocs.io/en/latest/gui-designer.html#editing-widgets" 8 | }, 9 | variables: { 10 | "n": { 11 | default: 32, 12 | value: null 13 | }, 14 | "data": { 15 | default: new Array(32).fill(0), 16 | value: null 17 | }, 18 | "corner1": { 19 | type: "coordinate", 20 | default: { 21 | x: 50, 22 | y: 50 23 | }, 24 | value: null, 25 | set: function (_x, _y) { 26 | this.default.x = _x; 27 | this.default.y = _y; 28 | }, 29 | distSqr: function (_x, _y) { 30 | return (this.default.x - _x) ** 2 + (this.default.y - _y) ** 2; 31 | }, 32 | }, 33 | "corner2": { 34 | type: "coordinate", 35 | default: { 36 | x: 500, 37 | y: 500 38 | }, 39 | value: null, 40 | set: function (_x, _y) { 41 | this.default.x = _x; 42 | this.default.y = _y; 43 | }, 44 | distSqr: function (_x, _y) { 45 | return (this.default.x - _x) ** 2 + (this.default.y - _y) ** 2; 46 | }, 47 | } 48 | }, 49 | draw: function (display) { 50 | let variables = {}; 51 | 52 | for (const [key, value] of Object.entries(this.variables)) { 53 | if (value.value) 54 | variables[key] = value.value; 55 | else 56 | variables[key] = value.default; 57 | } 58 | 59 | let d = []; 60 | 61 | if (variables["data"].every(el => el == 0)) { 62 | for (let i = 0; i < variables["n"]; ++i) 63 | d.push(Math.sin(Math.PI * 3 * i / variables["n"] - (Date.now() % 5000) / (5000 / Math.PI / 2))); 64 | variables["data"] = d; 65 | } 66 | 67 | this._draw(display, variables) 68 | }, 69 | _draw: function (display, variables) { 70 | let textMargin = 68; 71 | let minData = 1e9; 72 | let maxData = -1e9; 73 | 74 | for (let i = 0; i < variables["n"]; ++i) { 75 | minData = Math.min(minData, variables["data"][i]); 76 | maxData = Math.max(maxData, variables["data"][i]); 77 | } 78 | let span = Math.max(0.3, Math.abs(maxData - minData)); 79 | let prev_x = -1; 80 | let prev_y = -1; 81 | 82 | for (let i = 0; i < variables["n"]; ++i) { 83 | let tx = variables["corner1"].x + i * (variables["corner2"].x - variables["corner1"].x - textMargin) / variables["n"]; 84 | let v = variables["data"][i]; 85 | let h = ((v - minData) * Math.abs(variables["corner2"].y - variables["corner1"].y) / span); 86 | let ty = variables["corner2"].y - h; 87 | 88 | if (i) { 89 | let dy = (ty - prev_y) / ((variables["corner2"].x - variables["corner1"].x - textMargin) / variables["n"]); 90 | 91 | for (let j = 0; j < (variables["corner2"].x - variables["corner1"].x) / variables["n"] + 1; ++j) 92 | display.drawGradientLine(prev_x + j, 93 | Math.round(prev_y + dy * j), 94 | prev_x + j, 95 | variables["corner2"].y, 3, 7); 96 | } 97 | 98 | prev_x = tx; 99 | prev_y = ty; 100 | } 101 | 102 | for (let i = 0; i < variables["n"]; ++i) { 103 | let tx = variables["corner1"].x + i * (variables["corner2"].x - variables["corner1"].x - textMargin) / variables["n"]; 104 | let v = variables["data"][i]; 105 | let h = ((v - minData) * Math.abs(variables["corner2"].y - variables["corner1"].y) / span); 106 | let ty = variables["corner2"].y - h; 107 | 108 | if (i) { 109 | display.drawThickLine(prev_x, prev_y, tx, ty, 0, 5.0); 110 | } 111 | 112 | prev_x = tx; 113 | prev_y = ty; 114 | } 115 | 116 | for (let i = 0; i < 4; ++i) { 117 | display.drawFastHLine(variables["corner1"].x, variables["corner1"].y + i * (variables["corner2"].y - variables["corner1"].y) / 4, variables["corner2"].x - variables["corner1"].x, 4); 118 | display.setCursor(variables["corner2"].x - textMargin + 10, variables["corner1"].y + i * (variables["corner2"].y - variables["corner1"].y) / 4 + 23); 119 | display.print((minData + (maxData - minData) * (4 - i) / 4).toFixed(2)); 120 | } 121 | for (let i = 0; i < 5; ++i) 122 | display.drawFastVLine(variables["corner1"].x + i * (variables["corner2"].x - variables["corner1"].x) / 5, variables["corner1"].y, variables["corner2"].y - variables["corner1"].y, 4); 123 | 124 | display.drawFastVLine(variables["corner2"].x - textMargin + 2, variables["corner1"].y, variables["corner2"].y - variables["corner1"].y, 4); 125 | display.drawThickLine(variables["corner1"].x, variables["corner2"].y, variables["corner2"].x, variables["corner2"].y, 0, 3); 126 | 127 | }, 128 | getCCodeVariables: function () { 129 | return `` + 130 | `int widget${this.id}_n = ${this.variables["n"].value || this.variables["n"].default};\n` + 131 | `\n` + 132 | `int widget${this.id}_corner1_x = ${this.variables["corner1"].value ? this.variables["corner1"].value.x : this.variables["corner1"].default.x};\n` + 133 | `int widget${this.id}_corner2_y = ${this.variables["corner1"].value ? this.variables["corner1"].value.y : this.variables["corner1"].default.y};\n` + 134 | `\n` + 135 | `int widget${this.id}_corner2_x = ${this.variables["corner2"].value ? this.variables["corner2"].value.x : this.variables["corner2"].default.x};\n` + 136 | `int widget${this.id}_corner1_y = ${this.variables["corner2"].value ? this.variables["corner2"].value.y : this.variables["corner2"].default.y};\n` + 137 | `\n` + 138 | `double widget${this.id}_data[128] = ${JSON.stringify(this.variables["data"].value || this.variables["data"].default).replace("[", "{").replace("]", "}")};\n` + 139 | `\n`; 140 | }, 141 | getCCodeDraw: function () { 142 | return `` + 143 | ` int widget${this.id}_textMargin = 68;\n` + 144 | ` double widget${this.id}_minData = 1e9F;\n` + 145 | ` double widget${this.id}_maxData = -1e9F;\n` + 146 | `\n` + 147 | ` for (int i = 0; i < widget${this.id}_n; ++i)\n` + 148 | ` {\n` + 149 | ` widget${this.id}_minData = min(widget${this.id}_minData, widget${this.id}_data[i]);\n` + 150 | ` widget${this.id}_maxData = max(widget${this.id}_maxData, widget${this.id}_data[i]);\n` + 151 | ` }\n` + 152 | `\n` + 153 | ` double widget${this.id}_span = max(0.3D, fabs(widget${this.id}_maxData - widget${this.id}_minData));\n` + 154 | ` int widget${this.id}_prev_x = -1;\n` + 155 | ` int widget${this.id}_prev_y = -1;\n` + 156 | `\n` + 157 | ` for (int i = 0; i < widget${this.id}_n; ++i)\n` + 158 | ` {\n` + 159 | ` int tx = widget${this.id}_corner1_x + i * (widget${this.id}_corner2_x - widget${this.id}_corner1_x - widget${this.id}_textMargin) / widget${this.id}_n;\n` + 160 | ` double v = widget${this.id}_data[i];\n` + 161 | ` int h = ((v - widget${this.id}_minData) * abs(widget${this.id}_corner1_y - widget${this.id}_corner2_y) / widget${this.id}_span);\n` + 162 | ` int ty = widget${this.id}_corner1_y - h;\n` + 163 | `\n` + 164 | ` if (i)\n` + 165 | ` {\n` + 166 | ` double dy = (ty - widget${this.id}_prev_y) / ((widget${this.id}_corner2_x - widget${this.id}_corner1_x - widget${this.id}_textMargin) / widget${this.id}_n);\n` + 167 | `\n` + 168 | ` for (int j = 0; j < (widget${this.id}_corner2_x - widget${this.id}_corner1_x) / widget${this.id}_n + 1; ++j)\n` + 169 | ` display.drawGradientLine(widget${this.id}_prev_x + j,\n` + 170 | ` round(widget${this.id}_prev_y + dy * j),\n` + 171 | ` widget${this.id}_prev_x + j,\n` + 172 | ` widget${this.id}_corner1_y, 3, 7);\n` + 173 | ` }\n` + 174 | `\n` + 175 | ` widget${this.id}_prev_x = tx;\n` + 176 | ` widget${this.id}_prev_y = ty;\n` + 177 | ` }\n` + 178 | `\n` + 179 | ` for (int i = 0; i < widget${this.id}_n; ++i)\n` + 180 | ` {\n` + 181 | ` int tx = widget${this.id}_corner1_x + i * (widget${this.id}_corner2_x - widget${this.id}_corner1_x - widget${this.id}_textMargin) / widget${this.id}_n;\n` + 182 | ` double v = widget${this.id}_data[i];\n` + 183 | ` int h = ((v - widget${this.id}_minData) * abs(widget${this.id}_corner1_y - widget${this.id}_corner2_y) / widget${this.id}_span);\n` + 184 | ` int ty = widget${this.id}_corner1_y - h;\n` + 185 | `\n` + 186 | ` if (i)\n` + 187 | ` {\n` + 188 | ` display.drawThickLine(widget${this.id}_prev_x, widget${this.id}_prev_y, tx, ty, 0, 5.0);\n` + 189 | ` }\n` + 190 | `\n` + 191 | ` widget${this.id}_prev_x = tx;\n` + 192 | ` widget${this.id}_prev_y = ty;\n` + 193 | ` }\n` + 194 | `\n` + 195 | ` for (int i = 0; i < 4; ++i) { display.setFont();\n` + 196 | ` display.drawFastHLine(widget${this.id}_corner1_x, widget${this.id}_corner2_y + i * (widget${this.id}_corner1_y - widget${this.id}_corner2_y) / 4, widget${this.id}_corner2_x - widget${this.id}_corner1_x, 4);\n` + 197 | ` display.setCursor(widget${this.id}_corner2_x - widget${this.id}_textMargin + 10, widget${this.id}_corner1_y + (4 - i) * (widget${this.id}_corner2_y - widget${this.id}_corner1_y) / 4 + 23);\n` + 198 | ` display.setTextColor(0, 7);\n` + 199 | ` display.setTextSize(3);\n` + 200 | ` display.print(String((widget${this.id}_minData + (widget${this.id}_maxData - widget${this.id}_minData) * (4 - i) / 4)));\n` + 201 | ` }\n` + 202 | ` for (int i = 0; i < 5; ++i)\n` + 203 | ` display.drawFastVLine(widget${this.id}_corner1_x + i * (widget${this.id}_corner2_x - widget${this.id}_corner1_x) / 5, widget${this.id}_corner2_y, widget${this.id}_corner1_y - widget${this.id}_corner2_y, 4);\n` + 204 | `\n` + 205 | ` display.drawFastVLine(widget${this.id}_corner2_x - widget${this.id}_textMargin + 2, widget${this.id}_corner2_y, widget${this.id}_corner1_y - widget${this.id}_corner2_y, 4);\n` + 206 | ` display.drawThickLine(widget${this.id}_corner1_x, widget${this.id}_corner1_y, widget${this.id}_corner2_x, widget${this.id}_corner1_y, 0, 3);\n\n`; 207 | }, 208 | modifiers: ["corner1", "corner2"], 209 | z: 0 210 | } 211 | 212 | widgets.push(graph); 213 | --------------------------------------------------------------------------------