From ee77c1febc1f40868ad3280630b52361b8b8959d Mon Sep 17 00:00:00 2001 From: SQFMI Date: Fri, 15 Jan 2021 23:16:42 -0500 Subject: [PATCH] added screenshots --- examples/WatchFaces/DOS/DOS.ino | 3 - examples/WatchFaces/Pokemon/Pokemon.ino | 3 - .../StarryHorizon/StarryHorizon.ino | 300 +++++++++--------- extras/WatchFaces/1_Basic.png | Bin 0 -> 2347 bytes extras/WatchFaces/2_7_SEG.png | Bin 0 -> 3936 bytes extras/WatchFaces/3_DOS.png | Bin 0 -> 4605 bytes extras/WatchFaces/4_Pokemon.png | Bin 0 -> 4620 bytes extras/WatchFaces/5_StarryHorizon.png | Bin 0 -> 4886 bytes extras/{ => WatchFaces}/index.json | 10 +- 9 files changed, 155 insertions(+), 161 deletions(-) create mode 100644 extras/WatchFaces/1_Basic.png create mode 100644 extras/WatchFaces/2_7_SEG.png create mode 100644 extras/WatchFaces/3_DOS.png create mode 100644 extras/WatchFaces/4_Pokemon.png create mode 100644 extras/WatchFaces/5_StarryHorizon.png rename extras/{ => WatchFaces}/index.json (68%) diff --git a/examples/WatchFaces/DOS/DOS.ino b/examples/WatchFaces/DOS/DOS.ino index 4aef3cd..7ea4ef8 100644 --- a/examples/WatchFaces/DOS/DOS.ino +++ b/examples/WatchFaces/DOS/DOS.ino @@ -7,6 +7,3 @@ void setup(){ } void loop(){} - - - diff --git a/examples/WatchFaces/Pokemon/Pokemon.ino b/examples/WatchFaces/Pokemon/Pokemon.ino index ffa743b..eaccd44 100644 --- a/examples/WatchFaces/Pokemon/Pokemon.ino +++ b/examples/WatchFaces/Pokemon/Pokemon.ino @@ -7,6 +7,3 @@ void setup(){ } void loop(){} - - - diff --git a/examples/WatchFaces/StarryHorizon/StarryHorizon.ino b/examples/WatchFaces/StarryHorizon/StarryHorizon.ino index 0226130..cccf2a7 100644 --- a/examples/WatchFaces/StarryHorizon/StarryHorizon.ino +++ b/examples/WatchFaces/StarryHorizon/StarryHorizon.ino @@ -1,150 +1,150 @@ -// STARRY HORIZON for Watchy by SQFMI -// Copyright 2021 Dan Delany dan.delany@gmail.com -// Released under free MIT License : https://github.com/dandelany/watchy-faces/blob/main/LICENSE - -#include //include the Watchy library -#include //include any fonts you want to use -#include "MadeSunflower39pt7b.h" -#include "stars.h" - -#define STAR_COUNT 900 - -const int horizonY = 150; -const int planetR = 650; - -struct xyPoint { - int x; - int y; -}; - -//Star myStars[STAR_COUNT]; -void initStars() { - // The random star field is loaded from PROGMEM - see stars.h - // this is the function that was used to generate the stars in stars.h - // it does not run normally but can be used to re-generate stars with different parameters - // tweak as needed, call this function in init, open serial monitor, and paste the results into stars.h - srand(5287); // randomSeed() is not stable on ESP32, use srand - printf("const Star STARS[] PROGMEM = {\n"); - for(int i = 0; i < STAR_COUNT; i++) { - int starX = (rand() % 260) - 30; - int starY = (rand() % 260) - 30; - int radius = 0; - if (i > STAR_COUNT * 0.99) radius = 2; - else if (i > STAR_COUNT * 0.80) radius = 1; - printf(" { %d, %d, %d },\n", starX, starY, radius); -// myStars[i] = { starX, starY, radius }; - } - printf("};\n"); -} - -struct xyPoint rotatePointAround(int x, int y, int ox, int oy, double angle) { - // rotate X,Y point around given origin point by a given angle - // based on https://gist.github.com/LyleScott/e36e08bfb23b1f87af68c9051f985302#file-rotate_2d_point-py-L38 - double qx = (double)ox + (cos(angle) * (double)(x - ox)) + (sin(angle) * (double)(y - oy)); - double qy = (double)oy + (-sin(angle) * (double)(x - ox)) + (cos(angle) * (double)(y - oy)); - struct xyPoint newPoint; - newPoint.x = (int)qx; - newPoint.y = (int)qy; - return newPoint; -} - -class StarryHorizon : public Watchy { - public: - StarryHorizon() { - // uncomment to re-generate stars -// initStars(); - } - void drawWatchFace(){ - display.fillScreen(GxEPD_BLACK); - display.fillCircle(100, horizonY + planetR, planetR, GxEPD_WHITE); - drawGrid(); - drawStars(STARS); - drawTime(); - drawDate(); - } - void drawGrid() { - int prevY = horizonY; - for(int i = 0; i < 40; i+= 1) { - int y = prevY + int(abs(sin(double(i) / 10) * 10)); - if(y <= 200) { - display.drawFastHLine(0, y, 200, GxEPD_BLACK); - } - prevY = y; - } - int vanishY = horizonY - 25; - for (int x = -230; x < 430; x += 20) { - display.drawLine(x, 200, 100, vanishY, GxEPD_BLACK); - } - } - void drawStars(const Star stars[]) { - // draw field of stars - // rotate stars so that they make an entire revolution once per hour - int minute = (int)currentTime.Minute; - double minuteAngle = ((2.0 * M_PI) / 60.0) * (double)minute; -// printf("Minute %d, angle %f\n", (int)currentTime.Minute, minuteAngle); - - for(int starI = 0; starI < STAR_COUNT; starI++) { - int starX = stars[starI].x; - int starY = stars[starI].y; - int starR = stars[starI].r; - - struct xyPoint rotated = rotatePointAround(starX, starY, 100, 100, minuteAngle); - if(rotated.x < 0 || rotated.y < 0 || rotated.x > 200 || rotated.y > horizonY) { - continue; - } - if(starR == 0) { - display.drawPixel(rotated.x, rotated.y, GxEPD_WHITE); - } else { - display.fillCircle(rotated.x, rotated.y, starR, GxEPD_WHITE); - } - } - } - void drawTime() { - display.setFont(&MADE_Sunflower_PERSONAL_USE39pt7b); - display.setTextColor(GxEPD_WHITE); - display.setTextWrap(false); - char* timeStr; - asprintf(&timeStr, "%d:%02d", currentTime.Hour, currentTime.Minute); - drawCenteredString(timeStr, 100, 115, false); - free(timeStr); - } - - void drawDate() { - String monthStr = monthShortStr(currentTime.Month); - String dayOfWeek = dayShortStr(currentTime.Wday); - display.setFont(&FreeSansBold9pt7b); - display.setTextColor(GxEPD_WHITE); - display.setTextWrap(false); - char* dateStr; - asprintf(&dateStr, "%s %s %d", dayOfWeek, monthStr, currentTime.Day); - drawCenteredString(dateStr, 100, 140, true); - free(dateStr); - } - - void drawCenteredString(const String &str, int x, int y, bool drawBg) { - int16_t x1, y1; - uint16_t w, h; - - display.getTextBounds(str, x, y, &x1, &y1, &w, &h); -// printf("bounds: %d x %d y, %d x1 %d y1, %d w, %d h\n", 0, 100, x1, y1, w, h); - display.setCursor(x - w / 2, y); - if(drawBg) { - int padY = 3; - int padX = 10; - display.fillRect(x - (w / 2 + padX), y - (h + padY), w + padX*2, h + padY*2, GxEPD_BLACK); - } - // uncomment to draw bounding box -// display.drawRect(x - w / 2, y - h, w, h, GxEPD_WHITE); - display.print(str); - } -}; - -StarryHorizon face; //instantiate watchface - -void setup() { - face.init(); //call init in setup -} - -void loop() { - // this should never run, Watchy deep sleeps after init(); -} +// STARRY HORIZON for Watchy by SQFMI +// Copyright 2021 Dan Delany dan.delany@gmail.com +// Released under free MIT License : https://github.com/dandelany/watchy-faces/blob/main/LICENSE + +#include //include the Watchy library +#include //include any fonts you want to use +#include "MadeSunflower39pt7b.h" +#include "stars.h" + +#define STAR_COUNT 900 + +const int horizonY = 150; +const int planetR = 650; + +struct xyPoint { + int x; + int y; +}; + +//Star myStars[STAR_COUNT]; +void initStars() { + // The random star field is loaded from PROGMEM - see stars.h + // this is the function that was used to generate the stars in stars.h + // it does not run normally but can be used to re-generate stars with different parameters + // tweak as needed, call this function in init, open serial monitor, and paste the results into stars.h + srand(5287); // randomSeed() is not stable on ESP32, use srand + printf("const Star STARS[] PROGMEM = {\n"); + for(int i = 0; i < STAR_COUNT; i++) { + int starX = (rand() % 260) - 30; + int starY = (rand() % 260) - 30; + int radius = 0; + if (i > STAR_COUNT * 0.99) radius = 2; + else if (i > STAR_COUNT * 0.80) radius = 1; + printf(" { %d, %d, %d },\n", starX, starY, radius); +// myStars[i] = { starX, starY, radius }; + } + printf("};\n"); +} + +struct xyPoint rotatePointAround(int x, int y, int ox, int oy, double angle) { + // rotate X,Y point around given origin point by a given angle + // based on https://gist.github.com/LyleScott/e36e08bfb23b1f87af68c9051f985302#file-rotate_2d_point-py-L38 + double qx = (double)ox + (cos(angle) * (double)(x - ox)) + (sin(angle) * (double)(y - oy)); + double qy = (double)oy + (-sin(angle) * (double)(x - ox)) + (cos(angle) * (double)(y - oy)); + struct xyPoint newPoint; + newPoint.x = (int)qx; + newPoint.y = (int)qy; + return newPoint; +} + +class StarryHorizon : public Watchy { + public: + StarryHorizon() { + // uncomment to re-generate stars +// initStars(); + } + void drawWatchFace(){ + display.fillScreen(GxEPD_BLACK); + display.fillCircle(100, horizonY + planetR, planetR, GxEPD_WHITE); + drawGrid(); + drawStars(STARS); + drawTime(); + drawDate(); + } + void drawGrid() { + int prevY = horizonY; + for(int i = 0; i < 40; i+= 1) { + int y = prevY + int(abs(sin(double(i) / 10) * 10)); + if(y <= 200) { + display.drawFastHLine(0, y, 200, GxEPD_BLACK); + } + prevY = y; + } + int vanishY = horizonY - 25; + for (int x = -230; x < 430; x += 20) { + display.drawLine(x, 200, 100, vanishY, GxEPD_BLACK); + } + } + void drawStars(const Star stars[]) { + // draw field of stars + // rotate stars so that they make an entire revolution once per hour + int minute = (int)currentTime.Minute; + double minuteAngle = ((2.0 * M_PI) / 60.0) * (double)minute; +// printf("Minute %d, angle %f\n", (int)currentTime.Minute, minuteAngle); + + for(int starI = 0; starI < STAR_COUNT; starI++) { + int starX = stars[starI].x; + int starY = stars[starI].y; + int starR = stars[starI].r; + + struct xyPoint rotated = rotatePointAround(starX, starY, 100, 100, minuteAngle); + if(rotated.x < 0 || rotated.y < 0 || rotated.x > 200 || rotated.y > horizonY) { + continue; + } + if(starR == 0) { + display.drawPixel(rotated.x, rotated.y, GxEPD_WHITE); + } else { + display.fillCircle(rotated.x, rotated.y, starR, GxEPD_WHITE); + } + } + } + void drawTime() { + display.setFont(&MADE_Sunflower_PERSONAL_USE39pt7b); + display.setTextColor(GxEPD_WHITE); + display.setTextWrap(false); + char* timeStr; + asprintf(&timeStr, "%d:%02d", currentTime.Hour, currentTime.Minute); + drawCenteredString(timeStr, 100, 115, false); + free(timeStr); + } + + void drawDate() { + String monthStr = monthShortStr(currentTime.Month); + String dayOfWeek = dayShortStr(currentTime.Wday); + display.setFont(&FreeSansBold9pt7b); + display.setTextColor(GxEPD_WHITE); + display.setTextWrap(false); + char* dateStr; + asprintf(&dateStr, "%s %s %d", dayOfWeek, monthStr, currentTime.Day); + drawCenteredString(dateStr, 100, 140, true); + free(dateStr); + } + + void drawCenteredString(const String &str, int x, int y, bool drawBg) { + int16_t x1, y1; + uint16_t w, h; + + display.getTextBounds(str, x, y, &x1, &y1, &w, &h); +// printf("bounds: %d x %d y, %d x1 %d y1, %d w, %d h\n", 0, 100, x1, y1, w, h); + display.setCursor(x - w / 2, y); + if(drawBg) { + int padY = 3; + int padX = 10; + display.fillRect(x - (w / 2 + padX), y - (h + padY), w + padX*2, h + padY*2, GxEPD_BLACK); + } + // uncomment to draw bounding box +// display.drawRect(x - w / 2, y - h, w, h, GxEPD_WHITE); + display.print(str); + } +}; + +StarryHorizon face; //instantiate watchface + +void setup() { + face.init(); //call init in setup +} + +void loop() { + // this should never run, Watchy deep sleeps after init(); +} diff --git a/extras/WatchFaces/1_Basic.png b/extras/WatchFaces/1_Basic.png new file mode 100644 index 0000000000000000000000000000000000000000..06d0fac584c2f7c80db4f57fd685e87e24ba4b5d GIT binary patch literal 2347 zcmeHJSx}P)5Dqk$NCkrRN(KBOaVXHr2ttWKA##M&h#U!lK#<`u6y=m~lh#PVGawi+ zP*58c{6hkAN&ur(BpfD#HDJmSDWI5e6y%UVpxC#*^{G!j?C#9&?9P1Oe6zb3e7tdb zx?k!-AP_ygm%HC)6n`}MmQBwO6jVSU@OivDmY5bgUEY^6cz7GMXk%k?;lo`CDI0wi zdb82~`oq#4KLxR(tYXzGb8~ZxkN3e{!%7~RGZSop1Of!>V2p4u{RuEKfCF$EMEjuj z5H@`1l`IFsJhZj+U<4F_es+a=3=Vh|-9*}YLOvD$XA*LBR@7>tQQzCQ-1btJIE}!2 z+Wy8-ktue^6K4ajpV4ue5nq-d9S|#jFsiOWWHjz?{uWZnD1oNyFF8Ojnl{tTU{b!K zYR~xn;|G#XhSnVVM$AKy^XgJH?6bq_E8X`slV>K%iX%*TgysG`o%E0?OFT4r(8}n{*j?$%;10B$y9~dO6B_GAe+_<|&h}4n zW}>$SKt=7(riz3Yg|=L>?4D3Ukg`u9(0JRuYkdZ5p0QCXmS7{R9rTvbPp%3mc>unU z^IFPCvyZXzPfeblR*~qSp#DW>2L+1v>xFIz+O1HujJ6{U>=CPeGq1w%H;_cwO0LUl zyA_fY?a0ij)rc%m;xWrC7`EUJ>bi4+?8E`wbMjK_yf=kJ#wdLG>=v9RKqN6ni z6N5w3=^Rkw9iW4VdN8O3Y3Em(oKFo3m}FX1m246S9)X=g;iM7IsBykD>y$uS=E)CYi&4 zmkswckhw}Txp7h@VevuRL1{GgBMLLdXvqTMo$}nHl7(z-cp>JF`Hxp;6XhI7Y=aYX zs)+Z73G{tI`D=%jzfcV%z()1w-EPj8Q#S=L<}V}3y4r$HF9$657^69af3p!!DQI06 zjnVRbqyS4hExTR4Z?d<4u}*XWn@v1o>8LuaHj!H@ybjEF0g<% z?%L!Cy@)4n?_3dF<0{wI zma7;Z1@(igF%RlhsPJm1InH!M3e`hY-zbhCSeC(K`)NFW1>)a9*^I|L| z-+y!MH0^7ytCcK~P3%3sVrv9R^fKukMJ>S7sx#4MK@m?6+GP|Qx+0J*h|ZUj zL7PV-vdUuI3xYNB=hBc`(5tuZ7NE4CiG(W^QBZ_?Zt0Ovji1Q*&&oOLg5xC-7WJ}| QH=iH~-ox8na3qZRH->`wZU6uP literal 0 HcmV?d00001 diff --git a/extras/WatchFaces/2_7_SEG.png b/extras/WatchFaces/2_7_SEG.png new file mode 100644 index 0000000000000000000000000000000000000000..01e7b30c6770500971e9603578e77fc453e062f5 GIT binary patch literal 3936 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 literal 0 HcmV?d00001 diff --git a/extras/WatchFaces/3_DOS.png b/extras/WatchFaces/3_DOS.png new file mode 100644 index 0000000000000000000000000000000000000000..b95c356229cbfe1589db9b74da1cff06ca123755 GIT binary patch literal 4605 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 AQUCw| literal 0 HcmV?d00001 diff --git a/extras/WatchFaces/4_Pokemon.png b/extras/WatchFaces/4_Pokemon.png new file mode 100644 index 0000000000000000000000000000000000000000..ba3ffe6baae600f795a3baa5aec82516742653af GIT binary patch literal 4620 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 IM6N<$f*H~`a{vGU literal 0 HcmV?d00001 diff --git a/extras/index.json b/extras/WatchFaces/index.json similarity index 68% rename from extras/index.json rename to extras/WatchFaces/index.json index f59d0d6..f1cc1ad 100644 --- a/extras/index.json +++ b/extras/WatchFaces/index.json @@ -4,7 +4,7 @@ "id" : "1", "name" : "Basic", "author" : "SQFMI", - "screenshot" : "", + "screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/1_Basic.png", "source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/Basic", "version" : "1.0.0" }, @@ -12,7 +12,7 @@ "id" : "2", "name" : "7_SEG", "author" : "SQFMI", - "screenshot" : "", + "screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/2_7_SEG.png", "source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/7_SEG", "version" : "1.0.0" }, @@ -20,7 +20,7 @@ "id" : "3", "name" : "DOS", "author" : "SQFMI", - "screenshot" : "", + "screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/3_DOS.png", "source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/DOS", "version" : "1.0.0" }, @@ -28,7 +28,7 @@ "id" : "4", "name" : "Pokemon", "author" : "SQFMI", - "screenshot" : "", + "screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/4_Pokemon.png", "source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/Pokemon", "version" : "1.0.0" }, @@ -36,7 +36,7 @@ "id" : "5", "name" : "StarryHorizon", "author" : "dandelany", - "screenshot" : "", + "screenshot" : "https://raw.githubusercontent.com/sqfmi/Watchy/master/extras/WatchFaces/5_StarryHorizon.png", "source" : "https://github.com/sqfmi/Watchy/tree/master/examples/WatchFaces/StarryHorizon", "version" : "1.0.0" }