1+ #include " wallpaper.h"
2+ #include " config.h"
3+ #include " display.h"
4+ #include " kernel.h"
5+
6+ int currentWallpaperNum = 0 ;
7+ int wallpaperCount = 3 ;
8+
9+ void drawNoneWallpaper () {
10+ tft.fillScreen (getCurrentTheme ().bg );
11+ }
12+
13+
14+ void drawBlocksWallpaper () {
15+ tft.fillRect (0 , 0 , 80 , 80 , 0xE987 );
16+
17+ tft.fillRect (0 , 80 , 80 , 80 , 0x61B0 );
18+
19+ tft.fillRect (0 , 160 , 80 , 80 , 0x2E0F );
20+
21+ tft.fillRect (80 , 0 , 80 , 80 , 0xE521 );
22+
23+ tft.fillRect (80 , 80 , 80 , 80 , 0x1AF6 );
24+
25+ tft.fillRect (80 , 160 , 80 , 80 , 0x63F1 );
26+
27+ tft.fillRect (160 , 0 , 80 , 80 , 0xFAA4 );
28+
29+ tft.fillRect (160 , 80 , 80 , 80 , 0xCEE7 );
30+
31+ tft.fillRect (160 , 160 , 80 , 80 , 0x651D );
32+
33+ tft.fillRect (240 , 0 , 80 , 80 , 0x6225 );
34+
35+ tft.fillRect (240 , 80 , 80 , 80 , 0x1B9B );
36+
37+ tft.fillRect (240 , 160 , 80 , 80 , 0xC0E5 );
38+ }
39+
40+
41+
42+
43+ static void draw_polygon_1 () {
44+ tft.drawLine (106 , 40 , 235 , 70 , 0xCD5C );
45+ tft.drawLine (235 , 70 , 103 , 138 , 0xCD5C );
46+ tft.drawLine (103 , 138 , 185 , 33 , 0xCD5C );
47+ tft.drawLine (185 , 33 , 199 , 152 , 0xCD5C );
48+ tft.drawLine (199 , 152 , 106 , 40 , 0xCD5C );
49+ }
50+
51+ static void draw_polygon_2 () {
52+ tft.drawLine (30 , 128 , 103 , 198 , 0xCD5C );
53+ tft.drawLine (103 , 198 , 29 , 222 , 0xCD5C );
54+ tft.drawLine (29 , 222 , 86 , 135 , 0xCD5C );
55+ tft.drawLine (86 , 135 , 78 , 234 , 0xCD5C );
56+ tft.drawLine (78 , 234 , 30 , 128 , 0xCD5C );
57+ }
58+
59+ static void draw_polygon_3 () {
60+ tft.drawLine (257 , 198 , 279 , 129 , 0xCD5C );
61+ tft.drawLine (279 , 129 , 299 , 199 , 0xCD5C );
62+ tft.drawLine (299 , 199 , 256 , 143 , 0xCD5C );
63+ tft.drawLine (256 , 143 , 307 , 157 , 0xCD5C );
64+ tft.drawLine (307 , 157 , 257 , 198 , 0xCD5C );
65+ }
66+
67+ static void draw_polygon_4 () {
68+ tft.drawLine (162 , 158 , 175 , 237 , 0xCD5C );
69+ tft.drawLine (175 , 237 , 226 , 200 , 0xCD5C );
70+ tft.drawLine (226 , 200 , 139 , 209 , 0xCD5C );
71+ tft.drawLine (139 , 209 , 224 , 232 , 0xCD5C );
72+ tft.drawLine (224 , 232 , 162 , 158 , 0xCD5C );
73+ }
74+
75+ static void draw_polygon_5 () {
76+ tft.drawLine (39 , 6 , 15 , 99 , 0xCD5C );
77+ tft.drawLine (15 , 99 , 94 , 87 , 0xCD5C );
78+ tft.drawLine (94 , 87 , 3 , 35 , 0xCD5C );
79+ tft.drawLine (3 , 35 , 71 , 131 , 0xCD5C );
80+ tft.drawLine (71 , 131 , 39 , 6 , 0xCD5C );
81+ }
82+
83+ static void draw_polygon_6 () {
84+ tft.drawLine (285 , 13 , 263 , 76 , 0xCD5C );
85+ tft.drawLine (263 , 76 , 301 , 76 , 0xCD5C );
86+ tft.drawLine (301 , 76 , 250 , 37 , 0xCD5C );
87+ tft.drawLine (250 , 37 , 285 , 92 , 0xCD5C );
88+ tft.drawLine (285 , 92 , 285 , 13 , 0xCD5C );
89+ }
90+ void drawStarsWallpaper () {
91+ tft.fillScreen (0x0 );
92+
93+ draw_polygon_1 ();
94+
95+ draw_polygon_2 ();
96+
97+ draw_polygon_3 ();
98+
99+ draw_polygon_4 ();
100+
101+ draw_polygon_5 ();
102+
103+ draw_polygon_6 ();
104+ }
105+
106+ Wallpaper wallpapers[] = {
107+ {" none" , drawNoneWallpaper},
108+ {" blocks" , drawBlocksWallpaper},
109+ {" stars" , drawStarsWallpaper}
110+ };
111+
112+ Wallpaper currentWallpaper = wallpapers[0 ];
113+
114+ void listWallpaper () {
115+ for (int i = 0 ; i < wallpaperCount; ++i) {
116+ std::string marker = (i == currentWallpaperNum) ? " *" : " " ;
117+ printLine (std::to_string (i) + " ." + wallpapers[i].name + marker);
118+ }
119+ }
120+
121+ void setWallpaper (const std::string& wallpaperName) {
122+ for (int i = 0 ; i < wallpaperCount; i++) {
123+ if (wallpaperName == wallpapers[i].name ) {
124+ currentWallpaperNum = i;
125+ currentWallpaper = wallpapers[i];
126+ saveSavedWallpaper (currentWallpaperNum);
127+ clearScreen ();
128+ printLine (" [SYSTEM] Wallpaper set: " + std::string (wallpapers[currentWallpaperNum].name ));
129+ logKernelMessage (" [SYSTEM] Wallpaper set: " + std::string (wallpapers[currentWallpaperNum].name ));
130+ return ;
131+ }
132+ }
133+
134+ try {
135+ int wn = std::stoi (wallpaperName);
136+ if (wn >= 0 && wn < wallpaperCount) {
137+ currentWallpaperNum = wn;
138+ currentWallpaper = wallpapers[wn];
139+ saveSavedWallpaper (currentWallpaperNum);
140+ clearScreen ();
141+ printLine (" [SYSTEM] Wallpaper set: " + std::string (wallpapers[currentWallpaperNum].name ));
142+ logKernelMessage (" [SYSTEM] Wallpaper set: " + std::string (wallpapers[currentWallpaperNum].name ));
143+
144+ return ;
145+ }
146+ } catch (...) {
147+ }
148+
149+ printLine (" Invalid wallpaper." );
150+ printLine (" Use 'wallpapers' to list." );
151+ }
152+
153+ Wallpaper getCurrentWallpaper () {
154+ return wallpapers[currentWallpaperNum];
155+ }
0 commit comments