├── LICENSE ├── README.md ├── assets ├── Sprite.gif ├── corroniceview.gif ├── example │ ├── animated │ │ ├── art.c │ │ └── peripheral_status.c │ └── static │ │ ├── art.c │ │ └── peripheral_status.c ├── lvgl.png ├── urchincart │ ├── corro01.c │ ├── corro02.c │ ├── corro03.c │ ├── corro04.c │ ├── corro05.c │ ├── corro06.c │ ├── corro07.c │ ├── corro08.c │ ├── corro09.c │ ├── corro10.c │ ├── corro11.c │ └── corro12.c └── urchinpngart │ ├── corro01.png │ ├── corro02.png │ ├── corro03.png │ ├── corro04.png │ ├── corro05.png │ ├── corro06.png │ ├── corro07.png │ ├── corro08.png │ ├── corro09.png │ ├── corro10.png │ ├── corro11.png │ └── corro12.png ├── boards └── shields │ └── nice_view_custom │ ├── CMakeLists.txt │ ├── Kconfig.defconfig │ ├── Kconfig.shield │ ├── README.md │ ├── custom_status_screen.c │ ├── nice_view_custom.conf │ ├── nice_view_custom.overlay │ ├── nice_view_custom.zmk.yml │ └── widgets │ ├── art.c │ ├── bolt.c │ ├── peripheral_status.c │ ├── peripheral_status.h │ ├── status.c │ ├── status.h │ ├── util.c │ └── util.h └── zephyr └── module.yaml /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 GPeye 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Urchin Peripheral Animation 2 | 3 | This repo will attempt to serve as both an example and a tutorial on adding custom art and animations to your zmk firmware nice!view equipped keyboard. 4 | 5 | For the purposes of this tutorial I will assume you have a split keyboard with two nice!views, and like me, you've slowly tired of the balloon/mountain artwork (though beautiful) that statically displays on your right keeb and you want to spice things up a little. 6 | 7 | The right side of your split keyboard is called the peripheral side. For the time being, (PR's in the works?) it's pretty dumb and doesn't have access to as much data as the left side does which is why the right side only has a battery indicator, connectivity indicator and some art. This is also why the battery lasts much longer, it's simply doing much less. So without access to much data, displaying art / animations is kinda the best we can do with the peripheral side. I say this to hamper any "can I put a bongo cat on the right side that reacts to wpm?" like questions which were my first questions too. Unfortunately no, that's left hand business. The peripheral isn't going to react to inputs because it simply can't. 8 | 9 | If you just want to use my custom urchin animation and don't care how to make your own, you can jump straight down to [Usage](#usage) 10 | 11 | --- 12 | 13 | #### Table of Contents 14 | 1. [What are we making](#what-are-we-making) 15 | 2. [Getting Started](#getting-started) 16 | 3. [Making the Art](#making-the-art) 17 | 4. [Converting Your Art](#converting-your-art) 18 | 5. [Brief Explanation of the Module](#brief-explanation-of-the-module) 19 | 6. [Adding a Static Image](#adding-a-static-image) 20 | 7. [Adding an Animation](#adding-an-animation) 21 | 8. [Using the Module](#usage) 22 | 9. [References](#references) 23 | 24 | --- 25 | 26 | 27 | ## What are we making? 28 | 29 | Ultimately we are going to implement a 12 frame animation of the unofficial Rust-lang unsafe code mascot, Corro the sea urchin. 30 | 31 | Why? Because my main keyboard right now is [duckyb's variant of the ferris sweep that uses the nice!view displays, called the urchin](https://github.com/duckyb/urchin). It's emblazoned with a cute little corro graphic on the pcb. 32 | 33 | 34 | ![urchin board](https://raw.githubusercontent.com/duckyb/urchin/master/gallery/main/main-top.png) 35 | 36 | --- 37 | 38 | *Sidenote: I bought mine from [beekeeb](https://shop.beekeeb.com/product/soldered-urchin-wireless-split-keyboard/) and I would recommend them for your nice!view equipped keyboard needs. I'm in no way affiliated with them, just a happy customer.* 39 | 40 | --- 41 | 42 | So, I took this little dude and made a little 1bit animation that looks like this: 43 | 44 | ![urchingif](./assets/Sprite.gif) 45 | 46 | and then I put it on the urchin board like this: 47 | 48 | ![urchinvid](./assets/corroniceview.gif) 49 | 50 | If that seems like something you'd like to do, keep reading... 51 | 52 | 53 | ## Getting Started 54 | 55 | Step one is to Fork or Clone this nice!view module repo: [https://github.com/GPeye/nice-view-mod](https://github.com/GPeye/nice-view-mod) 56 | 57 | That repo is an exact copy of the same nice!view shield found in the official ZMK firmware repo, just wrapped up in a module. 58 | 59 | **What's a module?** In a nutshell, it's a way of extending the ZMK firmware, allowing you to inject during build, new shields, boards, behaviors, features, drivers and more. 60 | 61 | **But the nice!view shield is already in the firmware, why make it a module?** This way we can edit our forked/cloned module and just swap out the real nice!view shield for our custom one and we don't have to edit the official firmware. 62 | 63 | Once you have your fork/clone, we'll need some art... 64 | 65 | 66 | ## Making the Art 67 | 68 | *For just learning the code part of this, feel free to use the assets under the assets folder in this repo and skip this step* 69 | 70 | The current nice!view peripheral mountain and balloon images are **68px wide by 140px tall** (sort've*) so, to easily swap out for some other art, any image we want to make or use should also be that size. I use aseprite which is a paid software, but pixel art at this size can easily be made in gimp or ms paint for free, or even using in browser tools like [piskel](https://www.piskelapp.com/p/create/sprite) or [pixilart](https://www.pixilart.com/draw) which even have helpers for creating animation. 71 | 72 | Use **only** black and white to create your art as the nice!view does not support grayscale or any colors. You may want to get familiar with dithering. Here are a couple good resources: [what is it](https://pixelparmesan.com/dithering-for-pixel-artists/) and [a massive library of 1bit patterns](https://dev.crankit.app/tools/gfxp/) 73 | 74 | ⚠️ *forewarning, converting your art to the necessary C arrays is somewhat tedious so, maybe don't make a lot of animation frames. My urchin is 12 frames and it's was bordering on annoying to do* 😅 75 | 76 | Regardless of the tool you are using, you will want to export your art to a png format. If you created an animation you will want to export each frame as an individual png rather than as a spritesheet. 77 | 78 | Check out the `/assets/urchinpngart` folder for my example urchin 68x140 1-bit pixel art. 79 | 80 | ## Converting Your Art 81 | 82 | **The first step is** to take your 68x140 art and make it 140x68 by **rotating it 90 degrees clockwise**. 83 | 84 | **Why?** the nice!view is not a vertical display, it's actually a horizontal display that's usually in a vertical orientation because it fits better on a keyboard that way. If you've ever built your firmware with the default ZMK display status screen you may have noticed this as the battery and connection widget will be sideways. 85 | 86 | Once you have rotated all your art, we need to convert it to a lvgl C array by heading to https://lvgl.io/tools/imageconverter and selecting your images, one at a time, and converting them by selecting LVGL v8, Color Format: `CF_ALPHA_1_BIT` and output format as `C array` 87 | 88 | ![lvglsetting](./assets/lvgl.png) 89 | 90 | In the end you should end up with a bunch of C files, one for each image or frame of animation you have. 91 | 92 | Check out the `/assets/urchincart` folder for my example c array files for the urchin pixel art. 93 | 94 | ## Brief Explanation of the Module 95 | 96 | Feel free to skip this if you don't care but I thought it might be helpful to some to understand the files in this shield module and what they do. 97 | 98 |
99 | Expand to see explanation 100 | 101 | ### nice_view_custom.zmk.yml 102 | This file is the module manifest and lets the build know where to look for relevant files. In our case it just points to the boards directory where our shield is 103 | 104 | ### Kconfig.shield & Kconfig.defconfig 105 | These files define and use the config flage used by this shield in order to determine if it applies the defined widgets. Line 5 of Kconfig.shield is where we check for the shield build flag "nice_view_custom" in order to set the config flag "SHIELD_NICE_VIEW_CUSTOM" which is then used in Kconfig.defconfig to toggle on additional configs like "NICE_VIEW_WIDGET_STATUS" which is then used in the CMakeLists.txt and custom_status_screen.c that either uses the nice!view status widgets or defaults to the built in ZMK ones. 106 | 107 | ### custom_status_screen.c 108 | This is the entrypoint to our custom shield and if it's running the primary right hand build it runs the status.c and if it's running the peripheral right hand build it runs peripheral_status.c 109 | 110 | ### peripheral_status.c 111 | This is the main file we are interested in. This defines the widgets and art that are used on the right hand peripheral nice!view screen 112 | 113 | ### art.c 114 | This file exists just to hold the c array data that makes up our art for reference by the perepheral_status.c file. By default, it has the balloon and mountain image data. 115 | 116 |
117 | 118 | ## Adding a Static Image 119 | 120 | *Even if you just want to add an animation, it's good to cover how to swap out a static image first and build off that knowledge when implementing an animation* 121 | 122 | Open the converted C file for the art you want and copy everything **After** the 123 | 124 | ```c 125 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 126 | #define LV_ATTRIBUTE_MEM_ALIGN 127 | #endif 128 | ``` 129 | block 130 | 131 | and paste it at the end of the `/boards/shields/nice_view_custom/widgets/art.c` file. 132 | 133 | --- 134 | 135 | ⚠️ Note: Somewhat little known fact. For small edits on github, you may not need an editor at all. On the main page of your cloned / forked repo, pressing the period key (.) will open the repo up in VS Code, right in your browser, allowing you to edit files without the need for git or downloading anything. It's perfect for the kind of edits we'll be doing. 136 | 137 | --- 138 | 139 | Near the top of what you pasted, find the following section 140 | 141 | ```c 142 | ~~~~ 143 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO01 uint8_t corro01_map[] = { 144 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 145 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 146 | 147 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 148 | ~~~~ 149 | ``` 150 | 151 | and copy the #if CONFIG_NICE_VIEW_WIDGET_INVERTED block from either the balloon or the mountain art section and replace the first two "/\*Color of index\*/" lines. This will maintain the nice!view's ability to invert colors via config. 152 | 153 | ```c 154 | ~~~~ 155 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO01 uint8_t corro01_map[] = { 156 | #if CONFIG_NICE_VIEW_WIDGET_INVERTED 157 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 158 | 0x00, 0x00, 0x00, 0xff, /*Color of index 1*/ 159 | #else 160 | 0x00, 0x00, 0x00, 0xff, /*Color of index 0*/ 161 | 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ 162 | #endif 163 | 164 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 165 | ~~~~ 166 | ``` 167 | 168 | #### See `/assets/example/static/art.c` for reference 169 | 170 | Next, find the name of your image const, which should be based off your original image name, by scrolling to the very bottom and finding the section that looks like this 171 | 172 | ```c 173 | const lv_img_dsc_t corro01 = { 174 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 175 | .header.always_zero = 0, 176 | .header.reserved = 0, 177 | .header.w = 140, 178 | .header.h = 68, 179 | .data_size = 1232, 180 | .data = corro01_map, 181 | }; 182 | ``` 183 | 184 | In this case the name is `corro01`. Copy this name for use in the next step. 185 | 186 | Open the peripheral_status.c file and on line 28, add a new line and copy line 27, swapping out `mountain` for your new art's name. In my case it is `corro01`. 187 | 188 | ```c 189 | #include "peripheral_status.h" 190 | 191 | LV_IMG_DECLARE(balloon); 192 | LV_IMG_DECLARE(mountain); 193 | LV_IMG_DECLARE(corro01); // new line 194 | 195 | static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets); 196 | ``` 197 | 198 | Finally, further down in the same file edit this section of code 199 | 200 | ```c 201 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { 202 | widget->obj = lv_obj_create(parent); 203 | lv_obj_set_size(widget->obj, 160, 68); 204 | lv_obj_t *top = lv_canvas_create(widget->obj); 205 | lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); 206 | lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 207 | 208 | lv_obj_t *art = lv_img_create(widget->obj); 209 | bool random = sys_rand32_get() & 1; 210 | lv_img_set_src(art, random ? &balloon : &mountain); 211 | lv_obj_align(art, LV_ALIGN_TOP_LEFT, 0, 0); 212 | 213 | sys_slist_append(&widgets, &widget->node); 214 | widget_battery_status_init(); 215 | widget_peripheral_status_init(); 216 | 217 | return 0; 218 | } 219 | ``` 220 | 221 | to look like this (changing corro01 for the name of your file, if different) 222 | 223 | ```c 224 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { 225 | widget->obj = lv_obj_create(parent); 226 | lv_obj_set_size(widget->obj, 160, 68); 227 | lv_obj_t *top = lv_canvas_create(widget->obj); 228 | lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); 229 | lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 230 | 231 | lv_obj_t *art = lv_img_create(widget->obj); 232 | //bool random = sys_rand32_get() & 1; 233 | //lv_img_set_src(art, random ? &balloon : &mountain); 234 | lv_img_set_src(art, &corro01) //new line 235 | lv_obj_align(art, LV_ALIGN_TOP_LEFT, 0, 0); 236 | 237 | sys_slist_append(&widgets, &widget->node); 238 | widget_battery_status_init(); 239 | widget_peripheral_status_init(); 240 | 241 | return 0; 242 | } 243 | ``` 244 | 245 | #### See `/assets/example/static/peripheral_status.c` for full reference 246 | 247 | 248 | The "bool random" line that we commented out gets a random 0 or 1 number every time your board boots or resets and that random number is then used in the next line in a 'ternary expression' that selects the &balloon image reference if 1 and &mountain if it is 0. 249 | 250 | In our case we don't need that to show our 1 new image so we can just set that image directly in the lv_img_set_src function 251 | 252 | #### Congratulations 253 | That's all you need to edit. We took our art, rotated it 90 degrees clockwise, we converted it to a C array, added it to the art.c file and told the perepheral.c to use our new our new image. To learn how to use your new module with your new static image, head to the [usage](#usage) section. 254 | 255 | 256 | ## Adding an Animation 257 | 258 | An animation is just multiple pictures so we can build on what we learned in the previous section and add multiple images into the art.c file and then we'll learn how to set up an animation. 259 | 260 | First, just like for the static image, copy the C file contents for each of your generated C files to the art.c file, making sure to update each one with the inverted color index section. If you know you absolutely will not use the color inversion config, then you can technically skip this step. 261 | 262 | You can find an example art file in `/assets/example/animated/art.c` 263 | Notice, you can remove the balloon and mountain if they are not going to be used. 264 | 265 | Next, update the peripheral_status.c file, adding a `LV_IMG_DECLARE();` line for each file you added to the `art.c` file. 266 | 267 | Just below those lines, add an array to hold references to each of our images like this 268 | 269 | ```c 270 | LV_IMG_DECLARE(corro01); 271 | LV_IMG_DECLARE(corro02); 272 | LV_IMG_DECLARE(corro03); 273 | LV_IMG_DECLARE(corro04); 274 | LV_IMG_DECLARE(corro05); 275 | LV_IMG_DECLARE(corro06); 276 | LV_IMG_DECLARE(corro07); 277 | LV_IMG_DECLARE(corro08); 278 | LV_IMG_DECLARE(corro09); 279 | LV_IMG_DECLARE(corro10); 280 | LV_IMG_DECLARE(corro11); 281 | LV_IMG_DECLARE(corro12); 282 | 283 | const lv_img_dsc_t *anim_imgs[] = { 284 | &corro01, 285 | &corro02, 286 | &corro03, 287 | &corro04, 288 | &corro05, 289 | &corro06, 290 | &corro07, 291 | &corro08, 292 | &corro09, 293 | &corro10, 294 | &corro11, 295 | &corro12, 296 | }; 297 | ``` 298 | In my case, there are 12 images, 12 file names and each one is added to the anim_imgs array 299 | 300 | Near the bottom of the file in the same place we edited previously to change the static image, we'll want to comment out or remove a few lines setting up the image and instead use different functions to set up our animation. 301 | 302 | ```c 303 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { 304 | widget->obj = lv_obj_create(parent); 305 | lv_obj_set_size(widget->obj, 160, 68); 306 | lv_obj_t *top = lv_canvas_create(widget->obj); 307 | lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); 308 | lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 309 | 310 | //lv_obj_t *art = lv_img_create(widget->obj); 311 | //bool random = sys_rand32_get() & 1; 312 | //lv_img_set_src(art, random ? &balloon : &mountain); 313 | //lv_img_set_src(art, &corro01); 314 | 315 | lv_obj_t * art = lv_animimg_create(widget->obj); //<-- 316 | lv_obj_center(art); //<-- 317 | lv_animimg_set_src(art, (const void **) anim_imgs, 12); //<-- 318 | lv_animimg_set_duration(art, 4800); //<-- 319 | lv_animimg_set_repeat_count(art, LV_ANIM_REPEAT_INFINITE); //<-- 320 | lv_animimg_start(art); //<-- 321 | 322 | lv_obj_align(art, LV_ALIGN_TOP_LEFT, 0, 0); 323 | 324 | sys_slist_append(&widgets, &widget->node); 325 | widget_battery_status_init(); 326 | widget_peripheral_status_init(); 327 | 328 | return 0; 329 | } 330 | ``` 331 | 332 | *you can see a full example of this file under `/assets/example/animated/peripheral_status.c`* 333 | 334 | `lv_animimg_create()` creates our animation instance 335 | 336 | `lv_animimg_set_src()` is where we provide our array of images as well as the number of images in the array. **This number is important**. If it is too small your animation won't use all of the available pictures. If it is too large, it may crash or cause unexpected behavior. 337 | 338 | `lv_animimg_set_duration()` sets the total duration of your animation. In my case I wanted my animation to be 400ms per frame so I multiplied 400 * 12 to arrive at a total of 4800ms. Lower this number to speed up the animation or increase it to slow it down. I have not expirimented with how high this number can go but it's a uint32 so theoretically anything under 4.2billion milliseconds should work which means you could easily make a slow moving slideshow of images rather than an animation. 339 | 340 | `lv_animimg_set_repeat_count()` set our repeat count to infinte 341 | 342 | `lv_animimg_start()` starts our animation, if you don't include this line, it won't start 343 | 344 | 345 | There is now only one final step left, we need to tell the zmk build that we want to use the lvgl animation feature and we do so in the `Kconfig.defconfig` file. Update this section: 346 | 347 | ``` 348 | config NICE_VIEW_WIDGET_STATUS 349 | bool "Custom nice!view status widget" 350 | select LV_FONT_MONTSERRAT_16 351 | select LV_USE_IMG 352 | select LV_USE_CANVAS 353 | ``` 354 | to be this 355 | 356 | ``` 357 | config NICE_VIEW_WIDGET_STATUS 358 | bool "Custom nice!view status widget" 359 | select LV_FONT_MONTSERRAT_16 360 | select LV_USE_IMG 361 | select LV_USE_CANVAS 362 | select LV_USE_ANIMIMG 363 | select LV_USE_ANIMATION 364 | ``` 365 | 366 | #### Congratulations 367 | That's it! You should now have a functioning custom animation that will run on your peripheral nice!view display when you build your firmware with your module and flash it. 368 | To learn how to use your new module with your new animation, head to the [usage](#usage) section. 369 | 370 | 371 | ## Usage 372 | 373 | To use my urchin animation module as-is, first add it to your config/west.yml by adding a new entry to remotes and projects: 374 | 375 | **If you are using your own forked/cloned module, just replace the url-base: with your forked or cloned url base** 376 | 377 | ```yml 378 | manifest: 379 | remotes: 380 | # zmk official 381 | - name: zmkfirmware 382 | url-base: https://github.com/zmkfirmware 383 | - name: gpeye #new entry 384 | url-base: https://github.com/GPeye #new entry 385 | projects: 386 | - name: zmk 387 | remote: zmkfirmware 388 | revision: main 389 | import: app/west.yml 390 | - name: urchin-peripheral-animation #new entry 391 | remote: gpeye #new entry 392 | revision: main #new entry 393 | self: 394 | path: config 395 | ``` 396 | 397 | Now simply swap out the default nice_view shield for the custom one in your build.yaml file. 398 | 399 | ```yml 400 | --- 401 | include: 402 | - board: nice_nano_v2 403 | shield: urchin_left nice_view_adapter nice_view_custom #custom shield 404 | - board: nice_nano_v2 405 | shield: urchin_right nice_view_adapter nice_view_custom #custom shield 406 | ``` 407 | 408 | by default the this urchin animation will run for a duration of 9.6 seconds, fairly slow to save battery 409 | 410 | If you want to change the speed of the animation, you can edit the speed by changing the CONFIG_CUSTOM_ANIMATION_SPEED in your .conf file 411 | 412 | For example: 413 | 414 | ```conf 415 | # urchin.conf 416 | CONFIG_CUSTOM_ANIMATION_SPEED=4800 # 4.8 second total duration 417 | ``` 418 | 419 | ## Renaming your module 420 | What if you want to name your module something other than "nice_view_custom"? 421 | 422 | Here I'll attempt to explain the various files and names that matter 423 | 424 | The name field used in config/west.yml under projects: 425 | 426 | ```yml 427 | manifest: 428 | remotes: 429 | # zmk official 430 | - name: zmkfirmware 431 | url-base: https://github.com/zmkfirmware 432 | - name: gpeye 433 | url-base: https://github.com/GPeye 434 | projects: 435 | - name: zmk 436 | remote: zmkfirmware 437 | revision: main 438 | import: app/west.yml 439 | - name: urchin-peripheral-animation #<---- Here 440 | remote: gpeye 441 | revision: main 442 | self: 443 | path: config 444 | ``` 445 | 446 | Is the name of your fork or cloned repo which you can easily change in github 447 | 448 | --- 449 | 450 | The name used as the shield name in the build.yaml 451 | ```yml 452 | --- 453 | include: 454 | - board: nice_nano_v2 455 | shield: urchin_left nice_view_adapter nice_view_custom #<--- Here 456 | - board: nice_nano_v2 457 | shield: urchin_right nice_view_adapter nice_view_custom 458 | ``` 459 | 460 | You will want to change in the following place: 461 | 462 | The folder name at `boards/shields/nice_view_custom` 463 | The file names inside that folder: 464 | - `nice_view_custom.conf` 465 | - `nice_view_custom.overlay` 466 | - `nice_view_custom.zmk.yml` 467 | 468 | Inside `nice_view_custom.zmk.yml` update the Id and perhaps the name (though not strictly necessary) 469 | 470 | Inside Kconfig.shield update line 5 and line 4, then whatever you change the config name for line 4 to be, you want line 4 of Kconfig.defconfg to match it. 471 | 472 | That should be everything, letting you share your customized animation or graphic module with others using your desired name. 473 | 474 | 475 | --- 476 | 477 | 478 | ### References 479 | 480 | I in no way figured this out on my own and want to give credit where it is due. These are all the resources I used to learn. 481 | 482 | https://www.reddit.com/r/ErgoMechKeyboards/comments/15t3o6k/custom_art_on_niceview_displays/ 483 | 484 | https://github.com/mctechnology17/zmk-dongle-display-view 485 | 486 | https://github.com/caksoylar/zmk-rgbled-widget 487 | 488 | https://deploy-preview-2438--zmk.netlify.app/docs/advanced-guides/making-modules 489 | 490 | https://docs.zephyrproject.org/latest/develop/modules.html 491 | 492 | https://docs.lvgl.io/master/widgets/animimg.html 493 | -------------------------------------------------------------------------------- /assets/Sprite.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/Sprite.gif -------------------------------------------------------------------------------- /assets/corroniceview.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/corroniceview.gif -------------------------------------------------------------------------------- /assets/example/animated/peripheral_status.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); 13 | 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | 24 | #include "peripheral_status.h" 25 | 26 | LV_IMG_DECLARE(corro01); 27 | LV_IMG_DECLARE(corro02); 28 | LV_IMG_DECLARE(corro03); 29 | LV_IMG_DECLARE(corro04); 30 | LV_IMG_DECLARE(corro05); 31 | LV_IMG_DECLARE(corro06); 32 | LV_IMG_DECLARE(corro07); 33 | LV_IMG_DECLARE(corro08); 34 | LV_IMG_DECLARE(corro09); 35 | LV_IMG_DECLARE(corro10); 36 | LV_IMG_DECLARE(corro11); 37 | LV_IMG_DECLARE(corro12); 38 | 39 | const lv_img_dsc_t *anim_imgs[] = { 40 | &corro01, 41 | &corro02, 42 | &corro03, 43 | &corro04, 44 | &corro05, 45 | &corro06, 46 | &corro07, 47 | &corro08, 48 | &corro09, 49 | &corro10, 50 | &corro11, 51 | &corro12, 52 | }; 53 | 54 | static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets); 55 | 56 | struct peripheral_status_state { 57 | bool connected; 58 | }; 59 | 60 | static void draw_top(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { 61 | lv_obj_t *canvas = lv_obj_get_child(widget, 0); 62 | 63 | lv_draw_label_dsc_t label_dsc; 64 | init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_16, LV_TEXT_ALIGN_RIGHT); 65 | lv_draw_rect_dsc_t rect_black_dsc; 66 | init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); 67 | 68 | // Fill background 69 | lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); 70 | 71 | // Draw battery 72 | draw_battery(canvas, state); 73 | 74 | // Draw output status 75 | lv_canvas_draw_text(canvas, 0, 0, CANVAS_SIZE, &label_dsc, 76 | state->connected ? LV_SYMBOL_WIFI : LV_SYMBOL_CLOSE); 77 | 78 | // Rotate canvas 79 | rotate_canvas(canvas, cbuf); 80 | } 81 | 82 | static void set_battery_status(struct zmk_widget_status *widget, 83 | struct battery_status_state state) { 84 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 85 | widget->state.charging = state.usb_present; 86 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 87 | 88 | widget->state.battery = state.level; 89 | 90 | draw_top(widget->obj, widget->cbuf, &widget->state); 91 | } 92 | 93 | static void battery_status_update_cb(struct battery_status_state state) { 94 | struct zmk_widget_status *widget; 95 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_battery_status(widget, state); } 96 | } 97 | 98 | static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) { 99 | return (struct battery_status_state) { 100 | .level = zmk_battery_state_of_charge(), 101 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 102 | .usb_present = zmk_usb_is_powered(), 103 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 104 | }; 105 | } 106 | 107 | ZMK_DISPLAY_WIDGET_LISTENER(widget_battery_status, struct battery_status_state, 108 | battery_status_update_cb, battery_status_get_state) 109 | 110 | ZMK_SUBSCRIPTION(widget_battery_status, zmk_battery_state_changed); 111 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 112 | ZMK_SUBSCRIPTION(widget_battery_status, zmk_usb_conn_state_changed); 113 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 114 | 115 | static struct peripheral_status_state get_state(const zmk_event_t *_eh) { 116 | return (struct peripheral_status_state){.connected = zmk_split_bt_peripheral_is_connected()}; 117 | } 118 | 119 | static void set_connection_status(struct zmk_widget_status *widget, 120 | struct peripheral_status_state state) { 121 | widget->state.connected = state.connected; 122 | 123 | draw_top(widget->obj, widget->cbuf, &widget->state); 124 | } 125 | 126 | static void output_status_update_cb(struct peripheral_status_state state) { 127 | struct zmk_widget_status *widget; 128 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_connection_status(widget, state); } 129 | } 130 | 131 | ZMK_DISPLAY_WIDGET_LISTENER(widget_peripheral_status, struct peripheral_status_state, 132 | output_status_update_cb, get_state) 133 | ZMK_SUBSCRIPTION(widget_peripheral_status, zmk_split_peripheral_status_changed); 134 | 135 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { 136 | widget->obj = lv_obj_create(parent); 137 | lv_obj_set_size(widget->obj, 160, 68); 138 | lv_obj_t *top = lv_canvas_create(widget->obj); 139 | lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); 140 | lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 141 | 142 | //lv_obj_t *art = lv_img_create(widget->obj); 143 | //bool random = sys_rand32_get() & 1; 144 | //lv_img_set_src(art, random ? &balloon : &mountain); 145 | //lv_img_set_src(art, &corro01); 146 | 147 | lv_obj_t * art = lv_animimg_create(widget->obj); //<-- 148 | lv_obj_center(art); //<-- 149 | lv_animimg_set_src(art, (const void **) anim_imgs, 12); //<-- 150 | lv_animimg_set_duration(art, 4800); //<-- 151 | lv_animimg_set_repeat_count(art, LV_ANIM_REPEAT_INFINITE); //<-- 152 | lv_animimg_start(art); //<-- 153 | 154 | lv_obj_align(art, LV_ALIGN_TOP_LEFT, 0, 0); 155 | sys_slist_append(&widgets, &widget->node); 156 | widget_battery_status_init(); 157 | widget_peripheral_status_init(); 158 | 159 | return 0; 160 | } 161 | 162 | lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget) { return widget->obj; } -------------------------------------------------------------------------------- /assets/example/static/art.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 Collin Hodge 4 | * Copyright (c) 2023 The ZMK Contributors 5 | * SPDX-License-Identifier: MIT 6 | * 7 | */ 8 | 9 | #include 10 | 11 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 12 | #define LV_ATTRIBUTE_MEM_ALIGN 13 | #endif 14 | 15 | #ifndef LV_ATTRIBUTE_IMG_BALLOON 16 | #define LV_ATTRIBUTE_IMG_BALLOON 17 | #endif 18 | 19 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_BALLOON uint8_t 20 | balloon_map[] = { 21 | #if CONFIG_NICE_VIEW_WIDGET_INVERTED 22 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 23 | 0x00, 0x00, 0x00, 0xff, /*Color of index 1*/ 24 | #else 25 | 0x00, 0x00, 0x00, 0xff, /*Color of index 0*/ 26 | 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ 27 | #endif 28 | 29 | 0xfe, 0xaa, 0x0a, 0x2a, 0x9f, 0xff, 0xff, 0xff, 0xfa, 0xea, 0xaa, 0xae, 0xba, 0xff, 0xff, 30 | 0xfb, 0xff, 0xf0, 0xf1, 0x55, 0x05, 0x15, 0x47, 0xff, 0xff, 0xff, 0xf5, 0xd5, 0x55, 0x5f, 31 | 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xa4, 0xaa, 0x8a, 0x8a, 0xa1, 0xff, 0xff, 0xfb, 0xea, 32 | 0xaa, 0xaa, 0xbe, 0xbf, 0xef, 0xfb, 0xfb, 0xff, 0xf0, 0x54, 0x55, 0x05, 0x45, 0x54, 0xff, 33 | 0xff, 0x7d, 0x55, 0xd5, 0x75, 0x7f, 0x7f, 0xdf, 0xff, 0xff, 0xff, 0xf0, 0xae, 0x2a, 0x82, 34 | 0xa0, 0xaa, 0x3f, 0xff, 0xfe, 0xaa, 0xea, 0xbb, 0xfe, 0xbf, 0xff, 0xfb, 0xfb, 0xfe, 0xf0, 35 | 0x5f, 0x55, 0x01, 0x50, 0x54, 0x1f, 0xff, 0x7f, 0x55, 0xd5, 0x7f, 0xff, 0x7f, 0xd7, 0xff, 36 | 0xfd, 0xfd, 0xf0, 0x2f, 0xff, 0x20, 0x28, 0x00, 0x0f, 0xff, 0xae, 0xaa, 0xaa, 0xbf, 0xff, 37 | 0xff, 0xeb, 0xfb, 0xff, 0xff, 0xf0, 0x0e, 0x01, 0x50, 0x14, 0x00, 0x3f, 0xff, 0x57, 0x55, 38 | 0xd5, 0x7f, 0xff, 0x7f, 0xd7, 0xfd, 0xff, 0xfd, 0xf0, 0x1e, 0x01, 0xa8, 0x0a, 0x00, 0xff, 39 | 0xff, 0xaf, 0xaa, 0xaa, 0xff, 0xff, 0xff, 0xaf, 0xfb, 0xff, 0xff, 0xf0, 0x1f, 0xf9, 0x50, 40 | 0x01, 0x03, 0xff, 0xff, 0x57, 0x55, 0xd5, 0x7d, 0xff, 0x7f, 0xdf, 0xfd, 0xff, 0xfd, 0xf0, 41 | 0x9f, 0xf9, 0xa8, 0x00, 0x8f, 0xff, 0xfe, 0xaf, 0xaa, 0xaa, 0xff, 0xff, 0xfd, 0xbf, 0xfb, 42 | 0xff, 0xfb, 0xf0, 0x5a, 0x01, 0x54, 0x00, 0x3f, 0xff, 0xff, 0x7f, 0x5d, 0xd5, 0xfd, 0xff, 43 | 0xfd, 0xdf, 0xfd, 0xff, 0xfd, 0xf0, 0x8e, 0x01, 0xaa, 0x00, 0x7f, 0xff, 0xfe, 0xbf, 0xae, 44 | 0xef, 0xff, 0xff, 0xfb, 0xef, 0xfb, 0xff, 0xfa, 0xf0, 0xcf, 0xff, 0xf4, 0x00, 0xf7, 0xff, 45 | 0xff, 0x7f, 0x5d, 0xff, 0xff, 0xff, 0xfd, 0xdf, 0xff, 0xff, 0xfd, 0xf0, 0xae, 0x01, 0x2a, 46 | 0x00, 0xfb, 0xff, 0xff, 0xbf, 0xae, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xfb, 0xff, 0xfa, 0xf0, 47 | 0xde, 0x01, 0x35, 0x01, 0xfb, 0xff, 0xff, 0x7f, 0x5d, 0xfd, 0xbf, 0xff, 0xff, 0xdf, 0xfd, 48 | 0xff, 0xdd, 0xf0, 0xa7, 0xff, 0xea, 0x81, 0xfc, 0xff, 0x7f, 0xbe, 0xbe, 0xff, 0xe3, 0xff, 49 | 0xff, 0xef, 0xff, 0xf9, 0x3e, 0xf0, 0x56, 0x01, 0x55, 0x41, 0xff, 0x7f, 0xff, 0xff, 0xfd, 50 | 0xfd, 0xfc, 0x1f, 0xff, 0xff, 0xff, 0xfc, 0x7d, 0xf0, 0xa6, 0x01, 0x2a, 0x88, 0xfe, 0xff, 51 | 0xff, 0xfe, 0xfe, 0xfe, 0xff, 0xe0, 0x03, 0xff, 0xff, 0xfc, 0xfe, 0xf0, 0x52, 0x79, 0x15, 52 | 0x44, 0x7d, 0xff, 0xff, 0xfd, 0x7f, 0xbd, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xf8, 0xfd, 0xf0, 53 | 0x22, 0x69, 0x2a, 0xa0, 0x3d, 0xff, 0xff, 0xfa, 0xfe, 0x7f, 0xff, 0xff, 0xff, 0xe2, 0x48, 54 | 0xfa, 0xff, 0xf0, 0x42, 0x59, 0x15, 0x54, 0x1b, 0xff, 0xff, 0xf7, 0xff, 0xbd, 0xf7, 0xff, 55 | 0xff, 0x95, 0x55, 0x37, 0x7d, 0xf0, 0x02, 0x69, 0x0a, 0xa2, 0x1f, 0xfe, 0xff, 0xee, 0xff, 56 | 0xff, 0xfc, 0xff, 0xff, 0x2a, 0x4a, 0x9f, 0xff, 0xf0, 0x03, 0xff, 0x55, 0x11, 0x4f, 0xff, 57 | 0xff, 0x55, 0x7f, 0xfd, 0xff, 0x00, 0xfc, 0x55, 0x55, 0x4f, 0xff, 0xf0, 0x02, 0x01, 0xaa, 58 | 0x88, 0x8f, 0xde, 0xff, 0xaa, 0xbf, 0xfe, 0xff, 0xff, 0x00, 0xa8, 0x02, 0xa7, 0xff, 0xf0, 59 | 0x02, 0x01, 0x55, 0x55, 0x47, 0xff, 0x7f, 0xd5, 0x5f, 0xff, 0xff, 0xff, 0xc8, 0x47, 0x5c, 60 | 0x53, 0xff, 0xf0, 0x82, 0x49, 0xaa, 0x8a, 0xa7, 0xfe, 0xff, 0xea, 0xbf, 0xff, 0xff, 0xff, 61 | 0xb0, 0x3f, 0x5f, 0x89, 0xff, 0xf0, 0xc2, 0x49, 0x55, 0x45, 0x53, 0xff, 0xff, 0xf5, 0x5f, 62 | 0xff, 0xff, 0xfe, 0x70, 0x7f, 0x5f, 0xe5, 0xff, 0xf0, 0xe2, 0x41, 0xa2, 0xa2, 0xab, 0xfe, 63 | 0xfb, 0xfa, 0xaf, 0xef, 0xff, 0xf9, 0xe2, 0xbf, 0x5f, 0xfa, 0xff, 0xf0, 0xe2, 0x41, 0x51, 64 | 0x51, 0x51, 0xff, 0x77, 0xfd, 0x57, 0xf9, 0xff, 0xe7, 0x85, 0x7f, 0x5f, 0xfc, 0xff, 0xf0, 65 | 0xe3, 0xff, 0xf2, 0xa0, 0xa8, 0xff, 0xfb, 0xbe, 0xaf, 0xfe, 0x1e, 0x80, 0x6a, 0x80, 0x00, 66 | 0x7e, 0xff, 0xb0, 0xe2, 0x60, 0x11, 0x50, 0x54, 0x7f, 0xff, 0xfd, 0x57, 0xff, 0xe0, 0x1f, 67 | 0xc4, 0x15, 0x55, 0x06, 0x7f, 0x70, 0xee, 0x60, 0x18, 0xa8, 0x2a, 0x1f, 0xff, 0xfe, 0xaf, 68 | 0xff, 0xe8, 0xf0, 0x00, 0x0a, 0x4a, 0xa8, 0x7f, 0xf0, 0xdf, 0xff, 0xf1, 0x54, 0x15, 0x43, 69 | 0xff, 0xff, 0x5f, 0xff, 0xe8, 0x7b, 0xc0, 0x05, 0x55, 0x55, 0x7f, 0x70, 0xff, 0x81, 0x28, 70 | 0xaa, 0x0a, 0xa1, 0xff, 0xfe, 0xbf, 0xf7, 0xea, 0x09, 0xe0, 0x0a, 0x4a, 0xaa, 0x7f, 0xf0, 71 | 0xff, 0x81, 0x50, 0x54, 0x05, 0x54, 0x7f, 0xff, 0x7f, 0xfc, 0xe8, 0x4b, 0xc0, 0x05, 0x55, 72 | 0x55, 0x7f, 0x70, 0xfe, 0x7f, 0x28, 0xaa, 0x00, 0xa8, 0xff, 0xfe, 0xbf, 0xff, 0x0a, 0xf0, 73 | 0x00, 0x02, 0x4a, 0xa8, 0x7e, 0xb0, 0xfe, 0x7f, 0x14, 0x55, 0x00, 0x03, 0xff, 0xf7, 0x5f, 74 | 0x7f, 0xe0, 0x1f, 0xc4, 0x01, 0x55, 0x06, 0x7f, 0x70, 0xff, 0x81, 0x08, 0x2a, 0x80, 0x07, 75 | 0xff, 0xf6, 0xaf, 0xff, 0xfe, 0x80, 0x6a, 0x80, 0x00, 0x7e, 0xff, 0xb0, 0x7f, 0x81, 0x14, 76 | 0x55, 0x40, 0x0f, 0xff, 0xed, 0x57, 0x7f, 0xff, 0xe7, 0x85, 0x55, 0x5f, 0xfc, 0xff, 0x70, 77 | 0xbf, 0xff, 0xe8, 0x2a, 0xa8, 0x1f, 0xff, 0xf6, 0xae, 0xff, 0xff, 0xf9, 0xea, 0xaa, 0x5f, 78 | 0xfa, 0xff, 0xf0, 0x5e, 0x01, 0x24, 0x15, 0x54, 0x3f, 0xff, 0xf5, 0x57, 0x7f, 0xfb, 0xfe, 79 | 0xf0, 0x55, 0x5f, 0xe5, 0xff, 0x70, 0xbe, 0x01, 0x22, 0x2a, 0xa0, 0xff, 0xff, 0xba, 0xae, 80 | 0xff, 0xfe, 0x1f, 0x30, 0x2a, 0x0f, 0x89, 0xbf, 0xf0, 0x5f, 0xff, 0xe5, 0x15, 0x41, 0xff, 81 | 0xff, 0xd5, 0x57, 0x7f, 0xff, 0xe0, 0x48, 0x05, 0x54, 0x53, 0xff, 0xf0, 0xbe, 0x01, 0xa2, 82 | 0x02, 0x03, 0xff, 0xff, 0xea, 0xaa, 0xbf, 0xff, 0xff, 0x80, 0x00, 0x02, 0xa7, 0xbf, 0xf0, 83 | 0x5e, 0x01, 0x41, 0x00, 0x06, 0xfd, 0xff, 0xd5, 0x55, 0x5f, 0xff, 0xff, 0xfc, 0x00, 0x40, 84 | 0x4f, 0xff, 0xf0, 0xbe, 0x49, 0x20, 0x80, 0x0f, 0x7f, 0xfe, 0xea, 0xaa, 0xbe, 0xff, 0xff, 85 | 0xff, 0x00, 0x00, 0x1f, 0xbf, 0xf0, 0x7e, 0x49, 0x50, 0x00, 0x0f, 0x7f, 0xff, 0xd5, 0x55, 86 | 0x5f, 0x83, 0xff, 0xff, 0x80, 0x40, 0x3f, 0xff, 0xf0, 0xfe, 0x41, 0x28, 0x00, 0x0f, 0xbf, 87 | 0xff, 0xeb, 0xaa, 0xbf, 0xfc, 0x00, 0x03, 0xe0, 0x00, 0xff, 0xbf, 0xf0, 0xfe, 0x41, 0x14, 88 | 0x00, 0x1f, 0xdf, 0xff, 0xd5, 0xd5, 0x57, 0xff, 0xff, 0xfc, 0x00, 0x07, 0xff, 0xdf, 0xf0, 89 | 0xff, 0xff, 0x08, 0x00, 0x1f, 0x3f, 0xdf, 0xeb, 0xaa, 0xab, 0xff, 0xff, 0xff, 0xff, 0xff, 90 | 0xff, 0xbf, 0xf0, 0xfe, 0x01, 0x14, 0x40, 0x3e, 0xff, 0xbf, 0xf5, 0x55, 0x57, 0xdf, 0xff, 91 | 0xf9, 0xff, 0xff, 0xff, 0xdf, 0xf0, 0xfe, 0x01, 0x0a, 0x20, 0x3f, 0xff, 0xdf, 0xfa, 0xaa, 92 | 0xab, 0xbf, 0xff, 0xf3, 0xff, 0xff, 0xdf, 0xbf, 0xf0, 0xde, 0x7f, 0x05, 0x10, 0x7f, 0xff, 93 | 0xff, 0xfd, 0x55, 0x55, 0xdf, 0xff, 0xe4, 0xff, 0xff, 0xbf, 0x7f, 0xf0, 0xee, 0x7e, 0x02, 94 | 0x88, 0x7f, 0xff, 0xff, 0xfa, 0xaa, 0xab, 0xbf, 0xff, 0xe3, 0xff, 0xbf, 0xbf, 0xbf, 0xf0, 95 | 0xde, 0x05, 0x41, 0x54, 0x3f, 0xff, 0xff, 0xdd, 0x55, 0x55, 0xff, 0xff, 0xd7, 0xff, 0xdf, 96 | 0x7f, 0x7f, 0xf0, 0xee, 0x06, 0xa2, 0xaa, 0x3f, 0xff, 0xff, 0xbe, 0xaa, 0xab, 0xbf, 0xff, 97 | 0xf7, 0xff, 0xbf, 0x3f, 0xbf, 0xf0, 0xde, 0x7d, 0x55, 0x55, 0x1f, 0xfb, 0xff, 0xff, 0x55, 98 | 0x55, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xbf, 0xff, 0xf0, 0xfe, 0x7f, 0xaa, 0xaa, 0x8f, 0xff, 99 | 0xff, 0xba, 0xaa, 0xab, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xdf, 0xbf, 0xf0, 0xfe, 0x01, 0x55, 100 | 0x55, 0x47, 0xff, 0xff, 0xf7, 0xd5, 0x57, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 101 | 0xfe, 0x01, 0xaa, 0xaa, 0xa1, 0xff, 0xff, 0xbf, 0xea, 0xab, 0xff, 0xff, 0xff, 0xff, 0xbf, 102 | 0xff, 0xff, 0xf0, 0xff, 0xff, 0x55, 0x55, 0x54, 0xff, 0xff, 0x5f, 0xf5, 0x57, 0xff, 0xfd, 103 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xda, 0xaa, 0xaa, 0xaa, 0x7f, 0xff, 0xbf, 0xfa, 104 | 0xab, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 0xff, 0x9d, 0x55, 0x55, 0x00, 0xff, 105 | 0xff, 0x7f, 0xfd, 0x57, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xf0, 0xff, 0xbf, 0xa2, 106 | 0xa8, 0x03, 0xff, 0xfb, 0xbf, 0xfa, 0xaa, 0xbf, 0xfb, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, 107 | 0xff, 0x3f, 0xc0, 0x00, 0x07, 0xff, 0xff, 0x5f, 0xfd, 0x57, 0x57, 0xff, 0xff, 0xff, 0xff, 108 | 0xff, 0xff, 0xf0, 0xff, 0x3f, 0x80, 0x00, 0x0f, 0xff, 0xfb, 0xaf, 0xfe, 0xae, 0xaa, 0xfb, 109 | 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, 0xf6, 0x7f, 0xc0, 0x00, 0x0f, 0xff, 0xff, 0x57, 0xfd, 110 | 0x55, 0x55, 0x77, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xf0, 111 | }; 112 | 113 | const lv_img_dsc_t balloon = { 114 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 115 | .header.always_zero = 0, 116 | .header.reserved = 0, 117 | .header.w = 140, 118 | .header.h = 68, 119 | .data_size = 1232, 120 | .data = balloon_map, 121 | }; 122 | 123 | #ifndef LV_ATTRIBUTE_IMG_MOUNTAIN 124 | #define LV_ATTRIBUTE_IMG_MOUNTAIN 125 | #endif 126 | 127 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_MOUNTAIN uint8_t 128 | mountain_map[] = { 129 | #if CONFIG_NICE_VIEW_WIDGET_INVERTED 130 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 131 | 0x00, 0x00, 0x00, 0xff, /*Color of index 1*/ 132 | #else 133 | 0x00, 0x00, 0x00, 0xff, /*Color of index 0*/ 134 | 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ 135 | #endif 136 | 137 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 138 | 0xff, 0xff, 0xf0, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 139 | 0x00, 0x00, 0x00, 0x90, 0x00, 0x30, 0x80, 0x00, 0x00, 0x00, 0x00, 0x5f, 0xa0, 0x00, 0x00, 140 | 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x10, 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 141 | 0xf4, 0x00, 0x00, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0x9f, 0xff, 0x10, 0x80, 0xff, 0xff, 142 | 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x01, 0xfe, 0x03, 0xe0, 0x0f, 0x9e, 0x01, 0x90, 143 | 0x80, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x00, 0xff, 0x07, 0xe0, 0x1f, 144 | 0x9e, 0x00, 0x90, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfd, 0x80, 0x00, 0x00, 0x7f, 145 | 0x8f, 0xe0, 0x1f, 0xbe, 0x00, 0x90, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xd0, 146 | 0x00, 0x00, 0x3f, 0xcf, 0xf0, 0x1f, 0xbc, 0x00, 0x90, 0x80, 0x7f, 0xff, 0xff, 0xff, 0xff, 147 | 0xff, 0xff, 0xfe, 0x00, 0x00, 0x3f, 0xcf, 0xf0, 0x3f, 0xbc, 0x00, 0x90, 0x80, 0x7f, 0xff, 148 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x1f, 0xe7, 0xf0, 0x7f, 0x3c, 0x00, 0x90, 149 | 0x80, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0x80, 0x00, 0x00, 0x0f, 0xe7, 0xf8, 0x7f, 150 | 0x78, 0x01, 0xb0, 0x80, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xec, 0x00, 0x00, 0x00, 0x07, 151 | 0xf3, 0xf8, 0x3f, 0x78, 0x03, 0xd0, 0x80, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xc0, 0x00, 152 | 0x00, 0x00, 0x07, 0xfb, 0xf8, 0x3f, 0xf8, 0x0f, 0x90, 0xc0, 0x1f, 0xff, 0xff, 0xff, 0xff, 153 | 0xec, 0x00, 0x00, 0x00, 0x00, 0x03, 0xfd, 0xfc, 0x3f, 0xf8, 0x0f, 0x10, 0xc0, 0x1e, 0xff, 154 | 0xff, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfc, 0x3f, 0xf0, 0x0e, 0x10, 155 | 0xc0, 0x0c, 0x27, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xfe, 0x7f, 156 | 0xf0, 0x1e, 0x30, 0xc0, 0x00, 0x1f, 0xff, 0xff, 0x50, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 157 | 0x7f, 0xfe, 0x7f, 0xf3, 0xfc, 0x50, 0xe0, 0x00, 0x3f, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 158 | 0x00, 0x00, 0x00, 0x7f, 0xfe, 0x7f, 0xf7, 0xf8, 0x90, 0xe0, 0x00, 0x7f, 0xfe, 0xb0, 0x00, 159 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0x7f, 0xe7, 0xf1, 0x90, 0xe0, 0x00, 0x7f, 160 | 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0x7f, 0xef, 0xe3, 0x90, 161 | 0xf0, 0x00, 0x7f, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0x7f, 162 | 0xff, 0xe7, 0x90, 0xb0, 0x10, 0xff, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 163 | 0x03, 0xff, 0xbf, 0xff, 0xcf, 0x90, 0xf0, 0x30, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 164 | 0x00, 0x00, 0x00, 0x01, 0xff, 0xf9, 0xff, 0x9f, 0x90, 0xb0, 0x30, 0xff, 0xff, 0xff, 0xf2, 165 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xf6, 0xff, 0x3e, 0x90, 0xf8, 0x70, 0xff, 166 | 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xf6, 0xfe, 0x7c, 0x90, 167 | 0xf8, 0x78, 0xff, 0xff, 0xff, 0xff, 0xf4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xf9, 168 | 0xfe, 0xf8, 0x90, 0xa8, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 169 | 0x00, 0x03, 0xff, 0xfd, 0xf3, 0x90, 0xdc, 0xf8, 0xff, 0xff, 0xff, 0xff, 0xe8, 0x00, 0x00, 170 | 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0xfb, 0xef, 0x90, 0xf5, 0xac, 0xff, 0xff, 0xff, 0xfe, 171 | 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0x90, 0xff, 0xd6, 0x7f, 172 | 0xff, 0xff, 0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xff, 0xff, 0x90, 173 | 0xff, 0xfa, 0x7f, 0xff, 0xff, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 174 | 0xff, 0xff, 0x90, 0xdd, 0xff, 0x7f, 0xff, 0xf6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 175 | 0x00, 0x00, 0x0f, 0xff, 0xff, 0xf0, 0xea, 0xbf, 0x3f, 0xff, 0xa0, 0x00, 0x00, 0x00, 0x00, 176 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0xff, 0xf0, 0x10, 0xff, 0x4f, 0xbf, 0xf5, 0x00, 0x00, 177 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, 0x00, 0x10, 0xff, 0xff, 0x9f, 178 | 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xf0, 179 | 0xff, 0xb0, 0xcb, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 180 | 0xff, 0xff, 0x90, 0xcd, 0x60, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 181 | 0x00, 0x02, 0x1f, 0xff, 0xff, 0x90, 0xb2, 0xe0, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 182 | 0x00, 0x00, 0x00, 0x00, 0x0c, 0x7f, 0xff, 0xff, 0x90, 0xff, 0xc0, 0x3f, 0x40, 0x00, 0x00, 183 | 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0xff, 0xff, 0xff, 0x90, 0xfe, 0xc0, 0x7f, 184 | 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf1, 0xff, 0xff, 0x7c, 0x90, 185 | 0xfd, 0x80, 0xff, 0xfd, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc3, 0xff, 186 | 0xff, 0xb8, 0x90, 0xff, 0x80, 0xff, 0xff, 0xe8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 187 | 0x3f, 0x87, 0xff, 0xff, 0xc8, 0x90, 0x9f, 0x01, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x00, 188 | 0x00, 0x00, 0x00, 0x7f, 0x1f, 0xff, 0xff, 0xe0, 0x90, 0x86, 0x01, 0xff, 0xff, 0xd0, 0x00, 189 | 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0xfe, 0x3f, 0xff, 0xff, 0xe0, 0x90, 0x80, 0x01, 0xff, 190 | 0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x06, 0x19, 0x83, 0xfe, 0x7f, 0xff, 0xff, 0xf0, 0x90, 191 | 0x80, 0x01, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x7f, 0xc7, 0xee, 0x7f, 0xff, 192 | 0xff, 0xf8, 0x90, 0x80, 0x1a, 0xbf, 0xb0, 0x00, 0x00, 0x00, 0x00, 0x01, 0x98, 0xff, 0xff, 193 | 0xc6, 0x7f, 0xff, 0xff, 0xfc, 0x90, 0x80, 0x3f, 0x5d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 194 | 0xf1, 0xff, 0xff, 0xc0, 0x7f, 0xff, 0xff, 0xfe, 0x90, 0x80, 0x3f, 0xf8, 0x00, 0x00, 0x00, 195 | 0x00, 0x00, 0x07, 0xe3, 0xff, 0xff, 0x00, 0xff, 0xff, 0xff, 0xff, 0x90, 0x80, 0x7f, 0xfe, 196 | 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0xc7, 0xff, 0xfe, 0x18, 0xff, 0xef, 0xff, 0xff, 0x90, 197 | 0x80, 0x7f, 0xff, 0xd0, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x8f, 0xff, 0xfc, 0x7f, 0xff, 0xef, 198 | 0xfd, 0xff, 0x90, 0x80, 0xff, 0xff, 0xfa, 0x00, 0x00, 0x00, 0x00, 0x1f, 0x9f, 0xff, 0xf8, 199 | 0xff, 0xff, 0xef, 0xfc, 0xf7, 0x90, 0x80, 0xff, 0xff, 0xff, 0x60, 0x00, 0x00, 0x00, 0x3f, 200 | 0x1f, 0xff, 0xf1, 0xff, 0xff, 0xcf, 0xfc, 0xe1, 0x90, 0x80, 0xff, 0xff, 0xff, 0xf4, 0x00, 201 | 0x00, 0x00, 0x7f, 0x3f, 0xff, 0xe3, 0xff, 0xff, 0xcf, 0xfe, 0x60, 0x90, 0x81, 0xff, 0xff, 202 | 0xff, 0xfe, 0x80, 0x00, 0x00, 0x7f, 0x3f, 0xff, 0xc7, 0xff, 0xff, 0xdf, 0xfe, 0x40, 0x90, 203 | 0x81, 0xff, 0xff, 0xff, 0xff, 0xf8, 0x00, 0x01, 0xfe, 0x3f, 0xff, 0xcf, 0xbf, 0xff, 0xdf, 204 | 0xfe, 0x00, 0x90, 0x81, 0xff, 0xff, 0xff, 0xff, 0x40, 0x00, 0x07, 0xfe, 0x7f, 0xff, 0x8f, 205 | 0x7f, 0xff, 0x9f, 0xfe, 0x00, 0x90, 0x80, 0xff, 0xff, 0xff, 0xe6, 0x00, 0x00, 0x1f, 0xfe, 206 | 0x7f, 0xff, 0x1e, 0xff, 0xff, 0x91, 0xfe, 0x00, 0x90, 0x80, 0xff, 0xff, 0xfe, 0xc0, 0x00, 207 | 0x00, 0x3f, 0xfc, 0x7f, 0xfe, 0x3c, 0xff, 0xff, 0x81, 0xff, 0x00, 0x90, 0x80, 0x7f, 0xff, 208 | 0xec, 0x00, 0x00, 0x3c, 0xff, 0xf8, 0xff, 0xfc, 0x79, 0xfd, 0xff, 0x80, 0xff, 0x00, 0x90, 209 | 0x80, 0x27, 0xff, 0x80, 0x00, 0x00, 0x7f, 0xff, 0xf9, 0xff, 0xfc, 0xf3, 0xfb, 0xff, 0x00, 210 | 0xff, 0x00, 0x90, 0x80, 0x5f, 0xff, 0xd8, 0x00, 0x00, 0xff, 0xff, 0xf1, 0xff, 0xc8, 0xe7, 211 | 0xf3, 0xff, 0x00, 0x7f, 0x00, 0x90, 0x80, 0xff, 0xff, 0xfd, 0x80, 0x01, 0xff, 0xff, 0xe3, 212 | 0xff, 0x81, 0xcf, 0xf7, 0xff, 0x00, 0x7f, 0x00, 0x90, 0x80, 0xff, 0xff, 0xff, 0xd8, 0x03, 213 | 0xff, 0xff, 0x87, 0xff, 0x03, 0x8f, 0xe7, 0xff, 0x00, 0x3f, 0x81, 0x90, 0x81, 0xff, 0xff, 214 | 0xff, 0xfe, 0x83, 0xff, 0xfe, 0x0f, 0xfe, 0x3f, 0xff, 0xcf, 0xff, 0xff, 0xff, 0xff, 0x10, 215 | 0x80, 0x00, 0x00, 0x00, 0x2f, 0xc6, 0x00, 0x00, 0x38, 0x00, 0x60, 0x00, 0x48, 0x00, 0x00, 216 | 0x00, 0x00, 0x10, 0xc0, 0x00, 0x00, 0x00, 0x17, 0xf4, 0x00, 0x00, 0xe0, 0x00, 0xc0, 0x00, 217 | 0x88, 0x00, 0x00, 0x00, 0x00, 0x30, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 218 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 219 | }; 220 | 221 | const lv_img_dsc_t mountain = { 222 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 223 | .header.always_zero = 0, 224 | .header.reserved = 0, 225 | .header.w = 140, 226 | .header.h = 68, 227 | .data_size = 1232, 228 | .data = mountain_map, 229 | }; 230 | 231 | #ifndef LV_ATTRIBUTE_IMG_CORRO01 232 | #define LV_ATTRIBUTE_IMG_CORRO01 233 | #endif 234 | 235 | 236 | 237 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO01 uint8_t corro01_map[] = { 238 | #if CONFIG_NICE_VIEW_WIDGET_INVERTED 239 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 240 | 0x00, 0x00, 0x00, 0xff, /*Color of index 1*/ 241 | #else 242 | 0x00, 0x00, 0x00, 0xff, /*Color of index 0*/ 243 | 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ 244 | #endif 245 | 246 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 247 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 248 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 249 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 250 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 251 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xad, 0xcd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 252 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 253 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 254 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 255 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 256 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 257 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 258 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 259 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 260 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 261 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 262 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x05, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 263 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 264 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 265 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x07, 0xc0, 0x00, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 266 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x40, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 267 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x1a, 0xe0, 0x00, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 268 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x35, 0x58, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 269 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x2b, 0xa8, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 270 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x57, 0xdc, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 271 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x6f, 0x6a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 272 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x56, 0x56, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 273 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x2b, 0xae, 0x00, 0x1e, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 274 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0x56, 0x00, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 275 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x6a, 0xaa, 0x00, 0x00, 0x3f, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 276 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x56, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 277 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x6b, 0xaa, 0x00, 0x00, 0x01, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 278 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x57, 0xd6, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 279 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2f, 0x6c, 0x00, 0x03, 0xff, 0xef, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 280 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x16, 0x58, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 281 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x2b, 0xb0, 0x00, 0x00, 0x01, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 282 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x50, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 283 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2a, 0xf0, 0x00, 0x00, 0x7f, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 284 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x60, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 285 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x07, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 286 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 287 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 288 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 289 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 290 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 291 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 292 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 293 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 294 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xc7, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, 295 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 296 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x7f, 0xff, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xf0, 297 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 298 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xbf, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, 299 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 300 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x74, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 301 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0xbb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 302 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 303 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 304 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 305 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 306 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xaa, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 307 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xa5, 0xa3, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 308 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 309 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xa7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 310 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 311 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 312 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 313 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 314 | }; 315 | 316 | const lv_img_dsc_t corro01 = { 317 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 318 | .header.always_zero = 0, 319 | .header.reserved = 0, 320 | .header.w = 140, 321 | .header.h = 68, 322 | .data_size = 1232, 323 | .data = corro01_map, 324 | }; 325 | -------------------------------------------------------------------------------- /assets/example/static/peripheral_status.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); 13 | 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | 24 | #include "peripheral_status.h" 25 | 26 | LV_IMG_DECLARE(balloon); 27 | LV_IMG_DECLARE(mountain); 28 | LV_IMG_DECLARE(corro01); 29 | 30 | static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets); 31 | 32 | struct peripheral_status_state { 33 | bool connected; 34 | }; 35 | 36 | static void draw_top(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { 37 | lv_obj_t *canvas = lv_obj_get_child(widget, 0); 38 | 39 | lv_draw_label_dsc_t label_dsc; 40 | init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_16, LV_TEXT_ALIGN_RIGHT); 41 | lv_draw_rect_dsc_t rect_black_dsc; 42 | init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); 43 | 44 | // Fill background 45 | lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); 46 | 47 | // Draw battery 48 | draw_battery(canvas, state); 49 | 50 | // Draw output status 51 | lv_canvas_draw_text(canvas, 0, 0, CANVAS_SIZE, &label_dsc, 52 | state->connected ? LV_SYMBOL_WIFI : LV_SYMBOL_CLOSE); 53 | 54 | // Rotate canvas 55 | rotate_canvas(canvas, cbuf); 56 | } 57 | 58 | static void set_battery_status(struct zmk_widget_status *widget, 59 | struct battery_status_state state) { 60 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 61 | widget->state.charging = state.usb_present; 62 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 63 | 64 | widget->state.battery = state.level; 65 | 66 | draw_top(widget->obj, widget->cbuf, &widget->state); 67 | } 68 | 69 | static void battery_status_update_cb(struct battery_status_state state) { 70 | struct zmk_widget_status *widget; 71 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_battery_status(widget, state); } 72 | } 73 | 74 | static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) { 75 | return (struct battery_status_state) { 76 | .level = zmk_battery_state_of_charge(), 77 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 78 | .usb_present = zmk_usb_is_powered(), 79 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 80 | }; 81 | } 82 | 83 | ZMK_DISPLAY_WIDGET_LISTENER(widget_battery_status, struct battery_status_state, 84 | battery_status_update_cb, battery_status_get_state) 85 | 86 | ZMK_SUBSCRIPTION(widget_battery_status, zmk_battery_state_changed); 87 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 88 | ZMK_SUBSCRIPTION(widget_battery_status, zmk_usb_conn_state_changed); 89 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 90 | 91 | static struct peripheral_status_state get_state(const zmk_event_t *_eh) { 92 | return (struct peripheral_status_state){.connected = zmk_split_bt_peripheral_is_connected()}; 93 | } 94 | 95 | static void set_connection_status(struct zmk_widget_status *widget, 96 | struct peripheral_status_state state) { 97 | widget->state.connected = state.connected; 98 | 99 | draw_top(widget->obj, widget->cbuf, &widget->state); 100 | } 101 | 102 | static void output_status_update_cb(struct peripheral_status_state state) { 103 | struct zmk_widget_status *widget; 104 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_connection_status(widget, state); } 105 | } 106 | 107 | ZMK_DISPLAY_WIDGET_LISTENER(widget_peripheral_status, struct peripheral_status_state, 108 | output_status_update_cb, get_state) 109 | ZMK_SUBSCRIPTION(widget_peripheral_status, zmk_split_peripheral_status_changed); 110 | 111 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { 112 | widget->obj = lv_obj_create(parent); 113 | lv_obj_set_size(widget->obj, 160, 68); 114 | lv_obj_t *top = lv_canvas_create(widget->obj); 115 | lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); 116 | lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 117 | 118 | lv_obj_t *art = lv_img_create(widget->obj); 119 | bool random = sys_rand32_get() & 1; 120 | lv_img_set_src(art, random ? &balloon : &mountain); 121 | lv_obj_align(art, LV_ALIGN_TOP_LEFT, 0, 0); 122 | 123 | sys_slist_append(&widgets, &widget->node); 124 | widget_battery_status_init(); 125 | widget_peripheral_status_init(); 126 | 127 | return 0; 128 | } 129 | 130 | lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget) { return widget->obj; } -------------------------------------------------------------------------------- /assets/lvgl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/lvgl.png -------------------------------------------------------------------------------- /assets/urchincart/corro01.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO01 21 | #define LV_ATTRIBUTE_IMG_CORRO01 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO01 uint8_t corro01_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xad, 0xcd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x05, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x07, 0xc0, 0x00, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x40, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x1a, 0xe0, 0x00, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x35, 0x58, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x2b, 0xa8, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x57, 0xdc, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x6f, 0x6a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x56, 0x56, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x2b, 0xae, 0x00, 0x1e, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0x56, 0x00, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x6a, 0xaa, 0x00, 0x00, 0x3f, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x56, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x6b, 0xaa, 0x00, 0x00, 0x01, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x57, 0xd6, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2f, 0x6c, 0x00, 0x03, 0xff, 0xef, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x16, 0x58, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x2b, 0xb0, 0x00, 0x00, 0x01, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x50, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2a, 0xf0, 0x00, 0x00, 0x7f, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x60, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x07, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xc7, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x7f, 0xff, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xbf, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x74, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0xbb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xaa, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xa5, 0xa3, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xa7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro01 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro01_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro02.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO02 21 | #define LV_ATTRIBUTE_IMG_CORRO02 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO02 uint8_t corro02_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xaf, 0xcd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdc, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x05, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x03, 0xe0, 0x00, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xa0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x0d, 0x70, 0x00, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0xac, 0x00, 0x02, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x15, 0xd4, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2b, 0xee, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x37, 0xb5, 0x00, 0x00, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0x2b, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x15, 0xd7, 0x00, 0x1e, 0xff, 0xff, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2a, 0xab, 0x00, 0x02, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x35, 0x55, 0x00, 0x00, 0x3f, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xab, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x35, 0xd5, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0xeb, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x17, 0xb6, 0x00, 0x03, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0b, 0x2c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x15, 0xd8, 0x00, 0x00, 0x07, 0xff, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xa8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x15, 0x78, 0x00, 0x00, 0x7f, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0xb0, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x03, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x34, 0x3f, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xab, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe5, 0xa3, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xb3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro02 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro02_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro03.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO03 21 | #define LV_ATTRIBUTE_IMG_CORRO03 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO03 uint8_t corro03_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xad, 0xcd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xd9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x05, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x07, 0xc0, 0x00, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x40, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x1a, 0xe0, 0x00, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x35, 0x58, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x2b, 0xa8, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x57, 0xdc, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x6f, 0x6a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x56, 0x56, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x2b, 0xae, 0x00, 0x1e, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0x56, 0x00, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x6a, 0xaa, 0x00, 0x00, 0x3f, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x56, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x6b, 0xaa, 0x00, 0x00, 0x01, 0xff, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x57, 0xd6, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2f, 0x6c, 0x00, 0x03, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x16, 0x58, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x2b, 0xb0, 0x00, 0x00, 0x01, 0xff, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x50, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2a, 0xf0, 0x00, 0x00, 0x7f, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x60, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x07, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x7f, 0xff, 0xff, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x74, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0xbb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xaa, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xa5, 0xa3, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xa7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro03 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro03_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro04.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO04 21 | #define LV_ATTRIBUTE_IMG_CORRO04 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO04 uint8_t corro04_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xaf, 0xcd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdc, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x77, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x03, 0xe0, 0x00, 0x41, 0xdf, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xa0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x0d, 0x70, 0x00, 0x85, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0xac, 0x00, 0x02, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x15, 0xd4, 0x00, 0x04, 0x0d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2b, 0xee, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x37, 0xb5, 0x00, 0x00, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0x2b, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x15, 0xd7, 0x00, 0x1e, 0xff, 0xff, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2a, 0xab, 0x00, 0x02, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x35, 0x55, 0x00, 0x00, 0x3f, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xab, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x35, 0xd5, 0x00, 0x00, 0x00, 0xff, 0xbf, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0xeb, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x17, 0xb6, 0x00, 0x03, 0xff, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0b, 0x2c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x15, 0xd8, 0x00, 0x00, 0x07, 0xff, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xa8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x15, 0x78, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0xb0, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x03, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x34, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xdf, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xab, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe5, 0xa3, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xb3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro04 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro04_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro05.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO05 21 | #define LV_ATTRIBUTE_IMG_CORRO05 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO05 uint8_t corro05_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xad, 0xcd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfd, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe3, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xcd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x07, 0xc0, 0x00, 0x41, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x40, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x1a, 0xe0, 0x00, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x35, 0x58, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x2b, 0xa8, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x57, 0xdc, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x6f, 0x6a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x56, 0x56, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x2b, 0xae, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0x56, 0x00, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x6a, 0xaa, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x56, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x6b, 0xaa, 0x00, 0x00, 0x01, 0xff, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x57, 0xd6, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2f, 0x6c, 0x00, 0x03, 0xff, 0xff, 0xef, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x16, 0x58, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x2b, 0xb0, 0x00, 0x00, 0x01, 0xff, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x50, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2a, 0xf0, 0x00, 0x00, 0x7f, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x60, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x07, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xc7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xea, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x74, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0xbb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xea, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xaa, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xa5, 0xa3, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xa7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro05 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro05_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro06.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO06 21 | #define LV_ATTRIBUTE_IMG_CORRO06 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO06 uint8_t corro06_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xaf, 0xcd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdc, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x03, 0xe0, 0x00, 0x41, 0xff, 0xdf, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xa0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x0d, 0x70, 0x00, 0x85, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0xac, 0x00, 0x02, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x15, 0xd4, 0x00, 0x04, 0x0f, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2b, 0xee, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x37, 0xb5, 0x00, 0x00, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0x2b, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x15, 0xd7, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2a, 0xab, 0x00, 0x02, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x35, 0x55, 0x00, 0x00, 0x3f, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xab, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x35, 0xd5, 0x00, 0x00, 0x00, 0xff, 0xfb, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0xeb, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x17, 0xb6, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0b, 0x2c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x15, 0xd8, 0x00, 0x00, 0x07, 0xff, 0xff, 0xbb, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xa8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x15, 0x78, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0xb0, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x03, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x34, 0x2e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xdf, 0x9b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xab, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe5, 0xa3, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xb3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro06 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro06_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro07.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO07 21 | #define LV_ATTRIBUTE_IMG_CORRO07 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO07 uint8_t corro07_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xad, 0xcd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfd, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe3, 0xff, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xcf, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x07, 0xc0, 0x00, 0x41, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x40, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x1a, 0xe0, 0x00, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x35, 0x58, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x2b, 0xa8, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x57, 0xdc, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x6f, 0x6a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x56, 0x56, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x2b, 0xae, 0x00, 0x1e, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0x56, 0x00, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x6a, 0xaa, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x56, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x6b, 0xaa, 0x00, 0x00, 0x01, 0xff, 0xff, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x57, 0xd6, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2f, 0x6c, 0x00, 0x03, 0xff, 0xff, 0xfe, 0xff, 0xef, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x16, 0x58, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x2b, 0xb0, 0x00, 0x00, 0x01, 0xff, 0xff, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x50, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2a, 0xf0, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x60, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x07, 0x80, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xc7, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x7e, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x74, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0xbb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xaa, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xa5, 0xa3, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xa7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro07 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro07_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro08.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO08 21 | #define LV_ATTRIBUTE_IMG_CORRO08 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO08 uint8_t corro08_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xaf, 0xcd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdc, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x03, 0xe0, 0x00, 0x41, 0xff, 0xff, 0xdf, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xa0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x0d, 0x70, 0x00, 0x85, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0xac, 0x00, 0x02, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x15, 0xd4, 0x00, 0x04, 0x0f, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2b, 0xee, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x37, 0xb5, 0x00, 0x00, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0x2b, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x15, 0xd7, 0x00, 0x1a, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2a, 0xab, 0x00, 0x02, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x35, 0x55, 0x00, 0x00, 0x3e, 0xff, 0xff, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xab, 0x00, 0x01, 0x03, 0xff, 0xff, 0xdb, 0x7f, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x35, 0xd5, 0x00, 0x00, 0x00, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0xeb, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x17, 0xb6, 0x00, 0x02, 0xef, 0xff, 0xff, 0x9f, 0x3f, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0b, 0x2c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xf5, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x15, 0xd8, 0x00, 0x00, 0x07, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xa8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xdb, 0x7f, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x15, 0x78, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0xb0, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x03, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x34, 0x3f, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xdf, 0x9f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xab, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe5, 0xa3, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xb3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro08 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro08_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro09.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO09 21 | #define LV_ATTRIBUTE_IMG_CORRO09 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO09 uint8_t corro09_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xad, 0xcd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfd, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe3, 0xff, 0xff, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xcf, 0xff, 0xfd, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xff, 0x77, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x07, 0xc0, 0x00, 0x41, 0xff, 0xff, 0xff, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x40, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x1a, 0xe0, 0x00, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x35, 0x58, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x2b, 0xa8, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x57, 0xdc, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x6f, 0x6a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x56, 0x56, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x2b, 0xae, 0x00, 0x1e, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0x56, 0x00, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x6a, 0xaa, 0x00, 0x00, 0x2e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x56, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x6b, 0xaa, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x57, 0xd6, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2f, 0x6c, 0x00, 0x02, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x16, 0x58, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x2b, 0xb0, 0x00, 0x00, 0x01, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x50, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2a, 0xf0, 0x00, 0x00, 0x6e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x60, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x07, 0x80, 0x00, 0x00, 0x1b, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xc7, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x7f, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xbf, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x74, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0xbb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xaa, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xa5, 0xa3, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xa7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro09 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro09_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro10.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO10 21 | #define LV_ATTRIBUTE_IMG_CORRO10 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO10 uint8_t corro10_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xaf, 0xcd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdc, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x03, 0xe0, 0x00, 0x41, 0xff, 0xff, 0xff, 0xdf, 0xdf, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xa0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x0d, 0x70, 0x00, 0x85, 0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0xac, 0x00, 0x02, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x15, 0xd4, 0x00, 0x04, 0x0f, 0xbf, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2b, 0xee, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x37, 0xb5, 0x00, 0x00, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0x2b, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x15, 0xd7, 0x00, 0x1e, 0xfb, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2a, 0xab, 0x00, 0x02, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x35, 0x55, 0x00, 0x00, 0x2f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xab, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x35, 0xd5, 0x00, 0x00, 0x00, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0xeb, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x17, 0xb6, 0x00, 0x03, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0b, 0x2c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x15, 0xd8, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xa8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x15, 0x78, 0x00, 0x00, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0xb0, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x03, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x34, 0x3f, 0xff, 0xdd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xdf, 0x9f, 0xff, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xab, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe5, 0xa3, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xb3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro10 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro10_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro11.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO11 21 | #define LV_ATTRIBUTE_IMG_CORRO11 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO11 uint8_t corro11_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xad, 0xcd, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfd, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xcf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0x9f, 0xff, 0xff, 0xed, 0xbf, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x07, 0xc0, 0x00, 0x41, 0xff, 0xff, 0xff, 0xef, 0xbf, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0f, 0x40, 0x00, 0x03, 0xff, 0xff, 0xff, 0xfa, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x1a, 0xe0, 0x00, 0x85, 0xff, 0xff, 0xff, 0xf7, 0x7f, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x35, 0x58, 0x00, 0x02, 0xc3, 0xff, 0xff, 0xed, 0xbf, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x2b, 0xa8, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x57, 0xdc, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x6f, 0x6a, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x56, 0x56, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x2b, 0xae, 0x00, 0x1e, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x55, 0x56, 0x00, 0x02, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x6a, 0xaa, 0x00, 0x00, 0x3f, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x56, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x6b, 0xaa, 0x00, 0x00, 0x01, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x57, 0xd6, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2f, 0x6c, 0x00, 0x03, 0xfe, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x16, 0x58, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x2b, 0xb0, 0x00, 0x00, 0x01, 0xbf, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x35, 0x50, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x2a, 0xf0, 0x00, 0x00, 0x7f, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x15, 0x60, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x07, 0x80, 0x00, 0x00, 0x1f, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0xc7, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x7f, 0xff, 0xfe, 0xef, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xbf, 0xff, 0xff, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x21, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x74, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0xbb, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xaa, 0x1d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xa5, 0xa3, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xa7, 0x9f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xa7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro11 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro11_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchincart/corro12.c: -------------------------------------------------------------------------------- 1 | #ifdef __has_include 2 | #if __has_include("lvgl.h") 3 | #ifndef LV_LVGL_H_INCLUDE_SIMPLE 4 | #define LV_LVGL_H_INCLUDE_SIMPLE 5 | #endif 6 | #endif 7 | #endif 8 | 9 | #if defined(LV_LVGL_H_INCLUDE_SIMPLE) 10 | #include "lvgl.h" 11 | #else 12 | #include "lvgl/lvgl.h" 13 | #endif 14 | 15 | 16 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 17 | #define LV_ATTRIBUTE_MEM_ALIGN 18 | #endif 19 | 20 | #ifndef LV_ATTRIBUTE_IMG_CORRO12 21 | #define LV_ATTRIBUTE_IMG_CORRO12 22 | #endif 23 | 24 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_CORRO12 uint8_t corro12_map[] = { 25 | 0xff, 0xff, 0xff, 0xff, /*Color of index 0*/ 26 | 0x06, 0x06, 0x06, 0xff, /*Color of index 1*/ 27 | 28 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 29 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 30 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 31 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xff, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 32 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 33 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xaf, 0xcd, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 34 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0xdc, 0x76, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 35 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xed, 0xd0, 0xe6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 36 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xed, 0x50, 0xcc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 37 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe9, 0x10, 0x09, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 38 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc8, 0x22, 0x19, 0x7e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 39 | 0xff, 0xff, 0xff, 0xee, 0xee, 0xc0, 0x02, 0x12, 0xfc, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 40 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xc0, 0x00, 0x02, 0xf9, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 41 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0xc0, 0x00, 0x00, 0xe7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 42 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x00, 0x00, 0x43, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 43 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 44 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x07, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 45 | 0xff, 0xff, 0xff, 0xbb, 0xbb, 0x00, 0x00, 0x00, 0x1e, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 46 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 47 | 0xff, 0xff, 0xff, 0xee, 0xee, 0x03, 0xe0, 0x00, 0x41, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 48 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xa0, 0x00, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 49 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x0d, 0x70, 0x00, 0x85, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 50 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x1a, 0xac, 0x00, 0x02, 0xc1, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 51 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x15, 0xd4, 0x00, 0x04, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 52 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2b, 0xee, 0x00, 0x20, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 53 | 0xff, 0xff, 0xff, 0xfb, 0xbe, 0x37, 0xb5, 0x00, 0x00, 0xff, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 54 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0x2b, 0x00, 0x01, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 55 | 0xff, 0xff, 0xff, 0xfe, 0xec, 0x15, 0xd7, 0x00, 0x1e, 0xff, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 56 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x2a, 0xab, 0x00, 0x02, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 57 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x35, 0x55, 0x00, 0x00, 0x3f, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 58 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xab, 0x00, 0x01, 0x03, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 59 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x35, 0xd5, 0x00, 0x00, 0x00, 0xbf, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 60 | 0xff, 0xff, 0xff, 0xff, 0xfc, 0x2b, 0xeb, 0x00, 0x3e, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 61 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x17, 0xb6, 0x00, 0x03, 0xff, 0xef, 0xef, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 62 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x0b, 0x2c, 0x00, 0x00, 0x0f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 63 | 0xff, 0xff, 0xfe, 0xee, 0xec, 0x15, 0xd8, 0x00, 0x00, 0x07, 0xfb, 0xbf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 64 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x1a, 0xa8, 0x00, 0x01, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 65 | 0xff, 0xff, 0xff, 0xbb, 0xbe, 0x15, 0x78, 0x00, 0x00, 0x7f, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 66 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x0a, 0xb0, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 67 | 0xff, 0xff, 0xfe, 0xee, 0xef, 0x03, 0xc0, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 68 | 0xff, 0xff, 0xff, 0xff, 0xfe, 0x00, 0x00, 0x00, 0x01, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 69 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x00, 0x78, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 70 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 71 | 0xff, 0xff, 0xff, 0xfe, 0xee, 0x00, 0x00, 0x00, 0x00, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 72 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x07, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 73 | 0xff, 0xff, 0xff, 0xff, 0xba, 0x00, 0x00, 0x00, 0x01, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 74 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x08, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 75 | 0xff, 0xff, 0xff, 0xfe, 0xef, 0x00, 0x00, 0x03, 0x24, 0x1f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 76 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x9b, 0x87, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 77 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x08, 0x4d, 0xf3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 78 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x04, 0x26, 0x79, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 79 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x00, 0x00, 0x02, 0x17, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 80 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x4b, 0xff, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf0, 81 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x00, 0x00, 0x00, 0x20, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 82 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x34, 0x3f, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xf0, 83 | 0xff, 0xff, 0xff, 0xee, 0xef, 0x80, 0x04, 0x00, 0x1f, 0x3f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 84 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x04, 0x04, 0xdf, 0x9f, 0xff, 0xff, 0xfb, 0xff, 0xff, 0xff, 0xff, 0xf0, 85 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0x84, 0x0d, 0x32, 0x7f, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 86 | 0xff, 0xff, 0xff, 0xff, 0xff, 0x80, 0x08, 0x39, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 87 | 0xff, 0xff, 0xff, 0xee, 0xef, 0xa1, 0x2a, 0x3d, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 88 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xa5, 0xab, 0x1c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 89 | 0xff, 0xff, 0xff, 0xfb, 0xbb, 0xe5, 0xa3, 0x9e, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 90 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xb3, 0xdf, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 91 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xe7, 0xb3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 92 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 93 | 0xff, 0xff, 0xff, 0xff, 0xbb, 0xe7, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 94 | 0xff, 0xff, 0xff, 0xff, 0xff, 0xef, 0xf7, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 95 | 0xff, 0xff, 0xff, 0xff, 0xee, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xf0, 96 | }; 97 | 98 | const lv_img_dsc_t corro12 = { 99 | .header.cf = LV_IMG_CF_INDEXED_1BIT, 100 | .header.always_zero = 0, 101 | .header.reserved = 0, 102 | .header.w = 140, 103 | .header.h = 68, 104 | .data_size = 1232, 105 | .data = corro12_map, 106 | }; 107 | -------------------------------------------------------------------------------- /assets/urchinpngart/corro01.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro01.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro02.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro02.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro03.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro03.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro04.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro04.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro05.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro05.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro06.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro06.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro07.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro07.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro08.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro08.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro09.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro09.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro10.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro11.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro11.png -------------------------------------------------------------------------------- /assets/urchinpngart/corro12.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/GPeye/urchin-peripheral-animation/8b79464acfa8bb4c668e53049ad28b57889f2fe1/assets/urchinpngart/corro12.png -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | if(CONFIG_ZMK_DISPLAY AND CONFIG_NICE_VIEW_WIDGET_STATUS) 2 | zephyr_library_include_directories(${CMAKE_SOURCE_DIR}/include) 3 | zephyr_library_sources(custom_status_screen.c) 4 | zephyr_library_sources(widgets/bolt.c) 5 | zephyr_library_sources(widgets/util.c) 6 | 7 | if(NOT CONFIG_ZMK_SPLIT OR CONFIG_ZMK_SPLIT_ROLE_CENTRAL) 8 | zephyr_library_sources(widgets/status.c) 9 | else() 10 | zephyr_library_sources(widgets/art.c) 11 | zephyr_library_sources(widgets/peripheral_status.c) 12 | endif() 13 | endif() 14 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/Kconfig.defconfig: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2023 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | if SHIELD_NICE_VIEW_CUSTOM 5 | 6 | config CUSTOM_ANIMATION_SPEED 7 | int "Total duration in milliseconds for animation to take" 8 | default 9600 9 | 10 | config LV_Z_VDB_SIZE 11 | default 100 12 | 13 | config LV_DPI_DEF 14 | default 161 15 | 16 | config LV_Z_BITS_PER_PIXEL 17 | default 1 18 | 19 | choice LV_COLOR_DEPTH 20 | default LV_COLOR_DEPTH_1 21 | endchoice 22 | 23 | choice ZMK_DISPLAY_WORK_QUEUE 24 | default ZMK_DISPLAY_WORK_QUEUE_DEDICATED 25 | endchoice 26 | 27 | choice ZMK_DISPLAY_STATUS_SCREEN 28 | default ZMK_DISPLAY_STATUS_SCREEN_CUSTOM 29 | endchoice 30 | 31 | config LV_Z_MEM_POOL_SIZE 32 | default 4096 if ZMK_DISPLAY_STATUS_SCREEN_CUSTOM 33 | 34 | config ZMK_DISPLAY_STATUS_SCREEN_CUSTOM 35 | imply NICE_VIEW_WIDGET_STATUS 36 | 37 | config NICE_VIEW_WIDGET_STATUS 38 | bool "Custom nice!view status widget" 39 | select LV_FONT_MONTSERRAT_16 40 | select LV_USE_IMG 41 | select LV_USE_CANVAS 42 | select LV_USE_ANIMIMG 43 | select LV_USE_ANIMATION 44 | 45 | config NICE_VIEW_WIDGET_INVERTED 46 | bool "Invert custom status widget colors" 47 | 48 | if !ZMK_SPLIT || ZMK_SPLIT_ROLE_CENTRAL 49 | 50 | config NICE_VIEW_WIDGET_STATUS 51 | select LV_FONT_MONTSERRAT_18 52 | select LV_FONT_MONTSERRAT_14 53 | select LV_FONT_UNSCII_8 54 | select ZMK_WPM 55 | 56 | endif # !ZMK_SPLIT || ZMK_SPLIT_ROLE_CENTRAL 57 | 58 | config ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN 59 | select LV_FONT_MONTSERRAT_26 60 | 61 | endif # SHIELD_NICE_VIEW 62 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/Kconfig.shield: -------------------------------------------------------------------------------- 1 | # Copyright (c) 2022 The ZMK Contributors 2 | # SPDX-License-Identifier: MIT 3 | 4 | config SHIELD_NICE_VIEW_CUSTOM 5 | def_bool $(shields_list_contains,nice_view_custom) 6 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/README.md: -------------------------------------------------------------------------------- 1 | # A nice!view 2 | 3 | The nice!view is a low-power, high refresh rate display meant to replace I2C OLEDs traditionally used. 4 | 5 | This shield requires that an `&nice_view_spi` labeled SPI bus is provided with _at least_ MOSI, SCK, and CS pins defined. 6 | 7 | ## Disable custom widget 8 | 9 | The nice!view shield includes a custom vertical widget. To use the built-in ZMK one, add the following item to your `.conf` file: 10 | 11 | ``` 12 | CONFIG_ZMK_DISPLAY_STATUS_SCREEN_BUILT_IN=y 13 | CONFIG_ZMK_LV_FONT_DEFAULT_SMALL_MONTSERRAT_26=y 14 | CONFIG_LV_FONT_DEFAULT_MONTSERRAT_26=y 15 | ``` -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/custom_status_screen.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #include "widgets/status.h" 9 | 10 | #include 11 | LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); 12 | 13 | #if IS_ENABLED(CONFIG_NICE_VIEW_WIDGET_STATUS) 14 | static struct zmk_widget_status status_widget; 15 | #endif 16 | 17 | lv_obj_t *zmk_display_status_screen() { 18 | 19 | lv_obj_t *screen; 20 | screen = lv_obj_create(NULL); 21 | 22 | #if IS_ENABLED(CONFIG_NICE_VIEW_WIDGET_STATUS) 23 | zmk_widget_status_init(&status_widget, screen); 24 | lv_obj_align(zmk_widget_status_obj(&status_widget), LV_ALIGN_TOP_LEFT, 0, 0); 25 | #endif 26 | 27 | return screen; 28 | } 29 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/nice_view_custom.conf: -------------------------------------------------------------------------------- 1 | # Enable nice!view 2 | CONFIG_ZMK_DISPLAY=y 3 | # Disable idle blanking 4 | CONFIG_ZMK_DISPLAY_BLANK_ON_IDLE=n 5 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/nice_view_custom.overlay: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (c) 2022 The ZMK Contributors 3 | * 4 | * SPDX-License-Identifier: MIT 5 | */ 6 | 7 | &nice_view_spi { 8 | status = "okay"; 9 | nice_view: ls0xx@0 { 10 | compatible = "sharp,ls0xx"; 11 | spi-max-frequency = <1000000>; 12 | reg = <0>; 13 | width = <160>; 14 | height = <68>; 15 | }; 16 | }; 17 | 18 | / { 19 | chosen { 20 | zephyr,display = &nice_view; 21 | }; 22 | }; 23 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/nice_view_custom.zmk.yml: -------------------------------------------------------------------------------- 1 | file_format: "1" 2 | id: nice_view_custom 3 | name: nice!view_custom 4 | type: shield 5 | url: https://nicekeyboards.com/nice-view 6 | requires: [nice_view_header] 7 | features: 8 | - display 9 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/widgets/bolt.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #include 9 | 10 | #ifndef LV_ATTRIBUTE_MEM_ALIGN 11 | #define LV_ATTRIBUTE_MEM_ALIGN 12 | #endif 13 | 14 | #ifndef LV_ATTRIBUTE_IMG_BOLT 15 | #define LV_ATTRIBUTE_IMG_BOLT 16 | #endif 17 | 18 | const LV_ATTRIBUTE_MEM_ALIGN LV_ATTRIBUTE_LARGE_CONST LV_ATTRIBUTE_IMG_BOLT uint8_t bolt_map[] = { 19 | #if CONFIG_NICE_VIEW_WIDGET_INVERTED 20 | 0x00, 0x00, 0x00, 0x00, /*Color of index 0*/ 21 | 0x00, 0x00, 0x00, 0xff, /*Color of index 1*/ 22 | 0xff, 0xff, 0xff, 0xff, /*Color of index 2*/ 23 | 0x00, 0x00, 0x00, 0x00, /*Color of index 3*/ 24 | #else 25 | 0x00, 0x00, 0x00, 0x00, /*Color of index 0*/ 26 | 0xff, 0xff, 0xff, 0xff, /*Color of index 1*/ 27 | 0x00, 0x00, 0x00, 0xff, /*Color of index 2*/ 28 | 0x00, 0x00, 0x00, 0x00, /*Color of index 3*/ 29 | #endif 30 | 31 | 0x00, 0x14, 0x00, 0x00, 0x64, 0x00, 0x00, 0x64, 0x00, 0x01, 0xa4, 0x00, 0x01, 0xa4, 32 | 0x00, 0x06, 0xa4, 0x00, 0x06, 0xa4, 0x00, 0x1a, 0xa5, 0x54, 0x1a, 0xaa, 0xa4, 0x6a, 33 | 0xaa, 0x90, 0x55, 0x6a, 0x90, 0x00, 0x6a, 0x40, 0x00, 0x6a, 0x40, 0x00, 0x69, 0x00, 34 | 0x00, 0x69, 0x00, 0x00, 0x64, 0x00, 0x00, 0x64, 0x00, 0x00, 0x50, 0x00, 35 | }; 36 | 37 | const lv_img_dsc_t bolt = { 38 | .header.cf = LV_IMG_CF_INDEXED_2BIT, 39 | .header.always_zero = 0, 40 | .header.reserved = 0, 41 | .header.w = 11, 42 | .header.h = 18, 43 | .data_size = 70, 44 | .data = bolt_map, 45 | }; 46 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/widgets/peripheral_status.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #include 9 | #include 10 | 11 | #include 12 | LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); 13 | 14 | #include 15 | #include 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | 24 | #include "peripheral_status.h" 25 | 26 | LV_IMG_DECLARE(corro01); 27 | LV_IMG_DECLARE(corro02); 28 | LV_IMG_DECLARE(corro03); 29 | LV_IMG_DECLARE(corro04); 30 | LV_IMG_DECLARE(corro05); 31 | LV_IMG_DECLARE(corro06); 32 | LV_IMG_DECLARE(corro07); 33 | LV_IMG_DECLARE(corro08); 34 | LV_IMG_DECLARE(corro09); 35 | LV_IMG_DECLARE(corro10); 36 | LV_IMG_DECLARE(corro11); 37 | LV_IMG_DECLARE(corro12); 38 | 39 | const lv_img_dsc_t *anim_imgs[] = { 40 | &corro01, 41 | &corro02, 42 | &corro03, 43 | &corro04, 44 | &corro05, 45 | &corro06, 46 | &corro07, 47 | &corro08, 48 | &corro09, 49 | &corro10, 50 | &corro11, 51 | &corro12, 52 | }; 53 | 54 | static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets); 55 | 56 | struct peripheral_status_state { 57 | bool connected; 58 | }; 59 | 60 | static void draw_top(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { 61 | lv_obj_t *canvas = lv_obj_get_child(widget, 0); 62 | 63 | lv_draw_label_dsc_t label_dsc; 64 | init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_16, LV_TEXT_ALIGN_RIGHT); 65 | lv_draw_rect_dsc_t rect_black_dsc; 66 | init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); 67 | 68 | // Fill background 69 | lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); 70 | 71 | // Draw battery 72 | draw_battery(canvas, state); 73 | 74 | // Draw output status 75 | lv_canvas_draw_text(canvas, 0, 0, CANVAS_SIZE, &label_dsc, 76 | state->connected ? LV_SYMBOL_WIFI : LV_SYMBOL_CLOSE); 77 | 78 | // Rotate canvas 79 | rotate_canvas(canvas, cbuf); 80 | } 81 | 82 | static void set_battery_status(struct zmk_widget_status *widget, 83 | struct battery_status_state state) { 84 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 85 | widget->state.charging = state.usb_present; 86 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 87 | 88 | widget->state.battery = state.level; 89 | 90 | draw_top(widget->obj, widget->cbuf, &widget->state); 91 | } 92 | 93 | static void battery_status_update_cb(struct battery_status_state state) { 94 | struct zmk_widget_status *widget; 95 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_battery_status(widget, state); } 96 | } 97 | 98 | static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) { 99 | return (struct battery_status_state) { 100 | .level = zmk_battery_state_of_charge(), 101 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 102 | .usb_present = zmk_usb_is_powered(), 103 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 104 | }; 105 | } 106 | 107 | ZMK_DISPLAY_WIDGET_LISTENER(widget_battery_status, struct battery_status_state, 108 | battery_status_update_cb, battery_status_get_state) 109 | 110 | ZMK_SUBSCRIPTION(widget_battery_status, zmk_battery_state_changed); 111 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 112 | ZMK_SUBSCRIPTION(widget_battery_status, zmk_usb_conn_state_changed); 113 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 114 | 115 | static struct peripheral_status_state get_state(const zmk_event_t *_eh) { 116 | return (struct peripheral_status_state){.connected = zmk_split_bt_peripheral_is_connected()}; 117 | } 118 | 119 | static void set_connection_status(struct zmk_widget_status *widget, 120 | struct peripheral_status_state state) { 121 | widget->state.connected = state.connected; 122 | 123 | draw_top(widget->obj, widget->cbuf, &widget->state); 124 | } 125 | 126 | static void output_status_update_cb(struct peripheral_status_state state) { 127 | struct zmk_widget_status *widget; 128 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_connection_status(widget, state); } 129 | } 130 | 131 | ZMK_DISPLAY_WIDGET_LISTENER(widget_peripheral_status, struct peripheral_status_state, 132 | output_status_update_cb, get_state) 133 | ZMK_SUBSCRIPTION(widget_peripheral_status, zmk_split_peripheral_status_changed); 134 | 135 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { 136 | widget->obj = lv_obj_create(parent); 137 | lv_obj_set_size(widget->obj, 160, 68); 138 | lv_obj_t *top = lv_canvas_create(widget->obj); 139 | lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); 140 | lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 141 | 142 | //lv_obj_t *art = lv_img_create(widget->obj); 143 | //bool random = sys_rand32_get() & 1; 144 | //lv_img_set_src(art, random ? &balloon : &mountain); 145 | //lv_img_set_src(art, &corro01); 146 | 147 | lv_obj_t * art = lv_animimg_create(widget->obj); //<-- 148 | lv_obj_center(art); //<-- 149 | lv_animimg_set_src(art, (const void **) anim_imgs, 12); //<-- 150 | lv_animimg_set_duration(art, CONFIG_CUSTOM_ANIMATION_SPEED);//<-- 151 | lv_animimg_set_repeat_count(art, LV_ANIM_REPEAT_INFINITE); //<-- 152 | lv_animimg_start(art); //<-- 153 | 154 | lv_obj_align(art, LV_ALIGN_TOP_LEFT, 0, 0); 155 | sys_slist_append(&widgets, &widget->node); 156 | widget_battery_status_init(); 157 | widget_peripheral_status_init(); 158 | 159 | return 0; 160 | } 161 | 162 | lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget) { return widget->obj; } -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/widgets/peripheral_status.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | #include 12 | #include "util.h" 13 | 14 | struct zmk_widget_status { 15 | sys_snode_t node; 16 | lv_obj_t *obj; 17 | lv_color_t cbuf[CANVAS_SIZE * CANVAS_SIZE]; 18 | struct status_state state; 19 | }; 20 | 21 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent); 22 | lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget); 23 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/widgets/status.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #include 9 | 10 | #include 11 | LOG_MODULE_DECLARE(zmk, CONFIG_ZMK_LOG_LEVEL); 12 | 13 | #include 14 | #include 15 | #include "status.h" 16 | #include 17 | #include 18 | #include 19 | #include 20 | #include 21 | #include 22 | #include 23 | #include 24 | #include 25 | #include 26 | #include 27 | #include 28 | 29 | static sys_slist_t widgets = SYS_SLIST_STATIC_INIT(&widgets); 30 | 31 | struct output_status_state { 32 | struct zmk_endpoint_instance selected_endpoint; 33 | int active_profile_index; 34 | bool active_profile_connected; 35 | bool active_profile_bonded; 36 | }; 37 | 38 | struct layer_status_state { 39 | uint8_t index; 40 | const char *label; 41 | }; 42 | 43 | struct wpm_status_state { 44 | uint8_t wpm; 45 | }; 46 | 47 | static void draw_top(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { 48 | lv_obj_t *canvas = lv_obj_get_child(widget, 0); 49 | 50 | lv_draw_label_dsc_t label_dsc; 51 | init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_16, LV_TEXT_ALIGN_RIGHT); 52 | lv_draw_label_dsc_t label_dsc_wpm; 53 | init_label_dsc(&label_dsc_wpm, LVGL_FOREGROUND, &lv_font_unscii_8, LV_TEXT_ALIGN_RIGHT); 54 | lv_draw_rect_dsc_t rect_black_dsc; 55 | init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); 56 | lv_draw_rect_dsc_t rect_white_dsc; 57 | init_rect_dsc(&rect_white_dsc, LVGL_FOREGROUND); 58 | lv_draw_line_dsc_t line_dsc; 59 | init_line_dsc(&line_dsc, LVGL_FOREGROUND, 1); 60 | 61 | // Fill background 62 | lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); 63 | 64 | // Draw battery 65 | draw_battery(canvas, state); 66 | 67 | // Draw output status 68 | char output_text[10] = {}; 69 | 70 | switch (state->selected_endpoint.transport) { 71 | case ZMK_TRANSPORT_USB: 72 | strcat(output_text, LV_SYMBOL_USB); 73 | break; 74 | case ZMK_TRANSPORT_BLE: 75 | if (state->active_profile_bonded) { 76 | if (state->active_profile_connected) { 77 | strcat(output_text, LV_SYMBOL_WIFI); 78 | } else { 79 | strcat(output_text, LV_SYMBOL_CLOSE); 80 | } 81 | } else { 82 | strcat(output_text, LV_SYMBOL_SETTINGS); 83 | } 84 | break; 85 | } 86 | 87 | lv_canvas_draw_text(canvas, 0, 0, CANVAS_SIZE, &label_dsc, output_text); 88 | 89 | // Draw WPM 90 | lv_canvas_draw_rect(canvas, 0, 21, 68, 42, &rect_white_dsc); 91 | lv_canvas_draw_rect(canvas, 1, 22, 66, 40, &rect_black_dsc); 92 | 93 | char wpm_text[6] = {}; 94 | snprintf(wpm_text, sizeof(wpm_text), "%d", state->wpm[9]); 95 | lv_canvas_draw_text(canvas, 42, 52, 24, &label_dsc_wpm, wpm_text); 96 | 97 | int max = 0; 98 | int min = 256; 99 | 100 | for (int i = 0; i < 10; i++) { 101 | if (state->wpm[i] > max) { 102 | max = state->wpm[i]; 103 | } 104 | if (state->wpm[i] < min) { 105 | min = state->wpm[i]; 106 | } 107 | } 108 | 109 | int range = max - min; 110 | if (range == 0) { 111 | range = 1; 112 | } 113 | 114 | lv_point_t points[10]; 115 | for (int i = 0; i < 10; i++) { 116 | points[i].x = 2 + i * 7; 117 | points[i].y = 60 - (state->wpm[i] - min) * 36 / range; 118 | } 119 | lv_canvas_draw_line(canvas, points, 10, &line_dsc); 120 | 121 | // Rotate canvas 122 | rotate_canvas(canvas, cbuf); 123 | } 124 | 125 | static void draw_middle(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { 126 | lv_obj_t *canvas = lv_obj_get_child(widget, 1); 127 | 128 | lv_draw_rect_dsc_t rect_black_dsc; 129 | init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); 130 | lv_draw_rect_dsc_t rect_white_dsc; 131 | init_rect_dsc(&rect_white_dsc, LVGL_FOREGROUND); 132 | lv_draw_arc_dsc_t arc_dsc; 133 | init_arc_dsc(&arc_dsc, LVGL_FOREGROUND, 2); 134 | lv_draw_arc_dsc_t arc_dsc_filled; 135 | init_arc_dsc(&arc_dsc_filled, LVGL_FOREGROUND, 9); 136 | lv_draw_label_dsc_t label_dsc; 137 | init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_18, LV_TEXT_ALIGN_CENTER); 138 | lv_draw_label_dsc_t label_dsc_black; 139 | init_label_dsc(&label_dsc_black, LVGL_BACKGROUND, &lv_font_montserrat_18, LV_TEXT_ALIGN_CENTER); 140 | 141 | // Fill background 142 | lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); 143 | 144 | // Draw circles 145 | int circle_offsets[5][2] = { 146 | {13, 13}, {55, 13}, {34, 34}, {13, 55}, {55, 55}, 147 | }; 148 | 149 | for (int i = 0; i < 5; i++) { 150 | bool selected = i == state->active_profile_index; 151 | 152 | lv_canvas_draw_arc(canvas, circle_offsets[i][0], circle_offsets[i][1], 13, 0, 360, 153 | &arc_dsc); 154 | 155 | if (selected) { 156 | lv_canvas_draw_arc(canvas, circle_offsets[i][0], circle_offsets[i][1], 9, 0, 359, 157 | &arc_dsc_filled); 158 | } 159 | 160 | char label[2]; 161 | snprintf(label, sizeof(label), "%d", i + 1); 162 | lv_canvas_draw_text(canvas, circle_offsets[i][0] - 8, circle_offsets[i][1] - 10, 16, 163 | (selected ? &label_dsc_black : &label_dsc), label); 164 | } 165 | 166 | // Rotate canvas 167 | rotate_canvas(canvas, cbuf); 168 | } 169 | 170 | static void draw_bottom(lv_obj_t *widget, lv_color_t cbuf[], const struct status_state *state) { 171 | lv_obj_t *canvas = lv_obj_get_child(widget, 2); 172 | 173 | lv_draw_rect_dsc_t rect_black_dsc; 174 | init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); 175 | lv_draw_label_dsc_t label_dsc; 176 | init_label_dsc(&label_dsc, LVGL_FOREGROUND, &lv_font_montserrat_14, LV_TEXT_ALIGN_CENTER); 177 | 178 | // Fill background 179 | lv_canvas_draw_rect(canvas, 0, 0, CANVAS_SIZE, CANVAS_SIZE, &rect_black_dsc); 180 | 181 | // Draw layer 182 | if (state->layer_label == NULL) { 183 | char text[10] = {}; 184 | 185 | sprintf(text, "LAYER %i", state->layer_index); 186 | 187 | lv_canvas_draw_text(canvas, 0, 5, 68, &label_dsc, text); 188 | } else { 189 | lv_canvas_draw_text(canvas, 0, 5, 68, &label_dsc, state->layer_label); 190 | } 191 | 192 | // Rotate canvas 193 | rotate_canvas(canvas, cbuf); 194 | } 195 | 196 | static void set_battery_status(struct zmk_widget_status *widget, 197 | struct battery_status_state state) { 198 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 199 | widget->state.charging = state.usb_present; 200 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 201 | 202 | widget->state.battery = state.level; 203 | 204 | draw_top(widget->obj, widget->cbuf, &widget->state); 205 | } 206 | 207 | static void battery_status_update_cb(struct battery_status_state state) { 208 | struct zmk_widget_status *widget; 209 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_battery_status(widget, state); } 210 | } 211 | 212 | static struct battery_status_state battery_status_get_state(const zmk_event_t *eh) { 213 | const struct zmk_battery_state_changed *ev = as_zmk_battery_state_changed(eh); 214 | 215 | return (struct battery_status_state) { 216 | .level = (ev != NULL) ? ev->state_of_charge : zmk_battery_state_of_charge(), 217 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 218 | .usb_present = zmk_usb_is_powered(), 219 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 220 | }; 221 | } 222 | 223 | ZMK_DISPLAY_WIDGET_LISTENER(widget_battery_status, struct battery_status_state, 224 | battery_status_update_cb, battery_status_get_state) 225 | 226 | ZMK_SUBSCRIPTION(widget_battery_status, zmk_battery_state_changed); 227 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 228 | ZMK_SUBSCRIPTION(widget_battery_status, zmk_usb_conn_state_changed); 229 | #endif /* IS_ENABLED(CONFIG_USB_DEVICE_STACK) */ 230 | 231 | static void set_output_status(struct zmk_widget_status *widget, 232 | const struct output_status_state *state) { 233 | widget->state.selected_endpoint = state->selected_endpoint; 234 | widget->state.active_profile_index = state->active_profile_index; 235 | widget->state.active_profile_connected = state->active_profile_connected; 236 | widget->state.active_profile_bonded = state->active_profile_bonded; 237 | 238 | draw_top(widget->obj, widget->cbuf, &widget->state); 239 | draw_middle(widget->obj, widget->cbuf2, &widget->state); 240 | } 241 | 242 | static void output_status_update_cb(struct output_status_state state) { 243 | struct zmk_widget_status *widget; 244 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_output_status(widget, &state); } 245 | } 246 | 247 | static struct output_status_state output_status_get_state(const zmk_event_t *_eh) { 248 | return (struct output_status_state){ 249 | .selected_endpoint = zmk_endpoints_selected(), 250 | .active_profile_index = zmk_ble_active_profile_index(), 251 | .active_profile_connected = zmk_ble_active_profile_is_connected(), 252 | .active_profile_bonded = !zmk_ble_active_profile_is_open(), 253 | }; 254 | } 255 | 256 | ZMK_DISPLAY_WIDGET_LISTENER(widget_output_status, struct output_status_state, 257 | output_status_update_cb, output_status_get_state) 258 | ZMK_SUBSCRIPTION(widget_output_status, zmk_endpoint_changed); 259 | 260 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 261 | ZMK_SUBSCRIPTION(widget_output_status, zmk_usb_conn_state_changed); 262 | #endif 263 | #if defined(CONFIG_ZMK_BLE) 264 | ZMK_SUBSCRIPTION(widget_output_status, zmk_ble_active_profile_changed); 265 | #endif 266 | 267 | static void set_layer_status(struct zmk_widget_status *widget, struct layer_status_state state) { 268 | widget->state.layer_index = state.index; 269 | widget->state.layer_label = state.label; 270 | 271 | draw_bottom(widget->obj, widget->cbuf3, &widget->state); 272 | } 273 | 274 | static void layer_status_update_cb(struct layer_status_state state) { 275 | struct zmk_widget_status *widget; 276 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_layer_status(widget, state); } 277 | } 278 | 279 | static struct layer_status_state layer_status_get_state(const zmk_event_t *eh) { 280 | uint8_t index = zmk_keymap_highest_layer_active(); 281 | return (struct layer_status_state){.index = index, .label = zmk_keymap_layer_name(index)}; 282 | } 283 | 284 | ZMK_DISPLAY_WIDGET_LISTENER(widget_layer_status, struct layer_status_state, layer_status_update_cb, 285 | layer_status_get_state) 286 | 287 | ZMK_SUBSCRIPTION(widget_layer_status, zmk_layer_state_changed); 288 | 289 | static void set_wpm_status(struct zmk_widget_status *widget, struct wpm_status_state state) { 290 | for (int i = 0; i < 9; i++) { 291 | widget->state.wpm[i] = widget->state.wpm[i + 1]; 292 | } 293 | widget->state.wpm[9] = state.wpm; 294 | 295 | draw_top(widget->obj, widget->cbuf, &widget->state); 296 | } 297 | 298 | static void wpm_status_update_cb(struct wpm_status_state state) { 299 | struct zmk_widget_status *widget; 300 | SYS_SLIST_FOR_EACH_CONTAINER(&widgets, widget, node) { set_wpm_status(widget, state); } 301 | } 302 | 303 | struct wpm_status_state wpm_status_get_state(const zmk_event_t *eh) { 304 | return (struct wpm_status_state){.wpm = zmk_wpm_get_state()}; 305 | }; 306 | 307 | ZMK_DISPLAY_WIDGET_LISTENER(widget_wpm_status, struct wpm_status_state, wpm_status_update_cb, 308 | wpm_status_get_state) 309 | ZMK_SUBSCRIPTION(widget_wpm_status, zmk_wpm_state_changed); 310 | 311 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent) { 312 | widget->obj = lv_obj_create(parent); 313 | lv_obj_set_size(widget->obj, 160, 68); 314 | lv_obj_t *top = lv_canvas_create(widget->obj); 315 | lv_obj_align(top, LV_ALIGN_TOP_RIGHT, 0, 0); 316 | lv_canvas_set_buffer(top, widget->cbuf, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 317 | lv_obj_t *middle = lv_canvas_create(widget->obj); 318 | lv_obj_align(middle, LV_ALIGN_TOP_LEFT, 24, 0); 319 | lv_canvas_set_buffer(middle, widget->cbuf2, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 320 | lv_obj_t *bottom = lv_canvas_create(widget->obj); 321 | lv_obj_align(bottom, LV_ALIGN_TOP_LEFT, -44, 0); 322 | lv_canvas_set_buffer(bottom, widget->cbuf3, CANVAS_SIZE, CANVAS_SIZE, LV_IMG_CF_TRUE_COLOR); 323 | 324 | sys_slist_append(&widgets, &widget->node); 325 | widget_battery_status_init(); 326 | widget_output_status_init(); 327 | widget_layer_status_init(); 328 | widget_wpm_status_init(); 329 | 330 | return 0; 331 | } 332 | 333 | lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget) { return widget->obj; } 334 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/widgets/status.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #pragma once 9 | 10 | #include 11 | #include 12 | #include "util.h" 13 | 14 | struct zmk_widget_status { 15 | sys_snode_t node; 16 | lv_obj_t *obj; 17 | lv_color_t cbuf[CANVAS_SIZE * CANVAS_SIZE]; 18 | lv_color_t cbuf2[CANVAS_SIZE * CANVAS_SIZE]; 19 | lv_color_t cbuf3[CANVAS_SIZE * CANVAS_SIZE]; 20 | struct status_state state; 21 | }; 22 | 23 | int zmk_widget_status_init(struct zmk_widget_status *widget, lv_obj_t *parent); 24 | lv_obj_t *zmk_widget_status_obj(struct zmk_widget_status *widget); 25 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/widgets/util.c: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #include 9 | #include "util.h" 10 | 11 | LV_IMG_DECLARE(bolt); 12 | 13 | void rotate_canvas(lv_obj_t *canvas, lv_color_t cbuf[]) { 14 | static lv_color_t cbuf_tmp[CANVAS_SIZE * CANVAS_SIZE]; 15 | memcpy(cbuf_tmp, cbuf, sizeof(cbuf_tmp)); 16 | lv_img_dsc_t img; 17 | img.data = (void *)cbuf_tmp; 18 | img.header.cf = LV_IMG_CF_TRUE_COLOR; 19 | img.header.w = CANVAS_SIZE; 20 | img.header.h = CANVAS_SIZE; 21 | 22 | lv_canvas_fill_bg(canvas, LVGL_BACKGROUND, LV_OPA_COVER); 23 | lv_canvas_transform(canvas, &img, 900, LV_IMG_ZOOM_NONE, -1, 0, CANVAS_SIZE / 2, 24 | CANVAS_SIZE / 2, true); 25 | } 26 | 27 | void draw_battery(lv_obj_t *canvas, const struct status_state *state) { 28 | lv_draw_rect_dsc_t rect_black_dsc; 29 | init_rect_dsc(&rect_black_dsc, LVGL_BACKGROUND); 30 | lv_draw_rect_dsc_t rect_white_dsc; 31 | init_rect_dsc(&rect_white_dsc, LVGL_FOREGROUND); 32 | 33 | lv_canvas_draw_rect(canvas, 0, 2, 29, 12, &rect_white_dsc); 34 | lv_canvas_draw_rect(canvas, 1, 3, 27, 10, &rect_black_dsc); 35 | lv_canvas_draw_rect(canvas, 2, 4, (state->battery + 2) / 4, 8, &rect_white_dsc); 36 | lv_canvas_draw_rect(canvas, 30, 5, 3, 6, &rect_white_dsc); 37 | lv_canvas_draw_rect(canvas, 31, 6, 1, 4, &rect_black_dsc); 38 | 39 | if (state->charging) { 40 | lv_draw_img_dsc_t img_dsc; 41 | lv_draw_img_dsc_init(&img_dsc); 42 | lv_canvas_draw_img(canvas, 9, -1, &bolt, &img_dsc); 43 | } 44 | } 45 | 46 | void init_label_dsc(lv_draw_label_dsc_t *label_dsc, lv_color_t color, const lv_font_t *font, 47 | lv_text_align_t align) { 48 | lv_draw_label_dsc_init(label_dsc); 49 | label_dsc->color = color; 50 | label_dsc->font = font; 51 | label_dsc->align = align; 52 | } 53 | 54 | void init_rect_dsc(lv_draw_rect_dsc_t *rect_dsc, lv_color_t bg_color) { 55 | lv_draw_rect_dsc_init(rect_dsc); 56 | rect_dsc->bg_color = bg_color; 57 | } 58 | 59 | void init_line_dsc(lv_draw_line_dsc_t *line_dsc, lv_color_t color, uint8_t width) { 60 | lv_draw_line_dsc_init(line_dsc); 61 | line_dsc->color = color; 62 | line_dsc->width = width; 63 | } 64 | 65 | void init_arc_dsc(lv_draw_arc_dsc_t *arc_dsc, lv_color_t color, uint8_t width) { 66 | lv_draw_arc_dsc_init(arc_dsc); 67 | arc_dsc->color = color; 68 | arc_dsc->width = width; 69 | } 70 | -------------------------------------------------------------------------------- /boards/shields/nice_view_custom/widgets/util.h: -------------------------------------------------------------------------------- 1 | /* 2 | * 3 | * Copyright (c) 2023 The ZMK Contributors 4 | * SPDX-License-Identifier: MIT 5 | * 6 | */ 7 | 8 | #include 9 | #include 10 | 11 | #define CANVAS_SIZE 68 12 | 13 | #define LVGL_BACKGROUND \ 14 | IS_ENABLED(CONFIG_NICE_VIEW_WIDGET_INVERTED) ? lv_color_black() : lv_color_white() 15 | #define LVGL_FOREGROUND \ 16 | IS_ENABLED(CONFIG_NICE_VIEW_WIDGET_INVERTED) ? lv_color_white() : lv_color_black() 17 | 18 | struct status_state { 19 | uint8_t battery; 20 | bool charging; 21 | #if !IS_ENABLED(CONFIG_ZMK_SPLIT) || IS_ENABLED(CONFIG_ZMK_SPLIT_ROLE_CENTRAL) 22 | struct zmk_endpoint_instance selected_endpoint; 23 | int active_profile_index; 24 | bool active_profile_connected; 25 | bool active_profile_bonded; 26 | uint8_t layer_index; 27 | const char *layer_label; 28 | uint8_t wpm[10]; 29 | #else 30 | bool connected; 31 | #endif 32 | }; 33 | 34 | struct battery_status_state { 35 | uint8_t level; 36 | #if IS_ENABLED(CONFIG_USB_DEVICE_STACK) 37 | bool usb_present; 38 | #endif 39 | }; 40 | 41 | void rotate_canvas(lv_obj_t *canvas, lv_color_t cbuf[]); 42 | void draw_battery(lv_obj_t *canvas, const struct status_state *state); 43 | void init_label_dsc(lv_draw_label_dsc_t *label_dsc, lv_color_t color, const lv_font_t *font, 44 | lv_text_align_t align); 45 | void init_rect_dsc(lv_draw_rect_dsc_t *rect_dsc, lv_color_t bg_color); 46 | void init_line_dsc(lv_draw_line_dsc_t *line_dsc, lv_color_t color, uint8_t width); 47 | void init_arc_dsc(lv_draw_arc_dsc_t *arc_dsc, lv_color_t color, uint8_t width); 48 | -------------------------------------------------------------------------------- /zephyr/module.yaml: -------------------------------------------------------------------------------- 1 | name: 'zmk-shield-nice!view-custom' 2 | build: 3 | settings: 4 | board_root: . --------------------------------------------------------------------------------