ArduinoDumbDisplay v0.9.9-r41
DumbDisplay Arduino Library -- https://github.com/trevorwslee/Arduino-DumbDisplay
 
Loading...
Searching...
No Matches
dumbdisplay.h
1/*
2
3============================
4
5if want to disable int parameter encoding, define DD_DISABLE_PARAM_ENCODING before including dumbdisplay.h, like
6
7#define DD_DISABLE_PARAM_ENCODING
8
9=============================
10
11*/
12
13#ifdef DD_DISABLE_PARAM_ENCODING
14 #pragma "message ***** DD_DISABLE_PARAM_ENCODING *****"
15#endif
16
17
18
19
20#ifndef dumbdisplay_h
21#define dumbdisplay_h
22
23
24// not used???
25// #ifdef DD_4_ESP32
26// #include <esp_spp_api.h>
27// #include "HardwareSerial.h"
28// #endif
29
30
31#define DUMBDISPLAY_BAUD 115200
32#define DD_SERIAL_BAUD DUMBDISPLAY_BAUD
33#define DD_WIFI_PORT 10201
34
35
36#define DD_DEF_SEND_BUFFER_SIZE 128
37#define DD_DEF_IDLE_TIMEOUT 5000
38#define DD_DEF_TUNNEL_TIMEOUT 150000
39
40
41#include "_dd_util.h"
42
43
44#define DD_CONDENSE_COMMAND
45
46
47#define DD_HEX_COLOR(color) ("#" + String(color, 16))
48
49
50#ifdef DD_CONDENSE_COMMAND
51 #define DD_INT_COLOR(color) ("+" + DDIntEncoder(color).encoded())
52 #if defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO) || defined(DD_DISABLE_PARAM_ENCODING)
53 #define DD_RGB_COLOR(r, g, b) (String(r) + "-" + String(g) + "-" + String(b))
54 #else
55 #define DD_RGB_COLOR(r, g, b) ("+" + DDIntEncoder(0xffffff & ((((((int32_t) (r)) << 8) + ((int32_t) (g))) << 8) + ((int32_t) (b)))).encoded())
56 #endif
57 // #if defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO)
58 // #define DD_RGB_COLOR(r, g, b) (String(r) + "-" + String(g) + "-" + String(b))
59 // //#define DD_RGB_COLOR(r, g, b) (String(r<0?0:(r>255?255:r)) + "-" + String(g<0?0:(g>255?255:g)) + "-" + String(b<0?0:(b>255?255:b)))
60 // #else
61 // #if defined(DD_DISABLE_PARAM_ENCODING)
62 // #define DD_RGB_COLOR(r, g, b) ("#" + String(0xffffff & ((((((int32_t) (r)) << 8) + ((int32_t) (g))) << 8) + ((int32_t) (b))), 16))
63 // #else
64 // #define DD_RGB_COLOR(r, g, b) ("+" + DDIntEncoder(0xffffff & ((((((int32_t) (r)) << 8) + ((int32_t) (g))) << 8) + ((int32_t) (b)))).encoded())
65 // #endif
66 // #endif
67#else
68 #define DD_RGB_COLOR(r, g, b) (String(r<0?0:(r>255?255:r)) + "-" + String(g<0?0:(g>255?255:g)) + "-" + String(b<0?0:(b>255?255:b)))
69 #define DD_INT_COLOR(color) ("+" + String(color))
70#endif
71
72
73
74#define DD_AP_HORI "H(*)"
75#define DD_AP_VERT "V(*)"
76#define DD_AP_STACK "S(*)"
77#define DD_AP_HORI_2(id1, id2) ("H(" + id1 + "+" + id2 + ")")
78#define DD_AP_VERT_2(id1, id2) ("V(" + id1 + "+" + id2 + ")")
79#define DD_AP_STACK_2(id1, id2) ("S(" + id1 + "+" + id2 + ")")
80#define DD_AP_HORI_3(id1, id2, id3) ("H(" + id1 + "+" + id2 + "+" + id3 + ")")
81#define DD_AP_VERT_3(id1, id2, id3) ("V(" + id1 + "+" + id2 + "+" + id3 + ")")
82#define DD_AP_STACK_3(id1, id2, id3) ("S(" + id1 + "+" + id2 + "+" + id3 + ")")
83#define DD_AP_HORI_4(id1, id2, id3, id4) ("H(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + ")")
84#define DD_AP_VERT_4(id1, id2, id3, id4) ("V(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + ")")
85#define DD_AP_STACK_4(id1, id2, id3, id4) ("S(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + ")")
86#define DD_AP_HORI_5(id1, id2, id3, id4, id5) ("H(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + "+" + id5 + ")")
87#define DD_AP_VERT_5(id1, id2, id3, id4, id5) ("V(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + "+" + id5 + ")")
88#define DD_AP_STACK_5(id1, id2, id3, id4, id5) ("S(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + "+" + id5 + ")")
89#define DD_AP_HORI_6(id1, id2, id3, id4, id5, id6) ("H(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + "+" + id5 + ")" + "+" + id6 + ")")
90#define DD_AP_VERT_6(id1, id2, id3, id4, id5, id6) ("V(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + "+" + id5 + ")" + "+" + id6 + ")")
91#define DD_AP_STACK_6(id1, id2, id3, id4, id5, id6) ("S(" + id1 + "+" + id2 + "+" + id3 + "+" + id4 + "+" + id5 + ")" + "+" + id6 + ")")
92
93#define DD_AP_PADDING(lp, tp, rp, bp, id) ("S/" + String(lp) + "-" + String(tp) + "-" + String(rp) + "-" + String(bp) + "(" + id + ")")
94
95#define DD_AP_SPACER(w, h) (String("<") + String(w) + "x" + String(h) + String(">"))
96
97#define DD_PROGRAM_SPACE_COMPRESS_BA_0 '!'
98#define DD_COMPRESS_BA_0 '0'
99
100#ifndef DD_TUNNEL_DEF_BUFFER_SIZE
101 #if defined(ARDUINO_AVR_UNO) || defined(ARDUINO_AVR_NANO)
102 #define DD_TUNNEL_DEF_BUFFER_SIZE 2
103 #else
104 #define DD_TUNNEL_DEF_BUFFER_SIZE 4
105 #endif
106#endif
107#if DD_TUNNEL_DEF_BUFFER_SIZE < 2
108 #error "DD_TUNNEL_DEF_BUFFER_SIZE must be at least 2"
109#endif
110
111
112#define DDIO_USE_DD_SERIAL
113
114#include "_dd_serial.h"
115#ifdef DDIO_USE_DD_SERIAL
116 extern DDSerial* _The_DD_Serial;
117#endif
118
119#include "_dd_io.h"
120#include "_dd_feedback.h"
121#include "_dd_colors.h"
122
123
124class DDLayer;
125
132typedef void (*DDFeedbackHandler)(DDLayer* pLayer, DDFeedbackType type, const DDFeedback& feedback);
133
134
135const int8_t DD_OBJECT_TYPE_LAYER = 0;
136const int8_t DD_OBJECT_TYPE_TUNNEL = 1;
137
138
140struct DDObject {
143#ifdef DD_NO_CUSTOM_DATA
144 #warning ??? DD_NO_CUSTOM_DATA set ???
145#else
148#endif
149public:
150 // since 20230601
151 virtual ~DDObject() {}
152};
153
154
156class DDLayer: public DDObject {
157 public:
167 void border(float size, const String& color, const String& shape = "flat", float extraSize = 0);
170 void noBorder();
174 void padding(float size);
178 void padding(float left, float top, float right, float bottom);
181 void noPadding();
185 void margin(float size);
189 void margin(float left, float top, float right, float bottom);
192 void noMargin();
197 void backgroundColor(const String& color, int opacity = 100);
203 void visible(bool visible);
209 void disabled(bool disabled = true);
213 void opacity(int opacity);
217 void alpha(int alpha);
223 void blend(const String& color, int alpha = 255, const String& mode = "darken");
226 void noblend();
228 void clear();
230 void flash();
232 void flashArea(int x, int y);
241 void explicitFeedback(int16_t x = 0, int16_t y = 0, const String& text = "", DDFeedbackType type = CLICK, const String& option = "");
242 inline const String& getLayerId() const { return layerId; }
248 void setFeedbackHandler(DDFeedbackHandler handler, const String& autoFeedbackMethod = "", const String& allowFeedbackTypes = "");
259 void enableFeedback(const String& autoFeedbackMethod = "", const String& allowFeedbackTypes = "");
266 void debugOnly(int i);
267 public:
268#ifndef DD_NO_FEEDBACK
270 inline DDFeedbackManager* getFeedbackManager() const { return pFeedbackManager; }
272 inline DDFeedbackHandler getFeedbackHandler() const { return feedbackHandler; }
273#endif
274 protected:
275 DDLayer(int8_t layerId);
276 public:
277 // made virtual since 20230601
278 virtual ~DDLayer();
279 protected:
280 void _enableFeedback();
281 protected:
282 String layerId;
283#ifndef DD_NO_FEEDBACK
284 // either feedbackManager or feedbackHandler is used
285 DDFeedbackManager *pFeedbackManager;
286 DDFeedbackHandler feedbackHandler;
287#endif
288};
289
290#define DD_DEF_LAYER_LEVEL_ID "_"
291
296 public:
301 void addLevel(const String& levelId, float width, float height, bool switchToIt = false);
303 inline void addLevel(const String& levelId, bool switchToIt = false) {
304 addLevel(levelId, 0, 0, switchToIt);
305 }
307 void addTopLevel(const String& levelId, float width = 0, float height = 0, bool switchToIt = false);
309 inline void addTopLevel(const String& levelId, bool switchToIt) {
310 addTopLevel(levelId, 0, 0, switchToIt);
311 }
315 void switchLevel(const String& levelId, bool addIfMissing = true);
317 void pushLevel();
320 void pushLevelAndSwitchTo(const String& switchTolevelId, bool addIfMissing = true);
322 void popLevel();
329 void setLevelAnchor(float x, float y, long reachInMillis = 0);
331 void moveLevelAnchorBy(float byX, float byY, long reachInMillis = 0);
336 void registerLevelBackground(const String& backgroundId, const String& backgroundImageName, const String& drawBackgroundOptions = "");
341 void setLevelBackground(const String& backgroundId, const String& backgroundImageName = "", const String& drawBackgroundOptions = "");
348 void animateLevelBackground(int fps, bool reset = true, const String& options = "");
351 void stopAnimateLevelBackground(bool reset = true);
354 void reorderLevel(const String& levelId, const String& how);
356 void exportLevelsAsImage(const String& imageFileName, bool cacheItNotSave = false);
358 void deleteLevel(const String& levelId);
359 protected:
360 MultiLevelDDLayer(int8_t layerId): DDLayer(layerId) {}
361};
362
363
364
365enum MbArrow { North, NorthEast, East, SouthEast, South, SouthWest, West, NorthWest };
366enum MbIcon { Heart, SmallHeart, Yes, No, Happy, Sad, Confused, Angry, Asleep, Surprised,
367 Silly, Fabulous, Meh, TShirt, Rollerskate, Duck, House, Tortoise, Butterfly, StickFigure,
368 Ghost, Sword, Giraffe, Skull, Umbrella, Snake, Rabbit, Cow, QuarterNote, EigthNote,
369 Pitchfork, Target, Triangle, LeftTriangle, Chessboard, Diamond, SmallDiamond, Square, SmallSquare, Scissors };
370
371class MbImage {
372 public:
373 MbImage(int8_t imageId) {
374 this->imageId = String(imageId);
375 }
376 inline const String& getImageId() const { return this->imageId; }
377 private:
378 String imageId;
379};
380
382class MbDDLayer: public DDLayer {
383 public:
385 MbDDLayer(int8_t layerId): DDLayer(layerId) {
386 }
388 void showIcon(MbIcon icon);
390 void showArrow(MbArrow arrow);
392 void showNumber(int num);
394 void showString(const String& str);
396 void plot(int x, int y);
398 void unplot(int x, int y);
400 void toggle(int x, int y);
406 void showLeds(const String& ledPattern);
409 void ledColor(const String& color);
410 MbImage* createImage(const String& ledPattern);
411 void releaseImage(MbImage *pImage);
412 void showImage(MbImage *pImage, int xOff);
413 void scrollImage(MbImage *pImage, int xOff, long interval);
414};
415
418 public:
420 TurtleDDLayer(int8_t layerId): MultiLevelDDLayer(layerId) {
421 }
423 void forward(int distance, bool withPen = true);
425 void backward(int distance, bool withPen = true);
427 void leftTurn(int angle);
429 void rightTurn(int angle);
431 void home(bool withPen = true);
433 void goTo(int x, int y, bool withPen = true);
435 void goBy(int byX, int byY, bool withPen = true);
437 void setHeading(int angle);
439 void penSize(int size);
442 void penColor(const String& color);
445 void fillColor(const String& color);
449 void penFilled(bool filled);
451 void setTextSize(int size);
454 void setTextFont(const String& fontName = "", int textSize = 0);
456 void penUp();
458 void penDown();
459 void beginFill();
460 void endFill();
462 void dot(int size, const String& color);
464 void circle(int radius, bool centered = false);
466 void oval(int width, int height, bool centered = false);
468 void arc(int width, int height, int startAngle, int sweepAngle, bool centered = false);
470 void triangle(int side1, int angle, int side2);
472 void isoscelesTriangle(int side, int angle);
474 void rectangle(int width, int height, bool centered = false);
476 void polygon(int side, int vertexCount);
480 void centeredPolygon(int radius, int vertexCount, bool inside = false);
482 void write(const String& text, bool draw = false);
483};
484
486class LedGridDDLayer: public DDLayer {
487 public:
489 LedGridDDLayer(int8_t layerId): DDLayer(layerId) {
490 }
492 void turnOn(int x = 0, int y = 0);
494 void turnOff(int x = 0, int y = 0);
496 void toggle(int x = 0, int y = 0);
499 void turnOnEx(int x = 0, int y = 0, const String& onColor = "");
504 void bitwise(unsigned int bits, int y = 0, bool reverse = false);
507 void bitwise2(unsigned int bits_0, unsigned int bits_1, int y = 0, bool reverse = false);
510 void bitwise3(unsigned int bits_0, unsigned int bits_1, unsigned int bits_2, int y = 0, bool reverse = false);
513 void bitwise4(unsigned int bits_0, unsigned int bits_1, unsigned int bits_2, unsigned int bits_3, int y = 0, bool reverse = false);
516 void horizontalBar(int count, bool rightToLeft = false);
519 void verticalBar(int count, bool bottomToTop = true);
524 void horizontalBarEx(int count, int startX = 0, const String& color = "");
529 void verticalBarEx(int count, int startY = 0, const String& color = "");
532 void onColor(const String& color);
535 void offColor(const String& color);
538};
539
545class LcdDDLayer: public DDLayer {
546 public:
548 LcdDDLayer(int8_t layerId): DDLayer(layerId) {
549 }
551 void print(const String& text);
553 void home();
557 void setCursor(int x, int y);
559 void cursor();
561 void noCursor();
566 void display();
567 void noDisplay();
568 void scrollDisplayLeft();
569 void scrollDisplayRight();
572 void writeLine(const String& text, int y = 0, const String& align = "L");
574 void writeRightAlignedLine(const String& text, int y = 0);
576 void writeCenteredLine(const String& text, int y = 0);
579 void pixelColor(const String &color);
582 void bgPixelColor(const String &color);
585};
586
587
589 public:
591 SelectionBaseDDLayer(int8_t layerId): DDLayer(layerId) {
592 _enableFeedback();
593 }
596 void pixelColor(const String &color);
598 void selectAll();
604 void highlightBorder(bool forSelected, const String& borderColor = "", const String& borderShape = "");
605};
606
612 public:
614 SelectionDDLayer(int8_t layerId): SelectionBaseDDLayer(layerId) {}
617 void text(const String& text, int y = 0, int horiSelectionIdx = 0, int vertSelectionIdx = 0, const String& align = "L");
619 void textCentered(const String& text, int y = 0, int horiSelectionIdx = 0, int vertSelectionIdx = 0);
621 void textRightAligned(const String& text, int y = 0, int horiSelectionIdx = 0, int vertSelectionIdx = 0);
624 void unselectedText(const String& text, int y = 0, int horiSelectionIdx = 0, int vertSelectionIdx = 0, const String& align = "L");
626 void unselectedTextCentered(const String& text, int y = 0, int horiSelectionIdx = 0, int vertSelectionIdx = 0);
628 void unselectedTextRightAligned(const String& text, int y = 0, int horiSelectionIdx = 0, int vertSelectionIdx = 0);
630 void select(int horiSelectionIdx = 0, int vertSelectionIdx = 0, bool deselectTheOthers = true);
632 void deselect(int horiSelectionIdx = 0, int vertSelectionIdx = 0, bool selectTheOthers = false);
634 void setSelected(bool selected, int horiSelectionIdx = 0, int vertSelectionIdx = 0) {
635 if (selected) {
636 select(horiSelectionIdx, vertSelectionIdx, false);
637 } else {
638 deselect(horiSelectionIdx, vertSelectionIdx, false);
639 }
640 }
642 void selected(bool selected, int horiSelectionIdx = 0, int vertSelectionIdx = 0, bool reverseTheOthers = false);
643};
644
651 public:
653 SelectionListDDLayer(int8_t layerId): SelectionBaseDDLayer(layerId) {}
656 void add(int selectionIdx);
659 void remove(int selectionIdx);
661 void offset(int offset);
664 void text(int selectionIdx, const String& text, int y = 0, const String& align = "L");
666 void textCentered(int selectionIdx, const String& text, int y = 0);
668 void textRightAligned(int selectionIdx, const String& text, int y = 0);
671 void unselectedText(int selectionIdx, const String& text, int y = 0, const String& align = "L");
673 void unselectedTextCentered(int selectionIdx, const String& text, int y = 0);
675 void unselectedTextRightAligned(int selectionIdx, const String& text, int y = 0);
677 void select(int selectionIdx, bool deselectTheOthers = true);
679 void deselect(int selectionIdx, bool selectTheOthers = false);
681 void selected(int selectionIdx, bool selected, bool reverseTheOthers = false);
682};
683
686 public:
688 GraphicalDDLayer(int8_t layerId): MultiLevelDDLayer(layerId) {
689 }
691 void setRotation(int8_t rotationType);
693 void setCursor(int x, int y);
695 void moveCursorBy(int byX, int byY);
699 void setTextColor(const String& color, const String& bgColor = "");
701 void setTextSize(int size);
705 void setTextFont(const String& fontName);
709 inline void setTextFont(const String& fontName, int textSize) {
710 setTextFont(fontName);
711 if (textSize > 0) {
712 setTextSize(textSize);
713 }
714 }
716 void setTextWrap(bool wrapOn);
719 void fillScreen(const String& color);
721 void print(const String& text);
723 void println(const String& text = "");
728 void drawChar(int x, int y, char c, const String& color = "", const String& bgColor = "", int size = 0);
733 void drawStr(int x, int y, const String& string, const String& color = "", const String& bgColor = "", int size = 0);
736 void drawTextLine(const String& text, int y, const String& align = "L", const String& color = "", const String& bgColor = "", int size = 0);
739 void drawPixel(int x, int y, const String& color = "");
742 void drawLine(int x1, int y1, int x2, int y2, const String& color = "");
745 void drawCircle(int x, int y, int r, const String& color = "", bool filled = false);
746 // draw filled circle
748 inline void fillCircle(int x, int y, int r, const String& color = "") {
749 drawCircle(x, y, r, color, true);
750 }
753 void drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, const String& color = "", bool filled = false);
756 inline void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3, const String& color = "") {
757 drawTriangle(x1, y1, x2, y2, x3, y3, color, true);
758 }
761 void drawRect(int x, int y, int w, int h, const String& color = "", bool filled = false);
764 inline void fillRect(int x, int y, int w, int h, const String& color = "") {
765 drawRect(x, y, w, h, color, true);
766 }
769 void drawRoundRect(int x, int y, int w, int h, int r, const String& color = "", bool filled = false);
772 inline void fillRoundRect(int x, int y, int w, int h, int r, const String& color = "") {
773 drawRoundRect(x, y, w, h, r, color, true);
774 }
777 void drawOval(int x, int y, int w, int h, const String& color = "", bool filled = false);
780 inline void fillOval(int x, int y, int w, int h, const String& color = "") {
781 drawOval(x, y, w, h, color, true);
782 }
785 void drawArc(int x, int y, int w, int h, int startAngle, int sweepAngle, bool useCenter, const String& color = "", bool filled = false);
788 inline void fillArc(int x, int y, int w, int h, int startAngle, int sweepAngle, bool useCenter, const String& color = "") {
789 drawArc(x, y, w, h, startAngle, sweepAngle, useCenter, color, true);
790 }
792 void forward(int distance);
794 void leftTurn(int angle);
796 void rightTurn(int angle);
798 void setHeading(int angle);
800 void penSize(int size);
803 void penColor(const String& color);
806 void fillColor(const String& color);
810 void circle(int radius, bool centered = false);
812 void oval(int width, int height, bool centered = false);
814 void arc(int width, int height, int startAngle, int sweepAngle, bool centered = false);
816 void triangle(int side1, int angle, int side2);
818 void isoscelesTriangle(int side, int angle);
820 void rectangle(int width, int height, bool centered = false);
822 void polygon(int side, int vertexCount);
827 void centeredPolygon(int radius, int vertexCount, bool inside = false);
830 void write(const String& text, bool draw = false);
834 void loadImageFile(const String& imageFileName, int w = 0, int h = 0, const String& asImageFileName = "");
840 inline void loadImageFileScaled(const String& imageFileName, int w, int h, const String& asImageFileName) {
841 loadImageFile(imageFileName, w, h, asImageFileName);
842 }
843 void loadImageFileCropped(const String& imageFileName, int x, int y, int w, int h, const String& asImageFileName, int scaleW = 0, int scaleH = 0);
845 void unloadImageFile(const String& imageFileName);
851 void drawImageFile(const String& imageFileName, int x = 0, int y = 0, int w = 0, int h = 0, const String& options = "");
853 inline void drawImageFile(const String& imageFileName, const String& options) {
854 drawImageFile(imageFileName, 0, 0, 0, 0, options);
855 }
858 inline void drawImageFileScaled(const String& imageFileName, int w, int h, const String& options = "") {
859 drawImageFile(imageFileName, 0, 0, w, h, options);
860 }
864 void drawImageFileFit(const String& imageFileName, int x = 0, int y = 0, int w = 0, int h = 0, const String& options = "");
866 inline void drawImageFileFit(const String& imageFileName, const String& options) {
867 drawImageFileFit(imageFileName, 0, 0, 0, 0, options);
868 }
871 void cacheImage(const String& imageName, const uint8_t *bytes, int byteCount, char compressionMethod = 0);
874 void cacheImageWithTS(const String& imageName, const uint8_t *bytes, int byteCount, long imageTimestamp, char compressionMethod = 0);
877 void cachePixelImage(const String& imageName, const uint8_t *bytes, int width, int height, const String& color = "", char compressionMethod = 0);
880 void cachePixelImage16(const String& imageName, const uint16_t *data, int width, int height, const String& options = "", char compressMethod = 0);
883 void cachePixelImageGS(const String& imageName, const uint8_t *data, int width, int height, const String& options = "", char compressMethod = 0);
886 void saveCachedImageFile(const String& imageName, const String& asImageName = "");
887#ifdef ESP32
890 void saveCachedImageFileWithTS(const String& imageName, const String& asImageName, int64_t imageTimestamp);
891#endif
894 void saveCachedImageFileAsync(const String& imageName, const String& asImageName = "");
895#ifdef ESP32
898 void saveCachedImageFileWithTSAsync(const String& imageName, const String& asImageName, int64_t imageTimestamp);
899#endif
902 void saveCachedImageFiles(const String& stitchAsImageName = "");
903};
904
905
908 public:
910 SevenSegmentRowDDLayer(int8_t layerId): DDLayer(layerId) {
911 }
914 void segmentColor(const String& color);
917 void resetSegmentOffColor(const String& color);
923 void turnOn(const String& segments, int digitIdx = 0);
927 void turnOff(const String& segments, int digitIdx = 0);
930 void setOn(const String& segments = "", int digitIdx = 0);
932 void showDigit(int digit, int digitIdx = 0);
934 void showNumber(float number, const String& padding = " ");
936 void showHexNumber(int16_t number);
939 void showFormatted(const String& formatted, bool completeReplace = true, int startIdx = 0);
940};
941
942
947 public:
949 JoystickDDLayer(int8_t layerId): DDLayer(layerId) {
950 _enableFeedback();
951 }
954 void autoRecenter(bool autoRecenter = true);
956 void colors(const String& stickColor, const String& stickOutlineColor, const String& socketColor = "", const String& socketOutlineColor = "");
961 void moveToPos(int16_t x, int16_t y, bool sendFeedback = false);
964 void moveToCenter(bool sendFeedback = false);
969 void valueRange(int16_t minValue, int16_t maxValue, int valueStep = 1, bool sendFeedback = false);
971 void snappy(bool snappy = true);
973 void showValue(bool show = true, const String& color = "");
974};
975
977class PlotterDDLayer: public DDLayer {
978 public:
980 PlotterDDLayer(int8_t layerId): DDLayer(layerId) {
981 }
984 void label(const String& key, const String& lab);
985 inline void label(const String& lab) { label("", lab); }
988 void set(const String& key, float value);
990 inline void set(float value) { set("", value); }
991 void set(const String& key1, float value1, const String& key2, float value2);
992 void set(const String& key1, float value1, const String& key2, float value2, const String& key3, float value3);
993 void set(const String& key1, float value1, const String& key2, float value2, const String& key3, float value3, const String& key4, float value4);
994};
995
996
1000 public:
1002 TomTomMapDDLayer(int8_t layerId): DDLayer(layerId) {
1003 }
1004 void goTo(float latitude, float longitude, const String& label = "");
1005 void zoomTo(float latitude, float longitude, float zoomLevel = 15.0, const String& label = "");
1006 void zoom(float zoomLevel);
1007};
1008
1009
1012 public:
1014 TerminalDDLayer(int8_t layerId): DDLayer(layerId) {
1015 }
1016 void print(const String& val);
1017 void println(const String& val);
1018 inline void print(int intVal) {
1019 String val(intVal);
1020 print(val);
1021 }
1022 inline void println(int intVal) {
1023 String val(intVal);
1024 print(val);
1025 }
1026 inline void print(float floatVal) {
1027 String val(floatVal);
1028 print(val);
1029 }
1030 inline void println(float floatVal) {
1031 String val(floatVal);
1032 print(val);
1033 }
1034 inline void println() {
1035 println("");
1036 }
1037};
1038
1042 public:
1044 WebViewDDLayer(int8_t layerId): DDLayer(layerId) {
1045 _enableFeedback();
1046 }
1047 void loadUrl(const String& url);
1048 void loadHtml(const String& html);
1049 void execJs(const String& js);
1050};
1051
1052
1056 public:
1058 DumbDisplayWindowDDLayer(int8_t layerId): DDLayer(layerId) {
1059 }
1060 void connect(const String& deviceType, const String& deviceName, const String& deviceAddress);
1061 void disconnect();
1062};
1063
1067 public:
1069 RtspClientDDLayer(int8_t layerId): DDLayer(layerId) {}
1071 void start(const String& url);
1072 void stop();
1073};
1074
1075
1076
1077
1078
1081 public:
1082 DDTunnelEndpoint(const String& endPoint) {
1083 this->endPoint = endPoint;
1084 this->headers = "";
1085 this->params = "";
1086 }
1088 void resetEndpoint(const String& endPoint) {
1089 this->endPoint = endPoint;
1090 }
1093 void resetSoundAttachment(const String& soundName) {
1094 if (soundName == "") {
1095 this->attachmentId = "";
1096 } else {
1097 this->attachmentId = "sound:" + soundName;
1098 }
1099 }
1102 this->headers = "";
1103 }
1106 this->params = "";
1107 }
1109 void addParam(const String& param) {
1110 if (true) {
1111 if (this->params.length() > 0) {
1112 this->params.concat(',');
1113 }
1114 this->params.concat(param);
1115 } else {
1116 if (this->params == "") {
1117 this->params = param;
1118 } else {
1119 this->params = this->params + "," + param;
1120 }
1121 }
1122 }
1124 void addNamedParam(const String& paramName, const String& paramValue) {
1125 addParam(paramName + "=" + paramValue);
1126 }
1128 void addHeader(const String& headerKey, const String& headerValue) {
1129 if (true) {
1130 if (this->headers.length() > 0) {
1131 this->headers.concat('|');
1132 }
1133 this->headers.concat(headerKey);
1134 this->headers.concat(":");
1135 this->headers.concat(headerValue);
1136 } else {
1137 if (this->headers == "") {
1138 this->headers = String(headerKey) + ":" + headerValue;
1139 } else {
1140 this->headers = this->headers + "|" + headerKey + ":" + headerValue;
1141 }
1142 }
1143 }
1144 public:
1145 String endPoint;
1146 String headers;
1147 String attachmentId;
1148 String params;
1149};
1150
1151
1153class DDTunnel: public DDObject {
1154 public:
1156 DDTunnel(const String& type, int8_t tunnelId, const String& params, const String& endPoint/*, bool connectNow*/);
1157 void afterConstruct(bool connectNow);
1158 virtual ~DDTunnel();
1159 public:
1160 const String& getEndpoint() { return endPoint; }
1161 public:
1162 virtual void release();
1163 virtual void reconnect();
1164 void reconnectTo(const String& endPoint);
1168 void reconnectToSetParams(const String& endPoint, const String& params) {
1169 this->endPoint = endPoint;
1170 this->params = params;
1171 reconnect();
1172 }
1175 this->endPoint = endpoint.endPoint;
1176 this->headers = endpoint.headers;
1177 this->attachmentId = endpoint.attachmentId;
1178 this->params = endpoint.params;
1179 reconnect();
1180 }
1181 const String& getTunnelId() const { return tunnelId; }
1182 protected:
1183 inline bool _pending() { return doneState == 0; }
1184 //int _count();
1185 inline bool _timedOut() { return /*timedOut*/doneState == -1; }
1186 virtual bool _eof(long timeoutMillis);
1187 //void _readLine(String &buffer);
1188 void _writeLine(const String& data);
1189 void _writeSound(const String& soundName);
1190 public:
1191 virtual void handleInput(const String& data, uint8_t* fbBytes, bool final) { doneHandleInput(final); }
1192 protected:
1193 void doneHandleInput(bool final);
1194 protected:
1195 String type;
1196 String tunnelId;
1197 String endPoint;
1198 String headers;
1199 String attachmentId;
1200 String params;
1201 unsigned long connectMillis;
1202 // int arraySize;
1203 // String* dataArray;
1204 // int nextArrayIdx;
1205 // int validArrayIdx;
1206 private:
1207 //bool done;
1208 //bool timedOut;
1209 int8_t doneState; // 0 not done; 1 done; -1 timed out
1210};
1211
1212
1215 public:
1217 DDBufferedTunnel(const String& type, int8_t tunnelId, const String& params, const String& endPoint/*, bool connectNow*/, int8_t bufferSize);
1218 virtual ~DDBufferedTunnel();
1219 virtual void release();
1220 virtual void reconnect();
1221 //const String& getTunnelId() { return tunnelId; }
1222 protected:
1223 int _count();
1224 virtual bool _eof(long timeoutMillis);
1225 bool _readLine(String &buffer, uint8_t** pFBBytes = NULL);
1226 //void _writeLine(const String& data);
1227 public:
1229 virtual void handleInput(const String& data, uint8_t* fbBytes, bool final);
1230 private:
1231 // String endPoint;
1232 // String tunnelId;
1233 int8_t arraySize;
1234 String* dataArray;
1235 uint8_t** fbByesArray;
1236 int8_t nextArrayIdx;
1237 int8_t validArrayIdx;
1238 //bool done;
1239 public:
1240 bool pending();
1242 inline int count() { return _count(); }
1246 inline bool eof(long timeoutMillis = DD_DEF_TUNNEL_TIMEOUT) { return _eof(timeoutMillis); }
1248 inline bool timedOut() { return _timedOut(); }
1250 String readLine();
1252 inline bool readLine(String &buffer) { return _readLine(buffer); }
1254 inline void writeLine(const String& data) { _writeLine(data); }
1256 bool read(String& fieldId, String& fieldValue);
1257};
1258
1259
1266
1293
1296 public:
1298 SimpleToolDDTunnel(const String& type, int8_t tunnelId, const String& params, const String& endPoint/*, bool connectNow*/, int bufferSize):
1299 BasicDDTunnel(type, tunnelId, params, endPoint/*, connectNow*/, bufferSize) {
1300 this->result = 0;
1301 }
1302 public:
1303 virtual void reconnect();
1306 private:
1307 int result;
1308};
1309
1312 float latitude;
1313 float longitude;
1314};
1317 public:
1319 GpsServiceDDTunnel(const String& type, int8_t tunnelId, const String& params, const String& endPoint/*, bool connectNow*/, int8_t bufferSize):
1320 BasicDDTunnel(type, tunnelId, params, endPoint/*, connectNow*/, bufferSize) {
1321 }
1322 public:
1324 void reconnectForLocation(int repeat = -1);
1325 bool readLocation(DDLocation& location);
1326};
1327
1328
1331 int left;
1332 int top;
1333 int right;
1334 int bottom;
1335 String label;
1336};
1339 public:
1341 ObjectDetectDemoServiceDDTunnel(const String& type, int8_t tunnelId, const String& params, const String& endPoint/*, bool connectNow*/, int8_t bufferSize):
1342 BasicDDTunnel(type, tunnelId, params, endPoint/*, connectNow*/, bufferSize) {
1343 }
1344 public:
1345 void reconnectForObjectDetect(const String& imageName);
1346 void reconnectForObjectDetectFrom(GraphicalDDLayer* pGraphicalLayer, const String& imageName);
1347 bool readObjectDetectResult(DDObjectDetectDemoResult& objectDetectResult);
1348};
1349
1351 DDImageData(): bytes(NULL) {};
1352 ~DDImageData();
1353 bool isValid() { return width > 0 && height > 0; }
1354 void release();
1355 int width;
1356 int height;
1357 int byteCount;
1358 uint8_t* bytes;
1359protected:
1360 void transferTo(DDImageData& imageData);
1361};
1363 void transferDataTo(DDPixelImage& pixelImage) { DDImageData::transferTo(pixelImage); }
1364};
1366 DDPixelImage16(): data(NULL) {};
1368 bool isValid() { return width > 0 && height > 0; }
1369 void transferTo(DDPixelImage16& pixelImage16);
1370 void release();
1371 int width;
1372 int height;
1373 int byteCount;
1374 uint16_t* data;
1375};
1376struct DDJpegImage: public DDImageData {
1377 void transferTo(DDJpegImage& jpegImage) { DDImageData::transferTo(jpegImage); }
1378};
1386 public:
1388 ImageRetrieverDDTunnel(const String& type, int8_t tunnelId, const String& params, const String& endPoint/*, bool connectNow*/, int8_t bufferSize):
1389 BasicDDTunnel(type, tunnelId, params, endPoint/*, connectNow*/, bufferSize) {
1390 }
1391 public:
1394 void reconnectForPixelImage(const String& imageName, int width, int height, bool fit = false);
1397 void reconnectForPixelImage16(const String& imageName, int width, int height, bool fit = false, bool grayscale = false);
1398 void reconnectForPixelImageGS(const String& imageName, int width, int height, bool fit = false);
1401 void reconnectForJpegImage(const String& imageName, int width, int height, int quality=100, bool fit = false);
1403 bool readPixelImage(DDPixelImage& pixelImage);
1405 bool readPixelImage16(DDPixelImage16& pixelImage16);
1406 bool readPixelImageGS(DDPixelImage& pixelImage);
1411 private:
1412 bool _readImageData(DDImageData& imageData, short type);
1413};
1414
1415
1416
1420 public:
1422 JsonDDTunnelMultiplexer(JsonDDTunnel** tunnels, int8_t tunnelCount);
1424 int count();
1425 bool eof();
1427 int read(String& fieldId, String& fieldValue);
1428 void release();
1429 void reconnect();
1430 private:
1431 int8_t tunnelCount;
1432 JsonDDTunnel** tunnels;
1433};
1434
1435#ifndef DD_NO_IDLE_CALLBACK
1439enum DDIdleConnectionState { IDLE_NOT_CONNECTED, IDLE_CONNECTING, IDLE_RECONNECTING };
1445typedef void (*DDIdleCallback)(long idleForMillis, DDIdleConnectionState connectionState);
1446#endif
1447
1448#ifndef DD_NO_CONNECT_VERSION_CHANGED_CALLBACK
1452typedef void (*DDConnectVersionChangedCallback)(int connectVersion);
1453#endif
1454
1455#ifndef DD_NO_DEBUG_INTERFACE
1459enum DDDebugConnectionState { DEBUG_NOT_CONNECTED, DEBUG_CONNECTING, DEBUG_CONNECTED, DEBUG_RECONNECTING, DEBUG_RECONNECTED };
1462 public:
1464 virtual void logConnectionState(DDDebugConnectionState connectionState) {}
1466 virtual void logSendCommand(int state) {}
1467 virtual void logError(const String& errMsg) {}
1468};
1469#endif
1470
1471
1472#ifndef DD_NO_PASSIVE_CONNECT
1481};
1482#endif
1483
1484
1485extern bool _DDDisableParamEncoding;
1486inline void DDDebugDisableParamEncoding() { _DDDisableParamEncoding = true; }
1487
1488
1493 public:
1494 DumbDisplay(DDInputOutput* pIO, uint16_t sendBufferSize = DD_DEF_SEND_BUFFER_SIZE, long idleTimeout = DD_DEF_IDLE_TIMEOUT/*, bool enableDoubleClick = true*/) {
1495#ifdef DD_DISABLE_PARAM_ENCODING
1496 DDDebugDisableParamEncoding();
1497#endif
1498#ifdef DD_NO_SERIAL
1499 #warning ***** DD_NO_SERIAL defined *****
1500#else
1501 #ifdef DDIO_USE_DD_SERIAL
1502 if (pIO->isForSerial() || pIO->isBackupBySerial()) {
1503 _The_DD_Serial = new DDSerial();
1504 }
1505 #endif
1506#endif
1507 initialize(pIO, sendBufferSize, idleTimeout/*, enableDoubleClick*/);
1508 }
1511 void connect();
1513 bool connected() const;
1521 void setFeedbackSingleClickOnly(bool singleClickOnly = true);
1529 void configAutoPin(const String& layoutSpec = DD_AP_VERT, bool autoShowHideLayers = false);
1530 // /// in addition to DumbDisplay::configAutoPin(), also configure the remaining layout spec for the remaining layers not mentioned in the layoutSpec
1531 // /// @see configAutoPin
1532 // /// @see addRemainingAutoPinConfig
1533 // void configAutoPinEx(const String& layoutSpec = DD_AP_VERT, const String& remainingLayoutSpec);
1535 void addRemainingAutoPinConfig(const String& remainingLayoutSpec);
1539 void configPinFrame(int xUnitCount = 100, int yUnitCount = 100, bool autoShowHideLayers = false);
1543 void pinLayer(DDLayer *pLayer, int uLeft, int uTop, int uWidth, int uHeight, const String& align = "");
1547 void pinAutoPinLayers(const String& layoutSpec, int uLeft, int uTop, int uWidth, int uHeight, const String& align = "");
1549 MbDDLayer* createMicrobitLayer(int width = 5, int height = 5);
1551 TurtleDDLayer* createTurtleLayer(int width, int height);
1553 LedGridDDLayer* createLedGridLayer(int colCount = 1, int rowCount = 1, int subColCount = 1, int subRowCount = 1);
1555 LcdDDLayer* createLcdLayer(int colCount = 16, int rowCount = 2, int charHeight = 0, const String& fontName = "");
1557 SelectionDDLayer* createSelectionLayer(int colCount = 16, int rowCount = 2,
1558 int horiSelectionCount = 1, int vertSelectionCount = 1,
1559 int charHeight = 0, const String& fontName = "",
1560 bool canDrawDots = true, float selectionBorderSizeCharHeightFactor = 0.3);
1562 SelectionListDDLayer* createSelectionListLayer(int colCount = 16, int rowCount = 2,
1563 int horiSelectionCount = 1, int vertSelectionCount = 1,
1564 int charHeight = 0, const String& fontName = "",
1565 bool canDrawDots = true, float selectionBorderSizeCharHeightFactor = 0.3);
1581 JoystickDDLayer* createJoystickLayer(int maxStickValue = 1023, const String& directions = "", float stickSizeFactor = 1.0/*, int stickValueDivider = 1*/);
1583 PlotterDDLayer* createPlotterLayer(int width, int height, int pixelsPerSecond = 10);
1587 PlotterDDLayer* createFixedRatePlotterLayer(int width, int height, int pixelsPerScale = 5);
1592 TomTomMapDDLayer* createTomTomMapLayer(const String& mapKey, int width, int height);
1595 TerminalDDLayer* createTerminalLayer(int width, int height);
1598 WebViewDDLayer* createWebViewLayer(int width, int height, const String& jsObjectName = "DD");
1604 RtspClientDDLayer* createRtspClient(int width, int height);
1608 BasicDDTunnel* createBasicTunnel(const String& endPoint, bool connectNow = true, int8_t bufferSize = DD_TUNNEL_DEF_BUFFER_SIZE);
1612 JsonDDTunnel* createJsonTunnel(const String& endPoint, bool connectNow = true, int8_t bufferSize = DD_TUNNEL_DEF_BUFFER_SIZE);
1617 JsonDDTunnel* createFilteredJsonTunnel(const String& endPoint, const String& fileNames, bool connectNow = true, int8_t bufferSize = DD_TUNNEL_DEF_BUFFER_SIZE);
1622 SimpleToolDDTunnel* createImageDownloadTunnel(const String& endPoint, const String& imageName, bool redownload = true);
1637 ObjectDetectDemoServiceDDTunnel* createObjectDetectDemoServiceTunnel(int scaleToWidth = 0, int scaleToHeight = 0, int maxNumObjs = 1);
1638 ImageRetrieverDDTunnel* createImageRetrieverTunnel();
1640 void deleteTunnel(DDTunnel *pTunnel);
1643 void backgroundColor(const String& color);
1650 void playbackLayerSetupCommands(const String& layerSetupPersistId);
1659 void stopRecordLayerCommands(const String& saveId = "", bool persistSave = false);
1666 void saveLayerCommands(const String& id, bool persist = false, bool stopAfterSave = false);
1671 void loadLayerCommands(const String& id);
1677 void capture(const String& imageFileName, int width, int height);
1679 void sendNoOp();
1681 void writeComment(const String& comment);
1683 void tone(uint32_t freq, uint32_t duration);
1684 void notone();
1686 void playSound(const String& soundName);
1687 void stopSound();
1689 void saveSound8(const String& soundName, const int8_t *bytes, int sampleCount, int sampleRate, int numChannels = 1);
1691 void saveSound16(const String& soundName, const int16_t *data, int sampleCount, int sampleRate, int numChannels = 1);
1693 void cacheSound8(const String& soundName, const int8_t *bytes, int sampleCount, int sampleRate, int numChannels = 1);
1695 void cacheSound16(const String& soundName, const int16_t *data, int sampleCount, int sampleRate, int numChannels = 1);
1697 void saveCachedSound(const String& soundName);
1700 void saveCachedSoundAsH(const String& soundName);
1702 int streamSound8(int sampleRate, int numChannels = 1);
1704 int streamSound16(int sampleRate, int numChannels = 1);
1707 int saveSoundChunked8(const String& soundName/*, const int8_t *bytes, int sampleCount*/, int sampleRate, int numChannels = 1);
1710 int saveSoundChunked16(const String& soundName/*, const int16_t *data, int sampleCount*/, int sampleRate, int numChannels = 1);
1713 int cacheSoundChunked8(const String& soundName/*, const int8_t *bytes, int sampleCount*/, int sampleRate, int numChannels = 1);
1716 int cacheSoundChunked16(const String& soundName/*, const int16_t *data, int sampleCount*/, int sampleRate, int numChannels = 1);
1718 void sendSoundChunk8(int chunkId, const int8_t *bytes, int sampleCount, bool isFinal = false);
1720 void sendSoundChunk16(int chunkId, const int16_t *data, int sampleCount, bool isFinal = false);
1722 void saveImage(const String& imageName, const uint8_t *bytes, int byteCount);
1724 void savePixelImage(const String& imageName, const uint8_t *bytes, int width, int height, const String& color = "", char compressMethod = 0);
1726 void savePixelImage16(const String& imageName, const uint16_t *data, int width, int height, const String& options = "", char compressMethod = 0);
1728 void savePixelImageGS(const String& imageName, const uint8_t *data, int width, int height, const String& options = "", char compressMethod = 0);
1732 void stitchImages(const String& imageNames, const String& asImageName);
1734 void alert(const String& message, const String& title = "");
1737 void reorderLayer(DDLayer *pLayer, const String& how);
1739 void deleteLayer(DDLayer *pLayer);
1741 void walkLayers(void (*walker)(DDLayer *));
1742 #ifndef DD_NO_IDLE_CALLBACK
1747 void setIdleCallback(DDIdleCallback idleCallback);
1748#endif
1749#ifndef DD_NO_CONNECT_VERSION_CHANGED_CALLBACK
1753#endif
1757 void logToSerial(const String& logLine, bool force = false);
1759 void log(const String& logLine, bool isError = false);
1760 public:
1761 #ifndef DD_NO_PASSIVE_CONNECT
1774#endif
1775 public:
1778#ifndef DD_NO_DEBUG_INTERFACE
1779 void debugSetup(DDDebugInterface *debugInterface);
1780#endif
1781 void debugOnly(int i);
1782 private:
1783 void initialize(DDInputOutput* pIO, uint16_t sendBufferSize, long idleTimeout/*, bool enableDoubleClick*/);
1784 //bool canLogToSerial();
1785};
1786
1787#include "_dd_misc.h"
1788
1789#endif
Class for DD "tunnel", with buffering support; created with DumbDisplay::createBasicTunnel()
Definition: dumbdisplay.h:1214
bool readLine(String &buffer)
read a line from buffer, in to the buffer passed in
Definition: dumbdisplay.h:1252
bool timedOut()
check whether EOF caused by timeout or not; note that timeout is only due to check of EOF with DDBuff...
Definition: dumbdisplay.h:1248
bool read(String &fieldId, String &fieldValue)
read a piece of JSON data
void writeLine(const String &data)
write a line
Definition: dumbdisplay.h:1254
bool eof(long timeoutMillis=DD_DEF_TUNNEL_TIMEOUT)
Definition: dumbdisplay.h:1246
virtual void handleInput(const String &data, uint8_t *fbBytes, bool final)
String readLine()
read a line from buffer
DDBufferedTunnel(const String &type, int8_t tunnelId, const String &params, const String &endPoint, int8_t bufferSize)
for internal use only
int count()
count buffer ready read
Definition: dumbdisplay.h:1242
Base class for debug callback set by calling DumbDisplay::debugSetup()
Definition: dumbdisplay.h:1461
virtual void logConnectionState(DDDebugConnectionState connectionState)
See DDDebugConnectionState.
Definition: dumbdisplay.h:1464
virtual void logSendCommand(int state)
Definition: dumbdisplay.h:1466
Class for DD input/output; you explicitly constructed it, pass in when instantiate DumbDisplay,...
Definition: _dd_io.h:9
Base class for the different layers support by DumbDisplay; created with various layer creation metho...
Definition: dumbdisplay.h:156
void visible(bool visible)
void explicitFeedback(int16_t x=0, int16_t y=0, const String &text="", DDFeedbackType type=CLICK, const String &option="")
void noBorder()
void enableFeedback(const String &autoFeedbackMethod="", const String &allowFeedbackTypes="")
void padding(float left, float top, float right, float bottom)
void blend(const String &color, int alpha=255, const String &mode="darken")
void setFeedbackHandler(DDFeedbackHandler handler, const String &autoFeedbackMethod="", const String &allowFeedbackTypes="")
void noblend()
void clear()
clear the layer
void disabled(bool disabled=true)
DDFeedbackHandler getFeedbackHandler() const
Definition: dumbdisplay.h:272
void transparent(bool transparent)
DDFeedbackManager * getFeedbackManager() const
Definition: dumbdisplay.h:270
void noMargin()
void opacity(int opacity)
void noPadding()
void backgroundColor(const String &color, int opacity=100)
const DDFeedback * getFeedback()
void alpha(int alpha)
void border(float size, const String &color, const String &shape="flat", float extraSize=0)
void flash()
normally used for "feedback" – flash the default way (layer + border)
void margin(float left, float top, float right, float bottom)
void debugOnly(int i)
for debug use
void margin(float size)
void noBackgroundColor()
void disableFeedback()
disable "feedback"
void flashArea(int x, int y)
normally used for "feedback" – flash the area (x, y) where the layer is clicked
void padding(float size)
Helper class for constructing "tunnel" endpoint, if the endpoint is not a simple URL....
Definition: dumbdisplay.h:1080
void resetParams()
reset params (to the endpoint query string)
Definition: dumbdisplay.h:1105
void resetSoundAttachment(const String &soundName)
Definition: dumbdisplay.h:1093
void addParam(const String &param)
add param (to the endpoint query string)
Definition: dumbdisplay.h:1109
void resetHeaders()
reset headers
Definition: dumbdisplay.h:1101
void addHeader(const String &headerKey, const String &headerValue)
add header to the request
Definition: dumbdisplay.h:1128
void resetEndpoint(const String &endPoint)
reset the endpoint
Definition: dumbdisplay.h:1088
void addNamedParam(const String &paramName, const String &paramValue)
add named param (to the endpoint query string)
Definition: dumbdisplay.h:1124
Base class for DD "tunnel".
Definition: dumbdisplay.h:1153
void reconnectToEndpoint(const DDTunnelEndpoint endpoint)
reconnect to specified endpoint. See DDTunnelEndpoint.
Definition: dumbdisplay.h:1174
void reconnectToSetParams(const String &endPoint, const String &params)
Definition: dumbdisplay.h:1168
DDTunnel(const String &type, int8_t tunnelId, const String &params, const String &endPoint)
for internal use only
The core class for DumbDisplay; everything starts here. The most important argument to DumbDisplay is...
Definition: dumbdisplay.h:1492
int cacheSoundChunked8(const String &soundName, int sampleRate, int numChannels=1)
int getConnectVersion() const
void debugSetup(DDDebugInterface *debugInterface)
BasicDDTunnel * createGeneralServiceTunnel()
ObjectDetectDemoServiceDDTunnel * createObjectDetectDemoServiceTunnel(int scaleToWidth=0, int scaleToHeight=0, int maxNumObjs=1)
void backgroundColor(const String &color)
PlotterDDLayer * createFixedRatePlotterLayer(int width, int height, int pixelsPerScale=5)
void savePixelImage16(const String &imageName, const uint16_t *data, int width, int height, const String &options="", char compressMethod=0)
save 16-bit "pixel" image (i.e. 565 RGB image) with the given image data
void connect()
void saveCachedSoundAsH(const String &soundName)
void stitchImages(const String &imageNames, const String &asImageName)
bool canPrintToSerial()
check if it is safe to print to Serial
BasicDDTunnel * createDateTimeServiceTunnel()
GraphicalDDLayer * createGraphicalLayer(int width, int height)
TurtleDDLayer * createTurtleLayer(int width, int height)
create a Turtle-like layer
bool connectPassive(DDConnectPassiveStatus *pStatus=NULL)
void recordLayerCommands()
void saveCachedSound(const String &soundName)
save the cached sound
void setConnectVersionChangedCallback(DDConnectVersionChangedCallback connectVersionChangedCallback)
void setIdleCallback(DDIdleCallback idleCallback)
int cacheSoundChunked16(const String &soundName, int sampleRate, int numChannels=1)
void log(const String &logLine, bool isError=false)
like to Serial (if safe to do so); and if connected, will log as comment to DD as well
LcdDDLayer * createLcdLayer(int colCount=16, int rowCount=2, int charHeight=0, const String &fontName="")
create a LCD layer
TerminalDDLayer * createTerminalLayer(int width, int height)
int saveSoundChunked16(const String &soundName, int sampleRate, int numChannels=1)
int streamSound8(int sampleRate, int numChannels=1)
stream sound 8-bit sample (for playing sound)
void sendNoOp()
send "no-op" command
void configAutoPin(const String &layoutSpec=DD_AP_VERT, bool autoShowHideLayers=false)
int streamSound16(int sampleRate, int numChannels=1)
stream sound 16-bit sample (for playing sound)
void deleteTunnel(DDTunnel *pTunnel)
if finished using a "tunnel", delete it to release resource
void pinLayer(DDLayer *pLayer, int uLeft, int uTop, int uWidth, int uHeight, const String &align="")
WebViewDDLayer * createWebViewLayer(int width, int height, const String &jsObjectName="DD")
MbDDLayer * createMicrobitLayer(int width=5, int height=5)
create a Microbit-like layer
void savePixelImage(const String &imageName, const uint8_t *bytes, int width, int height, const String &color="", char compressMethod=0)
save single-bit "pixel" image (i.e. B&W image) with the given image data
void addRemainingAutoPinConfig(const String &remainingLayoutSpec)
add the "auto pin" config for layers not included in "auto pin" set by configAutoPin()
int saveSoundChunked8(const String &soundName, int sampleRate, int numChannels=1)
void cacheSound16(const String &soundName, const int16_t *data, int sampleCount, int sampleRate, int numChannels=1)
cache 16-bit sound with the given sound samples
void masterReset()
JsonDDTunnel * createJsonTunnel(const String &endPoint, bool connectNow=true, int8_t bufferSize=DD_TUNNEL_DEF_BUFFER_SIZE)
RtspClientDDLayer * createRtspClient(int width, int height)
void recordLayerSetupCommands()
basically, functions the same as recordLayerCommands()
void alert(const String &message, const String &title="")
pop up a dialog to alert
SevenSegmentRowDDLayer * create7SegmentRowLayer(int digitCount=1)
JoystickDDLayer * createJoystickLayer(int maxStickValue=1023, const String &directions="", float stickSizeFactor=1.0)
void loadLayerCommands(const String &id)
void cacheSound8(const String &soundName, const int8_t *bytes, int sampleCount, int sampleRate, int numChannels=1)
cache 8-bit sound with the given sound samples
void playSound(const String &soundName)
make DD app play the sound of the given sound file
void deleteLayer(DDLayer *pLayer)
if layer is no longer used; delete it to release resources
void reorderLayer(DDLayer *pLayer, const String &how)
DumbDisplayWindowDDLayer * createDumbDisplayWindowLayer(int width, int height)
void playbackLayerSetupCommands(const String &layerSetupPersistId)
void setFeedbackSingleClickOnly(bool singleClickOnly=true)
void savePixelImageGS(const String &imageName, const uint8_t *data, int width, int height, const String &options="", char compressMethod=0)
save grayscale "pixel" image with the given image data
void saveLayerCommands(const String &id, bool persist=false, bool stopAfterSave=false)
int getCompatibilityVersion() const
void writeComment(const String &comment)
write out a comment to DD app
void playbackLayerCommands()
playback recorded commands (unfreeze the display)
JsonDDTunnel * createFilteredJsonTunnel(const String &endPoint, const String &fileNames, bool connectNow=true, int8_t bufferSize=DD_TUNNEL_DEF_BUFFER_SIZE)
void saveSound16(const String &soundName, const int16_t *data, int sampleCount, int sampleRate, int numChannels=1)
save 16-bit sound with the given sound samples
void saveImage(const String &imageName, const uint8_t *bytes, int byteCount)
svae image with the given image data
BasicDDTunnel * createBasicTunnel(const String &endPoint, bool connectNow=true, int8_t bufferSize=DD_TUNNEL_DEF_BUFFER_SIZE)
void capture(const String &imageFileName, int width, int height)
void logToSerial(const String &logLine, bool force=false)
log line to Serial; if it is not safe to output to Serial, will write comment with DumbDisplay::write...
void stopRecordLayerCommands(const String &saveId="", bool persistSave=false)
SelectionListDDLayer * createSelectionListLayer(int colCount=16, int rowCount=2, int horiSelectionCount=1, int vertSelectionCount=1, int charHeight=0, const String &fontName="", bool canDrawDots=true, float selectionBorderSizeCharHeightFactor=0.3)
create a list "selection" layer
void walkLayers(void(*walker)(DDLayer *))
loop through all the existing layers calling the function passed in
TomTomMapDDLayer * createTomTomMapLayer(const String &mapKey, int width, int height)
LedGridDDLayer * createLedGridLayer(int colCount=1, int rowCount=1, int subColCount=1, int subRowCount=1)
create a LED-grid layer
SimpleToolDDTunnel * createImageDownloadTunnel(const String &endPoint, const String &imageName, bool redownload=true)
void saveSound8(const String &soundName, const int8_t *bytes, int sampleCount, int sampleRate, int numChannels=1)
save 8-bit sound with the given sound samples
bool connected() const
void sendSoundChunk8(int chunkId, const int8_t *bytes, int sampleCount, bool isFinal=false)
send 8-bit sound data chunk for saving/caching after calling saveSoundChunked8() or cacheSoundChunked...
void sendSoundChunk16(int chunkId, const int16_t *data, int sampleCount, bool isFinal=false)
send 16-bit sound data chunk for saving/caching after calling saveSoundChunked16() or cacheSoundChunk...
void pinAutoPinLayers(const String &layoutSpec, int uLeft, int uTop, int uWidth, int uHeight, const String &align="")
void configPinFrame(int xUnitCount=100, int yUnitCount=100, bool autoShowHideLayers=false)
SelectionDDLayer * createSelectionLayer(int colCount=16, int rowCount=2, int horiSelectionCount=1, int vertSelectionCount=1, int charHeight=0, const String &fontName="", bool canDrawDots=true, float selectionBorderSizeCharHeightFactor=0.3)
create a "selection" layer
PlotterDDLayer * createPlotterLayer(int width, int height, int pixelsPerSecond=10)
create a plotter layer
void tone(uint32_t freq, uint32_t duration)
make DD app sound a tone
GpsServiceDDTunnel * createGpsServiceTunnel()
Definition: dumbdisplay.h:1055
DumbDisplayWindowDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:1058
Class for GPS service "tunnel".
Definition: dumbdisplay.h:1316
GpsServiceDDTunnel(const String &type, int8_t tunnelId, const String &params, const String &endPoint, int8_t bufferSize)
Definition: dumbdisplay.h:1319
void reconnectForLocation(int repeat=-1)
Class for graphical LCD layer; created with DumbDisplay::createGraphicalLayer()
Definition: dumbdisplay.h:685
void drawImageFileFit(const String &imageFileName, const String &options)
another version of drawImageFileFit() with options
Definition: dumbdisplay.h:866
void setTextSize(int size)
set text size
void drawCircle(int x, int y, int r, const String &color="", bool filled=false)
void println(const String &text="")
print text with line feed
void cachePixelImage16(const String &imageName, const uint16_t *data, int width, int height, const String &options="", char compressMethod=0)
void print(const String &text)
print text
void noFillColor()
set no fill color (for shape)
void loadImageFile(const String &imageFileName, int w=0, int h=0, const String &asImageFileName="")
void setTextWrap(bool wrapOn)
set whether "print" will auto wrap or not
void forward(int distance)
move forward (relative to cursor)
void saveCachedImageFiles(const String &stitchAsImageName="")
void cacheImageWithTS(const String &imageName, const uint8_t *bytes, int byteCount, long imageTimestamp, char compressionMethod=0)
void penSize(int size)
set pen size
void setHeading(int angle)
set heading angle (degree)
void circle(int radius, bool centered=false)
draw a circle; centered or not
void setTextFont()
reset text font and size
void setTextFont(const String &fontName, int textSize)
Definition: dumbdisplay.h:709
void isoscelesTriangle(int side, int angle)
draw isosceles triangle; given size and angle
void drawRect(int x, int y, int w, int h, const String &color="", bool filled=false)
void setTextColor(const String &color, const String &bgColor="")
void drawRoundRect(int x, int y, int w, int h, int r, const String &color="", bool filled=false)
void fillCircle(int x, int y, int r, const String &color="")
Definition: dumbdisplay.h:748
void drawOval(int x, int y, int w, int h, const String &color="", bool filled=false)
void arc(int width, int height, int startAngle, int sweepAngle, bool centered=false)
draw arc; centered or not
void fillRect(int x, int y, int w, int h, const String &color="")
Definition: dumbdisplay.h:764
void cachePixelImageGS(const String &imageName, const uint8_t *data, int width, int height, const String &options="", char compressMethod=0)
void rightTurn(int angle)
turn right
void setCursor(int x, int y)
set cursor to position
void saveCachedImageFile(const String &imageName, const String &asImageName="")
void fillScreen(const String &color)
void drawStr(int x, int y, const String &string, const String &color="", const String &bgColor="", int size=0)
void drawImageFile(const String &imageFileName, const String &options)
another version of drawImageFile() with options
Definition: dumbdisplay.h:853
GraphicalDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:688
void unloadImageFile(const String &imageFileName)
unload image file from cache
void unloadAllImageFiles()
unload all image files from cache
void fillArc(int x, int y, int w, int h, int startAngle, int sweepAngle, bool useCenter, const String &color="")
Definition: dumbdisplay.h:788
void write(const String &text, bool draw=false)
void cachePixelImage(const String &imageName, const uint8_t *bytes, int width, int height, const String &color="", char compressionMethod=0)
void drawChar(int x, int y, char c, const String &color="", const String &bgColor="", int size=0)
void penColor(const String &color)
void saveCachedImageFileAsync(const String &imageName, const String &asImageName="")
void polygon(int side, int vertexCount)
draw polygon given side and vertex count
void centeredPolygon(int radius, int vertexCount, bool inside=false)
void drawPixel(int x, int y, const String &color="")
void fillColor(const String &color)
void drawTextLine(const String &text, int y, const String &align="L", const String &color="", const String &bgColor="", int size=0)
void drawImageFileFit(const String &imageFileName, int x=0, int y=0, int w=0, int h=0, const String &options="")
void drawImageFileScaled(const String &imageFileName, int w, int h, const String &options="")
Definition: dumbdisplay.h:858
void drawTriangle(int x1, int y1, int x2, int y2, int x3, int y3, const String &color="", bool filled=false)
void setTextFont(const String &fontName)
void drawLine(int x1, int y1, int x2, int y2, const String &color="")
void leftTurn(int angle)
turn left
void triangle(int side1, int angle, int side2)
draw triangle (SAS)
void fillTriangle(int x1, int y1, int x2, int y2, int x3, int y3, const String &color="")
Definition: dumbdisplay.h:756
void drawImageFile(const String &imageFileName, int x=0, int y=0, int w=0, int h=0, const String &options="")
void cacheImage(const String &imageName, const uint8_t *bytes, int byteCount, char compressionMethod=0)
void moveCursorBy(int byX, int byY)
move cursor by some amount
void drawArc(int x, int y, int w, int h, int startAngle, int sweepAngle, bool useCenter, const String &color="", bool filled=false)
void fillRoundRect(int x, int y, int w, int h, int r, const String &color="")
Definition: dumbdisplay.h:772
void oval(int width, int height, bool centered=false)
draw an oval; centered or not
void setRotation(int8_t rotationType)
rotate the screen
void loadImageFileScaled(const String &imageFileName, int w, int h, const String &asImageFileName)
Definition: dumbdisplay.h:840
void rectangle(int width, int height, bool centered=false)
draw rectangle; centered or not
void fillOval(int x, int y, int w, int h, const String &color="")
Definition: dumbdisplay.h:780
Definition: dumbdisplay.h:1385
ImageRetrieverDDTunnel(const String &type, int8_t tunnelId, const String &params, const String &endPoint, int8_t bufferSize)
Definition: dumbdisplay.h:1388
bool readPixelImage16(DDPixelImage16 &pixelImage16)
get 16-bit image data retrieved with reconnectForPixelImage16
bool readJpegImage(DDJpegImage &jpeg)
get JPEG image data retrieved with reconnectForJpegImage
bool readPixelImage(DDPixelImage &pixelImage)
get single-bit image data retrieved with reconnectForPixelImage
bool readPixelImageGS16(DDPixelImage16 &pixelImage16)
get grayscale 16-bit image data retrieved with reconnectForPixelImageGS
void reconnectForJpegImage(const String &imageName, int width, int height, int quality=100, bool fit=false)
void reconnectForPixelImage16(const String &imageName, int width, int height, bool fit=false, bool grayscale=false)
void reconnectForPixelImage(const String &imageName, int width, int height, bool fit=false)
Class for virtual joystick layer; created with DumbDisplay::createJoystickLayer()
Definition: dumbdisplay.h:946
void moveToPos(int16_t x, int16_t y, bool sendFeedback=false)
void colors(const String &stickColor, const String &stickOutlineColor, const String &socketColor="", const String &socketOutlineColor="")
set the colors of the stick UI
void valueRange(int16_t minValue, int16_t maxValue, int valueStep=1, bool sendFeedback=false)
void snappy(bool snappy=true)
set 'snappy' makes stick snaps to closest value when moved
JoystickDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:949
void autoRecenter(bool autoRecenter=true)
void moveToCenter(bool sendFeedback=false)
void showValue(bool show=true, const String &color="")
show value on top of the stick
Definition: dumbdisplay.h:1419
JsonDDTunnelMultiplexer(JsonDDTunnel **tunnels, int8_t tunnelCount)
int read(String &fieldId, String &fieldValue)
Class for LCD layer; created with DumbDisplay::createLcdLayer()
Definition: dumbdisplay.h:545
void cursor()
show cursor
void noBgPixelColor()
set no "background" (off) pixel color
void bgPixelColor(const String &color)
void setCursor(int x, int y)
void print(const String &text)
print text, moving cursor
void pixelColor(const String &color)
void autoscroll()
enable auto-scroll
void writeCenteredLine(const String &text, int y=0)
write text as a line, with align "centered"
void writeRightAlignedLine(const String &text, int y=0)
write text as a right-aligned line
void noAutoscroll()
disable auto-scroll
LcdDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:548
void home()
move cursor to home
void noCursor()
hide cursor
void writeLine(const String &text, int y=0, const String &align="L")
Class for LED grid layer; created with DumbDisplay::createLedGridLayer()
Definition: dumbdisplay.h:486
LedGridDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:489
void onColor(const String &color)
void turnOff(int x=0, int y=0)
turn off LED @ (x, y)
void toggle(int x=0, int y=0)
toggle LED @ (x, y)
void bitwise3(unsigned int bits_0, unsigned int bits_1, unsigned int bits_2, int y=0, bool reverse=false)
void verticalBarEx(int count, int startY=0, const String &color="")
void verticalBar(int count, bool bottomToTop=true)
void bitwise(unsigned int bits, int y=0, bool reverse=false)
void bitwise4(unsigned int bits_0, unsigned int bits_1, unsigned int bits_2, unsigned int bits_3, int y=0, bool reverse=false)
void horizontalBar(int count, bool rightToLeft=false)
void offColor(const String &color)
void turnOn(int x=0, int y=0)
turn on LED @ (x, y)
void noOffColor()
set no LED off color
void turnOnEx(int x=0, int y=0, const String &onColor="")
void horizontalBarEx(int count, int startX=0, const String &color="")
void bitwise2(unsigned int bits_0, unsigned int bits_1, int y=0, bool reverse=false)
Class for Microbit-like DD layer; created with DumbDisplay::createMicrobitLayer()
Definition: dumbdisplay.h:382
void plot(int x, int y)
turn on LED @ (x, y)
void showString(const String &str)
show string; scroll if more than a single character; but you get to control timing by using delay()
void unplot(int x, int y)
turn off LED @ (x, y)
void showLeds(const String &ledPattern)
MbDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:385
void showIcon(MbIcon icon)
show Microbit icon
void showNumber(int num)
show number; scroll if more than a single digit; but you get to control timing by using delay()
void ledColor(const String &color)
void toggle(int x, int y)
toggle LED @ (x, y) on / off
void showArrow(MbArrow arrow)
show Microbit arrow
Definition: dumbdisplay.h:371
Definition: dumbdisplay.h:295
void pushLevelAndSwitchTo(const String &switchTolevelId, bool addIfMissing=true)
void moveLevelAnchorBy(float byX, float byY, long reachInMillis=0)
move the level anchor
void switchLevel(const String &levelId, bool addIfMissing=true)
void setLevelNoBackground()
set that the current level uses no background image
void popLevel()
pop a level from the level stack and make it the current level
void reorderLevel(const String &levelId, const String &how)
void stopAnimateLevelBackground(bool reset=true)
void setLevelAnchor(float x, float y, long reachInMillis=0)
set the anchor of the level; note that level anchor is the top-left corner of the level "opening"
void addTopLevel(const String &levelId, float width=0, float height=0, bool switchToIt=false)
like addLevel() but add to the top (i.e. will be drawn last)
void levelOpacity(int opacity)
void registerLevelBackground(const String &backgroundId, const String &backgroundImageName, const String &drawBackgroundOptions="")
void addTopLevel(const String &levelId, bool switchToIt)
another version of addTopLevel()
Definition: dumbdisplay.h:309
void deleteLevel(const String &levelId)
delete the specified level
void animateLevelBackground(int fps, bool reset=true, const String &options="")
void addLevel(const String &levelId, bool switchToIt=false)
another version of addLevel()
Definition: dumbdisplay.h:303
void pushLevel()
push the current level onto the level stack, to be pop with popLevel()
void levelTransparent(bool transparent)
set whether level is transparent
void setLevelBackground(const String &backgroundId, const String &backgroundImageName="", const String &drawBackgroundOptions="")
void exportLevelsAsImage(const String &imageFileName, bool cacheItNotSave=false)
export (and save) the levels as an image (without the decorations of the layer like border)
void addLevel(const String &levelId, float width, float height, bool switchToIt=false)
Class for "object detection demo" service "tunnel".
Definition: dumbdisplay.h:1338
ObjectDetectDemoServiceDDTunnel(const String &type, int8_t tunnelId, const String &params, const String &endPoint, int8_t bufferSize)
Definition: dumbdisplay.h:1341
Class for plotter layer; created with DumbDisplay::createPlotterLayer() or DumbDisplay::createFixedRa...
Definition: dumbdisplay.h:977
void label(const String &key, const String &lab)
void set(float value)
set value with empty key
Definition: dumbdisplay.h:990
void set(const String &key, float value)
PlotterDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:980
Definition: dumbdisplay.h:1066
RtspClientDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:1069
void start(const String &url)
Definition: dumbdisplay.h:588
void pixelColor(const String &color)
void highlightBorder(bool forSelected, const String &borderColor="", const String &borderShape="")
void deselectAll()
deselect all "selection" units
SelectionBaseDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:591
void selectAll()
select all "selection" units
Class for "selection" layer of multiple LCD-like "selection" units; created with DumbDisplay::createS...
Definition: dumbdisplay.h:611
void unselectedTextRightAligned(const String &text, int y=0, int horiSelectionIdx=0, int vertSelectionIdx=0)
set a "selection" unit right-aligned text (of y-th row) when unselected (it defaults to the same text...
void textCentered(const String &text, int y=0, int horiSelectionIdx=0, int vertSelectionIdx=0)
set a "selection" unit centered text (of y-th row)
void selected(bool selected, int horiSelectionIdx=0, int vertSelectionIdx=0, bool reverseTheOthers=false)
set a "selection" unit selected or not (combination of select() and deselect())
void setSelected(bool selected, int horiSelectionIdx=0, int vertSelectionIdx=0)
Definition: dumbdisplay.h:634
void unselectedTextCentered(const String &text, int y=0, int horiSelectionIdx=0, int vertSelectionIdx=0)
set a "selection" unit centered text (of y-th row) when unselected (it defaults to the same text as s...
void text(const String &text, int y=0, int horiSelectionIdx=0, int vertSelectionIdx=0, const String &align="L")
void select(int horiSelectionIdx=0, int vertSelectionIdx=0, bool deselectTheOthers=true)
select a "selection" unit
SelectionDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:614
void textRightAligned(const String &text, int y=0, int horiSelectionIdx=0, int vertSelectionIdx=0)
set a "selection" unit right-aligned text (of y-th row)
void unselectedText(const String &text, int y=0, int horiSelectionIdx=0, int vertSelectionIdx=0, const String &align="L")
void deselect(int horiSelectionIdx=0, int vertSelectionIdx=0, bool selectTheOthers=false)
deselect a "selection" unit
Class for "selection list" layer, like SelectionDDLayer but "selections" can be added and removed dyn...
Definition: dumbdisplay.h:650
void add(int selectionIdx)
void select(int selectionIdx, bool deselectTheOthers=true)
select a "selection" unit
void textCentered(int selectionIdx, const String &text, int y=0)
set a "selection" unit centered text (of y-th row)
void deselect(int selectionIdx, bool selectTheOthers=false)
deselect a "selection" unit
void unselectedTextCentered(int selectionIdx, const String &text, int y=0)
set a "selection" unit centered text (of y-th row) when unselected (it defaults to the same text as s...
void unselectedTextRightAligned(int selectionIdx, const String &text, int y=0)
set a "selection" unit right-aligned text (of y-th row) when unselected (it defaults to the same text...
void unselectedText(int selectionIdx, const String &text, int y=0, const String &align="L")
void text(int selectionIdx, const String &text, int y=0, const String &align="L")
SelectionListDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:653
void offset(int offset)
set the offset to the "selection" unit start showing
void selected(int selectionIdx, bool selected, bool reverseTheOthers=false)
set a "selection" unit selected or not (combination of select() and deselect())
void remove(int selectionIdx)
void textRightAligned(int selectionIdx, const String &text, int y=0)
set a "selection" unit right-aligned text (of y-th row)
Class for 7-segment row layer; created with DumbDisplay::create7SegmentRowLayer()
Definition: dumbdisplay.h:907
void turnOn(const String &segments, int digitIdx=0)
void showFormatted(const String &formatted, bool completeReplace=true, int startIdx=0)
void resetSegmentOffColor(const String &color)
SevenSegmentRowDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:910
void setOn(const String &segments="", int digitIdx=0)
void showHexNumber(int16_t number)
show HEX number
void showNumber(float number, const String &padding=" ")
show number (can be float)
void segmentColor(const String &color)
void showDigit(int digit, int digitIdx=0)
show a digit
void resetSegmentOffNoColor()
reset segment off color to no color; note that this will clear all digits
void turnOff(const String &segments, int digitIdx=0)
Class for basic tool "tunnel".
Definition: dumbdisplay.h:1295
SimpleToolDDTunnel(const String &type, int8_t tunnelId, const String &params, const String &endPoint, int bufferSize)
Definition: dumbdisplay.h:1298
Class for a terminal-like "device dependent view" layer, for logging etc; created with DumbDisplay::c...
Definition: dumbdisplay.h:1011
TerminalDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:1014
Definition: dumbdisplay.h:999
TomTomMapDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:1002
Class for Turtle-like DD layer; created with DumbDisplay::createTurtleLayer()
Definition: dumbdisplay.h:417
void penColor(const String &color)
void arc(int width, int height, int startAngle, int sweepAngle, bool centered=false)
draw arc; centered or not
void isoscelesTriangle(int side, int angle)
draw isosceles triangle; given size and angle
void penFilled(bool filled)
set pen filled or not; if filled, shape drawn will be filled
void goBy(int byX, int byY, bool withPen=true)
go by (byX, byY); with pen or not
void polygon(int side, int vertexCount)
draw polygon given side and vertex count
void goTo(int x, int y, bool withPen=true)
go to (x, y); with pen or not
void forward(int distance, bool withPen=true)
forward; with pen or not
void centeredPolygon(int radius, int vertexCount, bool inside=false)
void triangle(int side1, int angle, int side2)
draw triangle (SAS)
void oval(int width, int height, bool centered=false)
draw oval; centered or not
void circle(int radius, bool centered=false)
draw circle; centered or not
void dot(int size, const String &color)
draw a dot
void setTextFont(const String &fontName="", int textSize=0)
void write(const String &text, bool draw=false)
write text; draw means draw the text (honor heading)
void penUp()
pen up
TurtleDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:420
void home(bool withPen=true)
go home (0, 0); with pen or not
void leftTurn(int angle)
left turn
void setTextSize(int size)
set text size
void penDown()
pen down
void noFillColor()
set no fill color
void rightTurn(int angle)
right turn
void penSize(int size)
set pen size
void backward(int distance, bool withPen=true)
backward; with pen or not
void setHeading(int angle)
set heading angle (degree)
void fillColor(const String &color)
void rectangle(int width, int height, bool centered=false)
draw rectangle; centered or not
Definition: dumbdisplay.h:1041
WebViewDDLayer(int8_t layerId)
for internal use only
Definition: dumbdisplay.h:1044
Struct for the status values of calling DumbDisplay::connectPassive()
Definition: dumbdisplay.h:1474
bool reconnecting
reconnecting: when connected; detected reconnecting (after lost of connection)
Definition: dumbdisplay.h:1480
bool connecting
connecting: when not connected; starting to establish connection by sending hand-shake messages
Definition: dumbdisplay.h:1478
bool connected
connection made or not – same as the return value of DumbDisplay::connectPassive()
Definition: dumbdisplay.h:1476
Type signature for callback function that will be called when connect version (counting up) changed....
See DDDebugInterface.
Type signature for "feedback" handler. See DDLayer::setFeedbackHandler()
The struct that captures info about "feedback". See DDLayer::enableFeedback()
Definition: _dd_feedback.h:29
The enum indicating the type of "feedback". See DDFeedback.
Type signature for callback function that will be called when idle. See DumbDisplay::setIdleCallback(...
See DDIdleCallback.
Definition: dumbdisplay.h:1350
Definition: dumbdisplay.h:1376
Output struct of GpsServiceDDTunnel.
Definition: dumbdisplay.h:1311
Output struct of ObjectDetectDemoServiceDDTunnel.
Definition: dumbdisplay.h:1330
Base class for DD objects.
Definition: dumbdisplay.h:140
int8_t objectType
object type – DD_OBJECT_TYPE_LAYER or DD_OBJECT_TYPE_TUNNEL
Definition: dumbdisplay.h:142
String customData
custom data
Definition: dumbdisplay.h:147
Definition: dumbdisplay.h:1365
Definition: dumbdisplay.h:1362