text can now be drawed on screen

This commit is contained in:
2026-01-28 11:17:06 +01:00
parent f0376ea7f6
commit b0e45dab7d
5 changed files with 71 additions and 8 deletions
+5
View File
@@ -0,0 +1,5 @@
<component name="ProjectCodeStyleConfiguration">
<state>
<option name="PREFERRED_PROJECT_CODE_STYLE" value="Default" />
</state>
</component>
+2 -2
View File
@@ -25,7 +25,7 @@
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CASE_FROM_SWITCH/@EntryValue" value="true" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CASE_FROM_SWITCH/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CLASS_MEMBERS_FROM_ACCESS_SPECIFIERS/@EntryValue" value="true" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_CLASS_MEMBERS_FROM_ACCESS_SPECIFIERS/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_COMMENT/@EntryValue" value="true" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_COMMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_SIZE/@EntryValue" value="4" type="int" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_SIZE/@EntryValue" value="2" type="long" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_STYLE/@EntryValue" value="Space" type="string" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INDENT_STYLE/@EntryValue" value="Space" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INITIALIZER_BRACES/@EntryValue" value="END_OF_LINE_NO_SPACE" type="string" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INITIALIZER_BRACES/@EntryValue" value="END_OF_LINE_NO_SPACE" type="string" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_EQ/@EntryValue" value="false" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/INT_ALIGN_EQ/@EntryValue" value="false" type="bool" />
@@ -82,7 +82,7 @@
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_ARGS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPACE_WITHIN_TEMPLATE_PARAMS/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPECIAL_ELSE_IF_TREATMENT/@EntryValue" value="true" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/SPECIAL_ELSE_IF_TREATMENT/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TAB_WIDTH/@EntryValue" value="4" type="int" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/TAB_WIDTH/@EntryValue" value="2" type="long" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_BINARY_OPSIGN/@EntryValue" value="true" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_BINARY_OPSIGN/@EntryValue" value="true" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_DECLARATION_LPAR/@EntryValue" value="false" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_DECLARATION_LPAR/@EntryValue" value="false" type="bool" />
<option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_INVOCATION_LPAR/@EntryValue" value="false" type="bool" /> <option name="/Default/CodeStyle/CodeFormatting/CppFormatting/WRAP_AFTER_INVOCATION_LPAR/@EntryValue" value="false" type="bool" />
+4 -1
View File
@@ -10,4 +10,7 @@
#define TEXT_MAX_LENGTH 64 #define TEXT_MAX_LENGTH 64
#define MAX_TEXT_NODES_COUNT 4 #define MAX_TEXT_NODES_COUNT 4
#define SMALL_TEXT_HEIGHT 7 #define SMALL_TEXT_HEIGHT 7
#define SMALL_TEXT_WIDTH 5 #define SMALL_TEXT_WIDTH 5
#define MEDIUM_TEXT_HEIGHT 7
#define MEDIUM_TEXT_WIDTH 5
+56 -2
View File
@@ -11,22 +11,76 @@
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket #include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif #endif
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
TextNode text_nodes[MAX_TEXT_NODES_COUNT];
void addNewTextNode
(
char text[TEXT_MAX_LENGTH + 1], uint32_t color = 0x00010101, unsigned short pos_x = 65535, unsigned short pos_y = 0,
bool is_small = true
)
{
unsigned char text_length = strlen(text);
if (text_length == 0){return;}
for (unsigned char i = 0; i < MAX_TEXT_NODES_COUNT; i++)
{
if (text_nodes[i].is_deleted)
{
strncpy(text_nodes[i].content, text, TEXT_MAX_LENGTH);
text_nodes[i].color = color;
text_nodes[i].pos_x = (pos_x == 65535) ? PANEL_MAX_X + 1 : pos_x;
text_nodes[i].pos_y = pos_y;
text_nodes[i].characterSize.height = is_small ? SMALL_TEXT_HEIGHT : MEDIUM_TEXT_HEIGHT;
text_nodes[i].characterSize.width = is_small ? SMALL_TEXT_WIDTH : MEDIUM_TEXT_WIDTH;
text_nodes[i].character_count = text_length;
text_nodes[i].is_deleted = false;
break;
}
}
}
void drawTextNodes()
{
for (unsigned char i = 0; i < MAX_TEXT_NODES_COUNT; i++)
{
if (!text_nodes[i].is_deleted)
{
Cursor cursor;
cursor.x = text_nodes[i].pos_x;
cursor.y = text_nodes[i].pos_y;
for (unsigned char j = 0; j < text_nodes[i].character_count; j++)
{
char ch = text_nodes[i].content[j];
if (ch < '!' || ch > '~')
{
ch = ' ';
}
drawCharacter(font7x5[ch - '!'], text_nodes[i].characterSize.height, text_nodes[i].characterSize.width, text_nodes[i].color, &cursor);
}
}
}
}
// void scrollTextNodeByAmount(unsigned )
void setup() void setup()
{ {
Serial.begin(115200); Serial.begin(115200);
pixels.begin(); pixels.begin();
pixels.clear(); pixels.clear();
drawCharacter(font7x5['A' - '!'], 7, 5, 0x00010101, &cursor1);
addNewTextNode("TEst", 0x0001700, 0, 0, true);
drawTextNodes();
pixels.show(); pixels.show();
start_server(); start_server();
} }
void loop() void loop()
{ {
shiftGivenRectangle(0, 0, 23, 7, 1);
pixels.show(); pixels.show();
handle_server(); handle_server();
} }
+4 -3
View File
@@ -18,7 +18,7 @@ struct Pixel
uint32_t color; uint32_t color;
}; };
struct Text struct TextNode
{ {
char content[TEXT_MAX_LENGTH]; char content[TEXT_MAX_LENGTH];
uint32_t color; uint32_t color;
@@ -30,10 +30,11 @@ struct Text
unsigned short width; unsigned short width;
} characterSize; } characterSize;
unsigned char character_count; unsigned char character_count;
bool deleted; bool is_deleted;
bool is_scrolled;
Text() : color(0), pos_x(0), pos_y(0), character_count(0), characterSize({7,5}), deleted(true) {} TextNode() : color(0), pos_x(0), pos_y(0), character_count(0), characterSize({7,5}), is_deleted(true) {}
}; };
#endif // STRUCTS_H #endif // STRUCTS_H